From 603dc3734c05876730a6ad9a21aa26a55f76f8fb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 10 Jan 2012 22:08:00 +0100 Subject: TSAGE: R2R - Fix some warnings, implement sub51AF8 Thanks LordHoto for pointing those --- engines/tsage/ringworld2/ringworld2_scenes1.cpp | 38 ++++++++++++++++++++----- engines/tsage/ringworld2/ringworld2_scenes1.h | 15 ++++++++-- 2 files changed, 44 insertions(+), 9 deletions(-) (limited to 'engines/tsage') diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp index 3d8cd0e6dd..84da3f23f8 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp +++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp @@ -1097,9 +1097,33 @@ void Scene1200::Area1::proc13(int resNum, int lookLineNum, int talkLineNum, int _actor2.setDetails(resNum, lookLineNum, talkLineNum, useLineNum, 2, (SceneItem *) NULL); } +Scene1200::Object1::Object1() { + _field16 = _field26 = _field28 = _field2A = _field2C = _field2E = _field30 = 0; +} + +void Scene1200::Object1::synchronize(Serializer &s) { + SavedObject::synchronize(s); + + s.syncAsSint16LE(_field16); + s.syncAsSint16LE(_field26); + s.syncAsSint16LE(_field28); + s.syncAsSint16LE(_field2A); + s.syncAsSint16LE(_field2C); + s.syncAsSint16LE(_field2E); + s.syncAsSint16LE(_field30); +} + int Scene1200::Object1::sub51AF8(Common::Point pt) { - warning("STUB: sub1AF8()"); - return 0; + if (!_rect1.contains(pt)) + return -1; + + int tmp1 = (pt.x - _rect1.left + _field2E) / _field2A; + int tmp2 = (pt.y - _rect1.top + _field30) / _field2C; + + if ((tmp1 >= 0) && (tmp2 >= 0) && (_field26 > tmp1) && (_field28 > tmp2)) + return _field16 + (((_field26 * tmp2) + tmp1)* 2); + + return -1; } @@ -1119,13 +1143,13 @@ void Scene1200::postInit(SceneObjectList *OwnerList) { _field41A = 0; _field41C = 0; - if ((R2_GLOBALS._v56AA6 == 1) && (R2_GLOBALS._v56AA8 == 1) && (R2_GLOBALS._v56AA8 == 1)) + if ((R2_GLOBALS._v56AA6 == 1) && (R2_GLOBALS._v56AA7 == 1) && (R2_GLOBALS._v56AA8 == 1)) _field418 = 1; - else if ((R2_GLOBALS._v56AA6 == 2) && (R2_GLOBALS._v56AA8 == 1) && (R2_GLOBALS._v56AA8 == 1)) + else if ((R2_GLOBALS._v56AA6 == 2) && (R2_GLOBALS._v56AA7 == 1) && (R2_GLOBALS._v56AA8 == 1)) _field418 = 2; - else if ((R2_GLOBALS._v56AA6 == 2) && (R2_GLOBALS._v56AA8 == 1) && (R2_GLOBALS._v56AA8 == 2)) + else if ((R2_GLOBALS._v56AA6 == 2) && (R2_GLOBALS._v56AA7 == 1) && (R2_GLOBALS._v56AA8 == 2)) _field418 = 3; - else if ((R2_GLOBALS._v56AA6 == 2) && (R2_GLOBALS._v56AA8 == 3) && (R2_GLOBALS._v56AA8 == 1)) + else if ((R2_GLOBALS._v56AA6 == 2) && (R2_GLOBALS._v56AA7 == 3) && (R2_GLOBALS._v56AA8 == 1)) _field418 = 4; R2_GLOBALS._player.postInit(); @@ -1764,7 +1788,7 @@ void Scene1500::dispatch() { if (_sceneMode > 10) { float yDiff = sqrt((float) (_actor3._position.x * _actor3._position.x) + (_actor3._position.y * _actor3._position.y)); if (yDiff > 6) - _actor3.setPosition(_actor3._position, yDiff); + _actor3.setPosition(_actor3._position, (int) yDiff); } Scene::dispatch(); diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h index 57e62e352c..ec05a83fff 100644 --- a/engines/tsage/ringworld2/ringworld2_scenes1.h +++ b/engines/tsage/ringworld2/ringworld2_scenes1.h @@ -145,8 +145,19 @@ class Scene1200 : public SceneExt { class Object1 : public SavedObject { public: - Rect rect1; - Rect rect2; + Rect _rect1; + Rect _rect2; + + int _field16; + int _field26; + int _field28; + int _field2A; + int _field2C; + int _field2E; + int _field30; + + Object1(); + void synchronize(Serializer &s); int sub51AF8(Common::Point pt); virtual Common::String getClassName() { return "UnkObject1200"; } -- cgit v1.2.3