diff options
author | Paul Gilbert | 2011-09-30 20:26:47 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-09-30 20:26:47 +1000 |
commit | a7f26eb1591dcd50f7ce4ee8485eca6fbbd9a145 (patch) | |
tree | 344d3e685db2804db47f20618a8c36c7eb78ee51 /engines/tsage | |
parent | c67e2724518e5d8612845100709002b952c97cbd (diff) | |
download | scummvm-rg350-a7f26eb1591dcd50f7ce4ee8485eca6fbbd9a145.tar.gz scummvm-rg350-a7f26eb1591dcd50f7ce4ee8485eca6fbbd9a145.tar.bz2 scummvm-rg350-a7f26eb1591dcd50f7ce4ee8485eca6fbbd9a145.zip |
TSAGE: Implemented Blue Force scene 551 - Outside Bikini Hut (Drunk Stop)
Diffstat (limited to 'engines/tsage')
-rw-r--r-- | engines/tsage/blue_force/blueforce_logic.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/blue_force/blueforce_scenes5.cpp | 611 | ||||
-rw-r--r-- | engines/tsage/blue_force/blueforce_scenes5.h | 73 | ||||
-rw-r--r-- | engines/tsage/blue_force/blueforce_speakers.cpp | 41 | ||||
-rw-r--r-- | engines/tsage/blue_force/blueforce_speakers.h | 15 |
5 files changed, 734 insertions, 8 deletions
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp index 16eace4ddf..2e520e2bbc 100644 --- a/engines/tsage/blue_force/blueforce_logic.cpp +++ b/engines/tsage/blue_force/blueforce_logic.cpp @@ -142,6 +142,8 @@ Scene *BlueForceGame::createScene(int sceneNumber) { // Outside Bikini Hut return new Scene550(); case 551: + // Outside Bikini Hut (Drunk Stop) + return new Scene551(); case 560: case 570: case 580: diff --git a/engines/tsage/blue_force/blueforce_scenes5.cpp b/engines/tsage/blue_force/blueforce_scenes5.cpp index 81afb9336a..4e7a39cdec 100644 --- a/engines/tsage/blue_force/blueforce_scenes5.cpp +++ b/engines/tsage/blue_force/blueforce_scenes5.cpp @@ -157,10 +157,6 @@ bool Scene550::Vechile::startAction(CursorType action, Event &event) { /*--------------------------------------------------------------------------*/ -Scene550::Scene550(): SceneExt() { - _fieldF90 = 0; -} - void Scene550::postInit(SceneObjectList *OwnerList) { BF_GLOBALS._sound1.fadeSound(16); @@ -290,6 +286,613 @@ void Scene550::signal() { } } +/*-------------------------------------------------------------------------- + * Scene 551 - Outside Bikini Hut (Drunk Stop) + * + *--------------------------------------------------------------------------*/ + +void Scene551::Action2::signal() { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + switch (_actionIndex++) { + case 0: + BF_GLOBALS._walkRegions.proc2(18); + BF_GLOBALS._walkRegions.proc2(4); + scene->_field1CD2 = 1; + + scene->_harrison.setObjectWrapper(new SceneObjectWrapper()); + scene->_harrison.animate(ANIM_MODE_1, NULL); + + BF_GLOBALS._player.setVisage(304); + BF_GLOBALS._player.animate(ANIM_MODE_1, NULL); + + if (scene->_drunkStanding._flag != 1) { + ADD_PLAYER_MOVER_THIS(scene->_harrison, 126, 85); + } else { + ADD_PLAYER_MOVER_THIS(scene->_harrison, 88, 91); + } + break; + case 1: + scene->_harrison.updateAngle(BF_GLOBALS._player._position); + + if (scene->_drunkStanding._flag == 1) { + BF_GLOBALS._walkRegions.proc1(4); + ADD_PLAYER_MOVER(71, 97); + } else { + ADD_PLAYER_MOVER(141, 87); + } + break; + case 2: + scene->_harrison.updateAngle(BF_GLOBALS._player._position); + BF_GLOBALS._player.updateAngle(scene->_harrison._position); + setDelay(10); + break; + case 3: + scene->_stripManager.start(scene->_harrison._flag, this); + break; + case 4: + scene->_field1CD2 = 0; + BF_GLOBALS._player.enableControl(); + remove(); + break; + default: + break; + } +} + +/*--------------------------------------------------------------------------*/ + +bool Scene551::Vechile::startAction(CursorType action, Event &event) { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + switch (action) { + case CURSOR_LOOK: + SceneItem::display2(550, 3); + return true; + case CURSOR_USE: + if (!BF_GLOBALS.getFlag(didDrunk)) { + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 1; + scene->setAction(&scene->_sequenceManager, scene, 5510, &BF_GLOBALS._player, this, NULL); + } else if (BF_INVENTORY.getObjectScene(INV_CENTER_PUNCH) == 1) { + BF_INVENTORY.setObjectScene(INV_CENTER_PUNCH, 0); + scene->_harrison._flag = 5505; + scene->setAction(&scene->_action2, scene); + scene->_sceneMode = 5509; + } else { + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 1; + scene->setAction(&scene->_sequenceManager, scene, 5510, &BF_GLOBALS._player, this, NULL); + } + return true; + default: + return NamedObject::startAction(action, event); + } +} + +bool Scene551::DrunkStanding::startAction(CursorType action, Event &event) { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + switch (action) { + case CURSOR_LOOK: + SceneItem::display2(550, 15); + return true; + case CURSOR_USE: + SceneItem::display2(550, 16); + return true; + case CURSOR_TALK: + SceneItem::display2(550, 17); + return true; + case INV_HANDCUFFS: + scene->_harrison.animate(ANIM_MODE_1, NULL); + BF_GLOBALS.set2Flags(f1098Drunk); + BF_GLOBALS.setFlag(didDrunk); + _flag = 2; + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 5509; + + scene->setAction(&scene->_sequenceManager, scene, 5509, &BF_GLOBALS._player, this, &scene->_harrison, NULL); + BF_GLOBALS.set2Flags(f1015Drunk); + return true; + default: + return NamedObjectExt::startAction(action, event); + } +} + +bool Scene551::Drunk::startAction(CursorType action, Event &event) { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + switch (action) { + case CURSOR_LOOK: + switch (_flag) { + case 0: + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 0; + scene->setAction(&scene->_sequenceManager, scene, 5505, &BF_GLOBALS._player, &scene->_object15, NULL); + break; + case 1: + SceneItem::display(550, 11); + break; + case 2: + SceneItem::display2(550, 12); + break; + case 3: + SceneItem::display2(550, 27); + break; + } + return true; + case CURSOR_USE: + switch (_flag) { + case 0: + BF_GLOBALS._player.disableControl(); + if (BF_GLOBALS.getFlag(fTalkedToDrunkInCar)) { + scene->_sceneMode = 5508; + scene->setAction(&scene->_sequenceManager, scene, 5508, &BF_GLOBALS._player, NULL); + } else { + BF_GLOBALS.setFlag(fTalkedToDrunkInCar); + scene->_sceneMode = 16; + scene->setAction(&scene->_sequenceManager, scene, 5504, &BF_GLOBALS._player, &scene->_object15, NULL); + } + break; + case 2: + SceneItem::display2(550, 13); + break; + case 3: + SceneItem::display2(550, 27); + break; + default: + break; + } + return true; + case CURSOR_TALK: + if (_flag) + break; + BF_GLOBALS._player.disableControl(); + + if (BF_GLOBALS.getFlag(fTalkedToDrunkInCar)) { + scene->_sceneMode = 5508; + scene->setAction(&scene->_sequenceManager, scene, 5508, &BF_GLOBALS._player, NULL); + } else { + BF_GLOBALS.setFlag(fTalkedToDrunkInCar); + scene->_sceneMode = 0; + scene->setAction(&scene->_sequenceManager, scene, 5504, &BF_GLOBALS._player, &scene->_object15, NULL); + } + return true; + case INV_CENTER_PUNCH: + if (_flag) { + SceneItem::display2(550, 14); + } else { + BF_GLOBALS.set2Flags(f1098Drunk); + BF_GLOBALS.setFlag(didDrunk); + _flag = 1; + BF_GLOBALS._uiElements.addScore(30); + + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 5506; + scene->setAction(&scene->_sequenceManager, scene, 5506, &BF_GLOBALS._player, this, + &scene->_object12, NULL); + } + return true; + default: + break; + } + + return NamedObjectExt::startAction(action, event); +} + +bool Scene551::PatrolCarTrunk::startAction(CursorType action, Event &event) { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + switch (action) { + case CURSOR_USE: + if (BF_INVENTORY.getObjectScene(INV_CENTER_PUNCH) != 1) { + BF_GLOBALS._walkRegions.proc2(18); + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 2; + scene->setAction(&scene->_sequenceManager, scene, 5503, &BF_GLOBALS._player, &scene->_harrison, this, NULL); + return true; + } + break; + default: + break; + } + + return NamedObject::startAction(action, event); +} + +void Scene551::TrunkInset::remove() { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + scene->_trunkKits.remove(); + BF_GLOBALS._player.disableControl(); + + scene->_sceneMode = 0; + scene->setAction(&scene->_sequenceManager, scene, 5516, &scene->_harrison, + &scene->_patrolCarTrunk, NULL); + + FocusObject::remove(); +} + +bool Scene551::TrunkInset::startAction(CursorType action, Event &event) { + switch (action) { + case CURSOR_LOOK: + SceneItem::display2(550, 18); + return true; + case CURSOR_USE: + return true; + default: + return NamedObject::startAction(action, event); + } +} + +bool Scene551::TrunkKits::startAction(CursorType action, Event &event) { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + Rect tempRect = _bounds; + tempRect.collapse(10, 6); + if (!tempRect.contains(event.mousePos)) + return false; + + switch (action) { + case CURSOR_LOOK: + switch (_frame) { + case 1: + SceneItem::display2(550, 19); + break; + case 2: + SceneItem::display2(550, 20); + break; + case 3: + SceneItem::display2(550, 21); + break; + default: + break; + } + return true; + case CURSOR_USE: + if (event.mousePos.y < _bounds.top) { + setFrame(1); + } else if ((event.mousePos.x < (_bounds.left - 25)) && (_frame > 1)) { + SceneItem::display2(550, 28); + } else { + switch (_frame) { + case 1: + setFrame(BF_INVENTORY.getObjectScene(INV_CENTER_PUNCH) == 1 ? 3 : 2); + break; + case 2: + if (!BF_GLOBALS.getFlag(fShowedBluePrint)) { + BF_GLOBALS._uiElements.addScore(30); + BF_GLOBALS.setFlag(fShowedBluePrint); + } + + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 5520; + scene->setAction(&scene->_sequenceManager, scene, 5520, &BF_GLOBALS._player, NULL); + BF_INVENTORY.setObjectScene(INV_CENTER_PUNCH, 1); + setFrame(3); + break; + case 3: + setFrame(1); + break; + default: + break; + } + } + return true; + case INV_CENTER_PUNCH: + SceneItem::display2(550, 22); + BF_INVENTORY.setObjectScene(INV_CENTER_PUNCH, 0); + setFrame(2); + return true; + default: + return NamedObject::startAction(action, event); + } +} + +bool Scene551::Harrison::startAction(CursorType action, Event &event) { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + switch (action) { + case CURSOR_LOOK: + SceneItem::display2(550, 23); + return true; + case CURSOR_USE: + SceneItem::display2(550, 24); + return true; + case CURSOR_TALK: + BF_GLOBALS._player.disableControl(); + + if (scene->_drunkStanding._flag == 1) { + _flag = 5508; + } else if (!scene->_field1CD0) { + _flag = 5502; + } else { + scene->_field1CD0 = 1; + _flag = 5500; + } + scene->setAction(&scene->_action2); + return true; + default: + return NamedObjectExt::startAction(action, event); + } +} + +/*--------------------------------------------------------------------------*/ + +bool Scene551::Item4::startAction(CursorType action, Event &event) { + Scene551 *scene = (Scene551 *)BF_GLOBALS._sceneManager._scene; + + switch (action) { + case CURSOR_LOOK: + SceneItem::display2(550, 34); + BF_GLOBALS._player.disableControl(); + scene->_sceneMode = 1; + scene->setAction(&scene->_sequenceManager, scene, 5510, &BF_GLOBALS._player, &scene->_vechile2, NULL); + return true; + default: + return false; + } +} + +/*--------------------------------------------------------------------------*/ + +Scene551::Scene551(): Scene550() { + _field1CD0 = _field1CD2 = 0; +} + +void Scene551::synchronize(Serializer &s) { + Scene550::synchronize(s); + s.syncAsSint16LE(_field1CD0); + s.syncAsSint16LE(_field1CD2); +} + +void Scene551::postInit(SceneObjectList *OwnerList) { + SceneExt::postInit(); + loadScene(550); + BF_GLOBALS._walkRegions.load(551); + BF_GLOBALS._sound1.fadeSound(16); + + _stripManager.addSpeaker(&_gameTextSpeaker); + _stripManager.addSpeaker(&_jakeUniformSpeaker); + _stripManager.addSpeaker(&_gigglesSpeaker); + _stripManager.addSpeaker(&_drunkSpeaker); + + if (BF_GLOBALS.getFlag(fHasLeftDrunk)) { + _item4.setBounds(Rect(0, 0, 320, 170)); + BF_GLOBALS._sceneItems.push_back(&_item4); + } + + BF_GLOBALS._player.postInit(); + BF_GLOBALS._player.animate(ANIM_MODE_1, NULL); + BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper()); + BF_GLOBALS._player.setPosition(Common::Point(160, 100)); + BF_GLOBALS._player._moveDiff = Common::Point(2, 1); + BF_GLOBALS._player.enableControl(); + + _caravanDoor.postInit(); + _caravanDoor.setVisage(550); + _caravanDoor.setPosition(Common::Point(34, 66)); + BF_GLOBALS._sceneItems.push_back(&_caravanDoor); + + _vechile2.postInit(); + _vechile2.setVisage(301); + _vechile2.setStrip(1); + _vechile2.setPosition(Common::Point(205, 77)); + _vechile2.fixPriority(70); + _vechile2.changeZoom(80); + BF_GLOBALS._sceneItems.push_back(&_vechile2); + + BF_GLOBALS._walkRegions.proc1(14); + + _drunk.postInit(); + _drunk.setVisage(550); + _drunk.setStrip(3); + _drunk.fixPriority(84); + _drunk.setPosition(Common::Point(29, 92)); + _drunk._flag = 0; + BF_GLOBALS._sceneItems.push_back(&_drunk); + + _object12.postInit(); + _object12.setVisage(550); + _object12.setStrip(7); + _object12.setPosition(Common::Point(29, 92)); + _object12.hide(); + + _object13.postInit(); + _object13.setVisage(550); + _object13.setStrip(2); + _object13.setPosition(Common::Point(29, 92)); + _object13.fixPriority(82); + _object13.setDetails(550, 8, -1, 9, 1, NULL); + + if (BF_GLOBALS.getFlag(didDrunk)) { + _drunk._flag = 3; + _drunk.setStrip(3); + + _object12.show(); + _object12.setDetails(550, 25, -1, 26, 1, NULL); + BF_GLOBALS._sceneItems.push_front(&_object12); + + _harrison.postInit(); + _harrison.setVisage(304); + _harrison.setPosition(Common::Point(67, 102)); + _harrison.setStrip(8); + _harrison.setFrame(1); + _harrison._flag = 1; + BF_GLOBALS._sceneItems.push_back(&_harrison); + + _object14.postInit(); + _object14.setVisage(550); + _object14.setStrip(5); + _object14.animate(ANIM_MODE_2, NULL); + _object14.fixPriority(80); + _object14.setPosition(Common::Point(122, 57)); + + _object11.postInit(); + _object11.setVisage(550); + _object11.setStrip(2); + _object11.setFrame(2); + _object11.setPosition(Common::Point(116, 84)); + _object11.fixPriority(77); + _object11.setDetails(550, 32, -1, 10, 1, NULL); + + _drunkStanding.postInit(); + _drunkStanding._flag = 0; + _drunkStanding.setVisage(554); + _drunkStanding.setStrip(7); + _drunkStanding.setFrame(8); + _drunkStanding.fixPriority(83); + _drunkStanding.setPosition(Common::Point(57, 99)); + } else { + _harrison.postInit(); + _harrison.setVisage(304); + _harrison.setPosition(Common::Point(126, 83)); + _harrison.setObjectWrapper(new SceneObjectWrapper()); + _harrison._flag = 0; + _harrison._moveDiff = Common::Point(2, 1); + BF_GLOBALS._sceneItems.push_back(&_harrison); + + _object14.postInit(); + _object14.setVisage(550); + _object14.setStrip(5); + _object14.animate(ANIM_MODE_2, NULL); + _object14.fixPriority(80); + _object14.setPosition(Common::Point(122, 57)); + + _patrolCarTrunk.postInit(); + _patrolCarTrunk.setVisage(550); + _patrolCarTrunk.setStrip(4); + _patrolCarTrunk.setFrame(1); + _patrolCarTrunk.setPosition(Common::Point(149, 69)); + _patrolCarTrunk.fixPriority(79); + _patrolCarTrunk.setDetails(550, 18, -1, 9, 1, NULL); + + _object11.postInit(); + _object11.setVisage(550); + _object11.setStrip(2); + _object11.setFrame(2); + _object11.setPosition(Common::Point(116, 84)); + _object11.fixPriority(77); + _object11.setDetails(550, 32, -1, 10, 1, NULL); + + _drunkStanding.postInit(); + _drunkStanding._flag = 0; + _drunkStanding.setVisage(554); + _drunkStanding.fixPriority(83); + _drunkStanding.setPosition(Common::Point(47, 93)); + + _object15.postInit(); + _object15.setVisage(552); + _object15.setPosition(Common::Point(59, 94)); + _object15.fixPriority(200); + _object15.hide(); + } + + BF_GLOBALS._player.disableControl(); + _sceneMode = 3; + setAction(&_sequenceManager, this, 5502, &BF_GLOBALS._player, &_vechile2, NULL); + + _item2.setDetails(Rect(0, 26, 53, 67), 550, 1, -1, 2, 1, NULL); + _item3.setDetails(Rect(53, 12, 173, 65), 550, 4, -1, 5, 1, NULL); + _item1.setDetails(Rect(0, 0, 320, 170), 550, 6, -1, -1, 1, NULL); +} + +void Scene551::signal() { + switch (_sceneMode) { + case 0: + BF_GLOBALS._player.enableControl(); + break; + case 1: + BF_GLOBALS._sound1.fadeOut2(NULL); + BF_GLOBALS.set2Flags(f1027Drunk); + BF_GLOBALS.set2Flags(f1097Drunk); + + if (BF_GLOBALS.getFlag(didDrunk)) + BF_GLOBALS.setFlag(f1098Drunk); + + BF_GLOBALS._sceneManager.changeScene(60); + break; + case 2: + BF_GLOBALS._walkRegions.proc1(18); + + _trunkInset.postInit(); + _trunkInset.setVisage(553); + _trunkInset.setPosition(Common::Point(59, 92)); + _trunkInset.fixPriority(252); + BF_GLOBALS._sceneItems.push_front(&_trunkInset); + + _trunkKits.postInit(); + _trunkKits.setVisage(553); + _trunkKits.setStrip(2); + _trunkKits.setPosition(Common::Point(57, 73)); + _trunkKits.fixPriority(254); + BF_GLOBALS._sceneItems.push_front(&_trunkKits); + BF_GLOBALS._player.enableControl(); + break; + case 3: + if (BF_GLOBALS.getFlag(talkedToHarrisAboutDrunk)) { + BF_GLOBALS._player.enableControl(); + } else { + BF_GLOBALS.setFlag(talkedToHarrisAboutDrunk); + _harrison._flag = 5500; + setAction(&_action2); + } + break; + case 5506: + _harrison.setObjectWrapper(new SceneObjectWrapper()); + ADD_PLAYER_MOVER_NULL(_harrison, 88, 91); + + _object12.show(); + _object12.setDetails(550, 25, -1, 26, 1, NULL); + BF_GLOBALS._sceneItems.push_front(&_object12); + BF_GLOBALS._player.enableControl(); + + _sceneMode = 5507; + setAction(&_sequenceManager, this, 5507, &BF_GLOBALS._player, &_drunk, &_drunkStanding, NULL); + break; + case 5507: + BF_GLOBALS._walkRegions.proc1(2); + BF_GLOBALS._walkRegions.proc1(4); + + _drunkStanding._flag = 1; + BF_GLOBALS._sceneItems.push_front(&_drunkStanding); + BF_GLOBALS._player.enableControl(); + break; + case 5508: + BF_GLOBALS._player.disableControl(); + _sceneMode = 0; + setAction(&_sequenceManager, this, 5505, &BF_GLOBALS._player, &_object15, NULL); + break; + case 5509: + BF_INVENTORY.setObjectScene(INV_CENTER_PUNCH, 0); + BF_GLOBALS._player.disableControl(); + _sceneMode = 5510; + setAction(&_sequenceManager, this, 5510, &BF_GLOBALS._player, &_vechile2, NULL); + break; + case 5510: + BF_GLOBALS._bookmark = bCalledToDrunkStop; + if (BF_GLOBALS.getFlag(didDrunk)) + BF_GLOBALS.setFlag(fHasLeftDrunk); + + BF_GLOBALS._sceneManager.changeScene(60); + break; + case 5520: + BF_GLOBALS._player.animate(ANIM_MODE_1, NULL); + _harrison.animate(ANIM_MODE_1, NULL); + BF_GLOBALS._player.enableControl(); + break; + default: + BF_GLOBALS._player.enableControl(); + break; + } +} + +void Scene551::dispatch() { + SceneExt::dispatch(); + + if ((_drunkStanding._flag != 2) && !_harrison._mover && !_field1CD2) + _harrison.updateAngle(BF_GLOBALS._player._position); +} + } // End of namespace BlueForce } // End of namespace TsAGE diff --git a/engines/tsage/blue_force/blueforce_scenes5.h b/engines/tsage/blue_force/blueforce_scenes5.h index 5e80edfe6b..94594f9594 100644 --- a/engines/tsage/blue_force/blueforce_scenes5.h +++ b/engines/tsage/blue_force/blueforce_scenes5.h @@ -39,7 +39,7 @@ namespace BlueForce { using namespace TsAGE; -class Scene550 : public SceneExt { +class Scene550: public SceneExt { /* Objects */ class Object1: public NamedObject { public: @@ -55,7 +55,7 @@ class Scene550 : public SceneExt { }; /* Actions */ - class Action1: public Action { + class Action1: public ActionExt { public: virtual void signal(); }; @@ -69,13 +69,78 @@ public: SpeakerLyleHat _lyleHatSpeaker; SpeakerJakeJacket _jakeJacketSpeaker; Action1 _action1; - int _fieldF90; - Scene550(); virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); }; +class Scene551: public Scene550 { + /* Objects */ + class Vechile: public NamedObject { + public: + virtual bool startAction(CursorType action, Event &event); + }; + class DrunkStanding: public NamedObjectExt { + public: + virtual bool startAction(CursorType action, Event &event); + }; + class Drunk: public NamedObjectExt { + public: + virtual bool startAction(CursorType action, Event &event); + }; + class PatrolCarTrunk: public NamedObject { + public: + virtual bool startAction(CursorType action, Event &event); + }; + class TrunkInset: public FocusObject { + public: + virtual void remove(); + virtual bool startAction(CursorType action, Event &event); + }; + class TrunkKits: public NamedObject { + public: + virtual bool startAction(CursorType action, Event &event); + }; + class Harrison: public NamedObjectExt { + public: + virtual bool startAction(CursorType action, Event &event); + }; + + /* Items */ + class Item4: public SceneHotspot { + public: + virtual bool startAction(CursorType action, Event &event); + }; + + /* Actions */ + class Action2: public Action { + public: + virtual void signal(); + }; +public: + SpeakerDrunk _drunkSpeaker; + SpeakerJakeUniform _jakeUniformSpeaker; + SpeakerGiggles _gigglesSpeaker; + Vechile _vechile2; + DrunkStanding _drunkStanding; + Drunk _drunk; + PatrolCarTrunk _patrolCarTrunk; + TrunkInset _trunkInset; + TrunkKits _trunkKits; + Harrison _harrison; + NamedObject _object11, _object12, _object13; + SceneObject _object14, _object15; + Item4 _item4; + Action2 _action2; + int _field1CD0, _field1CD2; + + Scene551(); + virtual void synchronize(Serializer &s); + void postInit(SceneObjectList *OwnerList); + virtual void signal(); + virtual void dispatch(); +}; + } // End of namespace BlueForce } // End of namespace TsAGE diff --git a/engines/tsage/blue_force/blueforce_speakers.cpp b/engines/tsage/blue_force/blueforce_speakers.cpp index 0d8ab1215b..dbd7419378 100644 --- a/engines/tsage/blue_force/blueforce_speakers.cpp +++ b/engines/tsage/blue_force/blueforce_speakers.cpp @@ -762,6 +762,47 @@ void SpeakerBilly::setText(const Common::String &msg) { _object2.fixCountdown(8, _numFrames); } +/*--------------------------------------------------------------------------*/ + +SpeakerDrunk::SpeakerDrunk(): VisualSpeaker() { + _color1 = 21; + _speakerName = "DRUNK"; +} + +void SpeakerDrunk::setText(const Common::String &msg) { + _removeObject2 = true; + + _object2.postInit(); + _object2.setVisage(556); + _object2.fixPriority(255); + _object2.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 52, + BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166)); + + VisualSpeaker::setText(msg); + _object2.fixCountdown(8, _numFrames); +} + +/*--------------------------------------------------------------------------*/ + +SpeakerGiggles::SpeakerGiggles(): VisualSpeaker() { + _color1 = 32; + + _speakerName = "GIGGLES"; +} + +void SpeakerGiggles::setText(const Common::String &msg) { + _removeObject2 = true; + + _object2.postInit(); + _object2.setVisage(557); + _object2.setStrip2(1); + _object2.fixPriority(255); + _object2.setPosition(Common::Point(BF_GLOBALS._sceneManager._scene->_sceneBounds.left + 262, + BF_GLOBALS._sceneManager._scene->_sceneBounds.top + 166)); + + VisualSpeaker::setText(msg); + _object2.fixCountdown(8, _numFrames); +} } // End of namespace BlueForce diff --git a/engines/tsage/blue_force/blueforce_speakers.h b/engines/tsage/blue_force/blueforce_speakers.h index 9eb3106efc..df2a617941 100644 --- a/engines/tsage/blue_force/blueforce_speakers.h +++ b/engines/tsage/blue_force/blueforce_speakers.h @@ -267,6 +267,21 @@ public: virtual void setText(const Common::String &msg); }; +class SpeakerDrunk: public VisualSpeaker { +public: + SpeakerDrunk(); + + virtual Common::String getClassName() { return "SpeakerDrunk"; } + virtual void setText(const Common::String &msg); +}; + +class SpeakerGiggles: public VisualSpeaker { +public: + SpeakerGiggles(); + + virtual Common::String getClassName() { return "SpeakerGiggles"; } + virtual void setText(const Common::String &msg); +}; } // End of namespace BlueForce |