fixed give verb
fixed occasional verbs redraw svn-id: r18113
This commit is contained in:
parent
2425e657a2
commit
1d31cd1223
5 changed files with 25 additions and 23 deletions
|
@ -1136,7 +1136,7 @@ int Actor::direct(int msec) {
|
||||||
// FIXME: HACK. This should be turned into cycle event.
|
// FIXME: HACK. This should be turned into cycle event.
|
||||||
_lastTickMsec += msec;
|
_lastTickMsec += msec;
|
||||||
|
|
||||||
if (_lastTickMsec > 1000 / 15) { // fixme
|
if (_lastTickMsec > 1000 / 15) { // fixme choose 50 for speed up
|
||||||
_lastTickMsec = 0;
|
_lastTickMsec = 0;
|
||||||
//process actions
|
//process actions
|
||||||
handleActions(msec, false);
|
handleActions(msec, false);
|
||||||
|
@ -1238,7 +1238,7 @@ void Actor::createDrawOrderList() {
|
||||||
bool Actor::getSpriteParams(CommonObjectData *commonObjectData, int &frameNumber, SpriteList *&spriteList) {
|
bool Actor::getSpriteParams(CommonObjectData *commonObjectData, int &frameNumber, SpriteList *&spriteList) {
|
||||||
if (_vm->_scene->currentSceneResourceId() == RID_ITE_OVERMAP_SCENE) {
|
if (_vm->_scene->currentSceneResourceId() == RID_ITE_OVERMAP_SCENE) {
|
||||||
if (!(commonObjectData->flags & kProtagonist)){
|
if (!(commonObjectData->flags & kProtagonist)){
|
||||||
warning("not protagonist");
|
// warning("not protagonist");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
frameNumber = 8;
|
frameNumber = 8;
|
||||||
|
|
|
@ -569,21 +569,19 @@ void Interface::handleCommandUpdate(const Point& mousePoint) {
|
||||||
|
|
||||||
panelButton = _mainPanel.hitTest(mousePoint, kPanelAllButtons);
|
panelButton = _mainPanel.hitTest(mousePoint, kPanelAllButtons);
|
||||||
|
|
||||||
if (panelButton != NULL) {
|
bool changed = false;
|
||||||
if (panelButton->type == kPanelButtonArrow) {
|
|
||||||
|
if ((panelButton != NULL) && (panelButton->type == kPanelButtonArrow)) {
|
||||||
if (panelButton->state == 1) {
|
if (panelButton->state == 1) {
|
||||||
//TODO: insert timeout catchup
|
//TODO: insert timeout catchup
|
||||||
inventoryChangePos(panelButton->id);
|
inventoryChangePos(panelButton->id);
|
||||||
}
|
}
|
||||||
draw();
|
changed = true;
|
||||||
}
|
} else {
|
||||||
|
|
||||||
if (panelButton->type == kPanelButtonInventory) {
|
|
||||||
_vm->_script->whichObject(mousePoint);
|
_vm->_script->whichObject(mousePoint);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
bool changed = (panelButton != _mainPanel.currentButton);
|
changed = changed || (panelButton != _mainPanel.currentButton);
|
||||||
_mainPanel.currentButton = panelButton;
|
_mainPanel.currentButton = panelButton;
|
||||||
if (changed) {
|
if (changed) {
|
||||||
draw();
|
draw();
|
||||||
|
|
|
@ -685,8 +685,7 @@ void Script::whichObject(const Point& mousePoint) {
|
||||||
_leftButtonVerb = _currentVerb;
|
_leftButtonVerb = _currentVerb;
|
||||||
newRightButtonVerb = kVerbNone;
|
newRightButtonVerb = kVerbNone;
|
||||||
|
|
||||||
if (_vm->_actor->_protagonist->currentAction == kActionWalkDir) {
|
if (_vm->_actor->_protagonist->currentAction != kActionWalkDir) {
|
||||||
} else {
|
|
||||||
if (_vm->getSceneHeight() >= mousePoint.y) {
|
if (_vm->getSceneHeight() >= mousePoint.y) {
|
||||||
newObjectId = _vm->_actor->hitTest(mousePoint, true);
|
newObjectId = _vm->_actor->hitTest(mousePoint, true);
|
||||||
|
|
||||||
|
@ -755,7 +754,7 @@ void Script::whichObject(const Point& mousePoint) {
|
||||||
newRightButtonVerb = kVerbNone;
|
newRightButtonVerb = kVerbNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_currentVerb == kVerbTalkTo) || ((_currentVerb == kVerbGive) && !_firstObjectSet)) {
|
if ((_currentVerb == kVerbTalkTo) || ((_currentVerb == kVerbGive) && _firstObjectSet)) {
|
||||||
objectId = ID_NOTHING;
|
objectId = ID_NOTHING;
|
||||||
newObjectId = ID_NOTHING;
|
newObjectId = ID_NOTHING;
|
||||||
}
|
}
|
||||||
|
@ -766,7 +765,7 @@ void Script::whichObject(const Point& mousePoint) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((_currentVerb == kVerbTalkTo) || ((_currentVerb == kVerbGive) && !_firstObjectSet)) {
|
if ((_currentVerb == kVerbTalkTo) || ((_currentVerb == kVerbGive) && _firstObjectSet)) {
|
||||||
// no way
|
// no way
|
||||||
} else {
|
} else {
|
||||||
panelButton = _vm->_interface->inventoryHitTest(mousePoint);
|
panelButton = _vm->_interface->inventoryHitTest(mousePoint);
|
||||||
|
|
|
@ -195,10 +195,15 @@ void Script::sfTakeObject(SCRIPTFUNC_PARAMS) {
|
||||||
// Check if an object is carried.
|
// Check if an object is carried.
|
||||||
void Script::sfIsCarried(SCRIPTFUNC_PARAMS) {
|
void Script::sfIsCarried(SCRIPTFUNC_PARAMS) {
|
||||||
uint16 objectId = thread->pop();
|
uint16 objectId = thread->pop();
|
||||||
ObjectData *obj;
|
CommonObjectData *object;
|
||||||
obj = _vm->_actor->getObj(objectId);
|
if (_vm->_actor->validObjId(objectId)) {
|
||||||
|
object = _vm->_actor->getObj(objectId);
|
||||||
|
thread->_returnValue = (object->sceneNumber == ITE_SCENE_INV) ? 1 : 0;
|
||||||
|
} else {
|
||||||
|
thread->_returnValue = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
thread->_returnValue = (obj->sceneNumber == ITE_SCENE_INV) ? 1 : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Script function #4 (0x04) nonblocking
|
// Script function #4 (0x04) nonblocking
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue