diff options
author | Eugene Sandulenko | 2004-08-01 00:03:45 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2004-08-01 00:03:45 +0000 |
commit | d530fc76961ee75e68179a40e5282cb0efa2954f (patch) | |
tree | f9d800265457f303850810fc1f2820957628ae9f | |
parent | 7f5f1c141810ae83350bfcbafa24632a88363aca (diff) | |
download | scummvm-rg350-d530fc76961ee75e68179a40e5282cb0efa2954f.tar.gz scummvm-rg350-d530fc76961ee75e68179a40e5282cb0efa2954f.tar.bz2 scummvm-rg350-d530fc76961ee75e68179a40e5282cb0efa2954f.zip |
Objectize actionmap.cpp
svn-id: r14399
-rw-r--r-- | saga/actionmap.cpp | 91 | ||||
-rw-r--r-- | saga/actionmap.h | 29 | ||||
-rw-r--r-- | saga/actionmap_mod.h | 42 | ||||
-rw-r--r-- | saga/render.cpp | 6 | ||||
-rw-r--r-- | saga/render.h | 2 | ||||
-rw-r--r-- | saga/saga.cpp | 8 | ||||
-rw-r--r-- | saga/saga.h | 2 | ||||
-rw-r--r-- | saga/scene.cpp | 6 |
8 files changed, 79 insertions, 107 deletions
diff --git a/saga/actionmap.cpp b/saga/actionmap.cpp index 96cbac96b0..f8887909da 100644 --- a/saga/actionmap.cpp +++ b/saga/actionmap.cpp @@ -29,25 +29,24 @@ #include "console_mod.h" #include "gfx_mod.h" -#include "actionmap_mod.h" #include "actionmap.h" namespace Saga { -static R_ACTIONMAP_INFO ActmapModule; -int ACTIONMAP_Register(void) { +static void CF_action_info(int argc, char *argv[], void *refCon); + +int ActionMap::reg(void) { CVAR_RegisterFunc(CF_action_info, - "action_info", NULL, R_CVAR_NONE, 0, 0, NULL); + "action_info", NULL, R_CVAR_NONE, 0, 0, this); return R_SUCCESS; } -int ACTIONMAP_Init(void) { +ActionMap::ActionMap(void) { debug(0, "ACTIONMAP Module: Initializing..."); - ActmapModule.init = 1; - return R_SUCCESS; + _initialized = true; } -int ACTIONMAP_Load(const byte * exmap_res, size_t exmap_res_len) { +int ActionMap::load(const byte * exmap_res, size_t exmap_res_len) { // Loads exit map data from specified exit map resource R_ACTIONMAP_ENTRY *exmap_entry; R_POINT *exmap_pt_tbl; @@ -55,7 +54,7 @@ int ACTIONMAP_Load(const byte * exmap_res, size_t exmap_res_len) { int exit_ct; int i, pt; - assert(ActmapModule.init); + assert(_initialized); assert(exmap_res != NULL); MemoryReadStream *readS = new MemoryReadStream(exmap_res, exmap_res_len); @@ -98,68 +97,68 @@ int ACTIONMAP_Load(const byte * exmap_res, size_t exmap_res_len) { exmap_entry[i].pt_tbl = exmap_pt_tbl; } - ActmapModule.exits_loaded = 1; - ActmapModule.n_exits = exit_ct; - ActmapModule.exits_tbl = exmap_entry; + _exits_loaded = 1; + _n_exits = exit_ct; + _exits_tbl = exmap_entry; - ActmapModule.exmap_res = exmap_res; - ActmapModule.exmap_res_len = exmap_res_len; + _exmap_res = exmap_res; + _exmap_res_len = exmap_res_len; return R_SUCCESS; } -int ACTIONMAP_Free(void) { +int ActionMap::freeMap(void) { // Frees the currently loaded exit map data R_ACTIONMAP_ENTRY *exmap_entry; int i; - if (!ActmapModule.exits_loaded) { + if (!_exits_loaded) { return R_SUCCESS; } - for (i = 0; i < ActmapModule.n_exits; i++) { - exmap_entry = &ActmapModule.exits_tbl[i]; + for (i = 0; i < _n_exits; i++) { + exmap_entry = &_exits_tbl[i]; free(exmap_entry->pt_tbl); } - free(ActmapModule.exits_tbl); + free(_exits_tbl); - ActmapModule.exits_loaded = 0; - ActmapModule.exits_tbl = NULL; - ActmapModule.n_exits = 0; + _exits_loaded = 0; + _exits_tbl = NULL; + _n_exits = 0; return R_SUCCESS; } -int ACTIONMAP_Shutdown(void) { +int ActionMap::shutdown(void) { return R_SUCCESS; } -int ACTIONMAP_Draw(R_SURFACE * ds, int color) { +int ActionMap::draw(R_SURFACE * ds, int color) { int i; - assert(ActmapModule.init); + assert(_initialized); - if (!ActmapModule.exits_loaded) { + if (!_exits_loaded) { return R_FAILURE; } - for (i = 0; i < ActmapModule.n_exits; i++) { - if (ActmapModule.exits_tbl[i].pt_count == 2) { + for (i = 0; i < _n_exits; i++) { + if (_exits_tbl[i].pt_count == 2) { GFX_DrawFrame(ds, - &ActmapModule.exits_tbl[i].pt_tbl[0], - &ActmapModule.exits_tbl[i].pt_tbl[1], color); - } else if (ActmapModule.exits_tbl[i].pt_count > 2) { - GFX_DrawPolyLine(ds, ActmapModule.exits_tbl[i].pt_tbl, - ActmapModule.exits_tbl[i].pt_count, color); + &_exits_tbl[i].pt_tbl[0], + &_exits_tbl[i].pt_tbl[1], color); + } else if (_exits_tbl[i].pt_count > 2) { + GFX_DrawPolyLine(ds, _exits_tbl[i].pt_tbl, + _exits_tbl[i].pt_count, color); } } return R_SUCCESS; } -void CF_action_info(int argc, char *argv[], void *refCon) { +void ActionMap::actionInfo(int argc, char *argv[]) { R_POINT *pt; int i; @@ -168,28 +167,30 @@ void CF_action_info(int argc, char *argv[], void *refCon) { (void)(argc); (void)(argv); - if (!ActmapModule.exits_loaded) { + if (!_exits_loaded) { return; } - CON_Print("%d exits loaded.\n", ActmapModule.n_exits); + CON_Print("%d exits loaded.\n", _n_exits); - for (i = 0; i < ActmapModule.n_exits; i++) { + for (i = 0; i < _n_exits; i++) { CON_Print ("Action %d: Exit to: %d; Pts: %d; Unk0: %d Unk2: %d Scr_N: %d", - i, ActmapModule.exits_tbl[i].exit_scene, - ActmapModule.exits_tbl[i].pt_count, - ActmapModule.exits_tbl[i].unknown00, - ActmapModule.exits_tbl[i].unknown02, - ActmapModule.exits_tbl[i].unknown06); + i, _exits_tbl[i].exit_scene, + _exits_tbl[i].pt_count, + _exits_tbl[i].unknown00, + _exits_tbl[i].unknown02, + _exits_tbl[i].unknown06); - for (pt_i = 0; pt_i < ActmapModule.exits_tbl[i].pt_count; pt_i++) { - pt = &ActmapModule.exits_tbl[i].pt_tbl[pt_i]; + for (pt_i = 0; pt_i < _exits_tbl[i].pt_count; pt_i++) { + pt = &_exits_tbl[i].pt_tbl[pt_i]; CON_Print(" pt: %d (%d, %d)", pt_i, pt->x, pt->y); } } +} - return; +static void CF_action_info(int argc, char *argv[], void *refCon) { + ((ActionMap *)refCon)->actionInfo(argc, argv); } } // End of namespace Saga diff --git a/saga/actionmap.h b/saga/actionmap.h index 05c768df7f..782f6ffe91 100644 --- a/saga/actionmap.h +++ b/saga/actionmap.h @@ -38,16 +38,27 @@ struct R_ACTIONMAP_ENTRY { R_POINT *pt_tbl; }; -struct R_ACTIONMAP_INFO { - int init; - int exits_loaded; - int n_exits; - R_ACTIONMAP_ENTRY *exits_tbl; - const byte *exmap_res; - size_t exmap_res_len; -}; +class ActionMap { + public: + int reg(void); + ActionMap(void); + + int load(const byte *exmap_res, size_t exmap_res_len); + int draw(R_SURFACE *ds, int color); + + int freeMap(void); + int shutdown(void); -void CF_action_info(int argc, char *argv[], void *refCon); + void actionInfo(int argc, char *argv[]); + +private: + bool _initialized; + int _exits_loaded; + int _n_exits; + R_ACTIONMAP_ENTRY *_exits_tbl; + const byte *_exmap_res; + size_t _exmap_res_len; +}; } // End of namespace Saga diff --git a/saga/actionmap_mod.h b/saga/actionmap_mod.h deleted file mode 100644 index fe0f0a8655..0000000000 --- a/saga/actionmap_mod.h +++ /dev/null @@ -1,42 +0,0 @@ -/* ScummVM - Scumm Interpreter - * Copyright (C) 2004 The ScummVM project - * - * The ReInherit Engine is (C)2000-2003 by Daniel Balsom. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * $Header$ - * - */ - -// Action map module - public module header - -#ifndef SAGA_ACTIONMAP_MOD_H_ -#define SAGA_ACTIONMAP_MOD_H_ - -namespace Saga { - -int ACTIONMAP_Register(void); -int ACTIONMAP_Init(void); - -int ACTIONMAP_Load(const byte *exmap_res, size_t exmap_res_len); -int ACTIONMAP_Draw(R_SURFACE *ds, int color); - -int ACTIONMAP_Free(void); -int ACTIONMAP_Shutdown(void); - -} // End of namespace Saga - -#endif diff --git a/saga/render.cpp b/saga/render.cpp index 50c84866a0..6e5f974f50 100644 --- a/saga/render.cpp +++ b/saga/render.cpp @@ -37,7 +37,7 @@ #include "sprite_mod.h" #include "text_mod.h" -#include "actionmap_mod.h" +#include "actionmap.h" #include "objectmap_mod.h" #include "render.h" @@ -50,7 +50,7 @@ int Render::reg(void) { return R_SUCCESS; } -Render::Render(OSystem *system) : _system(system), _initialized(false) { +Render::Render(SagaEngine *vm, OSystem *system) : _vm(vm), _system(system), _initialized(false) { R_GAME_DISPLAYINFO disp_info; int tmp_w, tmp_h, tmp_bytepp; @@ -136,7 +136,7 @@ int Render::drawScene() { // Display scene maps, if applicable if (getFlags() & RF_OBJECTMAP_TEST) { OBJECTMAP_Draw(backbuf_surface, &mouse_pt, GFX_GetWhite(), GFX_GetBlack()); - ACTIONMAP_Draw(backbuf_surface, GFX_MatchColor(R_RGB_RED)); + _vm->_actionMap->draw(backbuf_surface, GFX_MatchColor(R_RGB_RED)); } // Draw queued actors diff --git a/saga/render.h b/saga/render.h index bece807252..8a6c78880a 100644 --- a/saga/render.h +++ b/saga/render.h @@ -52,7 +52,7 @@ struct R_BUFFER_INFO { class Render { public: int reg(void); - Render(OSystem *system); + Render(SagaEngine *vm, OSystem *system); ~Render(void); bool initialized(); int drawScene(void); diff --git a/saga/saga.cpp b/saga/saga.cpp index 5afe5d3b7a..4b813c2000 100644 --- a/saga/saga.cpp +++ b/saga/saga.cpp @@ -43,7 +43,7 @@ #include "console_mod.h" #include "cvar_mod.h" #include "events_mod.h" -#include "actionmap_mod.h" +#include "actionmap.h" #include "font_mod.h" #include "game_mod.h" #include "game.h" @@ -119,7 +119,6 @@ void SagaEngine::go() { GAME_Register(); - ACTIONMAP_Register(); OBJECTMAP_Register(); SCRIPT_Register(); ACTOR_Register(); @@ -158,7 +157,7 @@ void SagaEngine::go() { FONT_Init(); SPRITE_Init(); _anim = new Anim(); - ACTIONMAP_Init(); + _actionMap = new ActionMap(); OBJECTMAP_Init(); ISOMAP_Init(); SCRIPT_Init(); @@ -194,7 +193,7 @@ void SagaEngine::go() { } // Initialize graphics - _render = new Render(_system); + _render = new Render(this, _system); if (!_render->initialized()) { return; } @@ -207,6 +206,7 @@ void SagaEngine::go() { _render->reg(); _anim->reg(); + _actionMap->reg(); SYSTIMER_ResetMSCounter(); diff --git a/saga/saga.h b/saga/saga.h index 14069d925a..d48f3c8bf8 100644 --- a/saga/saga.h +++ b/saga/saga.h @@ -43,6 +43,7 @@ class Sound; class Music; class Anim; class Render; +class ActionMap; using Common::MemoryReadStream; @@ -71,6 +72,7 @@ public: Music *_music; Anim *_anim; Render *_render; + ActionMap *_actionMap; 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 6c0924d0ea..4a26c9ffbd 100644 --- a/saga/scene.cpp +++ b/saga/scene.cpp @@ -32,7 +32,7 @@ #include "console_mod.h" #include "cvar_mod.h" #include "events_mod.h" -#include "actionmap_mod.h" +#include "actionmap.h" #include "gfx_mod.h" #include "isomap_mod.h" #include "script_mod.h" @@ -622,7 +622,7 @@ int ProcessSceneResources() { break; case SAGA_ACTION_MAP: debug(0, "Loading exit map resource..."); - if (ACTIONMAP_Load(res_data, res_data_len) != R_SUCCESS) { + if (_vm->_actionMap->load(res_data, res_data_len) != R_SUCCESS) { warning("Error loading exit map resource"); return R_FAILURE; } @@ -792,7 +792,7 @@ int SCENE_End() { PALANIM_Free(); OBJECTMAP_Free(); - ACTIONMAP_Free(); + _vm->_actionMap->freeMap(); ys_dll_destroy(SceneModule.anim_list); |