diff options
author | Paul Gilbert | 2012-01-22 13:16:09 +1100 |
---|---|---|
committer | Paul Gilbert | 2012-01-22 13:16:09 +1100 |
commit | 4e118ccf98e3cc442636da3dddaf965e587ccf15 (patch) | |
tree | 8d172aa3897e55e3470524d4c2195b5f2c9c2553 /engines/tsage/ringworld2/ringworld2_logic.cpp | |
parent | 1758845af5e0aa09f1ab253710e2037a7dfc9e46 (diff) | |
download | scummvm-rg350-4e118ccf98e3cc442636da3dddaf965e587ccf15.tar.gz scummvm-rg350-4e118ccf98e3cc442636da3dddaf965e587ccf15.tar.bz2 scummvm-rg350-4e118ccf98e3cc442636da3dddaf965e587ccf15.zip |
TSAGE: Implemented R2R Scene 500
Diffstat (limited to 'engines/tsage/ringworld2/ringworld2_logic.cpp')
-rw-r--r-- | engines/tsage/ringworld2/ringworld2_logic.cpp | 58 |
1 files changed, 54 insertions, 4 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp index 0309fa6860..d81672807a 100644 --- a/engines/tsage/ringworld2/ringworld2_logic.cpp +++ b/engines/tsage/ringworld2/ringworld2_logic.cpp @@ -78,6 +78,8 @@ Scene *Ringworld2Game::createScene(int sceneNumber) { // Science Lab return new Scene400(); case 500: + // Lander Bay 2 Storage + return new Scene500(); case 525: case 600: case 700: @@ -382,7 +384,7 @@ bool SceneExt::display(CursorType action, Event &event) { else SceneItem::display2(5, 0); break; - case R2_7: + case R2_SONIC_STUNNER: if ((R2_GLOBALS._v565F1[1] == 2) || ((R2_GLOBALS._v565F1[1] == 1) && (R2_GLOBALS._v565F1[2] == 2) && (R2_GLOBALS._sceneManager._previousScene == 300))) { R2_GLOBALS._sound4.stop(); @@ -744,12 +746,12 @@ void Ringworld2InvObjectList::reset() { setObjectScene(R2_STEPPING_DISKS, 100); setObjectScene(R2_ATTRACTOR_UNIT, 400); setObjectScene(R2_SENSOR_PROBE, 400); - setObjectScene(R2_7, 500); + setObjectScene(R2_SONIC_STUNNER, 500); setObjectScene(R2_8, 700); setObjectScene(R2_9, 800); setObjectScene(R2_10, 100); setObjectScene(R2_11, 400); - setObjectScene(R2_12, 500); + setObjectScene(R2_AEROSOL, 500); setObjectScene(R2_13, 1550); setObjectScene(R2_OPTICAL_FIBRE, 850); setObjectScene(R2_CLAMP, 850); @@ -757,7 +759,7 @@ void Ringworld2InvObjectList::reset() { setObjectScene(R2_17, 1550); setObjectScene(R2_18, 1550); setObjectScene(R2_19, 1550); - setObjectScene(R2_20, 500); + setObjectScene(R2_REBREATHER_TANK, 500); setObjectScene(R2_21, 500); setObjectScene(R2_22, 1550); setObjectScene(R2_23, 1580); @@ -1104,6 +1106,54 @@ void SceneExit::process(Event &event) { } } +/*--------------------------------------------------------------------------*/ + +void SceneAreaObject::remove() { + _object1.remove(); + SceneArea::remove(); + --R2_GLOBALS._insetUp; +} + +void SceneAreaObject::process(Event &event) { + if (_insetCount == R2_GLOBALS._insetUp) { + CursorType cursor = R2_GLOBALS._events.getCursor(); + + if (_bounds.contains(event.mousePos)) { + // Cursor moving in bounded area + if (cursor == _cursorNum) { + R2_GLOBALS._events.setCursor(_savedCursorNum); + } + } else if (event.mousePos.y < 168) { + if (_cursorNum != cursor) + // Cursor moved outside bounded area + R2_GLOBALS._events.setCursor(_savedCursorNum); + + if (event.eventType == EVENT_BUTTON_DOWN) { + R2_GLOBALS._events.setCursor(_savedCursorNum); + event.handled = true; + } + } + } +} + +void SceneAreaObject::setDetails(int visage, int strip, int frameNumber, const Common::Point &pt) { + _object1.postInit(); + _object1.setup(visage, strip, frameNumber); + _object1.setPosition(pt); + _object1.fixPriority(250); + + _cursorNum = CURSOR_INVALID; + Scene500 *scene = (Scene500 *)R2_GLOBALS._sceneManager._scene; + scene->_sceneAreas.push_front(this); + + _insetCount = ++R2_GLOBALS._insetUp; +} + +void SceneAreaObject::setDetails(int resNum, int lookLineNum, int talkLineNum, int useLineNum) { + ((SceneHotspot *)(this))->setDetails(resNum, lookLineNum, talkLineNum, useLineNum, + 2, (SceneItem *)NULL); +} + } // End of namespace Ringworld2 } // End of namespace TsAGE |