o Unstubbed sfPreDialog -- we have enough code for that
o Started to restore inventory functionality svn-id: r17666
This commit is contained in:
parent
0ca8095e95
commit
769b2fed46
6 changed files with 25 additions and 26 deletions
|
@ -260,6 +260,8 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) {
|
||||||
obj->location.y = ITE_ObjectTable[i].y;
|
obj->location.y = ITE_ObjectTable[i].y;
|
||||||
obj->location.z = ITE_ObjectTable[i].z;
|
obj->location.z = ITE_ObjectTable[i].z;
|
||||||
obj->disabled = false;
|
obj->disabled = false;
|
||||||
|
|
||||||
|
obj->spritelistRn = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -216,6 +216,7 @@ typedef SortedList<CommonObjectDataPointer> CommonObjectOrderList;
|
||||||
class ObjectData: public CommonObjectData {
|
class ObjectData: public CommonObjectData {
|
||||||
public:
|
public:
|
||||||
uint16 interactBits;
|
uint16 interactBits;
|
||||||
|
int32 spritelistRn;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ActorData: public CommonObjectData {
|
class ActorData: public CommonObjectData {
|
||||||
|
|
|
@ -533,7 +533,6 @@ void Interface::removeFromInventory(int sprite) {
|
||||||
void Interface::drawInventory() {
|
void Interface::drawInventory() {
|
||||||
if (_panelMode != kPanelMain)
|
if (_panelMode != kPanelMain)
|
||||||
return;
|
return;
|
||||||
/*
|
|
||||||
SURFACE *back_buf = _vm->_gfx->getBackBuffer();
|
SURFACE *back_buf = _vm->_gfx->getBackBuffer();
|
||||||
|
|
||||||
// TODO: Inventory scrolling
|
// TODO: Inventory scrolling
|
||||||
|
@ -548,14 +547,14 @@ void Interface::drawInventory() {
|
||||||
Point drawPoint;
|
Point drawPoint;
|
||||||
|
|
||||||
for (int i = 0; i < _inventoryCount; i++) {
|
for (int i = 0; i < _inventoryCount; i++) {
|
||||||
if (_inventory[i] >= ARRAYSIZE(ObjectTable)) {
|
if (!_vm->_actor->validObjId(_vm->_actor->objIndexToId(_inventory[i]))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
drawPoint.x = x + col * width;
|
drawPoint.x = x + col * width;
|
||||||
drawPoint.y = y + row * height;
|
drawPoint.y = y + row * height;
|
||||||
|
|
||||||
_vm->_sprite->draw(back_buf, _vm->_sprite->_mainSprites,
|
_vm->_sprite->draw(back_buf, _vm->_sprite->_mainSprites,
|
||||||
ObjectTable[_inventory[i]].spritelistRn,
|
_vm->_actor->getObj(_vm->_actor->objIndexToId(_inventory[i]))->spritelistRn,
|
||||||
drawPoint, 256);
|
drawPoint, 256);
|
||||||
|
|
||||||
if (++col >= _vm->getDisplayInfo().inventoryColumns) {
|
if (++col >= _vm->getDisplayInfo().inventoryColumns) {
|
||||||
|
@ -564,7 +563,7 @@ void Interface::drawInventory() {
|
||||||
}
|
}
|
||||||
col = 0;
|
col = 0;
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Interface::inventoryTest(const Point& imousePt, int *ibutton) {
|
int Interface::inventoryTest(const Point& imousePt, int *ibutton) {
|
||||||
|
|
|
@ -186,7 +186,7 @@ void Script::sfTakeObject(SCRIPTFUNC_PARAMS) {
|
||||||
obj = _vm->_actor->getObj(objectId);
|
obj = _vm->_actor->getObj(objectId);
|
||||||
if (obj->sceneNumber != ITE_SCENE_INV) {
|
if (obj->sceneNumber != ITE_SCENE_INV) {
|
||||||
obj->sceneNumber = ITE_SCENE_INV;
|
obj->sceneNumber = ITE_SCENE_INV;
|
||||||
//_vm->_interface->addToInventory(index); TODO: do it
|
_vm->_interface->addToInventory(objectId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,14 +370,12 @@ void Script::sfLockUser(SCRIPTFUNC_PARAMS) {
|
||||||
// Disables mouse input, etc.
|
// Disables mouse input, etc.
|
||||||
void Script::sfPreDialog(SCRIPTFUNC_PARAMS) {
|
void Script::sfPreDialog(SCRIPTFUNC_PARAMS) {
|
||||||
_vm->_interface->deactivate();
|
_vm->_interface->deactivate();
|
||||||
; // clear converse text
|
_vm->_interface->converseClear();
|
||||||
if (_vm->_interface->isInMainMode())
|
if (_vm->_interface->isInMainMode())
|
||||||
_vm->_interface->setMode(kPanelConverse);
|
_vm->_interface->setMode(kPanelConverse);
|
||||||
else
|
else
|
||||||
; // display zero text
|
_vm->_interface->converseDisplayText(0);
|
||||||
_vm->_interface->setMode(kPanelNull);
|
_vm->_interface->setMode(kPanelNull);
|
||||||
|
|
||||||
debug(0, "STUB: SF_preDialog()");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Script function #13 (0x0D)
|
// Script function #13 (0x0D)
|
||||||
|
@ -732,28 +730,27 @@ void Script::sfSceneEq(SCRIPTFUNC_PARAMS) {
|
||||||
|
|
||||||
// Script function #32 (0x20)
|
// Script function #32 (0x20)
|
||||||
void Script::SF_dropObject(SCRIPTFUNC_PARAMS) {
|
void Script::SF_dropObject(SCRIPTFUNC_PARAMS) {
|
||||||
error("SF_dropObject Not implemented");
|
uint16 obj_param = thread->pop();
|
||||||
|
uint16 sprite_param = thread->pop();
|
||||||
/* ScriptDataWord obj_param = thread->pop();
|
int16 x_param = thread->pop();
|
||||||
ScriptDataWord sprite_param = thread->pop();
|
int16 y_param = thread->pop();
|
||||||
ScriptDataWord x_param = thread->pop();
|
ObjectData *obj;
|
||||||
ScriptDataWord y_param = thread->pop();
|
|
||||||
|
|
||||||
int index = obj_param & 0x1FFF;
|
int index = obj_param & 0x1FFF;
|
||||||
|
|
||||||
if (index >= ARRAYSIZE(ObjectTable)) {
|
if (!_vm->_actor->validObjId(_vm->_actor->objIndexToId(index)))
|
||||||
return FAILURE;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
if (ObjectTable[index].sceneIndex == -1) {
|
obj = _vm->_actor->getObj(_vm->_actor->objIndexToId(index));
|
||||||
|
|
||||||
|
if (obj->sceneNumber == -1) {
|
||||||
_vm->_interface->removeFromInventory(index);
|
_vm->_interface->removeFromInventory(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectTable[index].sceneIndex = _vm->_scene->currentSceneNumber();
|
obj->sceneNumber = _vm->_scene->currentSceneNumber();
|
||||||
ObjectTable[index].spritelistRn = 9 + sprite_param;
|
obj->spritelistRn = 9 + sprite_param;
|
||||||
ObjectTable[index].x = x_param;
|
obj->location.x = x_param;
|
||||||
ObjectTable[index].y = y_param;
|
obj->location.y = y_param;
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Script function #33 (0x21)
|
// Script function #33 (0x21)
|
||||||
|
|
|
@ -217,7 +217,7 @@ void Sprite::drawClip(SURFACE *ds, Rect clip, const Point &spritePointer, int wi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale) {
|
int Sprite::draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale) {
|
||||||
const byte *spriteBuffer;
|
const byte *spriteBuffer;
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
|
|
|
@ -70,7 +70,7 @@ public:
|
||||||
Sprite(SagaEngine *vm);
|
Sprite(SagaEngine *vm);
|
||||||
~Sprite(void);
|
~Sprite(void);
|
||||||
int loadList(int resourceId, SpriteList &spriteList); // load or append spriteList
|
int loadList(int resourceId, SpriteList &spriteList); // load or append spriteList
|
||||||
int draw(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale);
|
int draw(SURFACE *ds, SpriteList &spriteList, int32 spriteNumber, const Point &screenCoord, int scale);
|
||||||
int drawOccluded(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, int depth);
|
int drawOccluded(SURFACE *ds, SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, int depth);
|
||||||
bool hitTest(SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, const Point &testPoint);
|
bool hitTest(SpriteList &spriteList, int spriteNumber, const Point &screenCoord, int scale, const Point &testPoint);
|
||||||
void getScaledSpriteBuffer(SpriteList &spriteList, int spriteNumber, int scale, int &width, int &height, int &xAlign, int &yAlign, const byte *&buffer);
|
void getScaledSpriteBuffer(SpriteList &spriteList, int spriteNumber, int scale, int &width, int &height, int &xAlign, int &yAlign, const byte *&buffer);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue