[Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.21,1.22 actor.h,1.7,1.8 interface.cpp,1.17,1.18 render.cpp,1.26,1.27 render.h,1.13,1.14 saga.cpp,1.38,1.39 saga.h,1.28,1.29 sprite.cpp,1.15,1.16 sprite.h,1.4,1.5 sprite_mod.h,1.2,NONE

Eugene Sandulenko sev at users.sourceforge.net
Mon Aug 2 18:08:17 CEST 2004


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

Modified Files:
	actor.cpp actor.h interface.cpp render.cpp render.h saga.cpp 
	saga.h sprite.cpp sprite.h 
Removed Files:
	sprite_mod.h 
Log Message:
Move SPRITE_ to a class


Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- actor.cpp	3 Aug 2004 00:40:15 -0000	1.21
+++ actor.cpp	3 Aug 2004 01:07:34 -0000	1.22
@@ -31,7 +31,7 @@
 #include "saga/rscfile_mod.h"
 #include "saga/script_mod.h"
 #include "saga/sndres.h"
-#include "saga/sprite_mod.h"
+#include "saga/sprite.h"
 #include "saga/font.h"
 #include "saga/text.h"
 #include "saga/sound.h"
@@ -224,7 +224,7 @@
 		o_idx = ActorOrientationLUT[actor->orient];
 		sprite_num = actor->act_tbl[actor->action].dir[o_idx].frame_index;
 		sprite_num += actor->action_frame;
-		SPRITE_DrawOccluded(back_buf, actor->sl_p, sprite_num, actor->s_pt.x, actor->s_pt.y);
+		_vm->_sprite->drawOccluded(back_buf, actor->sl_p, sprite_num, actor->s_pt.x, actor->s_pt.y);
 
 		// If actor's current intent is to speak, oblige him by 
 		// displaying his dialogue 
@@ -342,13 +342,13 @@
 
 	loadActorSpriteIndex(actor, actor->si_rn, &last_frame);
 
-	if (SPRITE_LoadList(actor->sl_rn, &actor->sl_p) != R_SUCCESS) {
+	if (_vm->_sprite->loadList(actor->sl_rn, &actor->sl_p) != R_SUCCESS) {
 		return R_FAILURE;
 	}
 
-	if (last_frame >= SPRITE_GetListLen(actor->sl_p)) {
+	if (last_frame >= _vm->_sprite->getListLen(actor->sl_p)) {
 		debug(0, "Appending to sprite list %d.", actor->sl_rn);
-		if (SPRITE_AppendList(actor->sl_rn + 1,
+		if (_vm->_sprite->appendList(actor->sl_rn + 1,
 			actor->sl_p) != R_SUCCESS) {
 			return R_FAILURE;
 		}
@@ -718,7 +718,7 @@
 	node = _tbl[index];
 	actor = (R_ACTOR *)ys_dll_get_data(node);
 
-	SPRITE_Free(actor->sl_p);
+	_vm->_sprite->freeSprite(actor->sl_p);
 
 	ys_dll_delete(node);
 

Index: actor.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- actor.h	2 Aug 2004 16:20:34 -0000	1.7
+++ actor.h	3 Aug 2004 01:07:34 -0000	1.8
@@ -27,7 +27,7 @@
 #define SAGA_ACTOR_H__
 
 #include "saga/yslib.h"
-#include "saga/sprite_mod.h"
+#include "saga/sprite.h"
 
 namespace Saga {
 

Index: interface.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/interface.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- interface.cpp	3 Aug 2004 00:06:18 -0000	1.17
+++ interface.cpp	3 Aug 2004 01:07:34 -0000	1.18
@@ -33,7 +33,7 @@
 #include "saga/objectmap.h"
 #include "saga/rscfile_mod.h"
 #include "saga/script_mod.h"
-#include "saga/sprite_mod.h"
+#include "saga/sprite.h"
 
 #include "saga/interface_mod.h"
 #include "saga/interface.h"
@@ -191,9 +191,9 @@
 		return R_FAILURE;
 	}
 
-	SPRITE_LoadList(ITE_COMMAND_BUTTONSPRITES, &IfModule.c_panel.sprites);
+	_vm->_sprite->loadList(ITE_COMMAND_BUTTONSPRITES, &IfModule.c_panel.sprites);
 
-	SPRITE_LoadList(ITE_DEFAULT_PORTRAITS, &IfModule.def_portraits);
+	_vm->_sprite->loadList(ITE_DEFAULT_PORTRAITS, &IfModule.def_portraits);
 
 	_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);
@@ -294,7 +294,7 @@
 	lportrait_x = xbase + IfModule.i_desc.lportrait_x;
 	lportrait_y = ybase + IfModule.i_desc.lportrait_y;
 
-	SPRITE_Draw(back_buf, IfModule.def_portraits, IfModule.active_portrait, lportrait_x, lportrait_y);
+	_vm->_sprite->draw(back_buf, IfModule.def_portraits, IfModule.active_portrait, lportrait_x, lportrait_y);
 
 	return R_SUCCESS;
 }
@@ -402,7 +402,7 @@
 			button_x = x_base + IfModule.c_panel.buttons[set_button].x1;
 			button_y = y_base + IfModule.c_panel.buttons[set_button].y1;
 
-			SPRITE_Draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[set_button].
+			_vm->_sprite->draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[set_button].
 						active_sprite - 1, button_x, button_y);
 		}
 
@@ -410,7 +410,7 @@
 			button_x = x_base + IfModule.c_panel.buttons[old_set_button].x1;
 			button_y = y_base + IfModule.c_panel.buttons[old_set_button].y1;
 
-			SPRITE_Draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[old_set_button].
+			_vm->_sprite->draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[old_set_button].
 						inactive_sprite - 1, button_x, button_y);
 		}
 	}
