[Scummvm-cvs-logs] CVS: scummvm/saga events.cpp,1.18,1.19 game.cpp,1.17,1.18 input.cpp,1.8,1.9 interface.cpp,1.18,1.19 interface.h,1.4,1.5 render.cpp,1.28,1.29 saga.cpp,1.41,1.42 saga.h,1.31,1.32 sfuncs.cpp,1.12,1.13

Eugene Sandulenko sev at users.sourceforge.net
Thu Aug 5 18:40:08 CEST 2004


Update of /cvsroot/scummvm/scummvm/saga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31990

Modified Files:
	events.cpp game.cpp input.cpp interface.cpp interface.h 
	render.cpp saga.cpp saga.h sfuncs.cpp 
Log Message:
Move INTERFACE_ to class.


Index: events.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/events.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- events.cpp	4 Aug 2004 20:28:57 -0000	1.18
+++ events.cpp	6 Aug 2004 01:39:16 -0000	1.19
@@ -32,7 +32,7 @@
 #include "saga/animation.h"
 #include "saga/console_mod.h"
 #include "saga/scene.h"
-#include "saga/interface_mod.h"
+#include "saga/interface.h"
 #include "saga/text.h"
 #include "saga/palanim_mod.h"
 #include "saga/render.h"
@@ -300,7 +300,7 @@
 	case R_INTERFACE_EVENT:
 		switch (event->op) {
 		case EVENT_ACTIVATE:
-			INTERFACE_Activate();
+			_vm->_interface->activate();
 			break;
 		default:
 			break;

Index: game.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/game.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- game.cpp	2 Aug 2004 16:20:34 -0000	1.17
+++ game.cpp	6 Aug 2004 01:39:17 -0000	1.18
@@ -32,7 +32,7 @@
 #include "saga/rscfile_mod.h"
 #include "saga/cvar_mod.h"
 #include "saga/ite_introproc_mod.h"
-#include "saga/interface_mod.h"
+#include "saga/interface.h"
 
 #include "saga/game_mod.h"
 #include "saga/game.h"
@@ -359,7 +359,7 @@
 
 		test_file.close();
 
-		if (INTERFACE_RegisterLang() != R_SUCCESS) {
+		if (_vm->_interface->registerLang() != R_SUCCESS) {
 			warning("Error registering interface language cvars");
 			return R_FAILURE;
 		}

Index: input.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/input.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- input.cpp	4 Aug 2004 20:28:57 -0000	1.8
+++ input.cpp	6 Aug 2004 01:39:17 -0000	1.9
@@ -25,7 +25,7 @@
 #include "saga/gfx.h"
 #include "saga/actor.h"
 #include "saga/console_mod.h"
-#include "saga/interface_mod.h"
+#include "saga/interface.h"
 #include "saga/render.h"
 #include "saga/scene.h"
 #include "saga/script_mod.h"
@@ -78,7 +78,7 @@
 				CON_Activate();
 				break;
 			case 114: // r
-				INTERFACE_Draw();
+				_vm->_interface->draw();
 				break;
 			case 282: // F1
 				_vm->_render->toggleFlag(RF_SHOW_FPS);
@@ -113,7 +113,7 @@
 			}
 			break;
 		case OSystem::EVENT_LBUTTONDOWN:
-			INTERFACE_Update(&imouse_pt, UPDATE_MOUSECLICK);
+			_vm->_interface->update(&imouse_pt, UPDATE_MOUSECLICK);
 			break;
 		case OSystem::EVENT_MOUSEMOVE:
 			_mousePos.x = event.mouse.x;

Index: interface.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- interface.cpp	3 Aug 2004 01:07:34 -0000	1.18
+++ interface.cpp	6 Aug 2004 01:39:17 -0000	1.19
@@ -35,14 +35,11 @@
 #include "saga/script_mod.h"
 #include "saga/sprite.h"
 
-#include "saga/interface_mod.h"
 #include "saga/interface.h"
 #include "saga/sdata.h"
 
 namespace Saga {
 
-static R_INTERFACE_MODULE IfModule;
-
 static R_VERB_DATA I_VerbData[] = {
 	{I_VERB_WALKTO, "verb_walkto", "Walk to", S_VERB_WALKTO},
 	{I_VERB_LOOKAT, "verb_lookat", "Look at", S_VERB_LOOKAT},
@@ -118,7 +115,7 @@
 	{5, 4, 46, 47, "Portrait", 0, 0, 0, 0}
 };
 
-int INTERFACE_RegisterLang(void) {
+int Interface::registerLang(void) {
 	size_t i;
 
 	for (i = 0; i < ARRAYSIZE(I_VerbData); i++) {
@@ -135,111 +132,117 @@
 	return R_SUCCESS;
 }
 
-int INTERFACE_Init(void) {
+Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
 	R_GAME_RESOURCEDESC g_resdesc;
 
 	int game_type;
 	int result;
 
-	if (IfModule.init) {
-		return R_FAILURE;
+	if (_initialized) {
+		return;
 	}
 
-	IfModule.i_thread = STHREAD_Create();
-	if (IfModule.i_thread == NULL) {
-		warning("Error creating script thread for game interface module");
-		return R_FAILURE;
+	_iThread = STHREAD_Create();
+	if (_iThread == NULL) {
+		warning("Interface::Interface(): Error creating script thread for game interface module");
+		return;
 	}
 
 	// Load interface module resource file context
-	result = GAME_GetFileContext(&IfModule.i_file_ctxt, R_GAME_RESOURCEFILE, 0);
+	result = GAME_GetFileContext(&_interfaceContext, R_GAME_RESOURCEFILE, 0);
 	if (result != R_SUCCESS) {
-		return R_FAILURE;
+		return;
 	}
 
 	// Initialize interface data by game type
 	game_type = GAME_GetGameType();
 	if (game_type == R_GAMETYPE_ITE) {
 		// Load Inherit the Earth interface desc
-		IfModule.c_panel.buttons = ITE_c_buttons;
-		IfModule.c_panel.nbuttons = ARRAYSIZE(ITE_c_buttons);
+		_cPanel.buttons = ITE_c_buttons;
+		_cPanel.nbuttons = ARRAYSIZE(ITE_c_buttons);
 
-		IfModule.i_desc = ITE_interface;
+		_iDesc = ITE_interface;
 	} else if (game_type == R_GAMETYPE_IHNM) {
 		// Load I Have No Mouth interface desc
-		IfModule.c_panel.buttons = IHNM_c_buttons;
-		IfModule.c_panel.nbuttons = ARRAYSIZE(IHNM_c_buttons);
-		IfModule.i_desc = IHNM_interface;
+		_cPanel.buttons = IHNM_c_buttons;
+		_cPanel.nbuttons = ARRAYSIZE(IHNM_c_buttons);
+		_iDesc = IHNM_interface;
 	} else {
-		return R_FAILURE;
+		return;
 	}
 
 	// Load interface resources
 	GAME_GetResourceInfo(&g_resdesc);
 
 	// Load command panel resource
-	result = RSC_LoadResource(IfModule.i_file_ctxt, g_resdesc.command_panel_rn,
-							&IfModule.c_panel.res, &IfModule.c_panel.res_len);
+	result = RSC_LoadResource(_interfaceContext, g_resdesc.command_panel_rn,
+							&_cPanel.res, &_cPanel.res_len);
 	if (result != R_SUCCESS) {
-		return R_FAILURE;
+		return;
 	}
 
 	// Load dialogue panel resource
-	result = RSC_LoadResource(IfModule.i_file_ctxt, g_resdesc.dialogue_panel_rn,
-							&IfModule.d_panel.res, &IfModule.d_panel.res_len);
+	result = RSC_LoadResource(_interfaceContext, g_resdesc.dialogue_panel_rn,
+							&_dPanel.res, &_dPanel.res_len);
 	if (result != R_SUCCESS) {
-		return R_FAILURE;
+		return;
 	}
 
-	_vm->_sprite->loadList(ITE_COMMAND_BUTTONSPRITES, &IfModule.c_panel.sprites);
+	_vm->_sprite->loadList(ITE_COMMAND_BUTTONSPRITES, &_cPanel.sprites);
 
-	_vm->_sprite->loadList(ITE_DEFAULT_PORTRAITS, &IfModule.def_portraits);
+	_vm->_sprite->loadList(ITE_DEFAULT_PORTRAITS, &_defPortraits);
 
-	_vm->decodeBGImage(IfModule.c_panel.res, IfModule.c_panel.res_len, &IfModule.c_panel.img,
-					&IfModule.c_panel.img_len, &IfModule.c_panel.img_w, &IfModule.c_panel.img_h);
+	_vm->decodeBGImage(_cPanel.res, _cPanel.res_len, &_cPanel.img,
+					&_cPanel.img_len, &_cPanel.img_w, &_cPanel.img_h);
 
-	_vm->decodeBGImage(IfModule.d_panel.res, IfModule.d_panel.res_len,
-					&IfModule.d_panel.img, &IfModule.d_panel.img_len,
-					&IfModule.d_panel.img_w, &IfModule.d_panel.img_h);
+	_vm->decodeBGImage(_dPanel.res, _dPanel.res_len,
+					&_dPanel.img, &_dPanel.img_len,
+					&_dPanel.img_w, &_dPanel.img_h);
 
-	IfModule.c_panel.x = 0;
-	IfModule.c_panel.y = 149;
+	_cPanel.x = 0;
+	_cPanel.y = 149;
 
-	IfModule.d_panel.x = 0;
-	IfModule.d_panel.y = 149;
+	_dPanel.x = 0;
+	_dPanel.y = 149;
 
-	IfModule.c_panel.set_button = COMMAND_DEFAULT_BUTTON;
-	IfModule.active_portrait = 0;
+	_cPanel.set_button = COMMAND_DEFAULT_BUTTON;
+	_activePortrait = 0;
 
-	IfModule.active_verb = I_VERB_WALKTO;
+	_activeVerb = I_VERB_WALKTO;
 
-	IfModule.init = 1;
+	_active = 0;
+	_panelMode = PANEL_COMMAND;
+	*_statusText = 0;
 
-	return R_SUCCESS;
+	_initialized = true;
 }
 
-int INTERFACE_Activate() {
-	IfModule.active = 1;
-	INTERFACE_Draw();
+Interface::~Interface(void) {
+	_initialized = false;
+}
+
+int Interface::activate() {
+	_active = 1;
+	draw();
 
 	return R_SUCCESS;
 }
 
-int INTERFACE_Deactivate() {
-	IfModule.active = 0;
+int Interface::deactivate() {
+	_active = 0;
 
 	return R_SUCCESS;
 }
 
-int INTERFACE_SetStatusText(const char *new_txt) {
+int Interface::setStatusText(const char *new_txt) {
 	assert(new_txt != NULL);
 
-	strncpy(IfModule.status_txt, new_txt, R_STATUS_TEXT_LEN);
+	strncpy(_statusText, new_txt, R_STATUS_TEXT_LEN);
 
 	return R_SUCCESS;
 }
 
-int INTERFACE_Draw() {
+int Interface::draw() {
 	R_GAME_DISPLAYINFO g_di;
 	R_SURFACE *back_buf;
 
@@ -253,7 +256,7 @@
 
 	back_buf = _vm->_gfx->getBackBuffer();
 
-	if (!IfModule.active) {
+	if (!_active) {
 		return R_SUCCESS;
 	}
 
@@ -262,44 +265,44 @@
 
 	// Erase background of status bar
 	rect.left = 0;
-	rect.top = IfModule.i_desc.status_h - 1;
+	rect.top = _iDesc.status_h - 1;
 
 	rect.right = g_di.logical_w - 1;
-	rect.bottom = IfModule.i_desc.status_y;
+	rect.bottom = _iDesc.status_y;
 
-	_vm->_gfx->drawRect(back_buf, &rect, IfModule.i_desc.status_bgcol);
+	_vm->_gfx->drawRect(back_buf, &rect, _iDesc.status_bgcol);
 
 	// Draw command panel background
-	if (IfModule.panel_mode == PANEL_COMMAND) {
-		xbase = IfModule.c_panel.x;
-		ybase = IfModule.c_panel.y;
+	if (_panelMode == PANEL_COMMAND) {
+		xbase = _cPanel.x;
+		ybase = _cPanel.y;
 
 		origin.x = 0;
-		origin.y = g_di.logical_h - IfModule.c_panel.img_h;
+		origin.y = g_di.logical_h - _cPanel.img_h;
 
-		_vm->_gfx->bufToSurface(back_buf, IfModule.c_panel.img, IfModule.c_panel.img_w,
-						IfModule.c_panel.img_h, NULL, &origin);
+		_vm->_gfx->bufToSurface(back_buf, _cPanel.img, _cPanel.img_w,
+						_cPanel.img_h, NULL, &origin);
 	} else {
-		xbase = IfModule.d_panel.x;
-		ybase = IfModule.d_panel.y;
+		xbase = _dPanel.x;
+		ybase = _dPanel.y;
 
 		origin.x = 0;
-		origin.y = g_di.logical_h - IfModule.c_panel.img_h;
+		origin.y = g_di.logical_h - _cPanel.img_h;
 
-		_vm->_gfx->bufToSurface(back_buf, IfModule.d_panel.img, IfModule.d_panel.img_w,
-						IfModule.d_panel.img_h, NULL, &origin);
+		_vm->_gfx->bufToSurface(back_buf, _dPanel.img, _dPanel.img_w,
+						_dPanel.img_h, NULL, &origin);
 	}
 
 	// Draw character portrait
-	lportrait_x = xbase + IfModule.i_desc.lportrait_x;
-	lportrait_y = ybase + IfModule.i_desc.lportrait_y;
+	lportrait_x = xbase + _iDesc.lportrait_x;
+	lportrait_y = ybase + _iDesc.lportrait_y;
 
-	_vm->_sprite->draw(back_buf, IfModule.def_portraits, IfModule.active_portrait, lportrait_x, lportrait_y);
+	_vm->_sprite->draw(back_buf, _defPortraits, _activePortrait, lportrait_x, lportrait_y);
 
 	return R_SUCCESS;
 }
 
-int INTERFACE_Update(R_POINT *imouse_pt, int update_flag) {
+int Interface::update(R_POINT *imouse_pt, int update_flag) {
 	R_GAME_DISPLAYINFO g_di;
 
 	R_SURFACE *back_buf;
@@ -308,7 +311,7 @@
 
 	assert(imouse_pt != NULL);
 
-	if (!IfModule.active) {
+	if (!_active) {
 		return R_SUCCESS;
 	}
 
@@ -324,25 +327,25 @@
 	if (imouse_y < g_di.scene_h) {
 		// Mouse is in playfield space
 		if (update_flag == UPDATE_MOUSEMOVE) {
-			HandlePlayfieldUpdate(back_buf, imouse_pt);
+			handlePlayfieldUpdate(back_buf, imouse_pt);
 		} else if (update_flag == UPDATE_MOUSECLICK) {
-			HandlePlayfieldClick(back_buf, imouse_pt);
+			handlePlayfieldClick(back_buf, imouse_pt);
 		}
 	}
 
 	// Update command space
 	if (update_flag == UPDATE_MOUSEMOVE) {
-		HandleCommandUpdate(back_buf, imouse_pt);
+		handleCommandUpdate(back_buf, imouse_pt);
 	} else if (update_flag == UPDATE_MOUSECLICK) {
-		HandleCommandClick(back_buf, imouse_pt);
+		handleCommandClick(back_buf, imouse_pt);
 	}
 
-	DrawStatusBar(back_buf);
+	drawStatusBar(back_buf);
 
 	return R_SUCCESS;
 }
 
-int DrawStatusBar(R_SURFACE *ds) {
+int Interface::drawStatusBar(R_SURFACE *ds) {
 	R_GAME_DISPLAYINFO g_di;
 	R_RECT rect;
 
@@ -353,21 +356,21 @@
 
 	// Erase background of status bar
 	rect.left = 0;
-	rect.top = IfModule.i_desc.status_y;
+	rect.top = _iDesc.status_y;
 	rect.right = g_di.logical_w - 1;
-	rect.bottom = IfModule.i_desc.status_y + IfModule.i_desc.status_h - 1;
+	rect.bottom = _iDesc.status_y + _iDesc.status_h - 1;
 
-	_vm->_gfx->drawRect(ds, &rect, IfModule.i_desc.status_bgcol);
+	_vm->_gfx->drawRect(ds, &rect, _iDesc.status_bgcol);
 
-	string_w = _vm->_font->getStringWidth(SMALL_FONT_ID, IfModule.status_txt, 0, 0);
+	string_w = _vm->_font->getStringWidth(SMALL_FONT_ID, _statusText, 0, 0);
 
-	_vm->_font->draw(SMALL_FONT_ID, ds, IfModule.status_txt, 0, (IfModule.i_desc.status_w / 2) - (string_w / 2),
-			IfModule.i_desc.status_y + IfModule.i_desc.status_txt_y, IfModule.i_desc.status_txt_col, 0, 0);
+	_vm->_font->draw(SMALL_FONT_ID, ds, _statusText, 0, (_iDesc.status_w / 2) - (string_w / 2),
+			_iDesc.status_y + _iDesc.status_txt_y, _iDesc.status_txt_col, 0, 0);
 
 	return R_SUCCESS;
 }
 
-int HandleCommandClick(R_SURFACE *ds, R_POINT *imouse_pt) {
+int Interface::handleCommandClick(R_SURFACE *ds, R_POINT *imouse_pt) {
 	int hit_button;
 	int ibutton_num;
 
@@ -380,37 +383,37 @@
 	int old_set_button;
 	int set_button;
 
-	hit_button = INTERFACE_HitTest(imouse_pt, &ibutton_num);
+	hit_button = hitTest(imouse_pt, &ibutton_num);
 	if (hit_button != R_SUCCESS) {
 		// Clicking somewhere other than a button doesn't do anything
 		return R_SUCCESS;
 	}
 
-	x_base = IfModule.c_panel.x;
-	y_base = IfModule.c_panel.y;
+	x_base = _cPanel.x;
+	y_base = _cPanel.y;
 
-	if (IfModule.c_panel.buttons[ibutton_num].flags & BUTTON_SET) {
-		old_set_button = IfModule.c_panel.set_button;
+	if (_cPanel.buttons[ibutton_num].flags & BUTTON_SET) {
+		old_set_button = _cPanel.set_button;
 		set_button = ibutton_num;
-		IfModule.c_panel.set_button = set_button;
+		_cPanel.set_button = set_button;
 
-		if (IfModule.c_panel.buttons[set_button].flags & BUTTON_VERB) {
-			IfModule.active_verb = IfModule.c_panel.buttons[ibutton_num].data;
+		if (_cPanel.buttons[set_button].flags & BUTTON_VERB) {
+			_activeVerb = _cPanel.buttons[ibutton_num].data;
 		}
 
-		if (IfModule.c_panel.buttons[set_button].flags & BUTTON_BITMAP) {
-			button_x = x_base + IfModule.c_panel.buttons[set_button].x1;
-			button_y = y_base + IfModule.c_panel.buttons[set_button].y1;
+		if (_cPanel.buttons[set_button].flags & BUTTON_BITMAP) {
+			button_x = x_base + _cPanel.buttons[set_button].x1;
+			button_y = y_base + _cPanel.buttons[set_button].y1;
 
-			_vm->_sprite->draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[set_button].
+			_vm->_sprite->draw(ds, _cPanel.sprites, _cPanel.buttons[set_button].
 						active_sprite - 1, button_x, button_y);
 		}
 
-		if (IfModule.c_panel.buttons[old_set_button].flags & BUTTON_BITMAP) {
-			button_x = x_base + IfModule.c_panel.buttons[old_set_button].x1;
-			button_y = y_base + IfModule.c_panel.buttons[old_set_button].y1;
+		if (_cPanel.buttons[old_set_button].flags & BUTTON_BITMAP) {
+			button_x = x_base + _cPanel.buttons[old_set_button].x1;
+			button_y = y_base + _cPanel.buttons[old_set_button].y1;
 
-			_vm->_sprite->draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[old_set_button].
+			_vm->_sprite->draw(ds, _cPanel.sprites, _cPanel.buttons[old_set_button].
 						inactive_sprite - 1, button_x, button_y);
 		}
 	}
@@ -418,7 +421,7 @@
 	return R_SUCCESS;
 }
 
-int HandleCommandUpdate(R_SURFACE *ds, R_POINT *imouse_pt) {
+int Interface::handleCommandUpdate(R_SURFACE *ds, R_POINT *imouse_pt) {
 	int hit_button;
 	int ibutton_num;
 
@@ -432,39 +435,39 @@
 	int color;
 	int i;
 
-	hit_button = INTERFACE_HitTest(imouse_pt, &ibutton_num);
+	hit_button = hitTest(imouse_pt, &ibutton_num);
 
 	if (hit_button == R_SUCCESS) {
 		// Hovering over a command panel button
-		INTERFACE_SetStatusText(I_VerbData[IfModule.active_verb].verb_str);
+		setStatusText(I_VerbData[_activeVerb].verb_str);
 	}
 
-	for (i = 0; i < IfModule.c_panel.nbuttons; i++) {
-		if (!(IfModule.c_panel.buttons[i].flags & BUTTON_LABEL)) {
+	for (i = 0; i < _cPanel.nbuttons; i++) {
+		if (!(_cPanel.buttons[i].flags & BUTTON_LABEL)) {
 			continue;
 		}
 
-		button_w = IfModule.c_panel.buttons[i].x2 - IfModule.c_panel.buttons[i].x1;
+		button_w = _cPanel.buttons[i].x2 - _cPanel.buttons[i].x1;
 
-		verb_idx = IfModule.c_panel.buttons[i].data;
+		verb_idx = _cPanel.buttons[i].data;
 
 		string_w = _vm->_font->getStringWidth(SMALL_FONT_ID, I_VerbData[verb_idx].verb_str, 0, 0);
 
 		if (i == hit_button) {
-			color = IfModule.i_desc.cmd_txt_hilitecol;
+			color = _iDesc.cmd_txt_hilitecol;
 		} else {
-			color = IfModule.i_desc.cmd_txt_col;
+			color = _iDesc.cmd_txt_col;
 		}
 
-		button_x = IfModule.c_panel.x + IfModule.c_panel.buttons[i].x1;
-		button_y = IfModule.c_panel.y + IfModule.c_panel.buttons[i].y1;
+		button_x = _cPanel.x + _cPanel.buttons[i].x1;
+		button_y = _cPanel.y + _cPanel.buttons[i].y1;
 
 		_vm->_font->draw(SMALL_FONT_ID, ds, I_VerbData[verb_idx].verb_str, 0,
 				button_x + ((button_w / 2) - (string_w / 2)), button_y + 1,
-				color, IfModule.i_desc.cmd_txt_shadowcol, FONT_SHADOW);
+				color, _iDesc.cmd_txt_shadowcol, FONT_SHADOW);
 
-		if ((i == IfModule.c_panel.set_button) && (IfModule.c_panel.buttons[i].flags & BUTTON_BITMAP)) {
-			_vm->_sprite->draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[i].active_sprite - 1,
+		if ((i == _cPanel.set_button) && (_cPanel.buttons[i].flags & BUTTON_BITMAP)) {
+			_vm->_sprite->draw(ds, _cPanel.sprites, _cPanel.buttons[i].active_sprite - 1,
 						button_x, button_y);
 		}
 	}
@@ -472,7 +475,7 @@
 	return R_SUCCESS;
 }
 
-int HandlePlayfieldClick(R_SURFACE *ds, R_POINT *imouse_pt) {
+int Interface::handlePlayfieldClick(R_SURFACE *ds, R_POINT *imouse_pt) {
 	int hit_object;
 	int object_num;
 	uint16 object_flags = 0;
@@ -497,11 +500,11 @@
 	if (object_flags & R_OBJECT_NORMAL) {
 		if (_vm->_objectMap->getEPNum(object_num, &script_num) == R_SUCCESS) {
 			// Set active verb in script module
-			_vm->_sdata->putWord(4, 4, I_VerbData[IfModule.active_verb].s_verb);
+			_vm->_sdata->putWord(4, 4, I_VerbData[_activeVerb].s_verb);
 
 			// Execute object script if present
 			if (script_num != 0) {
-				STHREAD_Execute(IfModule.i_thread, script_num);
+				STHREAD_Execute(_iThread, script_num);
 			}
 		}
 	} else {
@@ -513,7 +516,7 @@
 	return R_SUCCESS;
 }
 
-int HandlePlayfieldUpdate(R_SURFACE *ds, R_POINT *imouse_pt) {
+int Interface::handlePlayfieldUpdate(R_SURFACE *ds, R_POINT *imouse_pt) {
 	const char *object_name;
 	int object_num;
 	uint16 object_flags = 0;
@@ -528,7 +531,7 @@
 
 	if (hit_object != R_SUCCESS) {
 		// Cursor over nothing - just display current verb
-		INTERFACE_SetStatusText(I_VerbData[IfModule.active_verb].verb_str);
+		setStatusText(I_VerbData[_activeVerb].verb_str);
 		return R_SUCCESS;
 	}
 
@@ -541,19 +544,19 @@
 
 	if (object_flags & R_OBJECT_NORMAL) {
 		// Normal scene object - display as subject of verb
-		snprintf(new_status, R_STATUS_TEXT_LEN, "%s %s", I_VerbData[IfModule.active_verb].verb_str, object_name);
+		snprintf(new_status, R_STATUS_TEXT_LEN, "%s %s", I_VerbData[_activeVerb].verb_str, object_name);
 	} else {
 		// Not normal scene object - override verb as we can only
 		// walk to this object
 		snprintf(new_status, R_STATUS_TEXT_LEN, "%s %s", I_VerbData[I_VERB_WALKTO].verb_str, object_name);
 	}
 
-	INTERFACE_SetStatusText(new_status);
+	setStatusText(new_status);
 
 	return R_SUCCESS;
 }
 
-int INTERFACE_HitTest(R_POINT *imouse_pt, int *ibutton) {
+int Interface::hitTest(R_POINT *imouse_pt, int *ibutton) {
 	R_INTERFACE_BUTTON *buttons;
 
 	int nbuttons;
@@ -562,11 +565,11 @@
 
 	int i;
 
-	buttons = IfModule.c_panel.buttons;
-	nbuttons = IfModule.c_panel.nbuttons;
+	buttons = _cPanel.buttons;
+	nbuttons = _cPanel.nbuttons;
 
-	xbase = IfModule.c_panel.x;
-	ybase = IfModule.c_panel.y;
+	xbase = _cPanel.x;
+	ybase = _cPanel.y;
 
 	for (i = 0; i < nbuttons; i++) {
 		if ((imouse_pt->x >= (xbase + buttons[i].x1)) && (imouse_pt->x < (xbase + buttons[i].x2)) &&
@@ -580,14 +583,4 @@
 	return R_FAILURE;
 }
 
-int INTERFACE_Shutdown(void) {
-	if (!IfModule.init) {
-		return R_FAILURE;
-	}
-
-	IfModule.init = 0;
-
-	return R_SUCCESS;
-}
-
 } // End of namespace Saga

Index: interface.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- interface.h	1 May 2004 09:37:24 -0000	1.4
+++ interface.h	6 Aug 2004 01:39:17 -0000	1.5
@@ -26,8 +26,16 @@
 #ifndef SAGA_INTERFACE_H__
 #define SAGA_INTERFACE_H__
 
+#include "saga/sprite.h"
+#include "saga/script_mod.h"
+
 namespace Saga {
 
+typedef enum INTERFACE_UPDATE_FLAGS_tag {
+	UPDATE_MOUSEMOVE = 1,
+	UPDATE_MOUSECLICK
+} INTERFACE_UPDATE_FLAGS;
+
 #define R_VERB_STRLIMIT 32
 
 #define R_STATUS_TEXT_LEN 128
@@ -122,18 +130,6 @@
 };
 
 struct R_INTERFACE_MODULE {
-	int init;
-	int active;
-	R_RSCFILE_CONTEXT *i_file_ctxt;
-	R_INTERFACE_DESC i_desc;
-	R_PANEL_MODES panel_mode;
-	R_INTERFACE_PANEL c_panel;
-	R_INTERFACE_PANEL d_panel;
-	char status_txt[R_STATUS_TEXT_LEN];
-	int active_portrait;
-	R_SPRITELIST *def_portraits;
-	int active_verb;
-	R_SCRIPT_THREAD *i_thread;
 };
 
 enum INTERFACE_VERBS {
@@ -154,12 +150,43 @@
 	int s_verb;
 };
 
-int INTERFACE_HitTest(R_POINT *imouse_pt, int *ibutton);
-int DrawStatusBar(R_SURFACE *ds);
-int HandleCommandUpdate(R_SURFACE *ds, R_POINT *imouse_pt);
-int HandleCommandClick(R_SURFACE *ds, R_POINT *imouse_pt);
-int HandlePlayfieldUpdate(R_SURFACE *ds, R_POINT *imouse_pt);
-int HandlePlayfieldClick(R_SURFACE *ds, R_POINT *imouse_pt);
+class Interface {
+ public:
+	Interface(SagaEngine *vm);
+	~Interface(void);
+
+	int registerLang();
+	int activate();
+	int deactivate();
+	int setStatusText(const char *new_txt);
+	int draw();
+	int update(R_POINT *imouse_pt, int update_flag);
+
+
+ private:
+	int hitTest(R_POINT *imouse_pt, int *ibutton);
+	int drawStatusBar(R_SURFACE *ds);
+	int handleCommandUpdate(R_SURFACE *ds, R_POINT *imouse_pt);
+	int handleCommandClick(R_SURFACE *ds, R_POINT *imouse_pt);
+	int handlePlayfieldUpdate(R_SURFACE *ds, R_POINT *imouse_pt);
+	int handlePlayfieldClick(R_SURFACE *ds, R_POINT *imouse_pt);
+
+ private:
+	SagaEngine *_vm;
+
+	bool _initialized;
+	int _active;
+	R_RSCFILE_CONTEXT *_interfaceContext;
+	R_INTERFACE_DESC _iDesc;
+	R_PANEL_MODES _panelMode;
+	R_INTERFACE_PANEL _cPanel;
+	R_INTERFACE_PANEL _dPanel;
+	char _statusText[R_STATUS_TEXT_LEN];
+	int _activePortrait;
+	R_SPRITELIST *_defPortraits;
+	int _activeVerb;
+	R_SCRIPT_THREAD *_iThread;
+};
 
 } // End of namespace Saga
 

Index: render.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/render.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- render.cpp	4 Aug 2004 20:28:57 -0000	1.28
+++ render.cpp	6 Aug 2004 01:39:17 -0000	1.29
@@ -30,7 +30,7 @@
 #include "saga/cvar_mod.h"
 #include "saga/font.h"
 #include "saga/game_mod.h"
-#include "saga/interface_mod.h"
+#include "saga/interface.h"
 #include "saga/scene.h"
 #include "saga/text.h"
 
@@ -169,7 +169,7 @@
 
 	// Update user interface
 
-	INTERFACE_Update(&mouse_pt, UPDATE_MOUSEMOVE);
+	_vm->_interface->update(&mouse_pt, UPDATE_MOUSEMOVE);
 
 	// Display text formatting test, if applicable
 	if (_flags & RF_TEXT_TEST) {

Index: saga.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/saga.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- saga.cpp	4 Aug 2004 20:28:57 -0000	1.41
+++ saga.cpp	6 Aug 2004 01:39:17 -0000	1.42
@@ -44,7 +44,7 @@
 #include "saga/font.h"
 #include "saga/game_mod.h"
 #include "saga/game.h"
-#include "saga/interface_mod.h"
+#include "saga/interface.h"
 #include "saga/isomap.h"
 #include "saga/script.h"
 #include "saga/script_mod.h"
@@ -145,7 +145,7 @@
 	_anim = new Anim(this);
 	_script = new Script();
 	_sdata = new SData();
-	INTERFACE_Init(); // requires script module
+	_interface = new Interface(this); // requires script module
 	_actor = new Actor(this);
 	_scene = new Scene(this);
 
@@ -245,6 +245,7 @@
 	CVAR_Shutdown();
 	EVENT_Shutdown();
 
+	delete _interface;
 	delete _render;
 	delete _actionMap;
 	delete _isoMap;

Index: saga.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/saga.h,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- saga.h	4 Aug 2004 20:28:57 -0000	1.31
+++ saga.h	6 Aug 2004 01:39:17 -0000	1.32
@@ -55,6 +55,7 @@
 class Font;
 class Sprite;
 class Scene;
+class Interface;
 
 using Common::MemoryReadStream;
 
@@ -112,6 +113,7 @@
 	Font *_font;
 	Sprite *_sprite;
 	Scene *_scene;
+	Interface *_interface;
 	
 private:
 	int decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len);

Index: sfuncs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sfuncs.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- sfuncs.cpp	3 Aug 2004 00:40:16 -0000	1.12
+++ sfuncs.cpp	6 Aug 2004 01:39:17 -0000	1.13
@@ -29,7 +29,7 @@
 #include "saga/actor.h"
 #include "saga/animation.h"
 #include "saga/console_mod.h"
-#include "saga/interface_mod.h"
+#include "saga/interface.h"
 
 #include "saga/script.h"
 #include "saga/sfuncs.h"
@@ -229,9 +229,9 @@
 	SSTACK_Pop(thread->stack, &b_param);
 
 	if (b_param) {
-		INTERFACE_Deactivate();
+		_vm->_interface->deactivate();
 	} else {
-		INTERFACE_Activate();
+		_vm->_interface->activate();
 	}
 
 	return R_SUCCESS;





More information about the Scummvm-git-logs mailing list