aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/blue_force/blueforce_logic.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2011-09-04 21:09:22 +1000
committerPaul Gilbert2011-09-04 21:09:22 +1000
commit8f9af262928242eebf10f5a51b9f461e7d47d610 (patch)
treeb0384430dfa05dfc23157eb9b8e469bbe97a28fa /engines/tsage/blue_force/blueforce_logic.cpp
parentb893f9f93f58413bd45daec5d4b88a0ca4bb5db1 (diff)
downloadscummvm-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.cpp51
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() {