@@ -464,7 +464,7 @@
 				color, IfModule.i_desc.cmd_txt_shadowcol, FONT_SHADOW);
 
 		if ((i == IfModule.c_panel.set_button) && (IfModule.c_panel.buttons[i].flags & BUTTON_BITMAP)) {
-			SPRITE_Draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[i].active_sprite - 1,
+			_vm->_sprite->draw(ds, IfModule.c_panel.sprites, IfModule.c_panel.buttons[i].active_sprite - 1,
 						button_x, button_y);
 		}
 	}

Index: render.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/render.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- render.cpp	3 Aug 2004 00:40:15 -0000	1.26
+++ render.cpp	3 Aug 2004 01:07:34 -0000	1.27
@@ -32,7 +32,6 @@
 #include "saga/game_mod.h"
 #include "saga/interface_mod.h"
 #include "saga/scene_mod.h"
-#include "saga/sprite_mod.h"
 #include "saga/text.h"
 
 #include "saga/actionmap.h"

Index: render.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/render.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- render.h	2 Aug 2004 15:44:18 -0000	1.13
+++ render.h	3 Aug 2004 01:07:34 -0000	1.14
@@ -26,7 +26,7 @@
 #ifndef SAGA_RENDER_H_
 #define SAGA_RENDER_H_
 
-#include "saga/sprite_mod.h"
+#include "saga/sprite.h"
 
 namespace Saga {
 

Index: saga.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/saga.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- saga.cpp	3 Aug 2004 00:40:15 -0000	1.38
+++ saga.cpp	3 Aug 2004 01:07:34 -0000	1.39
@@ -51,7 +51,7 @@
 #include "saga/scene_mod.h"
 #include "saga/sdata.h"
 #include "saga/sndres.h"
-#include "saga/sprite_mod.h"
+#include "saga/sprite.h"
 #include "saga/objectmap.h"
 #include "saga/sound.h"
 #include "saga/music.h"
@@ -149,7 +149,7 @@
 	_sndRes = new SndRes(this);
 	EVENT_Init();
 	_font = new Font(this);
-	SPRITE_Init();
+	_sprite = new Sprite(this);
 	_anim = new Anim(this);
 	_script = new Script();
 	_sdata = new SData();
@@ -245,7 +245,7 @@
 	SCENE_Shutdown();
 	delete _actor;
 	delete _script;
-	SPRITE_Shutdown();
+	delete _sprite;
 	delete _font;
 	CON_Shutdown();
 	CVAR_Shutdown();

Index: saga.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/saga.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- saga.h	3 Aug 2004 00:40:15 -0000	1.28
+++ saga.h	3 Aug 2004 01:07:34 -0000	1.29
@@ -53,6 +53,7 @@
 class Script;
 class Actor;
 class Font;
+class Sprite;
 
 using Common::MemoryReadStream;
 
@@ -105,6 +106,7 @@
 	Script *_script;
 	Actor *_actor;
 	Font *_font;
+	Sprite *_sprite;
 	
 private:
 	int decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len);

