aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStrangerke2012-02-14 19:03:50 +0100
committerStrangerke2012-02-14 20:10:20 +0100
commitf380d3ded235297a4162ff0735dcb037da813faa (patch)
tree0063a983c8b50666586d5eda7d86123be22c9736
parent1dcc8402b8dd57bbf5174a6d7a0c99b39fae7ccb (diff)
downloadscummvm-rg350-f380d3ded235297a4162ff0735dcb037da813faa.tar.gz
scummvm-rg350-f380d3ded235297a4162ff0735dcb037da813faa.tar.bz2
scummvm-rg350-f380d3ded235297a4162ff0735dcb037da813faa.zip
TSAGE: R2R - Scene 1337: Implement one more large AI function (subCDB90)
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes1.cpp314
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes1.h4
2 files changed, 313 insertions, 5 deletions
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index 0745855182..769fd58c78 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -4667,6 +4667,10 @@ void Scene1337::subC51A0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2) {
_item1.setAction(&_action13);
}
+void Scene1337::subC6235(int arg1) {
+ warning("STUBBED: subC6235()");
+}
+
void Scene1337::subPostInit() {
R2_GLOBALS._v57709 = 0;
R2_GLOBALS._v5780C = 0;
@@ -4895,9 +4899,311 @@ void Scene1337::subCCF26() {
shuffleCards();
_item1.setAction(&_action3);
}
+void Scene1337::subCD193() {
+ warning("STUBBED: subCD193()");
+}
-void Scene1337::subCDB90(int arg1, Common::Point *pt) {
- warning("STUBBED: subCDB90()");
+void Scene1337::subCDB90(int arg1, Common::Point pt) {
+ bool found = false;
+ int curReg = R2_GLOBALS._sceneRegions.indexOf(g_globals->_events._mousePos);
+
+ if (arg1 == 3) {
+ int i;
+ for (i = 0; i <= 7; i++) {
+ if ( (subC2BF8(&_arrunkObj1337[2]._arr2[i], pt))
+ || (subC2BF8(&_arrunkObj1337[0]._arr2[i], pt))
+ || (subC2BF8(&_arrunkObj1337[1]._arr2[i], pt))
+ || (subC2BF8(&_arrunkObj1337[3]._arr2[i], pt)) ) {
+ found = true;
+ break;
+ }
+ }
+
+ if (found) {
+ switch (curReg) {
+ case 5:
+ if (_arrunkObj1337[2]._arr2[i]._field34 != 0)
+ subC6235(_arrunkObj1337[2]._arr2[i]._field34);
+ else
+ actionDisplay(1330, 20, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 10:
+ if (_arrunkObj1337[3]._arr2[i]._field34 != 0)
+ subC6235(_arrunkObj1337[3]._arr2[i]._field34);
+ else
+ actionDisplay(1330, 22, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 15:
+ if (_arrunkObj1337[0]._arr2[i]._field34 != 0)
+ subC6235(_arrunkObj1337[0]._arr2[i]._field34);
+ else
+ actionDisplay(1330, 21, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 20:
+ if (_arrunkObj1337[1]._arr2[i]._field34 != 0)
+ subC6235(_arrunkObj1337[1]._arr2[i]._field34);
+ else
+ actionDisplay(1330, 23, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ default:
+ break;
+ }
+ } else {
+ if ( (subC2BF8(&_arrunkObj1337[2]._arr3[0], pt))
+ || (subC2BF8(&_arrunkObj1337[0]._arr3[0], pt))
+ || (subC2BF8(&_arrunkObj1337[1]._arr3[0], pt))
+ || (subC2BF8(&_arrunkObj1337[3]._arr3[0], pt)) ) {
+ found = true;
+ }
+
+ if (found) {
+ switch (curReg) {
+ case 5:
+ if (_arrunkObj1337[2]._arr3[0]._field34 != 0)
+ subC6235(_arrunkObj1337[2]._arr3[0]._field34);
+ else
+ actionDisplay(1330, 10, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 10:
+ if (_arrunkObj1337[3]._arr3[0]._field34 != 0)
+ subC6235(_arrunkObj1337[3]._arr3[0]._field34);
+ else
+ actionDisplay(1330, 16, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 15:
+ if (_arrunkObj1337[0]._arr3[0]._field34 != 0)
+ subC6235(_arrunkObj1337[3]._arr3[0]._field34);
+ else
+ actionDisplay(1330, 13, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 20:
+ if (_arrunkObj1337[1]._arr3[0]._field34 != 0)
+ subC6235(_arrunkObj1337[1]._arr3[0]._field34);
+ else
+ actionDisplay(1330, 18, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ default:
+ break;
+ }
+ } else {
+ if (subC2BF8(&_item7, pt)) {
+ if (_item7._field34 != 0)
+ subC6235(_item7._field34);
+ else
+ actionDisplay(1330, 7, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ } else if (_background1._bounds.contains(pt)) {
+ actionDisplay(1330, 43, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ } else if (subC2BF8(&_item8, pt)) {
+ actionDisplay(1330, 4, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ } else if ( (subC2BF8(&_arrunkObj1337[2]._arr4[0], pt))
+ || (subC2BF8(&_arrunkObj1337[3]._arr4[0], pt))
+ || (subC2BF8(&_arrunkObj1337[0]._arr4[0], pt))
+ || (subC2BF8(&_arrunkObj1337[1]._arr4[0], pt)) ) {
+ actionDisplay(1330, 32, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ } else {
+ if (subC2BF8(&_arrunkObj1337[2]._arr1[0], pt))
+ subC6235(_arrunkObj1337[2]._arr1[0]._field34);
+ else if (subC2BF8(&_arrunkObj1337[2]._arr1[1], pt))
+ subC6235(_arrunkObj1337[2]._arr1[1]._field34);
+ else if (subC2BF8(&_arrunkObj1337[2]._arr1[2], pt))
+ subC6235(_arrunkObj1337[2]._arr1[2]._field34);
+ else if (subC2BF8(&_arrunkObj1337[2]._arr1[3], pt))
+ subC6235(_arrunkObj1337[2]._arr1[3]._field34);
+ else if ((curReg >= 6) || (curReg <= 9))
+ actionDisplay(1330, 29, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ else if ((curReg >= 11) || (curReg <= 14))
+ actionDisplay(1330, 31, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ else if ((curReg >= 16) || (curReg <= 19))
+ actionDisplay(1330, 30, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ else {
+ switch (curReg) {
+ case 0:
+ actionDisplay(1330, 2, 159, 134, 1, 200, 0, 7, 0, 105, 105);
+ break;
+ case 5:
+ actionDisplay(1330, 25, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 10:
+ actionDisplay(1330, 27, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 15:
+ actionDisplay(1330, 26, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 20:
+ actionDisplay(1330, 28, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 21:
+ actionDisplay(1330, 24, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (arg1 != 1)
+ return;
+
+ for (int i = 0; i <= 7; i++) {
+ if (subC2BF8(&_arrunkObj1337[2]._arr2[i], pt)) {
+ switch (_arrunkObj1337[2]._arr2[i]._field34) {
+ case 0:
+ actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 1:
+ actionDisplay(1330, 54, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ default:
+ actionDisplay(1330, 34, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ }
+ found = true;
+ break;
+ } else if (subC2BF8(&_arrunkObj1337[0]._arr2[i], pt)) {
+ switch (_arrunkObj1337[0]._arr2[i]._field34) {
+ case 0:
+ actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ default:
+ actionDisplay(1330, 1, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ }
+ found = true;
+ break;
+ } else if (subC2BF8(&_arrunkObj1337[1]._arr2[i], pt)) {
+ switch (_arrunkObj1337[1]._arr2[i]._field34) {
+ case 0:
+ actionDisplay(1330, 146, 300, 99, 1, 136, 0, 7, 0, 117, 117);
+ break;
+ default:
+ actionDisplay(1330, 144, 300, 99, 1, 136, 0, 7, 0, 117, 117);
+ break;
+ }
+ found = true;
+ break;
+ } else if (subC2BF8(&_arrunkObj1337[3]._arr2[i], pt)) {
+ switch (_arrunkObj1337[3]._arr2[i]._field34) {
+ case 0:
+ actionDisplay(1330, 147, 20, 99, 1, 136, 0, 7, 0, 172, 172);
+ break;
+ default:
+ actionDisplay(1330, 145, 20, 99, 1, 136, 0, 7, 0, 172, 172);
+ break;
+ }
+ found = true;
+ break;
+ }
+ }
+
+ if (subC2BF8(&_arrunkObj1337[2]._arr3[0], pt)) {
+ if (_arrunkObj1337[0]._arr3[0]._field34 != 0) {
+ actionDisplay(1330, 39, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ } else {
+ actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ }
+ found = true;
+ }
+
+ if (subC2BF8(&_arrunkObj1337[3]._arr3[0], pt)) {
+ if (_arrunkObj1337[3]._arr3[0]._field34 != 0) {
+ actionDisplay(1330, 145, 20, 99, 1, 136, 0, 7, 0, 172, 172);
+ } else {
+ actionDisplay(1330, 147, 20, 99, 1, 136, 0, 7, 0, 172, 172);
+ }
+ found = true;
+ }
+
+ if (subC2BF8(&_arrunkObj1337[1]._arr3[0], pt)) {
+ if (_arrunkObj1337[1]._arr3[0]._field34 != 0) {
+ actionDisplay(1330, 144, 300, 99, 1, 136, 0, 7, 0, 117, 117);
+ } else {
+ actionDisplay(1330, 146, 300, 99, 1, 136, 0, 7, 0, 117, 117);
+ }
+ found = true;
+ }
+
+ if (subC2BF8(&_arrunkObj1337[0]._arr3[0], pt)) {
+ if (_arrunkObj1337[0]._arr3[0]._field34 != 0) {
+ actionDisplay(1330, 1, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ } else {
+ actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ }
+ found = true;
+ }
+
+ if (subC2BF8(&_arrunkObj1337[3]._arr4[0], pt)) {
+ actionDisplay(1330, 147, 20, 99, 1, 136, 0, 7, 0, 172, 172);
+ found = true;
+ }
+
+ if (subC2BF8(&_arrunkObj1337[1]._arr4[0], pt)) {
+ actionDisplay(1330, 146, 300, 99, 1, 136, 0, 7, 0, 117, 117);
+ found = true;
+ }
+
+ if (subC2BF8(&_arrunkObj1337[0]._arr4[0], pt)) {
+ actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ found = true;
+ }
+
+ if (found)
+ return;
+
+ if (_background1._bounds.contains(pt)) {
+ subCD193();
+ return;
+ }
+
+ if (subC2BF8(&_item7, pt))
+ actionDisplay(1330, 9, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ else if (subC2BF8(&_item8, pt))
+ actionDisplay(1330, 5, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ else {
+ switch (curReg) {
+ case 0:
+ actionDisplay(1330, 3, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 6:
+ // no break on purpose
+ case 7:
+ // no break on purpose
+ case 8:
+ // no break on purpose
+ case 9:
+ actionDisplay(1330, 145, 20, 99, 1, 136, 0, 7, 0, 172, 172);
+ break;
+ case 10:
+ actionDisplay(1330, 147, 20, 99, 1, 136, 0, 7, 0, 172, 172);
+ break;
+ case 11:
+ // no break on purpose
+ case 12:
+ // no break on purpose
+ case 13:
+ // no break on purpose
+ case 14:
+ actionDisplay(1330, 1, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ case 16:
+ // no break on purpose
+ case 17:
+ // no break on purpose
+ case 18:
+ // no break on purpose
+ case 19:
+ actionDisplay(1330, 144, 300, 99, 1, 136, 0, 7, 0, 117, 117);
+ break;
+ case 20:
+ actionDisplay(1330, 146, 300, 99, 1, 136, 0, 7, 0, 117, 117);
+ break;
+ default:
+ actionDisplay(1330, 11, 159, 10, 1, 200, 0, 7, 0, 154, 154);
+ break;
+ }
+ }
}
void Scene1337::subCF31D() {
@@ -5197,12 +5503,12 @@ void Scene1337::subD02CA() {
}
if (di == 4) {
- subCDB90(1, &_item6._field36);
+ subCDB90(1, _item6._field36);
subD0281();
return;
}
} else if (R2_GLOBALS._v57810 == 300) {
- subCDB90(3, &_item6._field36);
+ subCDB90(3, _item6._field36);
subD0281();
return;
} else {
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index 0f22ca646a..913550c223 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -343,12 +343,14 @@ public:
void subC4CD2();
void subC4CEC();
void subC51A0(unkObj1337sub1 *subObj1, unkObj1337sub1 *subObj2);
+ void subC6235(int arg1);
void subPostInit();
void subCB59B();
void suggestInstructions();
void shuffleCards();
void subCCF26();
- void subCDB90(int arg1, Common::Point *pt);
+ void subCD193();
+ void subCDB90(int arg1, Common::Point pt);
void subCF31D();
void subCF979();
void subD026D();