aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/he
diff options
context:
space:
mode:
authorEugene Sandulenko2016-05-10 16:22:15 +0200
committerEugene Sandulenko2016-05-10 18:07:36 +0200
commit35335b253e046e1bc9f9b8cd04878708dc384492 (patch)
tree42a598d5b5a1830bad89404b8bbc412312bbe869 /engines/scumm/he
parente61700f1b22e492cf9f33a1b94be2c928c0c9574 (diff)
downloadscummvm-rg350-35335b253e046e1bc9f9b8cd04878708dc384492.tar.gz
scummvm-rg350-35335b253e046e1bc9f9b8cd04878708dc384492.tar.bz2
scummvm-rg350-35335b253e046e1bc9f9b8cd04878708dc384492.zip
SCUMM HE: Plug Moonbase FOW kludges in
Diffstat (limited to 'engines/scumm/he')
-rw-r--r--engines/scumm/he/logic/moonbase_logic.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp
index 5f02fa9cd4..604dc6774c 100644
--- a/engines/scumm/he/logic/moonbase_logic.cpp
+++ b/engines/scumm/he/logic/moonbase_logic.cpp
@@ -44,7 +44,7 @@ private:
void op_dos_command(int op, int numArgs, int32 *args);
void op_set_fow_sentinel(int32 *args);
void op_set_fow_information(int op, int numArgs, int32 *args);
- void op_set_fow_image(int op, int numArgs, int32 *args);
+ int op_set_fow_image(int op, int numArgs, int32 *args);
void op_ai_test_kludge(int op, int numArgs, int32 *args);
void op_ai_master_control_program(int op, int numArgs, int32 *args);
@@ -135,7 +135,7 @@ int32 LogicHEmoonbase::dispatch(int op, int numArgs, int32 *args) {
op_set_fow_information(op, numArgs, args);
break;
case OP_SET_FOW_IMAGE:
- op_set_fow_image(op, numArgs, args);
+ return op_set_fow_image(op, numArgs, args);
break;
case OP_AI_TEST_KLUDGE:
@@ -190,13 +190,32 @@ void LogicHEmoonbase::op_set_fow_sentinel(int32 *args) {
}
void LogicHEmoonbase::op_set_fow_information(int op, int numArgs, int32 *args) {
- warning("STUB: op_set_fow_information()");
- LogicHE::dispatch(op, numArgs, args);
+ Common::String str("op_set_fow_information(%d", args[0]);
+ for (int i = 1; i < numArgs; i++) {
+ str += Common::String::format(", %d", args[i]);
+ }
+ str += ")";
+
+ debug(2, "%s", str.c_str());
+
+ _vm->_moonbase->setFOWInfo(
+ args[0], // array
+ args[1], // array down dimension
+ args[2], // array across dimension
+ args[3], // logical view X coordinate
+ args[4], // logical view Y coordinate
+ args[5], // screen draw clip rect x1
+ args[6], // screen draw clip rect y1
+ args[7], // screen draw clip rect x2
+ args[8], // screen draw clip rect y2
+ args[9], // techinque
+ args[10] // frame
+ );
}
-void LogicHEmoonbase::op_set_fow_image(int op, int numArgs, int32 *args) {
- warning("STUB: op_set_fow_image()");
- LogicHE::dispatch(op, numArgs, args);
+int LogicHEmoonbase::op_set_fow_image(int op, int numArgs, int32 *args) {
+ debug(2, "STUB: op_set_fow_image(%d)", args[0]);
+ return _vm->_moonbase->setFOWImage(args[0]) ? 1 : 0;
}
void LogicHEmoonbase::op_ai_test_kludge(int op, int numArgs, int32 *args) {