aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/verb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agos/verb.cpp')
-rw-r--r--engines/agos/verb.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/engines/agos/verb.cpp b/engines/agos/verb.cpp
index ea4c631c30..f5caad58af 100644
--- a/engines/agos/verb.cpp
+++ b/engines/agos/verb.cpp
@@ -177,6 +177,12 @@ static const char *const english_verb_prep_names[] = {
};
void AGOSEngine::clearName() {
+ if (getGameType() == GType_ELVIRA1 || getGameType() == GType_ELVIRA2)
+ return;
+
+ //if (_nameLocked == 1)
+ // return;
+
HitArea *last;
HitArea *ha;
@@ -738,6 +744,9 @@ void AGOSEngine::boxController(uint x, uint y, uint mode) {
if (best_ha == NULL) {
clearName();
+ if (getGameType() == GType_WW && _mouseCursor >= 4)
+ _mouseCursor = 0;
+
return;
}
@@ -761,12 +770,25 @@ void AGOSEngine::boxController(uint x, uint y, uint mode) {
}
}
- if (best_ha->flags & kBFNoTouchName) {
- clearName();
- } else if (best_ha != _lastNameOn) {
- displayName(best_ha);
+ if ((getGameType() == GType_WW) && (_mouseCursor == 0 || _mouseCursor >= 4)) {
+ uint verb = best_ha->verb & 0x3FFF;
+ if (verb >= 239 && verb <= 242) {
+ uint cursor = verb - 235;
+ if (_mouseCursor != cursor) {
+ _mouseCursor = cursor;
+ _needHitAreaRecalc++;
+ }
+ }
}
+ //if (_nameLocked == 0) {
+ if (best_ha->flags & kBFNoTouchName) {
+ clearName();
+ } else if (best_ha != _lastNameOn) {
+ displayName(best_ha);
+ }
+ //}
+
if (best_ha->flags & kBFInvertTouch && !(best_ha->flags & kBFBoxSelected)) {
hitarea_leave(best_ha, false);
best_ha->flags |= kBFBoxSelected;
@@ -776,6 +798,9 @@ void AGOSEngine::boxController(uint x, uint y, uint mode) {
}
void AGOSEngine::displayName(HitArea *ha) {
+ if (getGameType() == GType_ELVIRA1 || getGameType() == GType_ELVIRA2)
+ return;
+
bool result;
int x = 0, y = 0;