diff options
author | Paul Gilbert | 2011-09-04 21:09:22 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-09-04 21:09:22 +1000 |
commit | 8f9af262928242eebf10f5a51b9f461e7d47d610 (patch) | |
tree | b0384430dfa05dfc23157eb9b8e469bbe97a28fa /engines/tsage/blue_force/blueforce_logic.cpp | |
parent | b893f9f93f58413bd45daec5d4b88a0ca4bb5db1 (diff) | |
download | scummvm-rg350-8f9af262928242eebf10f5a51b9f461e7d47d610.tar.gz scummvm-rg350-8f9af262928242eebf10f5a51b9f461e7d47d610.tar.bz2 scummvm-rg350-8f9af262928242eebf10f5a51b9f461e7d47d610.zip |
TSAGE: Added missing default item response code logic in Blue Force
Diffstat (limited to 'engines/tsage/blue_force/blueforce_logic.cpp')
-rw-r--r-- | engines/tsage/blue_force/blueforce_logic.cpp | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index 3eafac7a08..41d16ad998 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -340,10 +340,9 @@ void NamedObject::startAction(CursorType action) { handled = false; break; } -/* + if (!handled) ((SceneExt *)BF_GLOBALS._sceneManager._scene)->display(action); -*/ } void NamedObject::setup(int resNum, int lookLineNum, int talkLineNum, int useLineNum, int mode, SceneItem *item) { @@ -501,20 +500,58 @@ void SceneExt::loadScene(int sceneNum) { } void SceneExt::checkGun() { - if (BF_GLOBALS.getFlag(fLoadedSpare) && (BF_GLOBALS._v4CEBA > 0)) { - if (--BF_GLOBALS._v4CEBA == 0) + // Remove a bullet from the currently loaded clip + if (BF_GLOBALS.getFlag(fLoadedSpare) && (BF_GLOBALS._clip2Bullets > 0)) { + if (--BF_GLOBALS._clip2Bullets == 0) BF_GLOBALS.clearFlag(fGunLoaded); } else { - if (BF_GLOBALS._v4CEB8 > 0) - --BF_GLOBALS._v4CEB8; + if (BF_GLOBALS._clip1Bullets > 0) + --BF_GLOBALS._clip1Bullets; - if (!BF_GLOBALS._v4CEB8) + if (!BF_GLOBALS._clip1Bullets) BF_GLOBALS.clearFlag(fGunLoaded); } BF_GLOBALS._sound3.play(4); } +void SceneExt::display(CursorType action) { + switch (action) { + case CURSOR_LOOK: + SceneItem::display2(9000, BF_GLOBALS._randomSource.getRandomNumber(2)); + break; + case CURSOR_USE: + SceneItem::display2(9000, BF_GLOBALS._randomSource.getRandomNumber(2) + 6); + break; + case CURSOR_TALK: + SceneItem::display2(9000, BF_GLOBALS._randomSource.getRandomNumber(2) + 3); + break; + case INV_COLT45: + gunDisplay(); + break; + default: + if (action < BF_LAST_INVENT) + SceneItem::display2(9002, (int)action); + break; + } +} + +void SceneExt::gunDisplay() { + if (!BF_GLOBALS.getFlag(gunDrawn)) { + // Gun not drawn + SceneItem::display2(1, BF_GLOBALS.getFlag(fCanDrawGun) ? 0 : 4); + } else if (!BF_GLOBALS.getFlag(fGunLoaded)) { + // Gun not loaded + SceneItem::display2(1, 1); + } else if (!BF_GLOBALS.getHasBullets()) { + // Out of ammunition + SceneItem::display2(1, 2); + } else { + // Check scene for whether gun can fire + checkGun(); + } +} + /*--------------------------------------------------------------------------*/ GameScene::GameScene() { |