MADS: Initial cleanup of action/player handling
This commit is contained in:
parent
377cbbe77d
commit
6c85572d76
20 changed files with 199 additions and 181 deletions
|
@ -47,7 +47,7 @@ MADSAction::MADSAction(MADSEngine *vm) : _vm(vm) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void MADSAction::clear() {
|
void MADSAction::clear() {
|
||||||
_v83338 = 1;
|
_interAwaiting = AWAITING_COMMAND;
|
||||||
_actionMode = ACTIONMODE_NONE;
|
_actionMode = ACTIONMODE_NONE;
|
||||||
_actionMode2 = ACTIONMODE2_0;
|
_actionMode2 = ACTIONMODE2_0;
|
||||||
_v86F42 = 0;
|
_v86F42 = 0;
|
||||||
|
@ -269,7 +269,7 @@ void MADSAction::startAction() {
|
||||||
DynamicHotspots &dynHotspots = scene._dynamicHotspots;
|
DynamicHotspots &dynHotspots = scene._dynamicHotspots;
|
||||||
Hotspots &hotspots = scene._hotspots;
|
Hotspots &hotspots = scene._hotspots;
|
||||||
|
|
||||||
game._player.moveComplete();
|
game._player.cancelCommand();
|
||||||
|
|
||||||
_inProgress = true;
|
_inProgress = true;
|
||||||
_v8453A = ABORTMODE_0;
|
_v8453A = ABORTMODE_0;
|
||||||
|
@ -354,12 +354,12 @@ void MADSAction::checkActionAtMousePos() {
|
||||||
UserInterface &userInterface = scene._userInterface;
|
UserInterface &userInterface = scene._userInterface;
|
||||||
ScreenObjects &screenObjects = _vm->_game->_screenObjects;
|
ScreenObjects &screenObjects = _vm->_game->_screenObjects;
|
||||||
|
|
||||||
if ((userInterface._category == CAT_ACTION || userInterface._category == CAT_INV_VOCAB) &&
|
if ((userInterface._category == CAT_COMMAND || userInterface._category == CAT_INV_VOCAB) &&
|
||||||
_v83338 != 1 && scene._highlightedHotspot >= 0) {
|
_interAwaiting != 1 && scene._highlightedHotspot >= 0) {
|
||||||
if (_v86F4E == userInterface._category || _v86F4C != scene._highlightedHotspot ||
|
if (_v86F4E == userInterface._category || _v86F4C != scene._highlightedHotspot ||
|
||||||
(_v83338 != 2 && _v83338 != 3))
|
(_interAwaiting != 2 && _interAwaiting != 3))
|
||||||
clear();
|
clear();
|
||||||
else if (_selectedRow != 0 || userInterface._category != CAT_ACTION)
|
else if (_selectedRow != 0 || userInterface._category != CAT_COMMAND)
|
||||||
scene._lookFlag = false;
|
scene._lookFlag = false;
|
||||||
else
|
else
|
||||||
scene._lookFlag = true;
|
scene._lookFlag = true;
|
||||||
|
@ -367,19 +367,19 @@ void MADSAction::checkActionAtMousePos() {
|
||||||
|
|
||||||
if (screenObjects._v7FECA && _vm->_events->_mouseButtons) {
|
if (screenObjects._v7FECA && _vm->_events->_mouseButtons) {
|
||||||
switch (userInterface._category) {
|
switch (userInterface._category) {
|
||||||
case CAT_ACTION:
|
case CAT_COMMAND:
|
||||||
case CAT_INV_VOCAB:
|
case CAT_INV_VOCAB:
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case CAT_INV_LIST:
|
case CAT_INV_LIST:
|
||||||
case CAT_TALK_ENTRY:
|
case CAT_TALK_ENTRY:
|
||||||
if (_v83338 != 3) {
|
if (_interAwaiting != 3) {
|
||||||
if (userInterface._selectedActionIndex >= 0) {
|
if (userInterface._selectedActionIndex >= 0) {
|
||||||
_actionMode = ACTIONMODE_VERB;
|
_actionMode = ACTIONMODE_VERB;
|
||||||
_selectedRow = userInterface._selectedActionIndex;
|
_selectedRow = userInterface._selectedActionIndex;
|
||||||
_flags1 = scene._verbList[_selectedRow]._action1;
|
_flags1 = scene._verbList[_selectedRow]._action1;
|
||||||
_flags2 = scene._verbList[_selectedRow]._action2;
|
_flags2 = scene._verbList[_selectedRow]._action2;
|
||||||
_v83338 = 2;
|
_interAwaiting = AWAITING_THIS;
|
||||||
} else if (userInterface._selectedItemVocabIdx >= 0) {
|
} else if (userInterface._selectedItemVocabIdx >= 0) {
|
||||||
_actionMode = ACTIONMODE_OBJECT;
|
_actionMode = ACTIONMODE_OBJECT;
|
||||||
_selectedRow = userInterface._selectedItemVocabIdx;
|
_selectedRow = userInterface._selectedItemVocabIdx;
|
||||||
|
@ -393,20 +393,20 @@ void MADSAction::checkActionAtMousePos() {
|
||||||
_articleNumber = _flags2;
|
_articleNumber = _flags2;
|
||||||
|
|
||||||
if ((_flags1 == 1 && _flags2 == 0) || (_flags1 == 2 && _flags2 != 0))
|
if ((_flags1 == 1 && _flags2 == 0) || (_flags1 == 2 && _flags2 != 0))
|
||||||
_v83338 = 4;
|
_interAwaiting = AWAITING_RIGHT_MOUSE;
|
||||||
else
|
else
|
||||||
_v83338 = 3;
|
_interAwaiting = AWAITING_THAT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_v83338) {
|
switch (_interAwaiting) {
|
||||||
case 1:
|
case 1:
|
||||||
_articleNumber = 0;
|
_articleNumber = 0;
|
||||||
switch (userInterface._category) {
|
switch (userInterface._category) {
|
||||||
case CAT_ACTION:
|
case CAT_COMMAND:
|
||||||
_actionMode = ACTIONMODE_VERB;
|
_actionMode = ACTIONMODE_VERB;
|
||||||
_selectedRow = scene._highlightedHotspot;
|
_selectedRow = scene._highlightedHotspot;
|
||||||
if (_selectedRow >= 0) {
|
if (_selectedRow >= 0) {
|
||||||
|
@ -491,13 +491,13 @@ void MADSAction::leftClick() {
|
||||||
ScreenObjects &screenObjects = _vm->_game->_screenObjects;
|
ScreenObjects &screenObjects = _vm->_game->_screenObjects;
|
||||||
bool abortFlag = false;
|
bool abortFlag = false;
|
||||||
|
|
||||||
if ((userInterface._category == CAT_ACTION || userInterface._category == CAT_INV_VOCAB) &&
|
if ((userInterface._category == CAT_COMMAND || userInterface._category == CAT_INV_VOCAB) &&
|
||||||
_v83338 != 1 && scene._highlightedHotspot >= 0 &&
|
_interAwaiting != 1 && scene._highlightedHotspot >= 0 &&
|
||||||
_v86F4E == userInterface._category && _v86F4C == scene._highlightedHotspot &&
|
_v86F4E == userInterface._category && _v86F4C == scene._highlightedHotspot &&
|
||||||
(_v83338 == 2 || userInterface._category == CAT_INV_VOCAB)) {
|
(_interAwaiting == 2 || userInterface._category == CAT_INV_VOCAB)) {
|
||||||
abortFlag = true;
|
abortFlag = true;
|
||||||
if (_selectedRow == 0 && userInterface._category == CAT_ACTION) {
|
if (_selectedRow == 0 && userInterface._category == CAT_COMMAND) {
|
||||||
_selectedAction = CAT_ACTION;
|
_selectedAction = CAT_COMMAND;
|
||||||
scene._lookFlag = true;
|
scene._lookFlag = true;
|
||||||
} else {
|
} else {
|
||||||
_selectedAction = CAT_NONE;
|
_selectedAction = CAT_NONE;
|
||||||
|
@ -506,14 +506,14 @@ void MADSAction::leftClick() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (abortFlag || (screenObjects._v7FECA && (userInterface._category == CAT_ACTION ||
|
if (abortFlag || (screenObjects._v7FECA && (userInterface._category == CAT_COMMAND ||
|
||||||
userInterface._category == CAT_INV_VOCAB)))
|
userInterface._category == CAT_INV_VOCAB)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (_v83338) {
|
switch (_interAwaiting) {
|
||||||
case 1:
|
case AWAITING_COMMAND:
|
||||||
switch (userInterface._category) {
|
switch (userInterface._category) {
|
||||||
case CAT_ACTION:
|
case CAT_COMMAND:
|
||||||
if (_selectedRow >= 0) {
|
if (_selectedRow >= 0) {
|
||||||
if (!_flags1) {
|
if (!_flags1) {
|
||||||
_selectedAction = -1;
|
_selectedAction = -1;
|
||||||
|
@ -521,7 +521,7 @@ void MADSAction::leftClick() {
|
||||||
else {
|
else {
|
||||||
_v86F4C = _selectedRow;
|
_v86F4C = _selectedRow;
|
||||||
_v86F4E = _actionMode;
|
_v86F4E = _actionMode;
|
||||||
_v83338 = 2;
|
_interAwaiting = AWAITING_THIS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -536,7 +536,7 @@ void MADSAction::leftClick() {
|
||||||
if (_selectedRow >= 0) {
|
if (_selectedRow >= 0) {
|
||||||
if (_flags1 != 1 || _flags2 != 0) {
|
if (_flags1 != 1 || _flags2 != 0) {
|
||||||
if (_flags1 != 2 || _flags2 == 0) {
|
if (_flags1 != 2 || _flags2 == 0) {
|
||||||
_v83338 = 3;
|
_interAwaiting = AWAITING_THAT;
|
||||||
_articleNumber = _flags2;
|
_articleNumber = _flags2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -560,7 +560,7 @@ void MADSAction::leftClick() {
|
||||||
if (_vm->_events->currentPos().y < MADS_SCENE_HEIGHT) {
|
if (_vm->_events->currentPos().y < MADS_SCENE_HEIGHT) {
|
||||||
scene._customDest = _vm->_events->currentPos() + scene._posAdjust;
|
scene._customDest = _vm->_events->currentPos() + scene._posAdjust;
|
||||||
_selectedAction = -1;
|
_selectedAction = -1;
|
||||||
_v86F4A = -1;
|
_v86F4A = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -574,7 +574,7 @@ void MADSAction::leftClick() {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case AWAITING_THIS:
|
||||||
switch (userInterface._category) {
|
switch (userInterface._category) {
|
||||||
case CAT_INV_LIST:
|
case CAT_INV_LIST:
|
||||||
case CAT_HOTSPOT:
|
case CAT_HOTSPOT:
|
||||||
|
@ -582,7 +582,7 @@ void MADSAction::leftClick() {
|
||||||
if (_hotspotId >= 0) {
|
if (_hotspotId >= 0) {
|
||||||
if (_flags2) {
|
if (_flags2) {
|
||||||
_articleNumber = _flags2;
|
_articleNumber = _flags2;
|
||||||
_v83338 = 3;
|
_interAwaiting = AWAITING_THAT;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_selectedAction = -1;
|
_selectedAction = -1;
|
||||||
|
@ -599,7 +599,7 @@ void MADSAction::leftClick() {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case AWAITING_THAT:
|
||||||
switch (userInterface._category) {
|
switch (userInterface._category) {
|
||||||
case CAT_INV_LIST:
|
case CAT_INV_LIST:
|
||||||
case CAT_HOTSPOT:
|
case CAT_HOTSPOT:
|
||||||
|
|
|
@ -32,6 +32,14 @@ enum ActionMode { ACTIONMODE_NONE = 0, ACTIONMODE_VERB = 1, ACTIONMODE_OBJECT =
|
||||||
enum ActionMode2 { ACTIONMODE2_0 = 0, ACTIONMODE2_2 = 2, ACTIONMODE2_4 = 4, ACTIONMODE2_5 = 5 };
|
enum ActionMode2 { ACTIONMODE2_0 = 0, ACTIONMODE2_2 = 2, ACTIONMODE2_4 = 4, ACTIONMODE2_5 = 5 };
|
||||||
enum AbortTimerMode { ABORTMODE_0 = 0, ABORTMODE_1 = 1, ABORTMODE_2 = 2 };
|
enum AbortTimerMode { ABORTMODE_0 = 0, ABORTMODE_1 = 1, ABORTMODE_2 = 2 };
|
||||||
|
|
||||||
|
enum InterAwaiting {
|
||||||
|
AWAITING_NONE = 0,
|
||||||
|
AWAITING_COMMAND = 1, // Initial state: waiting for a command verb
|
||||||
|
AWAITING_THIS = 2, // Waiting for object
|
||||||
|
AWAITING_THAT = 3, // Waiting for a second object
|
||||||
|
AWAITING_RIGHT_MOUSE = 4 // Waiting for mouse button release
|
||||||
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
VERB_NONE = 0,
|
VERB_NONE = 0,
|
||||||
VERB_LOOK = 3,
|
VERB_LOOK = 3,
|
||||||
|
@ -98,7 +106,7 @@ public:
|
||||||
int16 _v86F4E;
|
int16 _v86F4E;
|
||||||
bool _v86F4A;
|
bool _v86F4A;
|
||||||
int16 _v86F4C;
|
int16 _v86F4C;
|
||||||
int _v83338;
|
InterAwaiting _interAwaiting;
|
||||||
bool _inProgress;
|
bool _inProgress;
|
||||||
int _v8453A;
|
int _v8453A;
|
||||||
|
|
||||||
|
|
|
@ -316,7 +316,7 @@ void Animation::startAnimation(int abortTimers) {
|
||||||
_currentFrame = 0;
|
_currentFrame = 0;
|
||||||
_oldFrameEntry = 0;
|
_oldFrameEntry = 0;
|
||||||
_nextFrameTimer = _vm->_game->_scene._frameStartTime;
|
_nextFrameTimer = _vm->_game->_scene._frameStartTime;
|
||||||
_abortTimers = abortTimers;
|
_trigger = abortTimers;
|
||||||
_abortTimersMode = _vm->_game->_abortTimersMode2;
|
_abortTimersMode = _vm->_game->_abortTimersMode2;
|
||||||
_vm->_game->_scene._action._activeAction = _actionDetails;
|
_vm->_game->_scene._action._activeAction = _actionDetails;
|
||||||
|
|
||||||
|
@ -530,8 +530,8 @@ void Animation::update() {
|
||||||
_currentFrame++;
|
_currentFrame++;
|
||||||
if (_currentFrame >= (int)_miscEntries.size()) {
|
if (_currentFrame >= (int)_miscEntries.size()) {
|
||||||
// Animation is complete
|
// Animation is complete
|
||||||
if (_abortTimers != 0) {
|
if (_trigger != 0) {
|
||||||
_vm->_game->_abortTimers = _abortTimers;
|
_vm->_game->_trigger = _trigger;
|
||||||
_vm->_game->_abortTimersMode = _abortTimersMode;
|
_vm->_game->_abortTimersMode = _abortTimersMode;
|
||||||
|
|
||||||
if (_abortTimersMode != ABORTMODE_1) {
|
if (_abortTimersMode != ABORTMODE_1) {
|
||||||
|
|
|
@ -128,7 +128,7 @@ private:
|
||||||
uint32 _nextFrameTimer;
|
uint32 _nextFrameTimer;
|
||||||
uint32 _nextScrollTimer;
|
uint32 _nextScrollTimer;
|
||||||
int _messageCtr;
|
int _messageCtr;
|
||||||
int _abortTimers;
|
int _trigger;
|
||||||
AbortTimerMode _abortTimersMode;
|
AbortTimerMode _abortTimersMode;
|
||||||
ActionDetails _actionDetails;
|
ActionDetails _actionDetails;
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,6 @@ Game::Game(MADSEngine *vm): _vm(vm), _surface(nullptr), _objects(vm),
|
||||||
_quoteEmergency = false;
|
_quoteEmergency = false;
|
||||||
_vocabEmergency = false;
|
_vocabEmergency = false;
|
||||||
_aaName = "*I0.AA";
|
_aaName = "*I0.AA";
|
||||||
_playerSpritesFlag = false;
|
|
||||||
_priorFrameTimer = 0;
|
_priorFrameTimer = 0;
|
||||||
_updateSceneFlag = false;
|
_updateSceneFlag = false;
|
||||||
_abortTimersMode = ABORTMODE_0;
|
_abortTimersMode = ABORTMODE_0;
|
||||||
|
@ -191,7 +190,7 @@ void Game::sectionLoop() {
|
||||||
if (!_player._spritesLoaded && _player._loadsFirst) {
|
if (!_player._spritesLoaded && _player._loadsFirst) {
|
||||||
if (_player.loadSprites(""))
|
if (_player.loadSprites(""))
|
||||||
_vm->quitGame();
|
_vm->quitGame();
|
||||||
_playerSpritesFlag = true;
|
_player._loadedFirst = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_scene.loadScene(_scene._nextSceneId, _aaName, 0);
|
_scene.loadScene(_scene._nextSceneId, _aaName, 0);
|
||||||
|
@ -200,33 +199,33 @@ void Game::sectionLoop() {
|
||||||
if (!_player._spritesLoaded) {
|
if (!_player._spritesLoaded) {
|
||||||
if (_player.loadSprites(""))
|
if (_player.loadSprites(""))
|
||||||
_vm->quitGame();
|
_vm->quitGame();
|
||||||
_playerSpritesFlag = false;
|
_player._loadedFirst = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_vm->_events->initVars();
|
_vm->_events->initVars();
|
||||||
|
_scene._userInterface._highlightedCommandIndex = -1;
|
||||||
|
_scene._userInterface._highlightedItemIndex = -1;
|
||||||
_scene._userInterface._highlightedActionIndex = -1;
|
_scene._userInterface._highlightedActionIndex = -1;
|
||||||
_scene._userInterface._v1C = -1;
|
|
||||||
_scene._userInterface._v1E = -1;
|
|
||||||
|
|
||||||
_scene._action.clear();
|
_scene._action.clear();
|
||||||
_player.turnToDestFacing();
|
_player.setFinalFacing();
|
||||||
_player._facing = _player._turnToFacing;
|
_player._facing = _player._turnToFacing;
|
||||||
_player.moveComplete();
|
_player.cancelCommand();
|
||||||
|
_kernelMode = KERNEL_ROOM_INIT;
|
||||||
|
|
||||||
switch (_vm->_screenFade) {
|
switch (_vm->_screenFade) {
|
||||||
case SCREEN_FADE_SMOOTH:
|
case SCREEN_FADE_SMOOTH:
|
||||||
_abortTimers2 = kTransitionFadeOutIn;
|
_fx = kTransitionFadeOutIn;
|
||||||
break;
|
break;
|
||||||
case SCREEN_FADE_FAST:
|
case SCREEN_FADE_FAST:
|
||||||
_abortTimers2 = kCenterVertTransition;
|
_fx = kCenterVertTransition;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
_abortTimers2 = kTransitionNone;
|
_fx = kTransitionNone;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_abortTimers = 0;
|
_trigger = 0;
|
||||||
_abortTimersMode2 = ABORTMODE_1;
|
|
||||||
_priorFrameTimer = _scene._frameStartTime;
|
_priorFrameTimer = _scene._frameStartTime;
|
||||||
|
|
||||||
// Call the scene logic for entering the given scene
|
// Call the scene logic for entering the given scene
|
||||||
|
@ -271,7 +270,7 @@ void Game::sectionLoop() {
|
||||||
|
|
||||||
warning("TODO: sub_1DD8C, sub_1DD7E");
|
warning("TODO: sub_1DD8C, sub_1DD7E");
|
||||||
|
|
||||||
if (!_playerSpritesFlag) {
|
if (!_player._loadedFirst) {
|
||||||
_player._spritesLoaded = false;
|
_player._spritesLoaded = false;
|
||||||
_player._spritesChanged = true;
|
_player._spritesChanged = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,6 @@ protected:
|
||||||
bool _quoteEmergency;
|
bool _quoteEmergency;
|
||||||
bool _vocabEmergency;
|
bool _vocabEmergency;
|
||||||
bool _updateSceneFlag;
|
bool _updateSceneFlag;
|
||||||
bool _playerSpritesFlag;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
|
@ -133,8 +132,8 @@ public:
|
||||||
Scene _scene;
|
Scene _scene;
|
||||||
KernelMode _kernelMode;
|
KernelMode _kernelMode;
|
||||||
int _v2;
|
int _v2;
|
||||||
int _abortTimers;
|
int _trigger;
|
||||||
int _abortTimers2;
|
ScreenTransition _fx;
|
||||||
AbortTimerMode _abortTimersMode;
|
AbortTimerMode _abortTimersMode;
|
||||||
AbortTimerMode _abortTimersMode2;
|
AbortTimerMode _abortTimersMode2;
|
||||||
uint32 _priorFrameTimer;
|
uint32 _priorFrameTimer;
|
||||||
|
|
|
@ -74,7 +74,7 @@ int KernelMessages::add(const Common::Point &pt, uint fontColor, uint8 flags,
|
||||||
rec._textDisplayIndex = -1;
|
rec._textDisplayIndex = -1;
|
||||||
rec._timeout = timeout;
|
rec._timeout = timeout;
|
||||||
rec._frameTimer = _vm->_game->_priorFrameTimer;
|
rec._frameTimer = _vm->_game->_priorFrameTimer;
|
||||||
rec._abortTimers = abortTimers;
|
rec._trigger = abortTimers;
|
||||||
rec._abortMode = _vm->_game->_abortTimersMode2;
|
rec._abortMode = _vm->_game->_abortTimersMode2;
|
||||||
|
|
||||||
rec._actionDetails = scene._action._activeAction;
|
rec._actionDetails = scene._action._activeAction;
|
||||||
|
@ -143,7 +143,7 @@ void KernelMessages::reset() {
|
||||||
void KernelMessages::update() {
|
void KernelMessages::update() {
|
||||||
uint32 currentTimer = _vm->_game->_scene._frameStartTime;
|
uint32 currentTimer = _vm->_game->_scene._frameStartTime;
|
||||||
|
|
||||||
for (uint i = 0; i < _entries.size() && !_vm->_game->_abortTimers; ++i) {
|
for (uint i = 0; i < _entries.size() && !_vm->_game->_trigger; ++i) {
|
||||||
KernelMessage &msg = _entries[i];
|
KernelMessage &msg = _entries[i];
|
||||||
|
|
||||||
if (((msg._flags & KMSG_ACTIVE) != 0) && (currentTimer >= msg._frameTimer))
|
if (((msg._flags & KMSG_ACTIVE) != 0) && (currentTimer >= msg._frameTimer))
|
||||||
|
@ -173,10 +173,10 @@ void KernelMessages::processText(int msgIndex) {
|
||||||
msg._timeout = 0;
|
msg._timeout = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((msg._timeout <= 0) && (_vm->_game->_abortTimers == 0)) {
|
if ((msg._timeout <= 0) && (_vm->_game->_trigger == 0)) {
|
||||||
msg._flags |= KMSG_EXPIRE;
|
msg._flags |= KMSG_EXPIRE;
|
||||||
if (msg._abortTimers != 0) {
|
if (msg._trigger != 0) {
|
||||||
_vm->_game->_abortTimers = msg._abortTimers;
|
_vm->_game->_trigger = msg._trigger;
|
||||||
_vm->_game->_abortTimersMode = msg._abortMode;
|
_vm->_game->_abortTimersMode = msg._abortMode;
|
||||||
|
|
||||||
if (_vm->_game->_abortTimersMode != ABORTMODE_1) {
|
if (_vm->_game->_abortTimersMode != ABORTMODE_1) {
|
||||||
|
|
|
@ -56,7 +56,7 @@ public:
|
||||||
uint32 _frameTimer2;
|
uint32 _frameTimer2;
|
||||||
uint32 _frameTimer;
|
uint32 _frameTimer;
|
||||||
uint32 _timeout;
|
uint32 _timeout;
|
||||||
int _abortTimers;
|
int _trigger;
|
||||||
AbortTimerMode _abortMode;
|
AbortTimerMode _abortMode;
|
||||||
ActionDetails _actionDetails;
|
ActionDetails _actionDetails;
|
||||||
Common::String _msg;
|
Common::String _msg;
|
||||||
|
|
|
@ -215,7 +215,7 @@ void Scene103::step() {
|
||||||
Common::Point pt;
|
Common::Point pt;
|
||||||
int dist;
|
int dist;
|
||||||
|
|
||||||
switch (_vm->_game->_abortTimers) {
|
switch (_vm->_game->_trigger) {
|
||||||
case 70:
|
case 70:
|
||||||
_vm->_game->_player._stepEnabled = true;
|
_vm->_game->_player._stepEnabled = true;
|
||||||
break;
|
break;
|
||||||
|
@ -260,7 +260,7 @@ void Scene103::actions() {
|
||||||
if (_action._savedFields._lookFlag) {
|
if (_action._savedFields._lookFlag) {
|
||||||
_vm->_dialogs->show(10322);
|
_vm->_dialogs->show(10322);
|
||||||
} else if (_action.isAction(395, 110, 0)) {
|
} else if (_action.isAction(395, 110, 0)) {
|
||||||
switch (_vm->_game->_abortTimers) {
|
switch (_vm->_game->_trigger) {
|
||||||
case 0:
|
case 0:
|
||||||
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(
|
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(
|
||||||
_globals._spriteIndexes[6], false, 6, 1);
|
_globals._spriteIndexes[6], false, 6, 1);
|
||||||
|
@ -280,7 +280,7 @@ void Scene103::actions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_action.isAction(VERB_TAKE, 371, 0) && _game._objects.isInRoom(OBJ_TIMER_MODULE)) {
|
else if (_action.isAction(VERB_TAKE, 371, 0) && _game._objects.isInRoom(OBJ_TIMER_MODULE)) {
|
||||||
switch (_vm->_game->_abortTimers) {
|
switch (_vm->_game->_trigger) {
|
||||||
case 0:
|
case 0:
|
||||||
_scene->changeDepthSurface(1);
|
_scene->changeDepthSurface(1);
|
||||||
_globals._spriteIndexes[28] = _scene->_sequences.startReverseCycle(
|
_globals._spriteIndexes[28] = _scene->_sequences.startReverseCycle(
|
||||||
|
@ -312,7 +312,7 @@ void Scene103::actions() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (_action.isAction(VERB_TAKE, 289, 0) && _game._objects.isInRoom(OBJ_REBREATHER)) {
|
} else if (_action.isAction(VERB_TAKE, 289, 0) && _game._objects.isInRoom(OBJ_REBREATHER)) {
|
||||||
switch (_vm->_game->_abortTimers) {
|
switch (_vm->_game->_trigger) {
|
||||||
case 0:
|
case 0:
|
||||||
_scene->changeDepthSurface(1);
|
_scene->changeDepthSurface(1);
|
||||||
_globals._spriteIndexes[27] = _scene->_sequences.startReverseCycle(
|
_globals._spriteIndexes[27] = _scene->_sequences.startReverseCycle(
|
||||||
|
@ -344,26 +344,26 @@ void Scene103::actions() {
|
||||||
} else if (_action.isAction(VERB_LOOK, 362, 0)) {
|
} else if (_action.isAction(VERB_LOOK, 362, 0)) {
|
||||||
_vm->_dialogs->show(10301);
|
_vm->_dialogs->show(10301);
|
||||||
} else if (_action.isAction(VERB_TAKE, 362, 0)) {
|
} else if (_action.isAction(VERB_TAKE, 362, 0)) {
|
||||||
if (!_vm->_game->_abortTimers)
|
if (!_vm->_game->_trigger)
|
||||||
_vm->_sound->command(31);
|
_vm->_sound->command(31);
|
||||||
|
|
||||||
if (_vm->_game->_abortTimers2 < 2) {
|
if (_vm->_game->_fx < 2) {
|
||||||
_globals._spriteIndexes[24] = _scene->_sequences.addSpriteCycle(
|
_globals._spriteIndexes[24] = _scene->_sequences.addSpriteCycle(
|
||||||
_globals._spriteIndexes[9], false, 6,
|
_globals._spriteIndexes[9], false, 6,
|
||||||
_vm->_game->_abortTimers < 1 ? 1 : 0);
|
_vm->_game->_trigger < 1 ? 1 : 0);
|
||||||
if (_vm->_game->_abortTimers) {
|
if (_vm->_game->_trigger) {
|
||||||
_scene->_sequences.setAnimRange(_globals._spriteIndexes[24], -1, 0);
|
_scene->_sequences.setAnimRange(_globals._spriteIndexes[24], -1, 0);
|
||||||
Common::String msg = _game.getQuote(51);
|
Common::String msg = _game.getQuote(51);
|
||||||
_scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 18, 0, 60, msg);
|
_scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 18, 0, 60, msg);
|
||||||
_scene->_sequences.addTimer(120, _vm->_game->_abortTimers);
|
_scene->_sequences.addTimer(120, _vm->_game->_trigger);
|
||||||
} else {
|
} else {
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[24],
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[24],
|
||||||
SM_0, 0, 1);
|
SM_0, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
_game._player._stepEnabled = _game._abortTimers == 2;
|
_game._player._stepEnabled = _game._trigger == 2;
|
||||||
_globals[kTurkeyExploded] = -1;
|
_globals[kTurkeyExploded] = -1;
|
||||||
if (_game._abortTimers == 2) {
|
if (_game._trigger == 2) {
|
||||||
_vm->_dialogs->show(1030);
|
_vm->_dialogs->show(1030);
|
||||||
_scene->_hotspots.activate(362, false);
|
_scene->_hotspots.activate(362, false);
|
||||||
}
|
}
|
||||||
|
@ -372,7 +372,7 @@ void Scene103::actions() {
|
||||||
_vm->_dialogs->show(!_globals[kTurkeyExploded] ? 10323 : 10303);
|
_vm->_dialogs->show(!_globals[kTurkeyExploded] ? 10323 : 10303);
|
||||||
}
|
}
|
||||||
else if (_action.isAction(VERB_TALKTO, 27, 0)) {
|
else if (_action.isAction(VERB_TALKTO, 27, 0)) {
|
||||||
switch (_vm->_game->_abortTimers) {
|
switch (_vm->_game->_trigger) {
|
||||||
case 0: {
|
case 0: {
|
||||||
_game._player._stepEnabled = false;
|
_game._player._stepEnabled = false;
|
||||||
Common::String msg = _game.getQuote(71);
|
Common::String msg = _game.getQuote(71);
|
||||||
|
|
|
@ -218,7 +218,7 @@ void Scene201::step() {
|
||||||
_pterodactylFlag = false;
|
_pterodactylFlag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 70) {
|
if (_game._trigger == 70) {
|
||||||
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 9, 1, 0, 0);
|
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 9, 1, 0, 0);
|
||||||
_game._player._visible = false;
|
_game._player._visible = false;
|
||||||
_scene->_sequences.setAnimRange(_globals._spriteIndexes[21], 12, 16);
|
_scene->_sequences.setAnimRange(_globals._spriteIndexes[21], 12, 16);
|
||||||
|
@ -231,24 +231,24 @@ void Scene201::step() {
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[21], SM_0, 0, 73);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[21], SM_0, 0, 73);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 81) {
|
if (_game._trigger == 81) {
|
||||||
_scene->_kernelMessages.reset();
|
_scene->_kernelMessages.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 71) {
|
if (_game._trigger == 71) {
|
||||||
_globals._spriteIndexes[22] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[7], false, 9, 0, 0, 0);
|
_globals._spriteIndexes[22] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[7], false, 9, 0, 0, 0);
|
||||||
_scene->_sequences.setAnimRange(_globals._spriteIndexes[22], -2, -2);
|
_scene->_sequences.setAnimRange(_globals._spriteIndexes[22], -2, -2);
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[22], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[22], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 73) {
|
if (_game._trigger == 73) {
|
||||||
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 9, 1, 0, 0);
|
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 9, 1, 0, 0);
|
||||||
_scene->_sequences.setAnimRange(_globals._spriteIndexes[21], 17, -2);
|
_scene->_sequences.setAnimRange(_globals._spriteIndexes[21], 17, -2);
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[21], SM_0, 0, 74);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[21], SM_0, 0, 74);
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[21], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[21], 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 74) {
|
if (_game._trigger == 74) {
|
||||||
_vm->_sound->command(40);
|
_vm->_sound->command(40);
|
||||||
|
|
||||||
_scene->_kernelMessages.add(Common::Point(125, 56), 0xFDFC, 32, 82, 180, _game.getQuote(91));
|
_scene->_kernelMessages.add(Common::Point(125, 56), 0xFDFC, 32, 82, 180, _game.getQuote(91));
|
||||||
|
@ -258,24 +258,24 @@ void Scene201::step() {
|
||||||
_scene->_sequences.addTimer(180, 75);
|
_scene->_sequences.addTimer(180, 75);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 75) {
|
if (_game._trigger == 75) {
|
||||||
_globals[kMeteorologistEverSeen] = 0;
|
_globals[kMeteorologistEverSeen] = 0;
|
||||||
_scene->_nextSceneId = 202;
|
_scene->_nextSceneId = 202;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 76) {
|
if (_game._trigger == 76) {
|
||||||
_game._player._stepEnabled = true;
|
_game._player._stepEnabled = true;
|
||||||
_game._player._visible = true;
|
_game._player._visible = true;
|
||||||
_game._player._priorTimer = _scene->_frameStartTime - _game._player._ticksAmount;
|
_game._player._priorTimer = _scene->_frameStartTime - _game._player._ticksAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 77) {
|
if (_game._trigger == 77) {
|
||||||
_globals[kTeleporterCommand] = 1;
|
_globals[kTeleporterCommand] = 1;
|
||||||
_scene->_nextSceneId = _globals[kTeleporterDestination];
|
_scene->_nextSceneId = _globals[kTeleporterDestination];
|
||||||
_scene->_reloadSceneFlag = true;
|
_scene->_reloadSceneFlag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 78) {
|
if (_game._trigger == 78) {
|
||||||
_vm->_sound->command(40);
|
_vm->_sound->command(40);
|
||||||
_vm->_dialogs->show(0x4E92);
|
_vm->_dialogs->show(0x4E92);
|
||||||
_scene->_reloadSceneFlag = true;
|
_scene->_reloadSceneFlag = true;
|
||||||
|
@ -288,12 +288,12 @@ void Scene201::actions() {
|
||||||
if (action->isAction(0x18C, 0x83, 0))
|
if (action->isAction(0x18C, 0x83, 0))
|
||||||
_scene->_nextSceneId = 202;
|
_scene->_nextSceneId = 202;
|
||||||
else if ((action->isAction(0x50, 0x156, 0)) || (action->isAction(0x188, 0x16C, 0)) || (action->isAction(0x188, 0x1B6, 0))) {
|
else if ((action->isAction(0x50, 0x156, 0)) || (action->isAction(0x188, 0x16C, 0)) || (action->isAction(0x188, 0x1B6, 0))) {
|
||||||
if (_game._abortTimers == 0) {
|
if (_game._trigger == 0) {
|
||||||
_game._player._stepEnabled = false;
|
_game._player._stepEnabled = false;
|
||||||
_game._player._visible = false;
|
_game._player._visible = false;
|
||||||
int sepChar = (_globals[kSexOfRex] == SEX_UNKNOWN) ? 't' : 'u';
|
int sepChar = (_globals[kSexOfRex] == SEX_UNKNOWN) ? 't' : 'u';
|
||||||
_scene->loadAnimation(formAnimName(sepChar, 0), 1);
|
_scene->loadAnimation(formAnimName(sepChar, 0), 1);
|
||||||
} else if (_game._abortTimers == 1) {
|
} else if (_game._trigger == 1) {
|
||||||
_scene->_nextSceneId = 213;
|
_scene->_nextSceneId = 213;
|
||||||
}
|
}
|
||||||
} else if (action->isAction(0x3, 0x1A6, 0)) {
|
} else if (action->isAction(0x3, 0x1A6, 0)) {
|
||||||
|
@ -474,10 +474,10 @@ void Scene202::step() {
|
||||||
setRandomKernelMessage();
|
setRandomKernelMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 70)
|
if (_game._trigger == 70)
|
||||||
_activeMsgFl = false;
|
_activeMsgFl = false;
|
||||||
|
|
||||||
if (_game._abortTimers == 71) {
|
if (_game._trigger == 71) {
|
||||||
_vm->_sound->command(3);
|
_vm->_sound->command(3);
|
||||||
_vm->_sound->command(9);
|
_vm->_sound->command(9);
|
||||||
_globals._v8425C = 900 + _scene->_frameStartTime;
|
_globals._v8425C = 900 + _scene->_frameStartTime;
|
||||||
|
@ -507,7 +507,7 @@ void Scene202::step() {
|
||||||
_globals[kMeteorologistWatch] = 0;
|
_globals[kMeteorologistWatch] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (_game._abortTimers) {
|
switch (_game._trigger) {
|
||||||
case 90:
|
case 90:
|
||||||
_vm->_sound->command(41);
|
_vm->_sound->command(41);
|
||||||
_scene->_sequences.remove(_globals._spriteIndexes[25]);
|
_scene->_sequences.remove(_globals._spriteIndexes[25]);
|
||||||
|
@ -717,7 +717,7 @@ void Scene202::preActions() {
|
||||||
_scene->_kernelMessages.reset();
|
_scene->_kernelMessages.reset();
|
||||||
|
|
||||||
if (!_ladderTopFl && (action->isAction(0x4E, 0xC7, 0) || !action->_walkFlag)) {
|
if (!_ladderTopFl && (action->isAction(0x4E, 0xC7, 0) || !action->_walkFlag)) {
|
||||||
if (_game._abortTimers == 0) {
|
if (_game._trigger == 0) {
|
||||||
_vm->_sound->command(29);
|
_vm->_sound->command(29);
|
||||||
action->_walkFlag = false;
|
action->_walkFlag = false;
|
||||||
_game._player._stepEnabled = false;
|
_game._player._stepEnabled = false;
|
||||||
|
@ -725,7 +725,7 @@ void Scene202::preActions() {
|
||||||
_globals._spriteIndexes[23] = _scene->_sequences.addReverseSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0);
|
_globals._spriteIndexes[23] = _scene->_sequences.addReverseSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0);
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[23], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[23], 1);
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1);
|
||||||
} else if (_game._abortTimers == 1) {
|
} else if (_game._trigger == 1) {
|
||||||
_scene->_sequences.updateTimeout(-1, _globals._spriteIndexes[23]);
|
_scene->_sequences.updateTimeout(-1, _globals._spriteIndexes[23]);
|
||||||
warning("CHECKME: _scene->_dynamicHotspots.remove(_globals._frameTime);");
|
warning("CHECKME: _scene->_dynamicHotspots.remove(_globals._frameTime);");
|
||||||
_scene->_dynamicHotspots.remove(_globals._frameTime);
|
_scene->_dynamicHotspots.remove(_globals._frameTime);
|
||||||
|
@ -765,7 +765,7 @@ void Scene202::actions() {
|
||||||
_scene->_nextSceneId = 201;
|
_scene->_nextSceneId = 201;
|
||||||
} else if (action->isAction(0x4, 0x2C, 0)) {
|
} else if (action->isAction(0x4, 0x2C, 0)) {
|
||||||
if (action->_actionMode2 == 4) {
|
if (action->_actionMode2 == 4) {
|
||||||
if (_game._abortTimers == 0) {
|
if (_game._trigger == 0) {
|
||||||
if (_game._objects.isInInventory(OBJ_BONES)) {
|
if (_game._objects.isInInventory(OBJ_BONES)) {
|
||||||
_vm->_dialogs->show(0x4EFB);
|
_vm->_dialogs->show(0x4EFB);
|
||||||
} else {
|
} else {
|
||||||
|
@ -776,7 +776,7 @@ void Scene202::actions() {
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[22], SM_FRAME_INDEX, 6, 1);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[22], SM_FRAME_INDEX, 6, 1);
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[22], SM_0, 0, 2);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[22], SM_0, 0, 2);
|
||||||
}
|
}
|
||||||
} else if (_game._abortTimers == 1) {
|
} else if (_game._trigger == 1) {
|
||||||
if ((_game._player._playerPos.x == 132) && (_game._player._playerPos.y == 97)) {
|
if ((_game._player._playerPos.x == 132) && (_game._player._playerPos.y == 97)) {
|
||||||
_scene->_sequences.remove(_globals._spriteIndexes[16]);
|
_scene->_sequences.remove(_globals._spriteIndexes[16]);
|
||||||
_globals[kBone202Status] |= 1;
|
_globals[kBone202Status] |= 1;
|
||||||
|
@ -784,7 +784,7 @@ void Scene202::actions() {
|
||||||
_scene->_sequences.remove(_globals._spriteIndexes[21]);
|
_scene->_sequences.remove(_globals._spriteIndexes[21]);
|
||||||
_globals[kBone202Status] |= 2;
|
_globals[kBone202Status] |= 2;
|
||||||
}
|
}
|
||||||
} else if (_game._abortTimers == 2) {
|
} else if (_game._trigger == 2) {
|
||||||
if (_game._objects.isInInventory(OBJ_BONE)) {
|
if (_game._objects.isInInventory(OBJ_BONE)) {
|
||||||
_game._objects.removeFromInventory(OBJ_BONE, 1);
|
_game._objects.removeFromInventory(OBJ_BONE, 1);
|
||||||
_game._objects.addToInventory(OBJ_BONES);
|
_game._objects.addToInventory(OBJ_BONES);
|
||||||
|
@ -802,7 +802,7 @@ void Scene202::actions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((action->isAction(0x50, 0xC7, 0)) && (_globals[kLadderBroken] == 0)) {
|
} else if ((action->isAction(0x50, 0xC7, 0)) && (_globals[kLadderBroken] == 0)) {
|
||||||
if (_game._abortTimers == 0) {
|
if (_game._trigger == 0) {
|
||||||
_vm->_sound->command(29);
|
_vm->_sound->command(29);
|
||||||
_globals._v8425C = _scene->_frameStartTime;
|
_globals._v8425C = _scene->_frameStartTime;
|
||||||
_game._player._visible = false;
|
_game._player._visible = false;
|
||||||
|
@ -814,7 +814,7 @@ void Scene202::actions() {
|
||||||
_globals._spriteIndexes[23] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0);
|
_globals._spriteIndexes[23] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0);
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[23], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[23], 1);
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1);
|
||||||
} else if (_game._abortTimers == 1) {
|
} else if (_game._trigger == 1) {
|
||||||
_globals._spriteIndexes[24] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], true, 1);
|
_globals._spriteIndexes[24] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], true, 1);
|
||||||
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
||||||
|
@ -829,7 +829,7 @@ void Scene202::actions() {
|
||||||
}
|
}
|
||||||
} else if (((action->isAction(0x3, 0x27, 0x82)) || (action->isAction(0x3, 0x27, 0x1B6))) && (_globals[kSexOfRex] == SEX_MALE)) {
|
} else if (((action->isAction(0x3, 0x27, 0x82)) || (action->isAction(0x3, 0x27, 0x1B6))) && (_globals[kSexOfRex] == SEX_MALE)) {
|
||||||
if (!_ladderTopFl) {
|
if (!_ladderTopFl) {
|
||||||
if (_game._abortTimers == 0) {
|
if (_game._trigger == 0) {
|
||||||
_game._player._stepEnabled = false;
|
_game._player._stepEnabled = false;
|
||||||
_game._player._visible= false;
|
_game._player._visible= false;
|
||||||
_globals._spriteIndexes[25] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[9], false, 6, 1, 0, 0);
|
_globals._spriteIndexes[25] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[9], false, 6, 1, 0, 0);
|
||||||
|
@ -838,7 +838,7 @@ void Scene202::actions() {
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[25], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[25], 1);
|
||||||
_scene->_sequences.updateTimeout(-1, _globals._spriteIndexes[25]);
|
_scene->_sequences.updateTimeout(-1, _globals._spriteIndexes[25]);
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[25], SM_0, 0, 1);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[25], SM_0, 0, 1);
|
||||||
} else if (_game._abortTimers == 1) {
|
} else if (_game._trigger == 1) {
|
||||||
_globals._spriteIndexes[25] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], false, 6);
|
_globals._spriteIndexes[25] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], false, 6);
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[25], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[25], 1);
|
||||||
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[25], Common::Point(172, 123));
|
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[25], Common::Point(172, 123));
|
||||||
|
@ -848,7 +848,7 @@ void Scene202::actions() {
|
||||||
} else {
|
} else {
|
||||||
_scene->_sequences.addTimer(120, 2);
|
_scene->_sequences.addTimer(120, 2);
|
||||||
}
|
}
|
||||||
} else if (_game._abortTimers == 2) {
|
} else if (_game._trigger == 2) {
|
||||||
if (!_scene->_activeAnimation && (_globals._abortVal == 0)) {
|
if (!_scene->_activeAnimation && (_globals._abortVal == 0)) {
|
||||||
_vm->_dialogs->show(0x4EFE);
|
_vm->_dialogs->show(0x4EFE);
|
||||||
}
|
}
|
||||||
|
@ -858,7 +858,7 @@ void Scene202::actions() {
|
||||||
_scene->_sequences.setAnimRange(_globals._spriteIndexes[25], 1, 6);
|
_scene->_sequences.setAnimRange(_globals._spriteIndexes[25], 1, 6);
|
||||||
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[25], Common::Point(172, 123));
|
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[25], Common::Point(172, 123));
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[25], SM_0, 0, 3);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[25], SM_0, 0, 3);
|
||||||
} else if (_game._abortTimers == 3) {
|
} else if (_game._trigger == 3) {
|
||||||
_scene->_sequences.updateTimeout(-1, _globals._spriteIndexes[25]);
|
_scene->_sequences.updateTimeout(-1, _globals._spriteIndexes[25]);
|
||||||
_game._player._stepEnabled = true;
|
_game._player._stepEnabled = true;
|
||||||
_game._player._visible = true;
|
_game._player._visible = true;
|
||||||
|
@ -867,7 +867,7 @@ void Scene202::actions() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_game._abortTimers == 0) {
|
if (_game._trigger == 0) {
|
||||||
_globals._v84268 = 1;
|
_globals._v84268 = 1;
|
||||||
_game._player._stepEnabled = false;
|
_game._player._stepEnabled = false;
|
||||||
_scene->_sequences.remove(_globals._spriteIndexes[24]);
|
_scene->_sequences.remove(_globals._spriteIndexes[24]);
|
||||||
|
@ -875,7 +875,7 @@ void Scene202::actions() {
|
||||||
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[24], SM_0, 0, 1);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[24], SM_0, 0, 1);
|
||||||
} else if (_game._abortTimers == 1) {
|
} else if (_game._trigger == 1) {
|
||||||
_globals._spriteIndexes[25] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], true, -2);
|
_globals._spriteIndexes[25] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], true, -2);
|
||||||
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[25], Common::Point(247, 82));
|
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[25], Common::Point(247, 82));
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[25], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[25], 1);
|
||||||
|
@ -897,7 +897,7 @@ void Scene202::actions() {
|
||||||
} else {
|
} else {
|
||||||
_scene->_sequences.addTimer(120, 2);
|
_scene->_sequences.addTimer(120, 2);
|
||||||
}
|
}
|
||||||
} else if (_game._abortTimers == 2) {
|
} else if (_game._trigger == 2) {
|
||||||
if (!_scene->_activeAnimation)
|
if (!_scene->_activeAnimation)
|
||||||
_vm->_dialogs->show(0x4EFE);
|
_vm->_dialogs->show(0x4EFE);
|
||||||
_globals._abortVal = 0;
|
_globals._abortVal = 0;
|
||||||
|
@ -906,7 +906,7 @@ void Scene202::actions() {
|
||||||
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
||||||
_scene->_sequences.addSubEntry(_globals._spriteIndexes[24], SM_0, 0, 3);
|
_scene->_sequences.addSubEntry(_globals._spriteIndexes[24], SM_0, 0, 3);
|
||||||
} else if (_game._abortTimers == 3) {
|
} else if (_game._trigger == 3) {
|
||||||
_globals._spriteIndexes[24] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], true, 1);
|
_globals._spriteIndexes[24] = _scene->_sequences.startCycle(_globals._spriteIndexes[9], true, 1);
|
||||||
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
_scene->_sequences.setMsgPosition(_globals._spriteIndexes[24], Common::Point(247, 82));
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[24], 1);
|
||||||
|
@ -1024,7 +1024,7 @@ void Scene203::step() {
|
||||||
if (_globals._v0 == 0)
|
if (_globals._v0 == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((_game._abortTimers == 0) && (_globals._frameTime != 0))
|
if ((_game._trigger == 0) && (_globals._frameTime != 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((_game._player._playerPos != Common::Point(158, 136)) || (_game._player._facing != 2))
|
if ((_game._player._playerPos != Common::Point(158, 136)) || (_game._player._facing != 2))
|
||||||
|
@ -1032,7 +1032,7 @@ void Scene203::step() {
|
||||||
|
|
||||||
_globals._frameTime = 0xFFFF;
|
_globals._frameTime = 0xFFFF;
|
||||||
|
|
||||||
if (_game._abortTimers == 0) {
|
if (_game._trigger == 0) {
|
||||||
_game._player._visible = false;
|
_game._player._visible = false;
|
||||||
_game._player._stepEnabled = false;
|
_game._player._stepEnabled = false;
|
||||||
_vm->_palette->sub7BBF8();
|
_vm->_palette->sub7BBF8();
|
||||||
|
@ -1040,7 +1040,7 @@ void Scene203::step() {
|
||||||
_scene->resetScene();
|
_scene->resetScene();
|
||||||
_vm->_events->setCursor2(CURSOR_WAIT);
|
_vm->_events->setCursor2(CURSOR_WAIT);
|
||||||
_scene->loadAnimation(Resources::formatName(203, 'a', -1, EXT_AA, ""), 81);
|
_scene->loadAnimation(Resources::formatName(203, 'a', -1, EXT_AA, ""), 81);
|
||||||
} else if (_game._abortTimers == 81) {
|
} else if (_game._trigger == 81) {
|
||||||
_scene->_nextSceneId = 208;
|
_scene->_nextSceneId = 208;
|
||||||
_scene->_reloadSceneFlag = true;
|
_scene->_reloadSceneFlag = true;
|
||||||
}
|
}
|
||||||
|
@ -1257,13 +1257,13 @@ void Scene207::step() {
|
||||||
warning("TODO: sub3ADD6(...)");
|
warning("TODO: sub3ADD6(...)");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 70) {
|
if (_game._trigger == 70) {
|
||||||
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 10, 0, 0, 0);
|
_globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 10, 0, 0, 0);
|
||||||
_scene->_sequences.setAnimRange(_globals._spriteIndexes[21], 23, 34);
|
_scene->_sequences.setAnimRange(_globals._spriteIndexes[21], 23, 34);
|
||||||
_scene->_sequences.setDepth(_globals._spriteIndexes[21], 6);
|
_scene->_sequences.setDepth(_globals._spriteIndexes[21], 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 71)
|
if (_game._trigger == 71)
|
||||||
_globals._v2 = 0;
|
_globals._v2 = 0;
|
||||||
|
|
||||||
if (_globals._v2)
|
if (_globals._v2)
|
||||||
|
@ -1419,21 +1419,21 @@ void Scene208::step() {
|
||||||
if ((_game._player._playerPos != Common::Point(20, 148)) || (_game._player._facing != 6))
|
if ((_game._player._playerPos != Common::Point(20, 148)) || (_game._player._facing != 6))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((_game._abortTimers == 0) && ((_globals._frameTime & 0xFFFF) != 0))
|
if ((_game._trigger == 0) && ((_globals._frameTime & 0xFFFF) != 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_globals._frameTime |= 0xFFFF;
|
_globals._frameTime |= 0xFFFF;
|
||||||
|
|
||||||
if (_game._abortTimers == 82) {
|
if (_game._trigger == 82) {
|
||||||
_game._player._stepEnabled = true;
|
_game._player._stepEnabled = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers > 82)
|
if (_game._trigger > 82)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_game._abortTimers & 0xFF) {
|
if (_game._trigger & 0xFF) {
|
||||||
if ((_game._abortTimers & 0xFF) == 81) {
|
if ((_game._trigger & 0xFF) == 81) {
|
||||||
_scene->_sequences.remove(_globals._spriteIndexes[15]);
|
_scene->_sequences.remove(_globals._spriteIndexes[15]);
|
||||||
_globals[kRhotundaStatus] = 1;
|
_globals[kRhotundaStatus] = 1;
|
||||||
warning("TODO: sub34648(...)");
|
warning("TODO: sub34648(...)");
|
||||||
|
@ -1459,20 +1459,20 @@ void Scene208::actions() {
|
||||||
if (_action.isAction(0x18C, 0x19F, 0)) {
|
if (_action.isAction(0x18C, 0x19F, 0)) {
|
||||||
if (_globals[kRhotundaStatus])
|
if (_globals[kRhotundaStatus])
|
||||||
_scene->_nextSceneId = 203;
|
_scene->_nextSceneId = 203;
|
||||||
else if (_game._abortTimers == 0) {
|
else if (_game._trigger == 0) {
|
||||||
_game._player._stepEnabled = false;
|
_game._player._stepEnabled = false;
|
||||||
int msgIndex = _scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 1, 120, _game.getQuote(70));
|
int msgIndex = _scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 1, 120, _game.getQuote(70));
|
||||||
_scene->_kernelMessages.setQuoted(msgIndex, 4, true);
|
_scene->_kernelMessages.setQuoted(msgIndex, 4, true);
|
||||||
} else if (_game._abortTimers == 1) {
|
} else if (_game._trigger == 1) {
|
||||||
_scene->_nextSceneId = 203;
|
_scene->_nextSceneId = 203;
|
||||||
}
|
}
|
||||||
} else if (_action.isAction(0x18C, 0x83, 0)) {
|
} else if (_action.isAction(0x18C, 0x83, 0)) {
|
||||||
_scene->_nextSceneId = 212;
|
_scene->_nextSceneId = 212;
|
||||||
} else if (_action.isAction(0x4, 0x1AA, 0) && (!_globals[kLeavesStatus] || _game._abortTimers)) {
|
} else if (_action.isAction(0x4, 0x1AA, 0) && (!_globals[kLeavesStatus] || _game._trigger)) {
|
||||||
warning("TODO: sub3B282(1);");
|
warning("TODO: sub3B282(1);");
|
||||||
if (_game._player._stepEnabled)
|
if (_game._player._stepEnabled)
|
||||||
_vm->_dialogs->showPicture(OBJ_BIG_LEAVES, 0x326, 0);
|
_vm->_dialogs->showPicture(OBJ_BIG_LEAVES, 0x326, 0);
|
||||||
} else if (_action.isAction(0x7, 0x23, 0x19E) && (_globals[kLeavesStatus] == 1 || _game._abortTimers)) {
|
} else if (_action.isAction(0x7, 0x23, 0x19E) && (_globals[kLeavesStatus] == 1 || _game._trigger)) {
|
||||||
warning("TODO: sub3B282(2);");
|
warning("TODO: sub3B282(2);");
|
||||||
} else if (_action.isAction(0x7, 0x17A, 0x1A9)) {
|
} else if (_action.isAction(0x7, 0x17A, 0x1A9)) {
|
||||||
warning("TODO: sub3B282(3);");
|
warning("TODO: sub3B282(3);");
|
||||||
|
|
|
@ -181,7 +181,7 @@ void Scene804::step() {
|
||||||
_globals._v2 = 0;
|
_globals._v2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 70)
|
if (_game._trigger == 70)
|
||||||
_globals._v5 = 42;
|
_globals._v5 = 42;
|
||||||
if (_scene->_activeAnimation->getCurrentFrame() == 65)
|
if (_scene->_activeAnimation->getCurrentFrame() == 65)
|
||||||
_scene->_sequences.remove(_globals._spriteIndexes[22]);
|
_scene->_sequences.remove(_globals._spriteIndexes[22]);
|
||||||
|
@ -222,7 +222,7 @@ void Scene804::step() {
|
||||||
_scene->_sequences.addTimer(60, 80);
|
_scene->_sequences.addTimer(60, 80);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 80)
|
if (_game._trigger == 80)
|
||||||
_scene->_nextSceneId = 803;
|
_scene->_nextSceneId = 803;
|
||||||
|
|
||||||
if (_scene->_activeAnimation->getCurrentFrame() == 7 && !_globals[kWindowFixed]) {
|
if (_scene->_activeAnimation->getCurrentFrame() == 7 && !_globals[kWindowFixed]) {
|
||||||
|
@ -267,9 +267,9 @@ void Scene804::step() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 120)
|
if (_game._trigger == 120)
|
||||||
_vm->_dialogs->show(0x13a26);
|
_vm->_dialogs->show(0x13a26);
|
||||||
if (_game._abortTimers == 110)
|
if (_game._trigger == 110)
|
||||||
_vm->_dialogs->show(0x13a2a);
|
_vm->_dialogs->show(0x13a2a);
|
||||||
|
|
||||||
if (_globals._v6) {
|
if (_globals._v6) {
|
||||||
|
@ -281,7 +281,7 @@ void Scene804::step() {
|
||||||
_globals._v5 = -1;
|
_globals._v5 = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_game._abortTimers == 90)
|
if (_game._trigger == 90)
|
||||||
_scene->_nextSceneId = 803;
|
_scene->_nextSceneId = 803;
|
||||||
|
|
||||||
if (_scene->_activeAnimation->getCurrentFrame() == 7 &&!_globals._v8) {
|
if (_scene->_activeAnimation->getCurrentFrame() == 7 &&!_globals._v8) {
|
||||||
|
|
|
@ -46,6 +46,7 @@ Player::Player(MADSEngine *vm): _vm(vm) {
|
||||||
_priorVisible = false;
|
_priorVisible = false;
|
||||||
_visible3 = false;
|
_visible3 = false;
|
||||||
_loadsFirst = false;
|
_loadsFirst = false;
|
||||||
|
_loadedFirst = false;
|
||||||
_walkAnywhere = false;
|
_walkAnywhere = false;
|
||||||
_special = 0;
|
_special = 0;
|
||||||
_ticksAmount = 0;
|
_ticksAmount = 0;
|
||||||
|
@ -71,7 +72,7 @@ Player::Player(MADSEngine *vm): _vm(vm) {
|
||||||
Common::fill(&_spriteSetsPresent[0], &_spriteSetsPresent[PLAYER_SPRITES_FILE_COUNT], false);
|
Common::fill(&_spriteSetsPresent[0], &_spriteSetsPresent[PLAYER_SPRITES_FILE_COUNT], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::reset() {
|
void Player::cancelWalk() {
|
||||||
_action = &_vm->_game->_scene._action;
|
_action = &_vm->_game->_scene._action;
|
||||||
_destPos = _playerPos;
|
_destPos = _playerPos;
|
||||||
_targetFacing = FACING_NONE;
|
_targetFacing = FACING_NONE;
|
||||||
|
@ -133,8 +134,8 @@ bool Player::loadSprites(const Common::String &prefix) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::turnToDestFacing() {
|
void Player::setFinalFacing() {
|
||||||
if (_targetFacing != 5)
|
if (_targetFacing != FACING_NONE)
|
||||||
_turnToFacing = _targetFacing;
|
_turnToFacing = _targetFacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,8 +177,8 @@ void Player::dirChanged() {
|
||||||
_priorTimer += 1;
|
_priorTimer += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::moveComplete() {
|
void Player::cancelCommand() {
|
||||||
reset();
|
cancelWalk();
|
||||||
_action->_inProgress = false;
|
_action->_inProgress = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,7 +366,7 @@ void Player::setDest(const Common::Point &pt, Facing facing) {
|
||||||
void Player::startWalking(const Common::Point &pos, Facing direction) {
|
void Player::startWalking(const Common::Point &pos, Facing direction) {
|
||||||
Scene &scene = _vm->_game->_scene;
|
Scene &scene = _vm->_game->_scene;
|
||||||
|
|
||||||
reset();
|
cancelWalk();
|
||||||
scene._action._startWalkFlag = true;
|
scene._action._startWalkFlag = true;
|
||||||
scene._action._walkFlag = true;
|
scene._action._walkFlag = true;
|
||||||
scene._destPos = pos;
|
scene._destPos = pos;
|
||||||
|
@ -406,7 +407,7 @@ void Player::move() {
|
||||||
// End of walking path
|
// End of walking path
|
||||||
_routeCount = 0;
|
_routeCount = 0;
|
||||||
_moving = false;
|
_moving = false;
|
||||||
turnToDestFacing();
|
setFinalFacing();
|
||||||
routeFlag = true;
|
routeFlag = true;
|
||||||
idx = _routeCount;
|
idx = _routeCount;
|
||||||
}
|
}
|
||||||
|
@ -475,7 +476,7 @@ void Player::move() {
|
||||||
_v8452E -= var1;
|
_v8452E -= var1;
|
||||||
|
|
||||||
if (routeFlag)
|
if (routeFlag)
|
||||||
moveComplete();
|
cancelCommand();
|
||||||
else {
|
else {
|
||||||
if (!_newSceneId) {
|
if (!_newSceneId) {
|
||||||
// If the move is complete, make sure the position is exactly on the given destination
|
// If the move is complete, make sure the position is exactly on the given destination
|
||||||
|
|
|
@ -64,8 +64,6 @@ private:
|
||||||
int _actionList2[12];
|
int _actionList2[12];
|
||||||
int _hypotenuse;
|
int _hypotenuse;
|
||||||
|
|
||||||
void reset();
|
|
||||||
|
|
||||||
void resetActionList();
|
void resetActionList();
|
||||||
|
|
||||||
void move();
|
void move();
|
||||||
|
@ -121,6 +119,7 @@ public:
|
||||||
bool _walkAnywhere;
|
bool _walkAnywhere;
|
||||||
int _frameNum;
|
int _frameNum;
|
||||||
bool _loadsFirst;
|
bool _loadsFirst;
|
||||||
|
bool _loadedFirst;
|
||||||
Common::Point _playerPos;
|
Common::Point _playerPos;
|
||||||
Common::Point _destPos;
|
Common::Point _destPos;
|
||||||
Common::Point _posChange;
|
Common::Point _posChange;
|
||||||
|
@ -152,9 +151,21 @@ public:
|
||||||
*/
|
*/
|
||||||
bool loadSprites(const Common::String &prefix);
|
bool loadSprites(const Common::String &prefix);
|
||||||
|
|
||||||
void turnToDestFacing();
|
/**
|
||||||
|
* Called when the player has reached the given destination, start him
|
||||||
|
* turning to the specified facing
|
||||||
|
*/
|
||||||
|
void setFinalFacing();
|
||||||
|
|
||||||
void moveComplete();
|
/**
|
||||||
|
* Stops the player walking
|
||||||
|
*/
|
||||||
|
void cancelWalk();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cancels any oustanding player action
|
||||||
|
*/
|
||||||
|
void cancelCommand();
|
||||||
|
|
||||||
void setupFrame();
|
void setupFrame();
|
||||||
|
|
||||||
|
|
|
@ -275,7 +275,7 @@ void Scene::loop() {
|
||||||
// TODO: Verify correctness of frame wait
|
// TODO: Verify correctness of frame wait
|
||||||
_vm->_events->waitForNextFrame();
|
_vm->_events->waitForNextFrame();
|
||||||
|
|
||||||
if (_vm->_dialogs->_pendingDialog != DIALOG_NONE && !_vm->_game->_abortTimers
|
if (_vm->_dialogs->_pendingDialog != DIALOG_NONE && !_vm->_game->_trigger
|
||||||
&& _vm->_game->_player._stepEnabled)
|
&& _vm->_game->_player._stepEnabled)
|
||||||
_reloadSceneFlag = true;
|
_reloadSceneFlag = true;
|
||||||
}
|
}
|
||||||
|
@ -290,18 +290,18 @@ void Scene::doFrame() {
|
||||||
_action._selectedAction = 0;
|
_action._selectedAction = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_vm->_game->_abortTimers && !player._unk3) {
|
if (!_vm->_game->_trigger && !player._unk3) {
|
||||||
// Refresh the dynamic hotspots if they've changed
|
// Refresh the dynamic hotspots if they've changed
|
||||||
if (_dynamicHotspots._changed)
|
if (_dynamicHotspots._changed)
|
||||||
_dynamicHotspots.refresh();
|
_dynamicHotspots.refresh();
|
||||||
|
|
||||||
// Check all on-screen visual objects
|
// Check all on-screen visual objects
|
||||||
_vm->_game->_screenObjects.check(player._stepEnabled && !_action._startWalkFlag &&
|
_vm->_game->_screenObjects.check(player._stepEnabled && !_action._startWalkFlag &&
|
||||||
!_vm->_game->_abortTimers2);
|
!_vm->_game->_fx);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_action._selectedAction && player._stepEnabled && !_action._startWalkFlag &&
|
if (_action._selectedAction && player._stepEnabled && !_action._startWalkFlag &&
|
||||||
!_vm->_game->_abortTimers && !player._unk3) {
|
!_vm->_game->_trigger && !player._unk3) {
|
||||||
_action.startAction();
|
_action.startAction();
|
||||||
if (_action._activeAction._verbId == Nebular::NOUN_LOOK_AT) {
|
if (_action._activeAction._verbId == Nebular::NOUN_LOOK_AT) {
|
||||||
_action._activeAction._verbId = VERB_LOOK;
|
_action._activeAction._verbId = VERB_LOOK;
|
||||||
|
@ -311,17 +311,17 @@ void Scene::doFrame() {
|
||||||
flag = true;
|
flag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flag || (_vm->_game->_abortTimers && _vm->_game->_abortTimersMode == ABORTMODE_2)) {
|
if (flag || (_vm->_game->_trigger && _vm->_game->_abortTimersMode == ABORTMODE_2)) {
|
||||||
doPreactions();
|
doPreactions();
|
||||||
}
|
}
|
||||||
|
|
||||||
checkStartWalk();
|
checkStartWalk();
|
||||||
if (!_vm->_game->_abortTimers2)
|
if (!_vm->_game->_fx)
|
||||||
_frameStartTime = _vm->_events->getFrameCounter();
|
_frameStartTime = _vm->_events->getFrameCounter();
|
||||||
|
|
||||||
if ((_action._inProgress && !player._moving && !_action._startWalkFlag &&
|
if ((_action._inProgress && !player._moving && !_action._startWalkFlag &&
|
||||||
player._turnToFacing == player._facing) ||
|
player._turnToFacing == player._facing) ||
|
||||||
(_vm->_game->_abortTimers && _vm->_game->_abortTimersMode == ABORTMODE_0)) {
|
(_vm->_game->_trigger && _vm->_game->_abortTimersMode == ABORTMODE_0)) {
|
||||||
doAction();
|
doAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,7 +339,7 @@ void Scene::doFrame() {
|
||||||
// Cursor update code
|
// Cursor update code
|
||||||
updateCursor();
|
updateCursor();
|
||||||
|
|
||||||
if (!_vm->_game->_abortTimers) {
|
if (!_vm->_game->_trigger) {
|
||||||
// Handle any active sequences
|
// Handle any active sequences
|
||||||
_sequences.tick();
|
_sequences.tick();
|
||||||
|
|
||||||
|
@ -357,24 +357,24 @@ void Scene::doFrame() {
|
||||||
0x203, 0, 0, 1, msg);
|
0x203, 0, 0, 1, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_vm->_game->_abortTimers) {
|
if (!_vm->_game->_trigger) {
|
||||||
if (_reloadSceneFlag || _currentSceneId != _nextSceneId)
|
if (_reloadSceneFlag || _currentSceneId != _nextSceneId)
|
||||||
_kernelMessages.reset();
|
_kernelMessages.reset();
|
||||||
_kernelMessages.update();
|
_kernelMessages.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
_userInterface._uiSlots.draw(_vm->_game->_abortTimers2 == 0,
|
_userInterface._uiSlots.draw(_vm->_game->_fx == 0,
|
||||||
_vm->_game->_abortTimers2 != 0);
|
_vm->_game->_fx != 0);
|
||||||
|
|
||||||
// Write any text needed by the interface
|
// Write any text needed by the interface
|
||||||
if (_vm->_game->_abortTimers2)
|
if (_vm->_game->_fx)
|
||||||
_userInterface.drawTextElements();
|
_userInterface.drawTextElements();
|
||||||
|
|
||||||
// Draw any elements
|
// Draw any elements
|
||||||
drawElements((ScreenTransition)_vm->_game->_abortTimers2, _vm->_game->_abortTimers2);
|
drawElements((ScreenTransition)_vm->_game->_fx, _vm->_game->_fx);
|
||||||
|
|
||||||
// Handle message updates
|
// Handle message updates
|
||||||
if (_vm->_game->_abortTimers2) {
|
if (_vm->_game->_fx) {
|
||||||
uint32 priorTime = _vm->_game->_priorFrameTimer;
|
uint32 priorTime = _vm->_game->_priorFrameTimer;
|
||||||
uint32 newTime = _vm->_events->getFrameCounter();
|
uint32 newTime = _vm->_events->getFrameCounter();
|
||||||
_sequences.delay(newTime, priorTime);
|
_sequences.delay(newTime, priorTime);
|
||||||
|
@ -390,9 +390,9 @@ void Scene::doFrame() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_vm->_game->_abortTimers2)
|
if (_vm->_game->_fx)
|
||||||
_animFlag = true;
|
_animFlag = true;
|
||||||
_vm->_game->_abortTimers2 = 0;
|
_vm->_game->_fx = kTransitionNone;
|
||||||
|
|
||||||
if (_freeAnimationFlag) {
|
if (_freeAnimationFlag) {
|
||||||
_activeAnimation->free();
|
_activeAnimation->free();
|
||||||
|
@ -450,7 +450,7 @@ void Scene::doPreactions() {
|
||||||
_sceneLogic->preActions();
|
_sceneLogic->preActions();
|
||||||
|
|
||||||
if (_vm->_game->_abortTimersMode == ABORTMODE_2)
|
if (_vm->_game->_abortTimersMode == ABORTMODE_2)
|
||||||
_vm->_game->_abortTimers = 0;
|
_vm->_game->_trigger = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,7 +458,7 @@ void Scene::doAction() {
|
||||||
int flag = 0;
|
int flag = 0;
|
||||||
|
|
||||||
_vm->_game->_abortTimersMode2 = ABORTMODE_0;
|
_vm->_game->_abortTimersMode2 = ABORTMODE_0;
|
||||||
if ((_action._inProgress || _vm->_game->_abortTimers) && !_action._v8453A) {
|
if ((_action._inProgress || _vm->_game->_trigger) && !_action._v8453A) {
|
||||||
_sceneLogic->actions();
|
_sceneLogic->actions();
|
||||||
_action._inProgress = true;
|
_action._inProgress = true;
|
||||||
flag = -1;
|
flag = -1;
|
||||||
|
@ -467,14 +467,14 @@ void Scene::doAction() {
|
||||||
if (_vm->_game->_screenObjects._v832EC == 1) {
|
if (_vm->_game->_screenObjects._v832EC == 1) {
|
||||||
_action._inProgress = false;
|
_action._inProgress = false;
|
||||||
} else {
|
} else {
|
||||||
if ((_action._inProgress || _vm->_game->_abortTimers) ||
|
if ((_action._inProgress || _vm->_game->_trigger) ||
|
||||||
(!flag && _action._v8453A == flag)) {
|
(!flag && _action._v8453A == flag)) {
|
||||||
_vm->_game->_sectionHandler->sectionPtr2();
|
_vm->_game->_sectionHandler->sectionPtr2();
|
||||||
_action._inProgress = true;
|
_action._inProgress = true;
|
||||||
flag = -1;
|
flag = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_action._inProgress || _vm->_game->_abortTimers) && (!flag || _action._v8453A == flag)) {
|
if ((_action._inProgress || _vm->_game->_trigger) && (!flag || _action._v8453A == flag)) {
|
||||||
_vm->_game->doObjectAction();
|
_vm->_game->doObjectAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -496,7 +496,7 @@ void Scene::doAction() {
|
||||||
|
|
||||||
_action._inProgress = false;
|
_action._inProgress = false;
|
||||||
if (_vm->_game->_abortTimersMode == ABORTMODE_0)
|
if (_vm->_game->_abortTimersMode == ABORTMODE_0)
|
||||||
_vm->_game->_abortTimers = 0;
|
_vm->_game->_trigger = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene::checkStartWalk() {
|
void Scene::checkStartWalk() {
|
||||||
|
@ -515,7 +515,7 @@ void Scene::doSceneStep() {
|
||||||
_vm->_game->_player._unk3 = 0;
|
_vm->_game->_player._unk3 = 0;
|
||||||
|
|
||||||
if (_vm->_game->_abortTimersMode == ABORTMODE_1)
|
if (_vm->_game->_abortTimersMode == ABORTMODE_1)
|
||||||
_vm->_game->_abortTimers = 0;
|
_vm->_game->_trigger = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scene::checkKeyboard() {
|
void Scene::checkKeyboard() {
|
||||||
|
@ -537,7 +537,7 @@ void Scene::updateCursor() {
|
||||||
Player &player = _vm->_game->_player;
|
Player &player = _vm->_game->_player;
|
||||||
|
|
||||||
CursorType cursorId = CURSOR_ARROW;
|
CursorType cursorId = CURSOR_ARROW;
|
||||||
if (_action._v83338 == 1 && !_vm->_game->_screenObjects._v7FECA &&
|
if (_action._interAwaiting == 1 && !_vm->_game->_screenObjects._v7FECA &&
|
||||||
_vm->_game->_screenObjects._category == CAT_HOTSPOT) {
|
_vm->_game->_screenObjects._category == CAT_HOTSPOT) {
|
||||||
int idx = _vm->_game->_screenObjects._selectedObject -
|
int idx = _vm->_game->_screenObjects._selectedObject -
|
||||||
_userInterface._categoryIndexes[CAT_HOTSPOT - 1];
|
_userInterface._categoryIndexes[CAT_HOTSPOT - 1];
|
||||||
|
|
|
@ -49,7 +49,7 @@ KernelMessage::KernelMessage() {
|
||||||
_frameTimer2 = 0;
|
_frameTimer2 = 0;
|
||||||
_frameTimer = 0;
|
_frameTimer = 0;
|
||||||
_timeout = 0;
|
_timeout = 0;
|
||||||
_abortTimers = 0;
|
_trigger = 0;
|
||||||
_abortMode = ABORTMODE_0;
|
_abortMode = ABORTMODE_0;
|
||||||
_actionDetails._verbId = 0;
|
_actionDetails._verbId = 0;
|
||||||
_actionDetails._objectNameId = 0;
|
_actionDetails._objectNameId = 0;
|
||||||
|
|
|
@ -303,7 +303,7 @@ void ScreenObjects::check(bool scanFlag) {
|
||||||
if (_vm->_easyMouse && _vm->_events->_mouseButtons && category != _category
|
if (_vm->_easyMouse && _vm->_events->_mouseButtons && category != _category
|
||||||
&& scene._userInterface._category != CAT_NONE) {
|
&& scene._userInterface._category != CAT_NONE) {
|
||||||
_released = true;
|
_released = true;
|
||||||
if (category >= CAT_ACTION && category <= CAT_TALK_ENTRY) {
|
if (category >= CAT_COMMAND && category <= CAT_TALK_ENTRY) {
|
||||||
elementHighlighted();
|
elementHighlighted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,12 +315,12 @@ void ScreenObjects::check(bool scanFlag) {
|
||||||
scene._userInterface._category = _category;
|
scene._userInterface._category = _category;
|
||||||
|
|
||||||
if (!_vm->_events->_mouseButtons || _vm->_easyMouse) {
|
if (!_vm->_events->_mouseButtons || _vm->_easyMouse) {
|
||||||
if (userInterface._category >= CAT_ACTION && userInterface._category <= CAT_TALK_ENTRY) {
|
if (userInterface._category >= CAT_COMMAND && userInterface._category <= CAT_TALK_ENTRY) {
|
||||||
elementHighlighted();
|
elementHighlighted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_vm->_events->_mouseButtons || (_vm->_easyMouse && scene._action._v83338 > 1
|
if (_vm->_events->_mouseButtons || (_vm->_easyMouse && scene._action._interAwaiting > 1
|
||||||
&& scene._userInterface._category == CAT_INV_LIST) ||
|
&& scene._userInterface._category == CAT_INV_LIST) ||
|
||||||
(_vm->_easyMouse && scene._userInterface._category == CAT_HOTSPOT)) {
|
(_vm->_easyMouse && scene._userInterface._category == CAT_HOTSPOT)) {
|
||||||
scene._action.checkActionAtMousePos();
|
scene._action.checkActionAtMousePos();
|
||||||
|
@ -465,12 +465,12 @@ void ScreenObjects::elementHighlighted() {
|
||||||
int uiCount;
|
int uiCount;
|
||||||
|
|
||||||
switch (userInterface._category) {
|
switch (userInterface._category) {
|
||||||
case CAT_ACTION:
|
case CAT_COMMAND:
|
||||||
index = 10;
|
index = 10;
|
||||||
indexEnd = 9;
|
indexEnd = 9;
|
||||||
varA = 5;
|
varA = 5;
|
||||||
topIndex = 0;
|
topIndex = 0;
|
||||||
idxP = !_v7FECA ? &userInterface._highlightedActionIndex :
|
idxP = !_v7FECA ? &userInterface._highlightedCommandIndex :
|
||||||
&userInterface._selectedActionIndex;
|
&userInterface._selectedActionIndex;
|
||||||
|
|
||||||
if (_v7FECA && userInterface._selectedItemVocabIdx >= 0)
|
if (_v7FECA && userInterface._selectedItemVocabIdx >= 0)
|
||||||
|
@ -486,8 +486,8 @@ void ScreenObjects::elementHighlighted() {
|
||||||
indexEnd = invList.size() - 1;
|
indexEnd = invList.size() - 1;
|
||||||
varA = 0;
|
varA = 0;
|
||||||
topIndex = userInterface._inventoryTopIndex;
|
topIndex = userInterface._inventoryTopIndex;
|
||||||
idxP = &userInterface._v1C;
|
idxP = &userInterface._highlightedItemIndex;
|
||||||
var4 = (!_released || (_vm->_events->_mouseButtons && action._v83338 == 1)) ? 0 : 1;
|
var4 = (!_released || (_vm->_events->_mouseButtons && action._interAwaiting == 1)) ? 0 : 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CAT_INV_VOCAB:
|
case CAT_INV_VOCAB:
|
||||||
|
@ -502,10 +502,10 @@ void ScreenObjects::elementHighlighted() {
|
||||||
|
|
||||||
varA = 0;
|
varA = 0;
|
||||||
topIndex = 0;
|
topIndex = 0;
|
||||||
idxP = _v7FECA ? &userInterface._selectedItemVocabIdx : &userInterface._v1E;
|
idxP = _v7FECA ? &userInterface._selectedItemVocabIdx : &userInterface._highlightedActionIndex;
|
||||||
|
|
||||||
if (_v7FECA && userInterface._selectedActionIndex >= 0)
|
if (_v7FECA && userInterface._selectedActionIndex >= 0)
|
||||||
userInterface.updateSelection(CAT_ACTION, -1, &userInterface._selectedActionIndex);
|
userInterface.updateSelection(CAT_COMMAND, -1, &userInterface._selectedActionIndex);
|
||||||
|
|
||||||
var4 = _released && !_v7FECA ? 1 : 0;
|
var4 = _released && !_v7FECA ? 1 : 0;
|
||||||
break;
|
break;
|
||||||
|
@ -529,7 +529,7 @@ void ScreenObjects::elementHighlighted() {
|
||||||
indexEnd = index - 1;
|
indexEnd = index - 1;
|
||||||
varA = 0;
|
varA = 0;
|
||||||
topIndex = 0;
|
topIndex = 0;
|
||||||
idxP = &userInterface._highlightedActionIndex;
|
idxP = &userInterface._highlightedCommandIndex;
|
||||||
var4 = -1;
|
var4 = -1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -597,7 +597,7 @@ void ScreenObjects::elementHighlighted() {
|
||||||
_vm->_game->_scene._highlightedHotspot = newIndex;
|
_vm->_game->_scene._highlightedHotspot = newIndex;
|
||||||
|
|
||||||
if (_category == CAT_INV_LIST || _category == CAT_INV_ANIM) {
|
if (_category == CAT_INV_LIST || _category == CAT_INV_ANIM) {
|
||||||
if (action._v83338 == 1 && newIndex >= 0 && _released &&
|
if (action._interAwaiting == 1 && newIndex >= 0 && _released &&
|
||||||
(!_vm->_events->_mouseReleased || !_vm->_easyMouse))
|
(!_vm->_events->_mouseReleased || !_vm->_easyMouse))
|
||||||
newIndex = -1;
|
newIndex = -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace MADS {
|
||||||
#define MADS_SCREEN_HEIGHT 200
|
#define MADS_SCREEN_HEIGHT 200
|
||||||
|
|
||||||
enum ScrCategory {
|
enum ScrCategory {
|
||||||
CAT_NONE = 0, CAT_ACTION = 1, CAT_INV_LIST = 2, CAT_INV_VOCAB = 3,
|
CAT_NONE = 0, CAT_COMMAND = 1, CAT_INV_LIST = 2, CAT_INV_VOCAB = 3,
|
||||||
CAT_HOTSPOT = 4, CAT_INV_ANIM = 5, CAT_TALK_ENTRY = 6, CAT_INV_SCROLLER = 7,
|
CAT_HOTSPOT = 4, CAT_INV_ANIM = 5, CAT_TALK_ENTRY = 6, CAT_INV_SCROLLER = 7,
|
||||||
CAT_12 = 12
|
CAT_12 = 12
|
||||||
};
|
};
|
||||||
|
|
|
@ -327,7 +327,7 @@ bool SequenceList::loadSprites(int seqIndex) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (idx >= 0) {
|
if (idx >= 0) {
|
||||||
_vm->_game->_abortTimers = seqEntry._entries._abortVal[idx];
|
_vm->_game->_trigger = seqEntry._entries._abortVal[idx];
|
||||||
_vm->_game->_abortTimersMode = seqEntry._abortMode;
|
_vm->_game->_abortTimersMode = seqEntry._abortMode;
|
||||||
|
|
||||||
if (seqEntry._abortMode == ABORTMODE_1)
|
if (seqEntry._abortMode == ABORTMODE_1)
|
||||||
|
@ -343,7 +343,7 @@ bool SequenceList::loadSprites(int seqIndex) {
|
||||||
void SequenceList::tick() {
|
void SequenceList::tick() {
|
||||||
Scene &scene = _vm->_game->_scene;
|
Scene &scene = _vm->_game->_scene;
|
||||||
for (uint idx = 0; idx < _entries.size(); ++idx) {
|
for (uint idx = 0; idx < _entries.size(); ++idx) {
|
||||||
if ((_vm->_game->_abortTimers2 == 0) && (_vm->_game->_abortTimers != 0))
|
if ((_vm->_game->_fx == 0) && (_vm->_game->_trigger != 0))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
SequenceEntry &seqEntry = _entries[idx];
|
SequenceEntry &seqEntry = _entries[idx];
|
||||||
|
|
|
@ -199,9 +199,9 @@ UserInterface::UserInterface(MADSEngine *vm) : _vm(vm), _dirtyAreas(vm),
|
||||||
_selectedActionIndex = 0;
|
_selectedActionIndex = 0;
|
||||||
_selectedItemVocabIdx = -1;
|
_selectedItemVocabIdx = -1;
|
||||||
_scrollerY = 0;
|
_scrollerY = 0;
|
||||||
|
_highlightedCommandIndex = -1;
|
||||||
|
_highlightedItemIndex = -1;
|
||||||
_highlightedActionIndex = -1;
|
_highlightedActionIndex = -1;
|
||||||
_v1C = -1;
|
|
||||||
_v1E = -1;
|
|
||||||
_dirtyAreas.resize(50);
|
_dirtyAreas.resize(50);
|
||||||
_inventoryChanged = false;
|
_inventoryChanged = false;
|
||||||
Common::fill(&_categoryIndexes[0], &_categoryIndexes[7], 0);
|
Common::fill(&_categoryIndexes[0], &_categoryIndexes[7], 0);
|
||||||
|
@ -265,9 +265,9 @@ void UserInterface::setup(int id) {
|
||||||
scene._userInterface._uiSlots.clear();
|
scene._userInterface._uiSlots.clear();
|
||||||
scene._userInterface._uiSlots.fullRefresh();
|
scene._userInterface._uiSlots.fullRefresh();
|
||||||
_vm->_game->_ticksExpiry = _vm->_events->getFrameCounter();
|
_vm->_game->_ticksExpiry = _vm->_events->getFrameCounter();
|
||||||
|
_highlightedCommandIndex = -1;
|
||||||
_highlightedActionIndex = -1;
|
_highlightedActionIndex = -1;
|
||||||
_v1E = -1;
|
_highlightedItemIndex = -1;
|
||||||
_v1C = -1;
|
|
||||||
|
|
||||||
if (_vm->_game->_kernelMode == KERNEL_ACTIVE_CODE)
|
if (_vm->_game->_kernelMode == KERNEL_ACTIVE_CODE)
|
||||||
scene._userInterface._uiSlots.draw(false, false);
|
scene._userInterface._uiSlots.draw(false, false);
|
||||||
|
@ -291,7 +291,7 @@ void UserInterface::drawTextElements() {
|
||||||
|
|
||||||
void UserInterface::drawActions() {
|
void UserInterface::drawActions() {
|
||||||
for (int idx = 0; idx < 10; ++idx) {
|
for (int idx = 0; idx < 10; ++idx) {
|
||||||
writeVocab(CAT_ACTION, idx);
|
writeVocab(CAT_COMMAND, idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,10 +329,10 @@ void UserInterface::writeVocab(ScrCategory category, int id) {
|
||||||
int vocabId;
|
int vocabId;
|
||||||
Common::String vocabStr;
|
Common::String vocabStr;
|
||||||
switch (category) {
|
switch (category) {
|
||||||
case CAT_ACTION:
|
case CAT_COMMAND:
|
||||||
font = _vm->_font->getFont(FONT_INTERFACE);
|
font = _vm->_font->getFont(FONT_INTERFACE);
|
||||||
vocabId = scene._verbList[id]._id;
|
vocabId = scene._verbList[id]._id;
|
||||||
if (id == _highlightedActionIndex) {
|
if (id == _highlightedCommandIndex) {
|
||||||
_vm->_font->setColorMode(SELMODE_HIGHLIGHTED);
|
_vm->_font->setColorMode(SELMODE_HIGHLIGHTED);
|
||||||
} else {
|
} else {
|
||||||
_vm->_font->setColorMode(id == _selectedActionIndex ? SELMODE_SELECTED : SELMODE_UNSELECTED);
|
_vm->_font->setColorMode(id == _selectedActionIndex ? SELMODE_SELECTED : SELMODE_UNSELECTED);
|
||||||
|
@ -345,7 +345,7 @@ void UserInterface::writeVocab(ScrCategory category, int id) {
|
||||||
case CAT_INV_LIST:
|
case CAT_INV_LIST:
|
||||||
font = _vm->_font->getFont(FONT_INTERFACE);
|
font = _vm->_font->getFont(FONT_INTERFACE);
|
||||||
vocabId = _vm->_game->_objects.getItem(id)._descId;
|
vocabId = _vm->_game->_objects.getItem(id)._descId;
|
||||||
if (id == _v1C) {
|
if (id == _highlightedItemIndex) {
|
||||||
_vm->_font->setColorMode(SELMODE_HIGHLIGHTED);
|
_vm->_font->setColorMode(SELMODE_HIGHLIGHTED);
|
||||||
} else {
|
} else {
|
||||||
_vm->_font->setColorMode(id == _selectedInvIndex ? SELMODE_SELECTED : SELMODE_UNSELECTED);
|
_vm->_font->setColorMode(id == _selectedInvIndex ? SELMODE_SELECTED : SELMODE_UNSELECTED);
|
||||||
|
@ -386,7 +386,7 @@ void UserInterface::writeVocab(ScrCategory category, int id) {
|
||||||
// Item specific verbs
|
// Item specific verbs
|
||||||
font = _vm->_font->getFont(FONT_INTERFACE);
|
font = _vm->_font->getFont(FONT_INTERFACE);
|
||||||
vocabId = _vm->_game->_objects.getItem(_selectedInvIndex)._vocabList[id]._vocabId;
|
vocabId = _vm->_game->_objects.getItem(_selectedInvIndex)._vocabList[id]._vocabId;
|
||||||
if (id == _v1E) {
|
if (id == _highlightedActionIndex) {
|
||||||
_vm->_font->setColorMode(SELMODE_HIGHLIGHTED);
|
_vm->_font->setColorMode(SELMODE_HIGHLIGHTED);
|
||||||
} else {
|
} else {
|
||||||
_vm->_font->setColorMode(id == _selectedInvIndex ? SELMODE_SELECTED : SELMODE_UNSELECTED);
|
_vm->_font->setColorMode(id == _selectedInvIndex ? SELMODE_SELECTED : SELMODE_UNSELECTED);
|
||||||
|
@ -418,12 +418,12 @@ void UserInterface::loadElements() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up actions
|
// Set up actions
|
||||||
_categoryIndexes[CAT_ACTION - 1] = _vm->_game->_screenObjects.size() + 1;
|
_categoryIndexes[CAT_COMMAND - 1] = _vm->_game->_screenObjects.size() + 1;
|
||||||
for (int idx = 0; idx < 10; ++idx) {
|
for (int idx = 0; idx < 10; ++idx) {
|
||||||
getBounds(CAT_ACTION, idx, bounds);
|
getBounds(CAT_COMMAND, idx, bounds);
|
||||||
moveRect(bounds);
|
moveRect(bounds);
|
||||||
|
|
||||||
_vm->_game->_screenObjects.add(bounds, LAYER_GUI, CAT_ACTION, idx);
|
_vm->_game->_screenObjects.add(bounds, LAYER_GUI, CAT_COMMAND, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up inventory list
|
// Set up inventory list
|
||||||
|
@ -478,7 +478,7 @@ bool UserInterface::getBounds(ScrCategory category, int v, Common::Rect &bounds)
|
||||||
int leftStart, yOffset, widthAmt;
|
int leftStart, yOffset, widthAmt;
|
||||||
|
|
||||||
switch (category) {
|
switch (category) {
|
||||||
case CAT_ACTION:
|
case CAT_COMMAND:
|
||||||
heightMultiplier = v % 5;
|
heightMultiplier = v % 5;
|
||||||
widthMultiplier = v / 5;
|
widthMultiplier = v / 5;
|
||||||
leftStart = 2;
|
leftStart = 2;
|
||||||
|
@ -635,7 +635,7 @@ void UserInterface::inventoryAnim() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserInterface::categoryChanged() {
|
void UserInterface::categoryChanged() {
|
||||||
_v1C = -1;
|
_highlightedItemIndex = -1;
|
||||||
_vm->_events->initVars();
|
_vm->_events->initVars();
|
||||||
_category = CAT_NONE;
|
_category = CAT_NONE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,9 +143,9 @@ public:
|
||||||
int _selectedActionIndex;
|
int _selectedActionIndex;
|
||||||
int _selectedItemVocabIdx;
|
int _selectedItemVocabIdx;
|
||||||
int _scrollerY;
|
int _scrollerY;
|
||||||
|
int _highlightedCommandIndex;
|
||||||
|
int _highlightedItemIndex;
|
||||||
int _highlightedActionIndex;
|
int _highlightedActionIndex;
|
||||||
int _v1C;
|
|
||||||
int _v1E;
|
|
||||||
bool _inventoryChanged;
|
bool _inventoryChanged;
|
||||||
int _categoryIndexes[8];
|
int _categoryIndexes[8];
|
||||||
Common::StringArray _talkStrings;
|
Common::StringArray _talkStrings;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue