From f14c971313ce0eadb91123d55e01f8acf731ee18 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 22 May 2016 22:59:22 +0200 Subject: SCUMM HE: Plug in Moonbase AI --- engines/scumm/he/logic/moonbase_logic.cpp | 25 ++++++++++++------------- engines/scumm/he/moonbase/ai_main.cpp | 4 +++- engines/scumm/he/moonbase/ai_main.h | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) (limited to 'engines/scumm/he') diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp index a32356614f..d5100cef71 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 { @@ -48,7 +49,7 @@ 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); @@ -137,14 +138,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; @@ -226,24 +225,24 @@ 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 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())"); + resetAI(_vm); } 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()"); + 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()"); + cleanUpAI(); } LogicHE *makeLogicHEmoonbase(ScummEngine_v90he *vm) { diff --git a/engines/scumm/he/moonbase/ai_main.cpp b/engines/scumm/he/moonbase/ai_main.cpp index 1a191a1328..6844d2f7dd 100644 --- a/engines/scumm/he/moonbase/ai_main.cpp +++ b/engines/scumm/he/moonbase/ai_main.cpp @@ -168,7 +168,9 @@ const int *MCP_params; Common::Array lastXCoord[5]; Common::Array lastYCoord[5]; -void resetAI() { +void resetAI(ScummEngine_v90he *vm) { + _vm = vm; + AIstate = STATE_CHOOSE_BEHAVIOR; warning("----------------------> Resetting AI"); diff --git a/engines/scumm/he/moonbase/ai_main.h b/engines/scumm/he/moonbase/ai_main.h index 4937eced0f..7b5ad3ca40 100644 --- a/engines/scumm/he/moonbase/ai_main.h +++ b/engines/scumm/he/moonbase/ai_main.h @@ -86,7 +86,7 @@ enum { static int energyHogType = 0; -void resetAI(); +void resetAI(ScummEngine_v90he *vm); void cleanUpAI(); void setAIType(const int paramCount, const int *params); int masterControlProgram(const int paramCount, const int *params); -- cgit v1.2.3