diff options
Diffstat (limited to 'engines/scumm/he/logic/moonbase_logic.cpp')
-rw-r--r-- | engines/scumm/he/logic/moonbase_logic.cpp | 99 |
1 files changed, 79 insertions, 20 deletions
diff --git a/engines/scumm/he/logic/moonbase_logic.cpp b/engines/scumm/he/logic/moonbase_logic.cpp index 22b0b186e6..d5100cef71 100644 --- a/engines/scumm/he/logic/moonbase_logic.cpp +++ b/engines/scumm/he/logic/moonbase_logic.cpp @@ -22,6 +22,8 @@ #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 { @@ -44,10 +46,10 @@ 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); + 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); @@ -76,6 +78,44 @@ int LogicHEmoonbase::versionID() { #define OP_AI_SET_TYPE 10003 #define OP_AI_CLEAN_UP 10004 +#define OP_NET_REMOTE_START_SCRIPT 1492 +#define OP_NET_DO_INIT_ALL 1493 +#define OP_NET_DO_INIT_PROVIDER 1494 +#define OP_NET_DO_INIT_SESSION 1495 +#define OP_NET_DO_INIT_USER 1496 +#define OP_NET_QUERY_PROVIDERS 1497 +#define OP_NET_GET_PROVIDER_NAME 1498 +#define OP_NET_SET_PROVIDER 1499 +#define OP_NET_CLOSE_PROVIDER 1500 +#define OP_NET_QUERY_SESSIONS 1501 +#define OP_NET_GET_SESSION_NAME 1502 +#define OP_NET_CREATE_SESSION 1503 +#define OP_NET_JOIN_SESSION 1504 +#define OP_NET_END_SESSION 1505 +#define OP_NET_ADD_USER 1506 +#define OP_NET_REMOVE_USER 1507 +#define OP_NET_WHO_SENT_THIS 1508 +#define OP_NET_REMOTE_SEND_ARRAY 1509 +#define OP_NET_WHO_AM_I 1510 +#define OP_NET_REMOTE_START_FUNCTION 1511 +#define OP_NET_GET_PLAYER_LONG_NAME 1512 +#define OP_NET_GET_PLAYER_SHORT_NAME 1513 +#define OP_NET_SET_PROVIDER_BY_NAME 1516 +#define OP_NET_HOST_TCPIP_GAME 1517 +#define OP_NET_JOIN_TCPIP_GAME 1518 +#define OP_NET_SET_FAKE_LAG 1555 +#define OP_NET_GET_HOST_NAME 1556 +#define OP_NET_GET_IP_FROM_NAME 1557 +#define OP_NET_GET_SESSION_PLAYER_COUNT 1558 +#define OP_NET_DISABLE_SESSION_PLAYER_JOIN 1559 +#define OP_NET_START_QUERY_SESSIONS 1560 +#define OP_NET_UPDATE_QUERY_SESSIONS 1561 +#define OP_NET_STOP_QUERY_SESSIONS 1562 +#define OP_NET_DESTROY_PLAYER 1563 +#define OP_NET_ENABLE_SESSION_PLAYER_JOIN 1564 +#define OP_NET_SET_AI_PLAYER_COUNT 1565 + + int32 LogicHEmoonbase::dispatch(int op, int numArgs, int32 *args) { switch (op) { case OP_CREATE_MULTI_STATE_WIZ: @@ -97,15 +137,13 @@ 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); - break; + return op_set_fow_image(op, numArgs, args); 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; @@ -152,13 +190,34 @@ 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; + + str = Common::String::format("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, "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) { @@ -166,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) { |