fixed give verb

fixed occasional verbs redraw

svn-id: r18113
This commit is contained in:
Andrew Kurushin 2005-05-15 17:45:59 +00:00
parent 2425e657a2
commit 1d31cd1223
5 changed files with 25 additions and 23 deletions

View file

@ -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;

View file

@ -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();

View file

@ -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);

View file

@ -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