diff options
Diffstat (limited to 'engines/scumm/he/logic/moonbase_logic.cpp')
| -rw-r--r-- | engines/scumm/he/logic/moonbase_logic.cpp | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp index a32356614f..1b596fc54c 100644 --- a/engines/scumm/he/logic/moonbase_logic.cpp +++ b/engines/scumm/he/logic/moonbase_logic.cpp @@ -23,6 +23,7 @@ #include "scumm/he/intern_he.h" #include "scumm/he/logic_he.h" #include "scumm/he/moonbase/moonbase.h" +#include "scumm/he/moonbase/ai_main.h" namespace Scumm { @@ -32,7 +33,7 @@ namespace Scumm { */ class LogicHEmoonbase : public LogicHE { public: - LogicHEmoonbase(ScummEngine_v90he *vm) : LogicHE(vm) {} + LogicHEmoonbase(ScummEngine_v100he *vm) : LogicHE(vm) { _vm1 = vm; } int versionID(); @@ -48,10 +49,13 @@ private: 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); + int op_ai_master_control_program(int op, int numArgs, int32 *args); void op_ai_reset(int op, int numArgs, int32 *args); void op_ai_set_type(int op, int numArgs, int32 *args); void op_ai_clean_up(int op, int numArgs, int32 *args); + +private: + ScummEngine_v100he *_vm1; }; int LogicHEmoonbase::versionID() { @@ -137,14 +141,12 @@ int32 LogicHEmoonbase::dispatch(int op, int numArgs, int32 *args) { break; case OP_SET_FOW_IMAGE: return op_set_fow_image(op, numArgs, args); - break; case OP_AI_TEST_KLUDGE: op_ai_test_kludge(op, numArgs, args); break; case OP_AI_MASTER_CONTROL_PROGRAM: - op_ai_master_control_program(op, numArgs, args); - break; + return op_ai_master_control_program(op, numArgs, args); case OP_AI_RESET: op_ai_reset(op, numArgs, args); break; @@ -185,9 +187,9 @@ void LogicHEmoonbase::op_dos_command(int op, int numArgs, int32 *args) { void LogicHEmoonbase::op_set_fow_sentinel(int32 *args) { debug(2, "op_set_fow_sentinel(%d, %d, %d)", args[0], args[1], args[2]); - _vm->_moonbase->_fowSentinelImage = args[0]; - _vm->_moonbase->_fowSentinelState = args[1]; - _vm->_moonbase->_fowSentinelConditionBits = args[2]; + _vm1->_moonbase->_fowSentinelImage = args[0]; + _vm1->_moonbase->_fowSentinelState = args[1]; + _vm1->_moonbase->_fowSentinelConditionBits = args[2]; } void LogicHEmoonbase::op_set_fow_information(int op, int numArgs, int32 *args) { @@ -201,7 +203,7 @@ void LogicHEmoonbase::op_set_fow_information(int op, int numArgs, int32 *args) { debug(2, "%s", str.c_str()); - _vm->_moonbase->setFOWInfo( + _vm1->_moonbase->setFOWInfo( args[0], // array args[1], // array down dimension args[2], // array across dimension @@ -218,7 +220,7 @@ void LogicHEmoonbase::op_set_fow_information(int op, int numArgs, int32 *args) { int LogicHEmoonbase::op_set_fow_image(int op, int numArgs, int32 *args) { debug(2, "op_set_fow_image(%d)", args[0]); - return _vm->_moonbase->setFOWImage(args[0]) ? 1 : 0; + return _vm1->_moonbase->setFOWImage(args[0]) ? 1 : 0; } void LogicHEmoonbase::op_ai_test_kludge(int op, int numArgs, int32 *args) { @@ -226,27 +228,27 @@ void LogicHEmoonbase::op_ai_test_kludge(int op, int numArgs, int32 *args) { LogicHE::dispatch(op, numArgs, args); } -void LogicHEmoonbase::op_ai_master_control_program(int op, int numArgs, int32 *args) { - warning("STUB: op_ai_master_control_program()"); - LogicHE::dispatch(op, numArgs, args); +int LogicHEmoonbase::op_ai_master_control_program(int op, int numArgs, int32 *args) { + warning("op_ai_master_control_program()"); + return _vm1->_moonbase->_ai->masterControlProgram(numArgs, args); } void LogicHEmoonbase::op_ai_reset(int op, int numArgs, int32 *args) { - warning("STUB: op_ai_reset)"); - LogicHE::dispatch(op, numArgs, args); + warning("op_ai_reset())"); + _vm1->_moonbase->_ai->resetAI(); } void LogicHEmoonbase::op_ai_set_type(int op, int numArgs, int32 *args) { - warning("STUB: op_ai_set_type()"); - LogicHE::dispatch(op, numArgs, args); + warning("op_ai_set_type()"); + _vm1->_moonbase->_ai->setAIType(numArgs, args); } void LogicHEmoonbase::op_ai_clean_up(int op, int numArgs, int32 *args) { - warning("STUB: op_ai_clean_up()"); - LogicHE::dispatch(op, numArgs, args); + warning("op_ai_clean_up()"); + _vm1->_moonbase->_ai->cleanUpAI(); } -LogicHE *makeLogicHEmoonbase(ScummEngine_v90he *vm) { +LogicHE *makeLogicHEmoonbase(ScummEngine_v100he *vm) { return new LogicHEmoonbase(vm); } |
