aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xengines/pegasus/items/item.cpp20
-rwxr-xr-xengines/pegasus/items/item.h5
2 files changed, 23 insertions, 2 deletions
diff --git a/engines/pegasus/items/item.cpp b/engines/pegasus/items/item.cpp
index 126bbfec63..e4f1b712d7 100755
--- a/engines/pegasus/items/item.cpp
+++ b/engines/pegasus/items/item.cpp
@@ -27,7 +27,9 @@
#include "common/stream.h"
#include "pegasus/constants.h"
+#include "pegasus/elements.h"
#include "pegasus/pegasus.h"
+#include "pegasus/surface.h"
#include "pegasus/items/item.h"
#include "pegasus/items/itemlist.h"
@@ -266,4 +268,22 @@ ItemStateInfo Item::readItemState(Common::SeekableReadStream *stream) {
return info;
}
+Sprite *Item::getDragSprite(const tDisplayElementID id) const {
+ PegasusEngine *vm = (PegasusEngine *)g_engine;
+ Sprite *result = new Sprite(id);
+ SpriteFrame *frame = new SpriteFrame();
+
+ frame->initFromPICTResource(vm->_resFork, _itemInfo.dragSpriteNormalID);
+ result->addFrame(frame, 0, 0);
+
+ if (_itemInfo.dragSpriteNormalID != _itemInfo.dragSpriteUsedID) {
+ frame = new SpriteFrame();
+ frame->initFromPICTResource(vm->_resFork, _itemInfo.dragSpriteUsedID);
+ }
+
+ result->addFrame(frame, 0, 0);
+ result->setCurrentFrameIndex(0);
+ return result;
+}
+
} // End of namespace Pegasus
diff --git a/engines/pegasus/items/item.h b/engines/pegasus/items/item.h
index f623df5a4b..1373913892 100755
--- a/engines/pegasus/items/item.h
+++ b/engines/pegasus/items/item.h
@@ -274,6 +274,8 @@ enum tItemType {
kBiochipItemType
};
+class Sprite;
+
/*
Item is an object which can be picked up and carried around.
@@ -313,8 +315,7 @@ public:
void getInfoRightTimes(TimeValue&, TimeValue&) const;
TimeValue getSharedAreaTime() const;
- //TODO
- //MMSprite* GetDragSprite(const tDisplayElementID) const;
+ Sprite *getDragSprite(const tDisplayElementID) const;
/*
select -- called when this item becomes current. Also called when the inventory