From 4aaea2131e510e635a6ff34bece7057e908cf3f0 Mon Sep 17 00:00:00 2001 From: Joost Peters Date: Sun, 1 Aug 2004 22:48:40 +0000 Subject: create Script class from SCRIPT_* and ScriptModule svn-id: r14425 --- saga/saga.cpp | 8 +-- saga/saga.h | 2 + saga/scene.cpp | 5 +- saga/script.cpp | 179 ++++++++++++++++++++++++++++-------------------------- saga/script.h | 55 +++++++++-------- saga/script_mod.h | 5 -- saga/sdata.cpp | 26 ++++---- saga/sdebug.cpp | 14 ++--- saga/sthread.cpp | 38 ++++++------ 9 files changed, 171 insertions(+), 161 deletions(-) (limited to 'saga') diff --git a/saga/saga.cpp b/saga/saga.cpp index 2c9d60c90d..b6c75cfd95 100644 --- a/saga/saga.cpp +++ b/saga/saga.cpp @@ -47,6 +47,7 @@ #include "game.h" #include "interface_mod.h" #include "isomap_mod.h" +#include "script.h" #include "script_mod.h" #include "scene_mod.h" #include "sdata.h" @@ -117,9 +118,7 @@ void SagaEngine::go() { CON_Register(); // Register console cvars first GAME_Register(); - OBJECTMAP_Register(); - SCRIPT_Register(); ACTOR_Register(); SCENE_Register(); @@ -159,7 +158,7 @@ void SagaEngine::go() { _actionMap = new ActionMap(this); OBJECTMAP_Init(); ISOMAP_Init(); - SCRIPT_Init(); + _script = new Script(); _sdata = new SData(); INTERFACE_Init(); // requires script module ACTOR_Init(); @@ -208,6 +207,7 @@ void SagaEngine::go() { debug(0, "Sound disabled."); } + _script->reg(); _render->reg(); _anim->reg(); _actionMap->reg(); @@ -240,7 +240,7 @@ void SagaEngine::go() { void SagaEngine::shutdown() { SCENE_Shutdown(); ACTOR_Shutdown(); - SCRIPT_Shutdown(); + delete _script; SPRITE_Shutdown(); OBJECTMAP_Shutdown(); FONT_Shutdown(); diff --git a/saga/saga.h b/saga/saga.h index 71315360a8..d57ea91425 100644 --- a/saga/saga.h +++ b/saga/saga.h @@ -45,6 +45,7 @@ class Render; class ActionMap; class Gfx; class SData; +class Script; using Common::MemoryReadStream; @@ -95,6 +96,7 @@ public: ActionMap *_actionMap; Gfx *_gfx; SData *_sdata; + Script *_script; private: int decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len); diff --git a/saga/scene.cpp b/saga/scene.cpp index 55a40a0028..f36d5cf5a8 100644 --- a/saga/scene.cpp +++ b/saga/scene.cpp @@ -38,6 +38,7 @@ #include "palanim_mod.h" #include "render.h" #include "rscfile_mod.h" +#include "script.h" #include "text_mod.h" #include "sound.h" #include "music.h" @@ -469,7 +470,7 @@ int SCENE_Load(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SCENE_DE // Load scene script data if (SceneModule.desc.script_num > 0) { - if (SCRIPT_Load(SceneModule.desc.script_num) != R_SUCCESS) { + if (_vm->_script->loadScript(SceneModule.desc.script_num) != R_SUCCESS) { warning("Error loading scene script"); return R_FAILURE; } @@ -763,7 +764,7 @@ int SCENE_End() { SceneModule.scene_proc(SCENE_END, &scene_info); if (SceneModule.desc.script_num > 0) { - SCRIPT_Free(); + _vm->_script->freeScript(); } // Free scene background diff --git a/saga/script.cpp b/saga/script.cpp index 23fee26124..de692d0485 100644 --- a/saga/script.cpp +++ b/saga/script.cpp @@ -39,19 +39,21 @@ namespace Saga { -R_SCRIPT_MODULE ScriptModule; +static void CF_script_info(int argc, char *argv[], void *refCon); +static void CF_script_exec(int argc, char *argv[], void *refCon); +static void CF_script_togglestep(int argc, char *argv[], void *refCon); -int SCRIPT_Register() { - CVAR_RegisterFunc(CF_script_info, "script_info", NULL, R_CVAR_NONE, 0, 0, NULL); - CVAR_RegisterFunc(CF_script_exec, "script_exec", "