Index: sprite.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sprite.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- sprite.cpp	3 Aug 2004 00:40:16 -0000	1.15
+++ sprite.cpp	3 Aug 2004 01:07:34 -0000	1.16
@@ -37,48 +37,38 @@
 
 namespace Saga {
 
-static R_SPRITE_MODULE SpriteModule = { 0, 0, 0, 0 };
-
-int SPRITE_Init() {
+Sprite::Sprite(SagaEngine *vm) : _vm(vm), _initialized(false) {
 	int result;
 
-	if (SpriteModule.init) {
-		return R_FAILURE;
-	}
-
 	debug(0, "Initializing sprite subsystem...");
 
 	// Load sprite module resource context
-	result = GAME_GetFileContext(&SpriteModule.sprite_ctxt, R_GAME_RESOURCEFILE, 0);
+	result = GAME_GetFileContext(&_spriteContext, R_GAME_RESOURCEFILE, 0);
 	if (result != R_SUCCESS) {
-		return R_FAILURE;
+		return;
 	}
 
-	SpriteModule.decode_buf_len = R_DECODE_BUF_LEN;
+	_decodeBufLen = R_DECODE_BUF_LEN;
 
-	SpriteModule.decode_buf = (byte *)malloc(R_DECODE_BUF_LEN);
-	if (SpriteModule.decode_buf == NULL) {
-		return R_MEM;
+	_decodeBuf = (byte *)malloc(R_DECODE_BUF_LEN);
+	if (_decodeBuf == NULL) {
+		return;
 	}
 
-	SpriteModule.init = 1;
-
-	return R_SUCCESS;
+	_initialized = true;
 }
 
-int SPRITE_Shutdown() {
-	if (!SpriteModule.init) {
-		return R_FAILURE;
+Sprite::~Sprite(void) {
+	if (!_initialized) {
+		return;
 	}
 
 	debug(0, "Shutting down sprite subsystem...");
 
-	free(SpriteModule.decode_buf);
-
-	return R_SUCCESS;
+	free(_decodeBuf);
 }
 
-int SPRITE_LoadList(int resource_num, R_SPRITELIST **sprite_list_p) {
+int Sprite::loadList(int resource_num, R_SPRITELIST **sprite_list_p) {
 	R_SPRITELIST *new_slist;
 	byte *spritelist_data;
 	size_t spritelist_len;
@@ -90,7 +80,7 @@
 		return R_MEM;
 	}
 
-	if (RSC_LoadResource(SpriteModule.sprite_ctxt, resource_num, &spritelist_data, &spritelist_len) != R_SUCCESS) {
+	if (RSC_LoadResource(_spriteContext, resource_num, &spritelist_data, &spritelist_len) != R_SUCCESS) {
 		return R_FAILURE;
 	}
 
@@ -120,7 +110,7 @@
 	return R_SUCCESS;
 }
 
-int SPRITE_AppendList(int resource_num, R_SPRITELIST *spritelist) {
+int Sprite::appendList(int resource_num, R_SPRITELIST *spritelist) {
 	byte *spritelist_data;
 	size_t spritelist_len;
 	void *test_p;
@@ -133,7 +123,7 @@
 		return R_FAILURE;
 	}
 
-	if (RSC_LoadResource(SpriteModule.sprite_ctxt, resource_num, &spritelist_data, &spritelist_len) != R_SUCCESS) {
+	if (RSC_LoadResource(_spriteContext, resource_num, &spritelist_data, &spritelist_len) != R_SUCCESS) {
 		return R_FAILURE;
 	}
 
@@ -164,11 +154,11 @@
 	return R_SUCCESS;
 }
 
-int SPRITE_GetListLen(R_SPRITELIST *spritelist) {
+int Sprite::getListLen(R_SPRITELIST *spritelist) {
 	return spritelist->sprite_count;
 }
 
-int SPRITE_Free(R_SPRITELIST *spritelist) {
+int Sprite::freeSprite(R_SPRITELIST *spritelist) {
 	int i;
 
 	for (i = 0; i <= spritelist->append_count; i++) {
@@ -182,7 +172,7 @@
 	return R_SUCCESS;
 }
 
-int SPRITE_Draw(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
+int Sprite::draw(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
 	int offset;
 	int offset_idx;
 	byte *sprite_p;
@@ -197,7 +187,7 @@
 	int x_align;
 	int y_align;
 
-	if (!SpriteModule.init) {
+	if (!_initialized) {
 		return R_FAILURE;
 	}
 
@@ -228,10 +218,10 @@
 		return 0;
 	}
 
-	DecodeRLESprite(sprite_data_p, 64000, SpriteModule.decode_buf, s_width * s_height);
+	decodeRLESprite(sprite_data_p, 64000, _decodeBuf, s_width * s_height);
 
 	buf_row_p = ds->buf + ds->buf_pitch * spr_y;
-	src_row_p = SpriteModule.decode_buf;
+	src_row_p = _decodeBuf;
 
 	// Clip to right side of surface
 	clip_width = s_width;
@@ -258,7 +248,7 @@
 	return R_SUCCESS;
 }
 
-int SPRITE_DrawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
+int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
 	int offset;
 	int offset_idx;
 	byte *sprite_p;
@@ -295,12 +285,12 @@
 	SCENE_ZINFO zinfo;
 	int actor_z;
 
-	if (!SpriteModule.init) {
+	if (!_initialized) {
 		return R_FAILURE;
 	}
 
 	if (!SCENE_IsBGMaskPresent()) {
-		return SPRITE_Draw(ds, sprite_list, sprite_num, spr_x, spr_y);
+		return draw(ds, sprite_list, sprite_num, spr_x, spr_y);
 	}
 
 	if (sprite_num >= sprite_list->sprite_count) {
@@ -366,10 +356,10 @@
 		return R_SUCCESS;
 	}
 
-	DecodeRLESprite(sprite_data_p, 64000, SpriteModule.decode_buf, s_width * s_height);
+	decodeRLESprite(sprite_data_p, 64000, _decodeBuf, s_width * s_height);
 
 	// Finally, draw the occluded sprite
-	src_row_p = SpriteModule.decode_buf + ci.src_draw_x + (ci.src_draw_y * s_width);
+	src_row_p = _decodeBuf + ci.src_draw_x + (ci.src_draw_y * s_width);
 
 	dst_row_p = ds->buf + ci.dst_draw_x + (ci.dst_draw_y * ds->buf_pitch);
 	mask_row_p = mask_buf + ci.dst_draw_x + (ci.dst_draw_y * mask_w);
@@ -404,7 +394,7 @@
 	return R_SUCCESS;
 }
 
-int DecodeRLESprite(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len) {
+int Sprite::decodeRLESprite(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len) {
 	int bg_runcount;
 	int fg_runcount;
 	const byte *inbuf_ptr;

Index: sprite.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/sprite.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- sprite.h	1 May 2004 16:15:55 -0000	1.4
+++ sprite.h	3 Aug 2004 01:07:34 -0000	1.5
@@ -56,14 +56,28 @@
 	byte *sprite_data[R_APPENDMAX];
 };
 
-struct R_SPRITE_MODULE {
-	int init;
-	R_RSCFILE_CONTEXT *sprite_ctxt;
-	byte *decode_buf;
-	size_t decode_buf_len;
-};
+typedef struct R_SPRITELIST_tag R_SPRITELIST;
 
-int DecodeRLESprite(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len);
+class Sprite {
+ public:
+	Sprite(SagaEngine *vm);
+	~Sprite(void);
+	int loadList(int resource_num, R_SPRITELIST **sprite_list_p);
+	int appendList(int resource_num, R_SPRITELIST *spritelist);
+	int getListLen(R_SPRITELIST *spritelist);
+	int freeSprite(R_SPRITELIST *spritelist);
+	int draw(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y);
+	int drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y);
+
+ private:
+	int decodeRLESprite(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len);
+
+	SagaEngine *_vm;
+	bool _initialized;
+	R_RSCFILE_CONTEXT *_spriteContext;
+	byte *_decodeBuf;
+	size_t _decodeBufLen;
+};
 
 } // End of namespace Saga
 

--- sprite_mod.h DELETED ---





More information about the Scummvm-git-logs mailing list