removed R_ prefix with few r_ too

svn-id: r15690
This commit is contained in:
Paweł Kołodziejski 2004-10-27 21:32:28 +00:00
parent 117952430d
commit c7e5ab1f2d
63 changed files with 2266 additions and 2267 deletions

1
TODO
View File

@ -295,7 +295,6 @@ SIMON
SAGA
====
* Remove use of yslib
* Eliminate R_ prefix everywhere
* Transition console to use ScummVM one
* Remove any traces of the additional level of abstraction reinherit used
* Change printf calls to warning/debug calls

View File

@ -34,8 +34,8 @@ namespace Saga {
ActionMap::ActionMap(SagaEngine *vm, const byte * exmap_res, size_t exmap_res_len) : _vm(vm) {
// Loads exit map data from specified exit map resource
R_ACTIONMAP_ENTRY *exmap_entry;
R_CLICKAREA *clickarea;
ACTIONMAP_ENTRY *exmap_entry;
CLICKAREA *clickarea;
Point *point;
assert(exmap_res != NULL);
@ -48,7 +48,7 @@ ActionMap::ActionMap(SagaEngine *vm, const byte * exmap_res, size_t exmap_res_le
return;
}
_exitsTbl = (R_ACTIONMAP_ENTRY *)malloc(_nExits * sizeof *_exitsTbl);
_exitsTbl = (ACTIONMAP_ENTRY *)malloc(_nExits * sizeof *_exitsTbl);
if (_exitsTbl == NULL) {
warning("Memory allocation failure");
return;
@ -63,7 +63,7 @@ ActionMap::ActionMap(SagaEngine *vm, const byte * exmap_res, size_t exmap_res_le
exmap_entry->exitScene = readS.readUint16LE();
exmap_entry->entranceNum = readS.readUint16LE();
exmap_entry->clickareas = (R_CLICKAREA *)malloc(exmap_entry->nClickareas * sizeof *(exmap_entry->clickareas));
exmap_entry->clickareas = (CLICKAREA *)malloc(exmap_entry->nClickareas * sizeof *(exmap_entry->clickareas));
if (exmap_entry->clickareas == NULL) {
warning("Error: Memory allocation failed");
@ -94,8 +94,8 @@ ActionMap::ActionMap(SagaEngine *vm, const byte * exmap_res, size_t exmap_res_le
ActionMap::~ActionMap(void) {
// Frees the currently loaded exit map data
R_ACTIONMAP_ENTRY *exmap_entry;
R_CLICKAREA *clickarea;
ACTIONMAP_ENTRY *exmap_entry;
CLICKAREA *clickarea;
int i;
if (_exitsTbl) {
@ -121,8 +121,8 @@ const int ActionMap::getExitScene(int exitNum) {
int ActionMap::hitTest(const Point& imouse) {
R_ACTIONMAP_ENTRY *exmap_entry;
R_CLICKAREA *clickarea;
ACTIONMAP_ENTRY *exmap_entry;
CLICKAREA *clickarea;
Point *points;
int n_points;
@ -157,9 +157,9 @@ int ActionMap::hitTest(const Point& imouse) {
return -1;
}
int ActionMap::draw(R_SURFACE *ds, int color) {
R_ACTIONMAP_ENTRY *exmap_entry;
R_CLICKAREA *clickarea;
int ActionMap::draw(SURFACE *ds, int color) {
ACTIONMAP_ENTRY *exmap_entry;
CLICKAREA *clickarea;
int i, k;
@ -178,7 +178,7 @@ int ActionMap::draw(R_SURFACE *ds, int color) {
}
}
return R_SUCCESS;
return SUCCESS;
}
void ActionMap::info(void) {

View File

@ -42,14 +42,14 @@ enum ACTION_FLAGS {
ACTION_TERMINUS = (1<<3)
};
struct R_ACTIONMAP_ENTRY {
struct ACTIONMAP_ENTRY {
int flags;
int nClickareas;
int defaultVerb;
int exitScene;
int entranceNum;
R_CLICKAREA *clickareas;
CLICKAREA *clickareas;
};
class ActionMap {
@ -60,7 +60,7 @@ class ActionMap {
const int getExitScene(int exitNum);
int hitTest(const Point& imousePt);
int draw(R_SURFACE *ds, int color);
int draw(SURFACE *ds, int color);
void info(void);
@ -68,7 +68,7 @@ private:
SagaEngine *_vm;
int _nExits;
R_ACTIONMAP_ENTRY *_exitsTbl;
ACTIONMAP_ENTRY *_exitsTbl;
};
} // End of namespace Saga

View File

@ -51,21 +51,21 @@ static void CF_actor_moverel(int argc, char *argv[], void *refCon);
static void CF_actor_seto(int argc, char *argv[], void *refCon);
static void CF_actor_setact(int argc, char *argv[], void *refCon);
R_ACTIONTIMES ActionTDeltas[] = {
ACTIONTIMES ActionTDeltas[] = {
{ ACTION_IDLE, 80 },
{ ACTION_WALK, 80 },
{ ACTION_SPEAK, 200 }
};
int Actor::reg() {
CVAR_RegisterFunc(CF_actor_add, "actor_add", "<Actor id> <lx> <ly>", R_CVAR_NONE, 3, 3, this);
CVAR_RegisterFunc(CF_actor_del, "actor_del", "<Actor id>", R_CVAR_NONE, 1, 1, this);
CVAR_RegisterFunc(CF_actor_move, "actor_move", "<Actor id> <lx> <ly>", R_CVAR_NONE, 3, 3, this);
CVAR_RegisterFunc(CF_actor_moverel, "actor_moverel", "<Actor id> <lx> <ly>", R_CVAR_NONE, 3, 3, this);
CVAR_RegisterFunc(CF_actor_seto, "actor_seto", "<Actor id> <Orientation>", R_CVAR_NONE, 2, 2, this);
CVAR_RegisterFunc(CF_actor_setact, "actor_setact", "<Actor id> <Action #>", R_CVAR_NONE, 2, 2, this);
CVAR_RegisterFunc(CF_actor_add, "actor_add", "<Actor id> <lx> <ly>", CVAR_NONE, 3, 3, this);
CVAR_RegisterFunc(CF_actor_del, "actor_del", "<Actor id>", CVAR_NONE, 1, 1, this);
CVAR_RegisterFunc(CF_actor_move, "actor_move", "<Actor id> <lx> <ly>", CVAR_NONE, 3, 3, this);
CVAR_RegisterFunc(CF_actor_moverel, "actor_moverel", "<Actor id> <lx> <ly>", CVAR_NONE, 3, 3, this);
CVAR_RegisterFunc(CF_actor_seto, "actor_seto", "<Actor id> <Orientation>", CVAR_NONE, 2, 2, this);
CVAR_RegisterFunc(CF_actor_setact, "actor_setact", "<Actor id> <Action #>", CVAR_NONE, 2, 2, this);
return R_SUCCESS;
return SUCCESS;
}
Actor::Actor(SagaEngine *vm) : _vm(vm), _initialized(false) {
@ -73,24 +73,24 @@ Actor::Actor(SagaEngine *vm) : _vm(vm), _initialized(false) {
int i;
// Get actor resource file context
result = GAME_GetFileContext(&_actorContext, R_GAME_RESOURCEFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&_actorContext, GAME_RESOURCEFILE, 0);
if (result != SUCCESS) {
error("Actor::Actor(): Couldn't load actor module resource context.");
}
// Create actor lookup table
_tbl = (YS_DL_NODE **)malloc(R_ACTORCOUNT * sizeof(*_tbl));
_tbl = (YS_DL_NODE **)malloc(ACTORCOUNT * sizeof(*_tbl));
if (_tbl == NULL) {
error("Actor::Actor(): Memory allocation error.");
return;
}
for (i = 0; i < R_ACTORCOUNT; i++) {
for (i = 0; i < ACTORCOUNT; i++) {
_tbl[i] = NULL;
}
// Create actor alias table
_aliasTbl = (int *)malloc(R_ACTORCOUNT * sizeof *_aliasTbl);
_aliasTbl = (int *)malloc(ACTORCOUNT * sizeof *_aliasTbl);
if (_aliasTbl == NULL) {
free(_tbl);
error("Actor::Actor(): Memory allocation error.");
@ -98,7 +98,7 @@ Actor::Actor(SagaEngine *vm) : _vm(vm), _initialized(false) {
}
// Initialize alias table so each index contains itself
for (i = 0; i < R_ACTORCOUNT; i++) {
for (i = 0; i < ACTORCOUNT; i++) {
_aliasTbl[i] = i;
}
@ -121,21 +121,21 @@ Actor::~Actor() {
int Actor::direct(int msec) {
YS_DL_NODE *walk_p;
R_ACTOR *actor;
ACTOR *actor;
YS_DL_NODE *a_inode;
R_ACTORINTENT *a_intent;
ACTORINTENT *a_intent;
int o_idx;
int action_tdelta;
// Walk down the actor list and direct each actor
for (walk_p = ys_dll_head(_list); walk_p != NULL; walk_p = ys_dll_next(walk_p)) {
actor = (R_ACTOR *)ys_dll_get_data(walk_p);
actor = (ACTOR *)ys_dll_get_data(walk_p);
// Process the actor intent list
a_inode = ys_dll_head(actor->a_intentlist);
if (a_inode != NULL) {
a_intent = (R_ACTORINTENT *)ys_dll_get_data(a_inode);
a_intent = (ACTORINTENT *)ys_dll_get_data(a_inode);
switch (a_intent->a_itype) {
case INTENT_NONE:
// Actor doesn't really feel like doing anything at all
@ -143,16 +143,16 @@ int Actor::direct(int msec) {
case INTENT_PATH:
// Actor intends to go somewhere. Well good for him
{
R_WALKINTENT *a_walkint;
a_walkint = (R_WALKINTENT *)a_intent->a_data;
WALKINTENT *a_walkint;
a_walkint = (WALKINTENT *)a_intent->a_data;
handleWalkIntent(actor, a_walkint, &a_intent->a_idone, msec);
}
break;
case INTENT_SPEAK:
// Actor wants to blab
{
R_SPEAKINTENT *a_speakint;
a_speakint = (R_SPEAKINTENT *)a_intent->a_data;
SPEAKINTENT *a_speakint;
a_speakint = (SPEAKINTENT *)a_intent->a_data;
handleSpeakIntent(actor, a_speakint, &a_intent->a_idone, msec);
}
break;
@ -198,31 +198,31 @@ int Actor::direct(int msec) {
}
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::drawList() {
YS_DL_NODE *walk_p;
R_ACTOR *actor;
ACTOR *actor;
YS_DL_NODE *a_inode;
R_ACTORINTENT *a_intent;
R_SPEAKINTENT *a_speakint;
ACTORINTENT *a_intent;
SPEAKINTENT *a_speakint;
YS_DL_NODE *a_dnode;
R_ACTORDIALOGUE *a_dialogue;
ACTORDIALOGUE *a_dialogue;
int o_idx; //Orientation index
int sprite_num;
int diag_x, diag_y; // dialog coordinates
R_SURFACE *back_buf;
SURFACE *back_buf;
back_buf = _vm->_gfx->getBackBuffer();
for (walk_p = ys_dll_head(_list); walk_p != NULL; walk_p = ys_dll_next(walk_p)) {
actor = (R_ACTOR *)ys_dll_get_data(walk_p);
actor = (ACTOR *)ys_dll_get_data(walk_p);
o_idx = ActorOrientationLUT[actor->orient];
sprite_num = actor->act_tbl[actor->action].dir[o_idx].frame_index;
sprite_num += actor->action_frame;
@ -232,12 +232,12 @@ int Actor::drawList() {
// displaying his dialogue
a_inode = ys_dll_head(actor->a_intentlist);
if (a_inode != NULL) {
a_intent = (R_ACTORINTENT *)ys_dll_get_data(a_inode);
a_intent = (ACTORINTENT *)ys_dll_get_data(a_inode);
if (a_intent->a_itype == INTENT_SPEAK) {
a_speakint = (R_SPEAKINTENT *)a_intent->a_data;
a_speakint = (SPEAKINTENT *)a_intent->a_data;
a_dnode = ys_dll_head(a_speakint->si_diaglist);
if (a_dnode != NULL) {
a_dialogue = (R_ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
a_dialogue = (ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
diag_x = actor->s_pt.x;
diag_y = actor->s_pt.y;
diag_y -= ACTOR_DIALOGUE_HEIGHT;
@ -248,7 +248,7 @@ int Actor::drawList() {
}
}
return R_SUCCESS;
return SUCCESS;
}
// Called if the user wishes to skip a line of dialogue (spacebar in the
@ -257,32 +257,32 @@ int Actor::drawList() {
int Actor::skipDialogue() {
YS_DL_NODE *walk_p;
R_ACTOR *actor;
ACTOR *actor;
YS_DL_NODE *a_inode;
R_ACTORINTENT *a_intent;
R_SPEAKINTENT *a_speakint;
ACTORINTENT *a_intent;
SPEAKINTENT *a_speakint;
YS_DL_NODE *a_dnode;
R_ACTORDIALOGUE *a_dialogue;
ACTORDIALOGUE *a_dialogue;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
for (walk_p = ys_dll_head(_list); walk_p != NULL; walk_p = ys_dll_next(walk_p)) {
actor = (R_ACTOR *)ys_dll_get_data(walk_p);
actor = (ACTOR *)ys_dll_get_data(walk_p);
// Check the actor's current intent for a speak intent
a_inode = ys_dll_head(actor->a_intentlist);
if (a_inode != NULL) {
a_intent = (R_ACTORINTENT *)ys_dll_get_data(a_inode);
a_intent = (ACTORINTENT *)ys_dll_get_data(a_inode);
if (a_intent->a_itype == INTENT_SPEAK) {
// Okay, found a speak intent. Remove one dialogue entry
// from it, releasing any semaphore */
a_speakint = (R_SPEAKINTENT *)a_intent->a_data;
a_speakint = (SPEAKINTENT *)a_intent->a_data;
a_dnode = ys_dll_head(a_speakint->si_diaglist);
if (a_dnode != NULL) {
a_dialogue = (R_ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
a_dialogue = (ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
if (a_dialogue->d_sem != NULL) {
_vm->_script->SThreadReleaseSem(a_dialogue->d_sem);
}
@ -294,11 +294,11 @@ int Actor::skipDialogue() {
}
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::create(int actor_id, int x, int y) {
R_ACTOR actor;
ACTOR actor;
if (actor_id == 1) {
actor_id = 0;
@ -310,29 +310,29 @@ int Actor::create(int actor_id, int x, int y) {
actor.a_pt.x = x;
actor.a_pt.y = y;
if (addActor(&actor) != R_SUCCESS) {
if (addActor(&actor) != SUCCESS) {
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::addActor(R_ACTOR * actor) {
int Actor::addActor(ACTOR * actor) {
YS_DL_NODE *new_node;
int last_frame;
int i;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
if ((actor->id < 0) || (actor->id >= R_ACTORCOUNT)) {
return R_FAILURE;
if ((actor->id < 0) || (actor->id >= ACTORCOUNT)) {
return FAILURE;
}
if (_tbl[actor->id] != NULL) {
return R_FAILURE;
return FAILURE;
}
AtoS(&actor->s_pt, &actor->a_pt);
@ -344,15 +344,15 @@ int Actor::addActor(R_ACTOR * actor) {
loadActorSpriteIndex(actor, actor->si_rn, &last_frame);
if (_vm->_sprite->loadList(actor->sl_rn, &actor->sl_p) != R_SUCCESS) {
return R_FAILURE;
if (_vm->_sprite->loadList(actor->sl_rn, &actor->sl_p) != SUCCESS) {
return FAILURE;
}
if (last_frame >= _vm->_sprite->getListLen(actor->sl_p)) {
debug(0, "Appending to sprite list %d.", actor->sl_rn);
if (_vm->_sprite->appendList(actor->sl_rn + 1,
actor->sl_p) != R_SUCCESS) {
return R_FAILURE;
actor->sl_p) != SUCCESS) {
return FAILURE;
}
}
@ -370,16 +370,16 @@ int Actor::addActor(R_ACTOR * actor) {
new_node = ys_dll_insert(_list, actor, sizeof *actor, zCompare);
if (new_node == NULL) {
return R_FAILURE;
return FAILURE;
}
actor = (R_ACTOR *)ys_dll_get_data(new_node);
actor = (ACTOR *)ys_dll_get_data(new_node);
actor->node = new_node;
_tbl[i] = new_node;
_count++;
return R_SUCCESS;
return SUCCESS;
}
int Actor::getActorIndex(uint16 actor_id) {
@ -414,15 +414,15 @@ int Actor::actorExists(uint16 actor_id) {
return 1;
}
int Actor::speak(int index, const char *d_string, uint16 d_voice_rn, R_SEMAPHORE *sem) {
int Actor::speak(int index, const char *d_string, uint16 d_voice_rn, SEMAPHORE *sem) {
YS_DL_NODE *node;
R_ACTOR *actor;
ACTOR *actor;
YS_DL_NODE *a_inode;
R_ACTORINTENT *a_intent_p = NULL;
R_SPEAKINTENT *a_speakint;
R_ACTORINTENT a_intent;
ACTORINTENT *a_intent_p = NULL;
SPEAKINTENT *a_speakint;
ACTORINTENT a_intent;
int use_existing_ai = 0;
R_ACTORDIALOGUE a_dialogue;
ACTORDIALOGUE a_dialogue;
a_dialogue.d_string = d_string;
a_dialogue.d_voice_rn = d_voice_rn;
@ -432,10 +432,10 @@ int Actor::speak(int index, const char *d_string, uint16 d_voice_rn, R_SEMAPHORE
node = _tbl[index];
if (node == NULL) {
return R_FAILURE;
return FAILURE;
}
actor = (R_ACTOR *)ys_dll_get_data(node);
actor = (ACTOR *)ys_dll_get_data(node);
// If actor's last registered intent is to speak, we can queue the
// requested dialogue on that intent context; so examine the last
@ -443,7 +443,7 @@ int Actor::speak(int index, const char *d_string, uint16 d_voice_rn, R_SEMAPHORE
a_inode = ys_dll_tail(actor->a_intentlist);
if (a_inode != NULL) {
a_intent_p = (R_ACTORINTENT *)ys_dll_get_data(a_inode);
a_intent_p = (ACTORINTENT *)ys_dll_get_data(a_inode);
if (a_intent_p->a_itype == INTENT_SPEAK) {
use_existing_ai = 1;
}
@ -451,7 +451,7 @@ int Actor::speak(int index, const char *d_string, uint16 d_voice_rn, R_SEMAPHORE
if (use_existing_ai) {
// Store the current dialogue off the existing actor intent
a_speakint = (R_SPEAKINTENT *)a_intent_p->a_data;
a_speakint = (SPEAKINTENT *)a_intent_p->a_data;
ys_dll_add_tail(a_speakint->si_diaglist, &a_dialogue, sizeof a_dialogue);
} else {
// Create a new actor intent
@ -459,9 +459,9 @@ int Actor::speak(int index, const char *d_string, uint16 d_voice_rn, R_SEMAPHORE
a_intent.a_idone = 0;
a_intent.a_iflags = 0;
a_speakint = (R_SPEAKINTENT *)malloc(sizeof *a_speakint);
a_speakint = (SPEAKINTENT *)malloc(sizeof *a_speakint);
if (a_speakint == NULL) {
return R_FAILURE;
return FAILURE;
}
a_speakint->si_init = 0;
@ -477,14 +477,14 @@ int Actor::speak(int index, const char *d_string, uint16 d_voice_rn, R_SEMAPHORE
_vm->_script->SThreadHoldSem(sem);
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::handleSpeakIntent(R_ACTOR *actor, R_SPEAKINTENT *a_speakint, int *complete_p, int msec) {
int Actor::handleSpeakIntent(ACTOR *actor, SPEAKINTENT *a_speakint, int *complete_p, int msec) {
YS_DL_NODE *a_dnode;
YS_DL_NODE *a_dnext;
R_ACTORDIALOGUE *a_dialogue;
R_ACTORDIALOGUE *a_dialogue2;
ACTORDIALOGUE *a_dialogue;
ACTORDIALOGUE *a_dialogue2;
long carry_time;
int intent_complete = 0;
@ -500,7 +500,7 @@ int Actor::handleSpeakIntent(R_ACTOR *actor, R_SPEAKINTENT *a_speakint, int *com
// Process actor dialogue list
a_dnode = ys_dll_head(a_speakint->si_diaglist);
if (a_dnode != NULL) {
a_dialogue = (R_ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
a_dialogue = (ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
if (!a_dialogue->d_playing) {
// Dialogue voice hasn't played yet - play it now
_vm->_sndRes->playVoice(a_dialogue->d_voice_rn);
@ -523,7 +523,7 @@ int Actor::handleSpeakIntent(R_ACTOR *actor, R_SPEAKINTENT *a_speakint, int *com
a_dnext = ys_dll_next(a_dnode);
if (a_dnext != NULL) {
a_dialogue2 = (R_ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
a_dialogue2 = (ACTORDIALOGUE *)ys_dll_get_data(a_dnode);
a_dialogue2->d_time -= carry_time;
}
@ -545,7 +545,7 @@ int Actor::handleSpeakIntent(R_ACTOR *actor, R_SPEAKINTENT *a_speakint, int *com
*complete_p = 1;
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::getSpeechTime(const char *d_string, uint16 d_voice_rn) {
@ -561,41 +561,41 @@ int Actor::getSpeechTime(const char *d_string, uint16 d_voice_rn) {
}
int Actor::setOrientation(int index, int orient) {
R_ACTOR *actor;
ACTOR *actor;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
if ((orient < 0) || (orient > 7)) {
return R_FAILURE;
return FAILURE;
}
actor = lookupActor(index);
if (actor == NULL) {
return R_FAILURE;
return FAILURE;
}
actor->orient = orient;
return R_SUCCESS;
return SUCCESS;
}
int Actor::setAction(int index, int action_n, uint16 action_flags) {
R_ACTOR *actor;
ACTOR *actor;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
actor = lookupActor(index);
if (actor == NULL) {
return R_FAILURE;
return FAILURE;
}
if ((action_n < 0) || (action_n >= actor->action_ct)) {
return R_FAILURE;
return FAILURE;
}
actor->action = action_n;
@ -603,40 +603,40 @@ int Actor::setAction(int index, int action_n, uint16 action_flags) {
actor->action_frame = 0;
actor->action_time = 0;
return R_SUCCESS;
return SUCCESS;
}
int Actor::setDefaultAction(int index, int action_n, uint16 action_flags) {
R_ACTOR *actor;
ACTOR *actor;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
actor = lookupActor(index);
if (actor == NULL) {
return R_FAILURE;
return FAILURE;
}
if ((action_n < 0) || (action_n >= actor->action_ct)) {
return R_FAILURE;
return FAILURE;
}
actor->def_action = action_n;
actor->def_action_flags = action_flags;
return R_SUCCESS;
return SUCCESS;
}
R_ACTOR *Actor::lookupActor(int index) {
ACTOR *Actor::lookupActor(int index) {
YS_DL_NODE *node;
R_ACTOR *actor;
ACTOR *actor;
if (!_initialized) {
return NULL;
}
if ((index < 0) || (index >= R_ACTORCOUNT)) {
if ((index < 0) || (index >= ACTORCOUNT)) {
return NULL;
}
@ -645,36 +645,36 @@ R_ACTOR *Actor::lookupActor(int index) {
}
node = _tbl[index];
actor = (R_ACTOR *)ys_dll_get_data(node);
actor = (ACTOR *)ys_dll_get_data(node);
return actor;
}
int Actor::loadActorSpriteIndex(R_ACTOR * actor, int si_rn, int *last_frame_p) {
int Actor::loadActorSpriteIndex(ACTOR * actor, int si_rn, int *last_frame_p) {
byte *res_p;
size_t res_len;
int s_action_ct;
R_ACTORACTION *action_p;
ACTORACTION *action_p;
int last_frame;
int i, orient;
int result;
result = RSC_LoadResource(_actorContext, si_rn, &res_p, &res_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Couldn't load sprite action index resource");
return R_FAILURE;
return FAILURE;
}
s_action_ct = res_len / 16;
debug(0, "Sprite resource contains %d sprite actions.", s_action_ct);
action_p = (R_ACTORACTION *)malloc(sizeof(R_ACTORACTION) * s_action_ct);
action_p = (ACTORACTION *)malloc(sizeof(ACTORACTION) * s_action_ct);
MemoryReadStream readS(res_p, res_len);
if (action_p == NULL) {
warning("Couldn't allocate memory for sprite actions");
RSC_FreeResource(res_p);
return R_MEM;
return MEM;
}
last_frame = 0;
@ -699,27 +699,27 @@ int Actor::loadActorSpriteIndex(R_ACTOR * actor, int si_rn, int *last_frame_p) {
*last_frame_p = last_frame;
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::deleteActor(int index) {
YS_DL_NODE *node;
R_ACTOR *actor;
ACTOR *actor;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
if ((index < 0) || (index >= R_ACTORCOUNT)) {
return R_FAILURE;
if ((index < 0) || (index >= ACTORCOUNT)) {
return FAILURE;
}
if (_tbl[index] == NULL) {
return R_FAILURE;
return FAILURE;
}
node = _tbl[index];
actor = (R_ACTOR *)ys_dll_get_data(node);
actor = (ACTOR *)ys_dll_get_data(node);
_vm->_sprite->freeSprite(actor->sl_p);
@ -727,33 +727,33 @@ int Actor::deleteActor(int index) {
_tbl[index] = NULL;
return R_SUCCESS;
return SUCCESS;
}
int Actor::walkTo(int id, const Point *walk_pt, uint16 flags, R_SEMAPHORE *sem) {
R_ACTORINTENT actor_intent;
R_WALKINTENT *walk_intent;
R_WALKINTENT zero_intent;
int Actor::walkTo(int id, const Point *walk_pt, uint16 flags, SEMAPHORE *sem) {
ACTORINTENT actor_intent;
WALKINTENT *walk_intent;
WALKINTENT zero_intent;
YS_DL_NODE *node;
R_ACTOR *actor;
ACTOR *actor;
assert(_initialized);
assert(walk_pt != NULL);
if ((id < 0) || (id >= R_ACTORCOUNT)) {
return R_FAILURE;
if ((id < 0) || (id >= ACTORCOUNT)) {
return FAILURE;
}
if (_tbl[id] == NULL) {
return R_FAILURE;
return FAILURE;
}
node = _tbl[id];
actor = (R_ACTOR *)ys_dll_get_data(node);
actor = (ACTOR *)ys_dll_get_data(node);
walk_intent = (R_WALKINTENT *)malloc(sizeof *walk_intent);
walk_intent = (WALKINTENT *)malloc(sizeof *walk_intent);
if (walk_intent == NULL) {
return R_MEM;
return MEM;
}
*walk_intent = zero_intent;
@ -776,11 +776,11 @@ int Actor::walkTo(int id, const Point *walk_pt, uint16 flags, R_SEMAPHORE *sem)
_vm->_script->SThreadHoldSem(sem);
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::setPathNode(R_WALKINTENT *walk_int, Point *src_pt, Point *dst_pt, R_SEMAPHORE *sem) {
R_WALKNODE new_node;
int Actor::setPathNode(WALKINTENT *walk_int, Point *src_pt, Point *dst_pt, SEMAPHORE *sem) {
WALKNODE new_node;
walk_int->wi_active = 1;
walk_int->org = *src_pt;
@ -793,14 +793,14 @@ int Actor::setPathNode(R_WALKINTENT *walk_int, Point *src_pt, Point *dst_pt, R_S
ys_dll_add_tail(walk_int->nodelist, &new_node, sizeof new_node);
return R_SUCCESS;
return SUCCESS;
}
int Actor::handleWalkIntent(R_ACTOR *actor, R_WALKINTENT *a_walkint, int *complete_p, int delta_time) {
int Actor::handleWalkIntent(ACTOR *actor, WALKINTENT *a_walkint, int *complete_p, int delta_time) {
YS_DL_NODE *walk_p;
YS_DL_NODE *next_p;
R_WALKNODE *node_p;
WALKNODE *node_p;
int dx;
int dy;
@ -833,7 +833,7 @@ int Actor::handleWalkIntent(R_ACTOR *actor, R_WALKINTENT *a_walkint, int *comple
walk_p = ys_dll_head(a_walkint->nodelist);
next_p = ys_dll_next(walk_p);
node_p = (R_WALKNODE *)ys_dll_get_data(walk_p);
node_p = (WALKNODE *)ys_dll_get_data(walk_p);
if (node_p->calc_flag == 0) {
@ -855,7 +855,7 @@ int Actor::handleWalkIntent(R_ACTOR *actor, R_WALKINTENT *a_walkint, int *comple
}
*complete_p = 1;
return R_FAILURE;
return FAILURE;
}
a_walkint->slope = (float)dy / dx;
@ -926,14 +926,14 @@ int Actor::handleWalkIntent(R_ACTOR *actor, R_WALKINTENT *a_walkint, int *comple
actor->action_frame = 0;
actor->action = ACTION_IDLE;
endpoint.x = (int)new_a_x / R_ACTOR_LMULT;
endpoint.y = (int)new_a_y / R_ACTOR_LMULT;
endpoint.x = (int)new_a_x / ACTOR_LMULT;
endpoint.y = (int)new_a_y / ACTOR_LMULT;
if ((exitNum = _vm->_scene->_actionMap->hitTest(endpoint)) != -1) {
if (actor->flags & kProtagonist)
_vm->_scene->changeScene(_vm->_scene->_actionMap->getExitScene(exitNum));
}
*complete_p = 1;
return R_FAILURE;
return FAILURE;
}
actor_x = (int)new_a_x;
@ -952,21 +952,21 @@ int Actor::handleWalkIntent(R_ACTOR *actor, R_WALKINTENT *a_walkint, int *comple
ys_dll_reorder_down(_list, actor->node, zCompare);
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::move(int index, const Point *move_pt) {
YS_DL_NODE *node;
R_ACTOR *actor;
ACTOR *actor;
int move_up = 0;
node = _tbl[index];
if (node == NULL) {
return R_FAILURE;
return FAILURE;
}
actor = (R_ACTOR *)ys_dll_get_data(node);
actor = (ACTOR *)ys_dll_get_data(node);
if (move_pt->y < actor->a_pt.y) {
move_up = 1;
@ -984,19 +984,19 @@ int Actor::move(int index, const Point *move_pt) {
ys_dll_reorder_down(_list, actor->node, zCompare);
}
return R_SUCCESS;
return SUCCESS;
}
int Actor::moveRelative(int index, const Point *move_pt) {
YS_DL_NODE *node;
R_ACTOR *actor;
ACTOR *actor;
node = _tbl[index];
if (node == NULL) {
return R_FAILURE;
return FAILURE;
}
actor = (R_ACTOR *)ys_dll_get_data(node);
actor = (ACTOR *)ys_dll_get_data(node);
actor->a_pt.x += move_pt->x;
actor->a_pt.y += move_pt->y;
@ -1012,12 +1012,12 @@ int Actor::moveRelative(int index, const Point *move_pt) {
}
return R_SUCCESS;
return SUCCESS;
}
static int zCompare(const void *elem1, const void *elem2) {
const R_ACTOR *actor1 = (const R_ACTOR *) elem1;
const R_ACTOR *actor2 = (const R_ACTOR *) elem2;
const ACTOR *actor1 = (const ACTOR *) elem1;
const ACTOR *actor2 = (const ACTOR *) elem2;
if (actor1->a_pt.y == actor2->a_pt.y) {
return 0;
@ -1029,21 +1029,21 @@ static int zCompare(const void *elem1, const void *elem2) {
}
int Actor::AtoS(Point *screen, const Point *actor) {
screen->x = (actor->x / R_ACTOR_LMULT);
screen->y = (actor->y / R_ACTOR_LMULT);
screen->x = (actor->x / ACTOR_LMULT);
screen->y = (actor->y / ACTOR_LMULT);
return R_SUCCESS;
return SUCCESS;
}
int Actor::StoA(Point *actor, const Point screen) {
actor->x = (screen.x * R_ACTOR_LMULT);
actor->y = (screen.y * R_ACTOR_LMULT);
actor->x = (screen.x * ACTOR_LMULT);
actor->y = (screen.y * ACTOR_LMULT);
return R_SUCCESS;
return SUCCESS;
}
static void CF_actor_add(int argc, char *argv[], void *refCon) {
R_ACTOR actor;
ACTOR actor;
if (argc < 3)
return;
@ -1124,7 +1124,7 @@ static void CF_actor_setact(int argc, char *argv[], void *refCon) {
int index = 0;
int action_n = 0;
R_ACTOR *actor;
ACTOR *actor;
if (argc < 2)
return;

View File

@ -42,20 +42,20 @@ namespace Saga {
#define ACTOR_DIALOGUE_LETTERTIME 50
#define ACTOR_DIALOGUE_HEIGHT 100
#define R_ACTOR_LMULT 4
#define ACTOR_LMULT 4
enum R_ACTOR_INTENTS {
enum ACTOR_INTENTS {
INTENT_NONE = 0,
INTENT_PATH = 1,
INTENT_SPEAK = 2
};
enum R_ACTOR_WALKFLAGS {
enum ACTOR_WALKFLAGS {
WALK_NONE = 0x00,
WALK_NOREORIENT = 0x01
};
enum R_ACTOR_ORIENTATIONS {
enum ACTOR_ORIENTATIONS {
ORIENT_N = 0,
ORIENT_NE = 1,
ORIENT_E = 2,
@ -66,28 +66,28 @@ enum R_ACTOR_ORIENTATIONS {
ORIENT_NW = 7
};
enum R_ACTOR_ACTIONS {
enum ACTOR_ACTIONS {
ACTION_IDLE = 0,
ACTION_WALK = 1,
ACTION_SPEAK = 2,
ACTION_COUNT
};
enum R_ACTOR_ACTIONFLAGS {
enum ACTOR_ACTIONFLAGS {
ACTION_NONE = 0x00,
ACTION_LOOP = 0x01
};
struct R_ACTORACTIONITEM {
struct ACTORACTIONITEM {
int frame_index;
int frame_count;
};
struct R_ACTORACTION {
R_ACTORACTIONITEM dir[4];
struct ACTORACTION {
ACTORACTIONITEM dir[4];
};
struct R_WALKINTENT {
struct WALKINTENT {
int wi_active;
uint16 wi_flags;
int wi_init;
@ -102,33 +102,33 @@ struct R_WALKINTENT {
YS_DL_LIST *nodelist;
int sem_held;
R_SEMAPHORE *sem;
SEMAPHORE *sem;
R_WALKINTENT() { memset(this, 0, sizeof(*this)); }
WALKINTENT() { memset(this, 0, sizeof(*this)); }
};
struct R_WALKNODE {
struct WALKNODE {
int calc_flag;
Point node_pt;
};
struct R_SPEAKINTENT {
struct SPEAKINTENT {
int si_init;
uint16 si_flags;
int si_last_action;
YS_DL_LIST *si_diaglist; /* Actor dialogue list */
};
struct R_ACTORINTENT {
struct ACTORINTENT {
int a_itype;
uint16 a_iflags;
int a_idone;
void *a_data;
R_ACTORINTENT() { memset(this, 0, sizeof(*this)); }
ACTORINTENT() { memset(this, 0, sizeof(*this)); }
};
struct R_ACTOR {
struct ACTOR {
int id; // Actor id
int name_i; // Actor's index in actor name string list
uint16 flags;
@ -138,7 +138,7 @@ struct R_ACTOR {
int sl_rn; // Actor's sprite list res #
int si_rn; // Actor's sprite index res #
R_SPRITELIST *sl_p;// Actor's sprite list data
SPRITELIST *sl_p;// Actor's sprite list data
int idle_time;
int orient;
@ -153,7 +153,7 @@ struct R_ACTOR {
YS_DL_LIST *a_intentlist;
// R_WALKPATH path;
// WALKPATH path;
int def_action;
uint16 def_action_flags;
@ -163,23 +163,23 @@ struct R_ACTOR {
int action_frame;
int action_time;
R_ACTORACTION *act_tbl; // Action lookup table
ACTORACTION *act_tbl; // Action lookup table
int action_ct; // Number of actions in the action LUT
YS_DL_NODE *node; // Actor's node in the actor list
R_ACTOR() { memset(this, 0, sizeof(*this)); }
ACTOR() { memset(this, 0, sizeof(*this)); }
};
struct R_ACTORDIALOGUE {
struct ACTORDIALOGUE {
int d_playing;
const char *d_string;
uint16 d_voice_rn;
long d_time;
int d_sem_held;
R_SEMAPHORE *d_sem;
R_ACTORDIALOGUE() { memset(this, 0, sizeof(*this)); }
SEMAPHORE *d_sem;
ACTORDIALOGUE() { memset(this, 0, sizeof(*this)); }
};
struct R_ACTIONTIMES {
struct ACTIONTIMES {
int action;
int time;
};
@ -202,11 +202,11 @@ class Actor {
int move(int index, const Point *move_pt);
int moveRelative(int index, const Point *move_pt);
int walkTo(int index, const Point *walk_pt, uint16 flags, R_SEMAPHORE *sem);
int walkTo(int index, const Point *walk_pt, uint16 flags, SEMAPHORE *sem);
int getActorIndex(uint16 actor_id);
int speak(int index, const char *d_string, uint16 d_voice_rn, R_SEMAPHORE *sem);
int speak(int index, const char *d_string, uint16 d_voice_rn, SEMAPHORE *sem);
int skipDialogue();
@ -215,19 +215,19 @@ class Actor {
int setAction(int index, int action_n, uint16 action_flags);
int setDefaultAction(int index, int action_n, uint16 action_flags);
int addActor(R_ACTOR * actor);
int addActor(ACTOR * actor);
int deleteActor(int index);
R_ACTOR *lookupActor(int index);
ACTOR *lookupActor(int index);
private:
int handleWalkIntent(R_ACTOR *actor, R_WALKINTENT *a_walk_int, int *complete_p, int msec);
int handleSpeakIntent(R_ACTOR *actor, R_SPEAKINTENT *a_speakint, int *complete_p, int msec);
int setPathNode(R_WALKINTENT *walk_int, Point *src_pt, Point *dst_pt, R_SEMAPHORE *sem);
int loadActorSpriteIndex(R_ACTOR *actor, int si_rn, int *last_frame_p);
int handleWalkIntent(ACTOR *actor, WALKINTENT *a_walk_int, int *complete_p, int msec);
int handleSpeakIntent(ACTOR *actor, SPEAKINTENT *a_speakint, int *complete_p, int msec);
int setPathNode(WALKINTENT *walk_int, Point *src_pt, Point *dst_pt, SEMAPHORE *sem);
int loadActorSpriteIndex(ACTOR *actor, int si_rn, int *last_frame_p);
SagaEngine *_vm;
bool _initialized;
R_RSCFILE_CONTEXT *_actorContext;
RSCFILE_CONTEXT *_actorContext;
uint16 _count;
int *_aliasTbl;
YS_DL_NODE **_tbl;

View File

@ -30,7 +30,7 @@ namespace Saga {
// Lookup table to convert 8 cardinal directions to 4
int ActorOrientationLUT[] = { 2, 0, 0, 0, 3, 1, 1, 1 };
R_ACTORTABLE ActorTable[R_ACTORCOUNT] = {
ACTORTABLE ActorTable[ACTORCOUNT] = {
// namei sl_rn si_rn col
// ----- ----- ----- ---

View File

@ -40,7 +40,7 @@ enum {
// TODO: This doesn't quite correspond to the original Actor struct, so I'm not
// sure if I got it right.
struct R_ACTORTABLE {
struct ACTORTABLE {
byte type; // Always 1 (remove this?)
byte flags;
byte name_index;
@ -57,10 +57,10 @@ struct R_ACTORTABLE {
byte action_dir;
};
#define R_ACTORCOUNT 181
#define ACTORCOUNT 181
extern int ActorOrientationLUT[];
extern R_ACTORTABLE ActorTable[R_ACTORCOUNT];
extern ACTORTABLE ActorTable[ACTORCOUNT];
} // End of namespace Saga

View File

@ -38,17 +38,17 @@ namespace Saga {
static void CF_anim_info(int argc, char *argv[], void *refCon);
int Anim::reg() {
CVAR_RegisterFunc(CF_anim_info, "anim_info", NULL, R_CVAR_NONE, 0, 0, this);
return R_SUCCESS;
CVAR_RegisterFunc(CF_anim_info, "anim_info", NULL, CVAR_NONE, 0, 0, this);
return SUCCESS;
}
Anim::Anim(SagaEngine *vm) : _vm(vm) {
int i;
_anim_limit = R_MAX_ANIMATIONS;
_anim_limit = MAX_ANIMATIONS;
_anim_count = 0;
for (i = 0; i < R_MAX_ANIMATIONS; i++)
for (i = 0; i < MAX_ANIMATIONS; i++)
_anim_tbl[i] = NULL;
_initialized = true;
@ -57,56 +57,56 @@ Anim::Anim(SagaEngine *vm) : _vm(vm) {
Anim::~Anim(void) {
uint16 i;
for (i = 0; i < R_MAX_ANIMATIONS; i++)
for (i = 0; i < MAX_ANIMATIONS; i++)
free(_anim_tbl[i]);
_initialized = false;
}
int Anim::load(const byte *anim_resdata, size_t anim_resdata_len, uint16 *anim_id_p) {
R_ANIMATION *new_anim;
ANIMATION *new_anim;
uint16 anim_id = 0;
uint16 i;
if (!_initialized) {
warning("Anim::load not initialised");
return R_FAILURE;
return FAILURE;
}
// Find an unused animation slot
for (i = 0; i < R_MAX_ANIMATIONS; i++) {
for (i = 0; i < MAX_ANIMATIONS; i++) {
if (_anim_tbl[i] == NULL) {
anim_id = i;
break;
}
}
if (i == R_MAX_ANIMATIONS) {
if (i == MAX_ANIMATIONS) {
warning("Anim::load could not find unused animation slot");
return R_FAILURE;
return FAILURE;
}
new_anim = (R_ANIMATION *)malloc(sizeof *new_anim);
new_anim = (ANIMATION *)malloc(sizeof *new_anim);
if (new_anim == NULL) {
warning("Anim::load Allocation failure");
return R_MEM;
return MEM;
}
new_anim->resdata = anim_resdata;
new_anim->resdata_len = anim_resdata_len;
if (GAME_GetGameType() == GID_ITE) {
if (getNumFrames(anim_resdata, anim_resdata_len, &new_anim->n_frames) != R_SUCCESS) {
if (getNumFrames(anim_resdata, anim_resdata_len, &new_anim->n_frames) != SUCCESS) {
warning("Anim::load Couldn't get animation frame count");
return R_FAILURE;
return FAILURE;
}
// Cache frame offsets
new_anim->frame_offsets = (size_t *)malloc(new_anim->n_frames * sizeof *new_anim->frame_offsets);
if (new_anim->frame_offsets == NULL) {
warning("Anim::load Allocation failure");
return R_MEM;
return MEM;
}
for (i = 0; i < new_anim->n_frames; i++) {
@ -123,7 +123,7 @@ int Anim::load(const byte *anim_resdata, size_t anim_resdata_len, uint16 *anim_i
new_anim->end_frame = new_anim->n_frames;
new_anim->stop_frame = new_anim->end_frame;
new_anim->frame_time = R_DEFAULT_FRAME_TIME;
new_anim->frame_time = DEFAULT_FRAME_TIME;
new_anim->flags = 0;
new_anim->play_flag = 0;
new_anim->link_flag = 0;
@ -135,22 +135,22 @@ int Anim::load(const byte *anim_resdata, size_t anim_resdata_len, uint16 *anim_i
_anim_count++;
return R_SUCCESS;
return SUCCESS;
}
int Anim::link(uint16 anim_id1, uint16 anim_id2) {
R_ANIMATION *anim1;
R_ANIMATION *anim2;
ANIMATION *anim1;
ANIMATION *anim2;
if ((anim_id1 >= _anim_count) || (anim_id2 >= _anim_count)) {
return R_FAILURE;
return FAILURE;
}
anim1 = _anim_tbl[anim_id1];
anim2 = _anim_tbl[anim_id2];
if ((anim1 == NULL) || (anim2 == NULL)) {
return R_FAILURE;
return FAILURE;
}
anim1->link_id = anim_id2;
@ -158,16 +158,16 @@ int Anim::link(uint16 anim_id1, uint16 anim_id2) {
anim2->frame_time = anim1->frame_time;
return R_SUCCESS;
return SUCCESS;
}
int Anim::play(uint16 anim_id, int vector_time) {
R_EVENT event;
R_ANIMATION *anim;
R_ANIMATION *link_anim;
EVENT event;
ANIMATION *anim;
ANIMATION *link_anim;
uint16 link_anim_id;
R_BUFFER_INFO buf_info;
BUFFER_INFO buf_info;
byte *display_buf;
@ -177,47 +177,47 @@ int Anim::play(uint16 anim_id, int vector_time) {
uint16 frame;
int result;
R_GAME_DISPLAYINFO disp_info;
GAME_DISPLAYINFO disp_info;
if (anim_id >= _anim_count) {
return R_FAILURE;
return FAILURE;
}
GAME_GetDisplayInfo(&disp_info);
_vm->_render->getBufferInfo(&buf_info);
display_buf = buf_info.r_bg_buf;
display_buf = buf_info.bg_buf;
anim = _anim_tbl[anim_id];
if (anim == NULL) {
return R_FAILURE;
return FAILURE;
}
if (anim->flags & ANIM_PAUSE)
return R_SUCCESS;
return SUCCESS;
if (anim->play_flag) {
frame = anim->current_frame;
if (GAME_GetGameType() == GID_ITE) {
result = ITE_DecodeFrame(anim->resdata, anim->resdata_len, anim->frame_offsets[frame - 1], display_buf,
disp_info.logical_w * disp_info.logical_h);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("ANIM::play: Error decoding frame %u", anim->current_frame);
anim->play_flag = 0;
return R_FAILURE;
return FAILURE;
}
} else {
if (anim->cur_frame_p == NULL) {
warning("ANIM::play: Frames exhausted");
return R_FAILURE;
return FAILURE;
}
result = IHNM_DecodeFrame(display_buf, disp_info.logical_w * disp_info.logical_h,
anim->cur_frame_p, anim->cur_frame_len, &nextf_p, &nextf_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("ANIM::play: Error decoding frame %u", anim->current_frame);
anim->play_flag = 0;
return R_FAILURE;
return FAILURE;
}
anim->cur_frame_p = nextf_p;
@ -256,101 +256,101 @@ int Anim::play(uint16 anim_id, int vector_time) {
if (anim->flags & ANIM_ENDSCENE) {
// This animation ends the scene
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = anim->frame_time + vector_time;
_vm->_events->queue(&event);
}
return R_SUCCESS;
return SUCCESS;
}
}
event.type = R_ONESHOT_EVENT;
event.code = R_ANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = ANIM_EVENT;
event.op = EVENT_FRAME;
event.param = anim_id;
event.time = anim->frame_time + vector_time;
_vm->_events->queue(&event);
return R_SUCCESS;
return SUCCESS;
}
int Anim::reset() {
uint16 i;
for (i = 0; i < R_MAX_ANIMATIONS; i++) {
for (i = 0; i < MAX_ANIMATIONS; i++) {
freeId(i);
}
_anim_count = 0;
return R_SUCCESS;
return SUCCESS;
}
int Anim::setFlag(uint16 anim_id, uint16 flag) {
R_ANIMATION *anim;
ANIMATION *anim;
if (anim_id > _anim_count) {
return R_FAILURE;
return FAILURE;
}
anim = _anim_tbl[anim_id];
if (anim == NULL) {
return R_FAILURE;
return FAILURE;
}
anim->flags |= flag;
return R_SUCCESS;
return SUCCESS;
}
int Anim::clearFlag(uint16 anim_id, uint16 flag) {
R_ANIMATION *anim;
ANIMATION *anim;
if (anim_id > _anim_count) {
return R_FAILURE;
return FAILURE;
}
anim = _anim_tbl[anim_id];
if (anim == NULL) {
return R_FAILURE;
return FAILURE;
}
anim->flags &= ~flag;
return R_SUCCESS;
return SUCCESS;
}
int Anim::setFrameTime(uint16 anim_id, int time) {
R_ANIMATION *anim;
ANIMATION *anim;
if (anim_id > _anim_count) {
return R_FAILURE;
return FAILURE;
}
anim = _anim_tbl[anim_id];
if (anim == NULL) {
return R_FAILURE;
return FAILURE;
}
anim->frame_time = time;
return R_SUCCESS;
return SUCCESS;
}
int Anim::freeId(uint16 anim_id) {
R_ANIMATION *anim;
ANIMATION *anim;
if (anim_id > _anim_count) {
return R_FAILURE;
return FAILURE;
}
anim = _anim_tbl[anim_id];
if (anim == NULL) {
return R_FAILURE;
return FAILURE;
}
if (GAME_GetGameType() == GID_ITE) {
@ -362,7 +362,7 @@ int Anim::freeId(uint16 anim_id) {
_anim_tbl[anim_id] = NULL;
_anim_count--;
return R_SUCCESS;
return SUCCESS;
}
// The actual number of frames present in an animation resource is
@ -370,7 +370,7 @@ int Anim::freeId(uint16 anim_id) {
// animation header. For this reason, the function attempts to find
// the last valid frame number, which it returns via 'n_frames'
int Anim::getNumFrames(const byte *anim_resource, size_t anim_resource_len, uint16 *n_frames) {
R_ANIMATION_HEADER ah;
ANIMATION_HEADER ah;
size_t offset;
int magic;
@ -378,7 +378,7 @@ int Anim::getNumFrames(const byte *anim_resource, size_t anim_resource_len, uint
int x;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS(anim_resource, anim_resource_len);
@ -397,26 +397,26 @@ int Anim::getNumFrames(const byte *anim_resource, size_t anim_resource_len, uint
if (ah.magic == 68) {
for (x = ah.nframes; x > 0; x--) {
if (getFrameOffset(anim_resource, anim_resource_len, x, &offset) != R_SUCCESS) {
return R_FAILURE;
if (getFrameOffset(anim_resource, anim_resource_len, x, &offset) != SUCCESS) {
return FAILURE;
}
magic = *(anim_resource + offset);
if (magic == SAGA_FRAME_HEADER_MAGIC) {
*n_frames = x;
return R_SUCCESS;
return SUCCESS;
}
}
return R_FAILURE;
return FAILURE;
}
return R_FAILURE;
return FAILURE;
}
int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_offset, byte *buf, size_t buf_len) {
R_ANIMATION_HEADER ah;
R_FRAME_HEADER fh;
ANIMATION_HEADER ah;
FRAME_HEADER fh;
byte *write_p;
@ -440,7 +440,7 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
uint16 i;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
MemoryReadStream headerReadS(resdata, resdata_len);
@ -461,7 +461,7 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
if ((screen_w * screen_h) > buf_len) {
// Buffer argument is too small to hold decoded frame, abort.
warning("ITE_DecodeFrame: Buffer size inadequate");
return R_FAILURE;
return FAILURE;
}
// Read frame header
@ -471,7 +471,7 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
magic = readS.readByte();
if (magic != SAGA_FRAME_HEADER_MAGIC) {
warning("ITE_DecodeFrame: Invalid frame offset");
return R_FAILURE;
return FAILURE;
}
// For some strange reason, the animation header is in little
@ -528,7 +528,7 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
continue;
break;
case 0x3F: // End of frame marker
return R_SUCCESS;
return SUCCESS;
break;
default:
break;
@ -568,12 +568,12 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
default:
// Unknown marker found - abort
warning("ITE_DecodeFrame: Invalid RLE marker encountered");
return R_FAILURE;
return FAILURE;
break;
}
} while (mark_byte != 63); // end of frame marker
return R_SUCCESS;
return SUCCESS;
}
int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *thisf_p,
@ -600,7 +600,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
byte *outbuf_endp = (decode_buf + decode_buf_len) - 1;
size_t outbuf_remain = decode_buf_len;
R_GAME_DISPLAYINFO di;
GAME_DISPLAYINFO di;
GAME_GetDisplayInfo(&di);
@ -621,7 +621,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
if (thisf_len - readS.pos() < 13) {
warning("0x%02X: Input buffer underrun", in_ch);
return R_FAILURE;
return FAILURE;
}
param1 = readS.readUint16BE();
@ -640,7 +640,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
if (outbuf_p > outbuf_endp) {
warning("0x%02X: (0x%X) Invalid output position. (x: %d, y: %d)",
in_ch, in_ch_offset, x_origin, y_origin);
return R_FAILURE;
return FAILURE;
}
outbuf_remain = (outbuf_endp - outbuf_p) + 1;
@ -651,11 +651,11 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
runcount = readS.readSint16BE();
if (thisf_len - readS.pos() < runcount) {
warning("0x%02X: Input buffer underrun", in_ch);
return R_FAILURE;
return FAILURE;
}
if (outbuf_remain < runcount) {
warning("0x%02X: Output buffer overrun", in_ch);
return R_FAILURE;
return FAILURE;
}
for (c = 0; c < runcount; c++) {
@ -672,7 +672,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0x1F: // 31: Unusued?
if (thisf_len - readS.pos() < 3) {
warning("0x%02X: Input buffer underrun", in_ch);
return R_FAILURE;
return FAILURE;
}
readS.readByte();
@ -683,7 +683,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0x20: // Long compressed run
if (thisf_len - readS.pos() <= 3) {
warning("0x%02X: Input buffer underrun", in_ch);
return R_FAILURE;
return FAILURE;
}
runcount = readS.readSint16BE();
@ -699,7 +699,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0x2F: // End of row
if (thisf_len - readS.pos() <= 4) {
return R_FAILURE;
return FAILURE;
}
x_vector = readS.readSint16BE();
@ -711,14 +711,14 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
break;
case 0x30: // Reposition command
if (thisf_len - readS.pos() < 2) {
return R_FAILURE;
return FAILURE;
}
x_vector = readS.readSint16BE();
if (((x_vector > 0) && ((size_t) x_vector > outbuf_remain)) || (-x_vector > outbuf_p - decode_buf)) {
warning("0x30: Invalid x_vector");
return R_FAILURE;
return FAILURE;
}
outbuf_p += x_vector;
@ -751,7 +751,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0xC0: // Run of empty pixels
runcount = param_ch + 1;
if (outbuf_remain < runcount) {
return R_FAILURE;
return FAILURE;
}
outbuf_p += runcount;
@ -761,7 +761,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0x80: // Run of compressed data
runcount = param_ch + 1;
if ((outbuf_remain < runcount) || (thisf_len - readS.pos() <= 1)) {
return R_FAILURE;
return FAILURE;
}
data_pixel = readS.readByte();
@ -776,7 +776,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0x40: // Uncompressed run
runcount = param_ch + 1;
if ((outbuf_remain < runcount) || (thisf_len - readS.pos() < runcount)) {
return R_FAILURE;
return FAILURE;
}
for (c = 0; c < runcount; c++) {
@ -797,11 +797,11 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
}
}
return R_SUCCESS;
return SUCCESS;
}
int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_frame, size_t *frame_offset_p) {
R_ANIMATION_HEADER ah;
ANIMATION_HEADER ah;
uint16 num_frames;
uint16 current_frame;
@ -814,7 +814,7 @@ int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_fr
int i;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS(resdata, resdata_len);
@ -833,14 +833,14 @@ int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_fr
num_frames = ah.nframes;
if ((find_frame < 1) || (find_frame > num_frames)) {
return R_FAILURE;
return FAILURE;
}
for (current_frame = 1; current_frame < find_frame; current_frame++) {
magic = readS.readByte();
if (magic != SAGA_FRAME_HEADER_MAGIC) {
// Frame sync failure. Magic Number not found
return R_FAILURE;
return FAILURE;
}
// skip header
@ -905,14 +905,14 @@ int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_fr
break;
default:
// Encountered unknown RLE marker, abort
return R_FAILURE;
return FAILURE;
break;
}
} while (mark_byte != 63);
}
*frame_offset_p = readS.pos();
return R_SUCCESS;
return SUCCESS;
}
void Anim::animInfo(int argc, char *argv[]) {

View File

@ -28,8 +28,8 @@
namespace Saga {
#define R_MAX_ANIMATIONS 7
#define R_DEFAULT_FRAME_TIME 140
#define MAX_ANIMATIONS 7
#define DEFAULT_FRAME_TIME 140
#define SAGA_FRAME_HEADER_MAGIC 15
#define SAGA_FRAME_HEADER_LEN 12
@ -37,7 +37,7 @@ namespace Saga {
// All animation resources begin with an ANIMATION_HEADER
// at 0x00, followed by a RLE code stream
struct R_ANIMATION_HEADER {
struct ANIMATION_HEADER {
uint16 magic;
uint16 screen_w;
@ -54,7 +54,7 @@ struct R_ANIMATION_HEADER {
};
struct R_FRAME_HEADER {
struct FRAME_HEADER {
int x_start;
int y_start;
@ -66,7 +66,7 @@ struct R_FRAME_HEADER {
};
// Animation info array member
struct R_ANIMATION {
struct ANIMATION {
const byte *resdata;
size_t resdata_len;
@ -119,11 +119,11 @@ private:
uint16 _anim_count;
uint16 _anim_limit;
R_ANIMATION *_anim_tbl[R_MAX_ANIMATIONS];
ANIMATION *_anim_tbl[MAX_ANIMATIONS];
};
} // End of namespace Saga
#endif /* R_ANIMATION_H_ */
#endif /* ANIMATION_H_ */
/* end "r_animation.h" */

View File

@ -34,23 +34,23 @@
namespace Saga {
int Console::reg() {
CVAR_Register_I(&_resize, "con_h", NULL, R_CVAR_NONE, 12, R_CON_DEFAULTPOS);
CVAR_Register_I(&_droptime, "con_droptime", NULL, R_CVAR_NONE, 0, 5000);
CVAR_Register_I(&_lineMax, "con_lines", NULL, R_CVAR_NONE, 5, 5000);
return R_SUCCESS;
CVAR_Register_I(&_resize, "con_h", NULL, CVAR_NONE, 12, CON_DEFAULTPOS);
CVAR_Register_I(&_droptime, "con_droptime", NULL, CVAR_NONE, 0, 5000);
CVAR_Register_I(&_lineMax, "con_lines", NULL, CVAR_NONE, 5, 5000);
return SUCCESS;
}
Console::Console(SagaEngine *vm) : _vm(vm) {
memset(&_scrollback, 0, sizeof(_scrollback));
memset(&_history, 0, sizeof(_history));
_resize = R_CON_DEFAULTPOS;
_droptime = R_CON_DROPTIME;
_resize = CON_DEFAULTPOS;
_droptime = CON_DROPTIME;
_active = false;
_yMax = R_CON_DEFAULTPOS;
_lineMax = R_CON_DEFAULTLINES;
_histMax = R_CON_DEFAULTCMDS;
_yMax = CON_DEFAULTPOS;
_lineMax = CON_DEFAULTLINES;
_histMax = CON_DEFAULTCMDS;
_histPos = 0;
_linePos = 0;
_yPos = 0;
@ -68,14 +68,14 @@ Console::~Console() {
}
int Console::activate() {
R_EVENT con_event;
EVENT con_event;
if (_active) {
return R_FAILURE;
return FAILURE;
}
con_event.type = R_CONTINUOUS_EVENT;
con_event.code = R_CONSOLE_EVENT | R_NODESTROY;
con_event.type = CONTINUOUS_EVENT;
con_event.code = CONSOLE_EVENT | NODESTROY;
con_event.op = EVENT_ACTIVATE;
con_event.time = 0;
con_event.duration = _droptime;
@ -84,25 +84,25 @@ int Console::activate() {
_active = true;
return R_SUCCESS;
return SUCCESS;
}
int Console::deactivate() {
R_EVENT con_event;
EVENT con_event;
if (!_active) {
return R_FAILURE;
return FAILURE;
}
con_event.type = R_CONTINUOUS_EVENT;
con_event.code = R_CONSOLE_EVENT | R_NODESTROY;
con_event.type = CONTINUOUS_EVENT;
con_event.code = CONSOLE_EVENT | NODESTROY;
con_event.op = EVENT_DEACTIVATE;
con_event.time = 0;
con_event.duration = _droptime;
_vm->_events->queue(&con_event);
return R_SUCCESS;
return SUCCESS;
}
bool Console::isActive(void) {
@ -121,19 +121,19 @@ int Console::type(int in_char) {
//char *lvalue;
char *rvalue = NULL;
R_CVAR_P con_cvar = NULL;
CVAR_P con_cvar = NULL;
const char *expr_err;
const char *err_str;
if (_yPos != _yMax) {
// Ignore keypress until console fully down
return R_SUCCESS;
return SUCCESS;
}
if ((in_char > 127) || (!in_char)) {
// Ignore non-ascii codes
return R_SUCCESS;
return SUCCESS;
}
switch (in_char) {
@ -143,10 +143,10 @@ int Console::type(int in_char) {
expr_len = strlen(_inputBuf);
result = EXPR_Parse(&expr, &expr_len, &con_cvar, &rvalue);
_vm->_console->addLine(&_history, _histMax, _inputBuf);
memset(_inputBuf, 0, R_CON_INPUTBUF_LEN);
memset(_inputBuf, 0, CON_INPUTBUF_LEN);
_inputPos = 0;
_histPos = 0;
if (result != R_SUCCESS) {
if (result != SUCCESS) {
EXPR_GetError(&expr_err);
_vm->_console->print("Parse error: %s", expr_err);
break;
@ -159,7 +159,7 @@ int Console::type(int in_char) {
if (CVAR_IsFunc(con_cvar)) {
CVAR_Exec(con_cvar, rvalue);
} else if (CVAR_SetValue(con_cvar, rvalue) != R_SUCCESS) {
} else if (CVAR_SetValue(con_cvar, rvalue) != SUCCESS) {
CVAR_GetError(&err_str);
_vm->_console->print("Illegal assignment: %s.", err_str);
}
@ -172,7 +172,7 @@ int Console::type(int in_char) {
}
break;
default:
if (input_pos < R_CON_INPUTBUF_LEN) {
if (input_pos < CON_INPUTBUF_LEN) {
_inputBuf[input_pos] = (char)in_char;
_inputPos++;
}
@ -182,20 +182,20 @@ int Console::type(int in_char) {
if (rvalue)
free(rvalue);
return R_SUCCESS;
return SUCCESS;
}
int Console::draw(R_SURFACE *ds) {
int Console::draw(SURFACE *ds) {
int line_y;
R_CONSOLE_LINE *walk_ptr;
R_CONSOLE_LINE *start_ptr;
CONSOLE_LINE *walk_ptr;
CONSOLE_LINE *start_ptr;
int txt_fgcolor;
int txt_shcolor;
Rect fill_rect;
int i;
if (!_active) {
return R_FAILURE;
return FAILURE;
}
if (_resize != _yMax) {
@ -208,15 +208,15 @@ int Console::draw(R_SURFACE *ds) {
fill_rect.bottom = _yPos + 1;
fill_rect.right = ds->buf_w;
_vm->_gfx->drawRect(ds, &fill_rect, _vm->_gfx->matchColor(R_CONSOLE_BGCOLOR));
txt_fgcolor = _vm->_gfx->matchColor(R_CONSOLE_TXTCOLOR);
txt_shcolor = _vm->_gfx->matchColor(R_CONSOLE_TXTSHADOW);
_vm->_gfx->drawRect(ds, &fill_rect, _vm->_gfx->matchColor(CONSOLE_BGCOLOR));
txt_fgcolor = _vm->_gfx->matchColor(CONSOLE_TXTCOLOR);
txt_shcolor = _vm->_gfx->matchColor(CONSOLE_TXTSHADOW);
_vm->_font->draw(SMALL_FONT_ID, ds, ">", 1, 2, _yPos - 10, txt_fgcolor, txt_shcolor, FONT_SHADOW);
_vm->_font->draw(SMALL_FONT_ID, ds, _inputBuf, strlen(_inputBuf),
10, _yPos - 10, txt_fgcolor, txt_shcolor, FONT_SHADOW);
line_y = _yPos - (R_CON_INPUT_H + R_CON_LINE_H);
line_y = _yPos - (CON_INPUT_H + CON_LINE_H);
start_ptr = _scrollback.head;
for (i = 0; i < _linePos; i++) {
@ -229,16 +229,16 @@ int Console::draw(R_SURFACE *ds) {
for (walk_ptr = start_ptr; walk_ptr; walk_ptr = walk_ptr->next) {
_vm->_font->draw(SMALL_FONT_ID, ds, walk_ptr->str_p, walk_ptr->str_len, 2, line_y, txt_fgcolor, txt_shcolor, FONT_SHADOW);
line_y -= R_CON_LINE_H;
if (line_y < -R_CON_LINE_H)
line_y -= CON_LINE_H;
if (line_y < -CON_LINE_H)
break;
}
return R_SUCCESS;
return SUCCESS;
}
int Console::print(const char *fmt_str, ...) {
char vsstr_p[R_CON_PRINTFLIMIT + 1];
char vsstr_p[CON_PRINTFLIMIT + 1];
va_list argptr;
int ret_val;
@ -253,11 +253,11 @@ int Console::print(const char *fmt_str, ...) {
}
int Console::cmdUp() {
R_CONSOLE_LINE *start_ptr = _history.head;
CONSOLE_LINE *start_ptr = _history.head;
int i;
if (!start_ptr) {
return R_SUCCESS;
return SUCCESS;
}
if (_histPos < _history.lines) {
@ -272,29 +272,29 @@ int Console::cmdUp() {
}
}
memset(_inputBuf, 0, R_CON_INPUTBUF_LEN);
memset(_inputBuf, 0, CON_INPUTBUF_LEN);
strcpy(_inputBuf, start_ptr->str_p);
_inputPos = start_ptr->str_len - 1;
debug(0, "History pos: %d/%d", _histPos, _history.lines);
return R_SUCCESS;
return SUCCESS;
}
int Console::cmdDown(void) {
R_CONSOLE_LINE *start_ptr = _history.head;
CONSOLE_LINE *start_ptr = _history.head;
int i;
if (_histPos == 1) {
debug(0, "Erased input buffer.");
memset(_inputBuf, 0, R_CON_INPUTBUF_LEN);
memset(_inputBuf, 0, CON_INPUTBUF_LEN);
_inputPos = 0;
_histPos--;
return R_SUCCESS;
return SUCCESS;
} else if (_histPos) {
_histPos--;
} else {
return R_SUCCESS;
return SUCCESS;
}
for (i = 1; i < _histPos; i++) {
@ -305,30 +305,30 @@ int Console::cmdDown(void) {
}
}
memset(_inputBuf, 0, R_CON_INPUTBUF_LEN);
memset(_inputBuf, 0, CON_INPUTBUF_LEN);
strcpy(_inputBuf, start_ptr->str_p);
_inputPos = start_ptr->str_len - 1;
debug(0, "History pos: %d/%d", _histPos, _history.lines);
return R_SUCCESS;
return SUCCESS;
}
int Console::pageUp() {
int n_lines;
n_lines = (_yMax - R_CON_INPUT_H) / R_CON_LINE_H;
n_lines = (_yMax - CON_INPUT_H) / CON_LINE_H;
if (_linePos < (_scrollback.lines - n_lines)) {
_linePos += n_lines;
}
debug(0, "Line pos: %d", _linePos);
return R_SUCCESS;
return SUCCESS;
}
int Console::pageDown() {
int n_lines;
n_lines = (_yMax - R_CON_INPUT_H) / R_CON_LINE_H;
n_lines = (_yMax - CON_INPUT_H) / CON_LINE_H;
if (_linePos > n_lines) {
_linePos -= n_lines;
@ -336,11 +336,11 @@ int Console::pageDown() {
_linePos = 0;
}
return R_SUCCESS;
return SUCCESS;
}
int Console::dropConsole(double percent) {
R_SURFACE *back_buf;
SURFACE *back_buf;
if (percent > 1.0) {
percent = 1.0;
@ -350,11 +350,11 @@ int Console::dropConsole(double percent) {
_vm->_console->setDropPos(percent);
_vm->_console->draw(back_buf);
return R_SUCCESS;
return SUCCESS;
}
int Console::raiseConsole(double percent) {
R_SURFACE *back_buf;
SURFACE *back_buf;
if (percent >= 1.0) {
percent = 1.0;
@ -365,7 +365,7 @@ int Console::raiseConsole(double percent) {
_vm->_console->setDropPos(1.0 - percent);
_vm->_console->draw(back_buf);
return R_SUCCESS;
return SUCCESS;
}
int Console::setDropPos(double percent) {
@ -379,25 +379,25 @@ int Console::setDropPos(double percent) {
exp_percent = percent * percent;
_yPos = (int)(_yMax * exp_percent);
return R_SUCCESS;
return SUCCESS;
}
int Console::addLine(R_CON_SCROLLBACK *scroll, int line_max, const char *constr_p) {
int Console::addLine(CON_SCROLLBACK *scroll, int line_max, const char *constr_p) {
int constr_len;
char *newstr_p;
R_CONSOLE_LINE *newline_p;
CONSOLE_LINE *newline_p;
int del_lines;
int i;
constr_len = strlen(constr_p) + 1;
newstr_p = (char *)malloc(constr_len);
if (newstr_p == NULL) {
return R_MEM;
return MEM;
}
newline_p = (R_CONSOLE_LINE *)malloc(sizeof(R_CONSOLE_LINE));
newline_p = (CONSOLE_LINE *)malloc(sizeof(CONSOLE_LINE));
if (newline_p == NULL) {
return R_MEM;
return MEM;
}
newline_p->next = NULL;
newline_p->prev = NULL;
@ -425,11 +425,11 @@ int Console::addLine(R_CON_SCROLLBACK *scroll, int line_max, const char *constr_
}
}
return R_SUCCESS;
return SUCCESS;
}
int Console::deleteLine(R_CON_SCROLLBACK *scroll) {
R_CONSOLE_LINE *temp_p = scroll->tail;
int Console::deleteLine(CON_SCROLLBACK *scroll) {
CONSOLE_LINE *temp_p = scroll->tail;
if (temp_p->prev == NULL) {
scroll->head = NULL;
@ -444,12 +444,12 @@ int Console::deleteLine(R_CON_SCROLLBACK *scroll) {
free(temp_p);
scroll->lines--;
return R_SUCCESS;
return SUCCESS;
}
int Console::deleteScroll(R_CON_SCROLLBACK * scroll) {
R_CONSOLE_LINE *walk_ptr;
R_CONSOLE_LINE *temp_ptr;
int Console::deleteScroll(CON_SCROLLBACK * scroll) {
CONSOLE_LINE *walk_ptr;
CONSOLE_LINE *temp_ptr;
for (walk_ptr = scroll->head; walk_ptr; walk_ptr = temp_ptr) {
@ -459,7 +459,7 @@ int Console::deleteScroll(R_CON_SCROLLBACK * scroll) {
free(walk_ptr);
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -28,32 +28,32 @@
namespace Saga {
#define R_CON_INPUTBUF_LEN 80
#define CON_INPUTBUF_LEN 80
#define R_CONSOLE_BGCOLOR 0x00A0A0A0UL
#define R_CONSOLE_TXTCOLOR 0x00FFFFFFUL
#define R_CONSOLE_TXTSHADOW 0x00202020UL
#define CONSOLE_BGCOLOR 0x00A0A0A0UL
#define CONSOLE_TXTCOLOR 0x00FFFFFFUL
#define CONSOLE_TXTSHADOW 0x00202020UL
struct R_CONSOLE_LINE {
R_CONSOLE_LINE *next;
R_CONSOLE_LINE *prev;
struct CONSOLE_LINE {
CONSOLE_LINE *next;
CONSOLE_LINE *prev;
char *str_p;
int str_len;
};
struct R_CON_SCROLLBACK {
R_CONSOLE_LINE *head;
R_CONSOLE_LINE *tail;
struct CON_SCROLLBACK {
CONSOLE_LINE *head;
CONSOLE_LINE *tail;
int lines;
};
#define R_CON_DEFAULTPOS 136
#define R_CON_DEFAULTLINES 100
#define R_CON_DEFAULTCMDS 10
#define R_CON_DROPTIME 400
#define R_CON_PRINTFLIMIT 1024
#define R_CON_LINE_H 10
#define R_CON_INPUT_H 10
#define CON_DEFAULTPOS 136
#define CON_DEFAULTLINES 100
#define CON_DEFAULTCMDS 10
#define CON_DROPTIME 400
#define CON_PRINTFLIMIT 1024
#define CON_LINE_H 10
#define CON_INPUT_H 10
class Console {
public:
@ -66,7 +66,7 @@ class Console {
bool isActive(void);
int type(int in_char);
int draw(R_SURFACE *ds);
int draw(SURFACE *ds);
int print(const char *fmt_str, ...);
int cmdUp(void);
@ -78,16 +78,16 @@ class Console {
int raiseConsole(double percent);
private:
int addLine(R_CON_SCROLLBACK *scroll, int line_max, const char *constr_p);
int deleteLine(R_CON_SCROLLBACK *scroll);
int deleteScroll(R_CON_SCROLLBACK *scroll);
int addLine(CON_SCROLLBACK *scroll, int line_max, const char *constr_p);
int deleteLine(CON_SCROLLBACK *scroll);
int deleteScroll(CON_SCROLLBACK *scroll);
int setDropPos(double percent);
private:
SagaEngine *_vm;
R_CON_SCROLLBACK _scrollback;
R_CON_SCROLLBACK _history;
CON_SCROLLBACK _scrollback;
CON_SCROLLBACK _history;
int _resize;
int _droptime;
@ -101,7 +101,7 @@ class Console {
int _yPos;
char *_prompt;
int _promptW;
char _inputBuf[R_CON_INPUTBUF_LEN + 1];
char _inputBuf[CON_INPUTBUF_LEN + 1];
int _inputPos;
};

View File

@ -32,7 +32,7 @@
namespace Saga {
R_CVAR *CVHashTbl[R_CVAR_HASHLEN];
CVAR *CVHashTbl[CVAR_HASHLEN];
static const char *CVAR_ErrMsg[] = {
"No Error",
@ -73,20 +73,20 @@ int CVAR_GetError(const char **err_str) {
}
// Frees the cvar hash table
int CVAR_Shutdown() {
R_CVAR *walk_ptr;
R_CVAR *temp_ptr;
CVAR *walk_ptr;
CVAR *temp_ptr;
int i;
debug(0, "CVAR_Shutdown(): Deleting cvar hash table.");
for (i = 0; i < R_CVAR_HASHLEN; i++) {
for (i = 0; i < CVAR_HASHLEN; i++) {
for (walk_ptr = CVHashTbl[i]; walk_ptr; walk_ptr = temp_ptr) {
temp_ptr = walk_ptr->next;
free(walk_ptr);
}
}
return R_SUCCESS;
return SUCCESS;
}
// Returns hash index for string 'str'.
@ -98,23 +98,23 @@ unsigned int CVAR_HashString(const char *str) {
index = *str + 31 * index;
}
return index % R_CVAR_HASHLEN;
return index % CVAR_HASHLEN;
}
// Adds a copy of the given cvar into the hash table.
// Returns R_SUCCESS if cvar was added, R_MEM if allocation failed.
int CVAR_Add(int index, R_CVAR *cvar) {
R_CVAR *new_cvar;
R_CVAR *temp_ptr;
// Returns SUCCESS if cvar was added, MEM if allocation failed.
int CVAR_Add(int index, CVAR *cvar) {
CVAR *new_cvar;
CVAR *temp_ptr;
new_cvar = (R_CVAR *)malloc(sizeof(R_CVAR));
new_cvar = (CVAR *)malloc(sizeof(CVAR));
if (new_cvar == NULL) {
CVAR_ErrorState = CVERR_MEM;
return R_MEM;
return MEM;
}
memcpy(new_cvar, cvar, sizeof(R_CVAR));
memcpy(new_cvar, cvar, sizeof(CVAR));
if (CVHashTbl[index] == NULL) {
CVHashTbl[index] = new_cvar;
@ -126,29 +126,29 @@ int CVAR_Add(int index, R_CVAR *cvar) {
}
CVAR_ErrorState = CVERR_NONE;
return R_SUCCESS;
return SUCCESS;
}
// Attempts to execute the specified console function with the given argument
// string.
// Returns R_FAILURE if cvar_func is not a valid console function
int CVAR_Exec(R_CVAR_P cvar_func, char *r_value) {
// Returns FAILURE if cvar_func is not a valid console function
int CVAR_Exec(CVAR_P cvar_func, char *value) {
int cf_argc = 0;
char **cf_argv = NULL;
int max_args;
if (cvar_func->type != R_CVAR_FUNC) {
if (cvar_func->type != CVAR_FUNC) {
CVAR_ErrorState = CVERR_NOTFUNC;
return R_FAILURE;
return FAILURE;
}
cf_argc = EXPR_GetArgs(r_value, &cf_argv);
cf_argc = EXPR_GetArgs(value, &cf_argv);
if (cf_argc < cvar_func->t.func.min_args) {
_vm->_console->print("Too few arguments to function.");
if (cf_argv)
free(cf_argv);
return R_FAILURE;
return FAILURE;
}
max_args = cvar_func->t.func.max_args;
@ -156,7 +156,7 @@ int CVAR_Exec(R_CVAR_P cvar_func, char *r_value) {
_vm->_console->print("Too many arguments to function.");
if (cf_argv)
free(cf_argv);
return R_FAILURE;
return FAILURE;
}
// Call function
@ -165,53 +165,53 @@ int CVAR_Exec(R_CVAR_P cvar_func, char *r_value) {
if (cf_argv)
free(cf_argv);
return R_SUCCESS;
return SUCCESS;
}
// Attempts to assign the value contained in the string 'r_value' to cvar.
// Returns R_FAILURE if there was an error parsing 'r_value'
int CVAR_SetValue(R_CVAR_P cvar, char *r_value) {
// Attempts to assign the value contained in the string 'value' to cvar.
// Returns FAILURE if there was an error parsing 'value'
int CVAR_SetValue(CVAR_P cvar, char *value) {
long int int_param;
unsigned long uint16_param;
char *end_p;
ptrdiff_t scan_len;
int r_value_len;
int value_len;
r_value_len = strlen(r_value);
value_len = strlen(value);
if (cvar->flags & R_CVAR_READONLY) {
if (cvar->flags & CVAR_READONLY) {
CVAR_ErrorState = CVERR_READONLY;
return R_FAILURE;
return FAILURE;
}
switch (cvar->type) {
case R_CVAR_INT:
int_param = strtol(r_value, &end_p, 10);
case CVAR_INT:
int_param = strtol(value, &end_p, 10);
if ((int_param == LONG_MIN) || (int_param == LONG_MAX)) {
CVAR_ErrorState = CVERR_PARSEOVERFLOW;
return R_FAILURE;
return FAILURE;
}
scan_len = end_p - r_value;
scan_len = end_p - value;
if (int_param == 0) {
if (!scan_len || r_value[scan_len - 1] != '0') {
if (!scan_len || value[scan_len - 1] != '0') {
// strtol() returned 0, but string isn't "0". Invalid.
CVAR_ErrorState = CVERR_INVALID;
return R_FAILURE;
return FAILURE;
}
}
if (scan_len != r_value_len) {
if (scan_len != value_len) {
// Entire string wasn't converted...Invalid
CVAR_ErrorState = CVERR_INVALID;
return R_FAILURE;
return FAILURE;
}
if ((int_param < CV_INTMIN) || (int_param > CV_INTMAX)) {
// Overflows destination type
CVAR_ErrorState = CVERR_DESTOVERFLOW;
return R_FAILURE;
return FAILURE;
}
// Ignore bounds if equal
@ -219,48 +219,48 @@ int CVAR_SetValue(R_CVAR_P cvar, char *r_value) {
if ((int_param < cvar->t.i.lbound) || (int_param > cvar->t.i.ubound)) {
// Value is outside of cvar bounds
CVAR_ErrorState = CVERR_BOUND;
return R_FAILURE;
return FAILURE;
}
}
*(cvar->t.i.var_p) = (cv_int_t) int_param;
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Set cvar to value %ld.\n", int_param);
#endif
break;
case R_CVAR_UINT:
if (*r_value == '-') {
case CVAR_UINT:
if (*value == '-') {
CVAR_ErrorState = CVERR_SIGN;
return R_FAILURE;
return FAILURE;
}
uint16_param = strtoul(r_value, &end_p, 10);
uint16_param = strtoul(value, &end_p, 10);
if (uint16_param == ULONG_MAX) {
CVAR_ErrorState = CVERR_PARSEOVERFLOW;
return R_FAILURE;
return FAILURE;
}
scan_len = end_p - r_value;
scan_len = end_p - value;
if (uint16_param == 0) {
if (!scan_len || r_value[scan_len - 1] != '0') {
if (!scan_len || value[scan_len - 1] != '0') {
// strtol() returned 0, but string isn't "0". Invalid.
CVAR_ErrorState = CVERR_INVALID;
return R_FAILURE;
return FAILURE;
}
}
if (scan_len != r_value_len) {
if (scan_len != value_len) {
// Entire string wasn't converted...Invalid
CVAR_ErrorState = CVERR_INVALID;
return R_FAILURE;
return FAILURE;
}
if (uint16_param > CV_UINTMAX) {
// Overflows destination type
CVAR_ErrorState = CVERR_DESTOVERFLOW;
return R_FAILURE;
return FAILURE;
}
// Ignore bounds if equal
@ -268,49 +268,49 @@ int CVAR_SetValue(R_CVAR_P cvar, char *r_value) {
if ((uint16_param < cvar->t.ui.lbound) || (uint16_param > cvar->t.ui.ubound)) {
// Value is outside cvar bounds
CVAR_ErrorState = CVERR_BOUND;
return R_FAILURE;
return FAILURE;
}
}
*(cvar->t.ui.var_p) = (cv_uint16_t) uint16_param;
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Set cvar to value %lu.\n", uint16_param);
#endif
break;
case R_CVAR_FLOAT:
case CVAR_FLOAT:
CVAR_ErrorState = CVERR_NOTIMPL;
return R_FAILURE;
return FAILURE;
break;
case R_CVAR_STRING:
if (strrchr(r_value, '\"') != NULL) {
case CVAR_STRING:
if (strrchr(value, '\"') != NULL) {
CVAR_ErrorState = CVERR_STRING;
return R_FAILURE;
return FAILURE;
}
strncpy(cvar->t.s.var_str, r_value, cvar->t.s.ubound);
if (cvar->t.s.ubound < r_value_len) {
strncpy(cvar->t.s.var_str, value, cvar->t.s.ubound);
if (cvar->t.s.ubound < value_len) {
cvar->t.s.var_str[cvar->t.s.ubound] = 0;
}
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Set cvar to value \"%s\".\n", cvar->t.s.var_str);
#endif
break;
default:
CVAR_ErrorState = CVERR_TYPE;
return R_FAILURE;
return FAILURE;
break;
}
CVAR_ErrorState = CVERR_NONE;
return R_SUCCESS;
return SUCCESS;
}
// Given a cvar name this function returns a pointer to the appropriate
// cvar structure or NULL if no match was found.
R_CVAR_P CVAR_Find(const char *var_str) {
R_CVAR *walk_ptr;
CVAR_P CVAR_Find(const char *var_str) {
CVAR *walk_ptr;
int hash;
hash = CVAR_HashString(var_str);
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Performing lookup on hash bucket %d.\n", hash);
#endif
walk_ptr = CVHashTbl[hash];
@ -324,8 +324,8 @@ R_CVAR_P CVAR_Find(const char *var_str) {
return NULL;
}
int CVAR_IsFunc(R_CVAR_P cvar_func) {
if (cvar_func->type == R_CVAR_FUNC)
int CVAR_IsFunc(CVAR_P cvar_func) {
if (cvar_func->type == CVAR_FUNC)
return 1;
else
return 0;
@ -335,11 +335,11 @@ int CVAR_IsFunc(R_CVAR_P cvar_func) {
// (could think of a better place to put these...?)
int CVAR_RegisterFunc(cv_func_t func, const char *func_name,
const char *func_argstr, uint16 flags, int min_args, int max_args, void *refCon) {
R_CVAR new_cvar;
CVAR new_cvar;
int hash;
new_cvar.name = func_name;
new_cvar.type = R_CVAR_FUNC;
new_cvar.type = CVAR_FUNC;
new_cvar.section = NULL;
new_cvar.refCon = refCon;
new_cvar.flags = flags;
@ -349,7 +349,7 @@ int CVAR_RegisterFunc(cv_func_t func, const char *func_name,
new_cvar.t.func.max_args = max_args;
hash = CVAR_HashString(func_name);
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Added FUNC cvar to hash bucket %d.\n", hash);
#endif
@ -360,11 +360,11 @@ int CVAR_RegisterFunc(cv_func_t func, const char *func_name,
int CVAR_Register_I(cv_int_t * var_p, const char *var_name,
const char *section, uint16 flags, cv_int_t lbound, cv_int_t ubound) {
R_CVAR new_cvar;
CVAR new_cvar;
int hash;
new_cvar.name = var_name;
new_cvar.type = R_CVAR_INT;
new_cvar.type = CVAR_INT;
new_cvar.section = section;
new_cvar.flags = flags;
new_cvar.t.i.var_p = var_p;
@ -372,7 +372,7 @@ int CVAR_Register_I(cv_int_t * var_p, const char *var_name,
new_cvar.t.i.ubound = ubound;
hash = CVAR_HashString(var_name);
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Added INT cvar to hash bucket %d.\n", hash);
#endif
@ -382,11 +382,11 @@ int CVAR_Register_I(cv_int_t * var_p, const char *var_name,
// Registers an unsigned integer type cvar.
int CVAR_Register_UI(cv_uint16_t * var_p, const char *var_name,
const char *section, uint16 flags, cv_uint16_t lbound, cv_uint16_t ubound) {
R_CVAR new_cvar;
CVAR new_cvar;
int hash;
new_cvar.name = var_name;
new_cvar.type = R_CVAR_UINT;
new_cvar.type = CVAR_UINT;
new_cvar.section = section;
new_cvar.flags = flags;
new_cvar.t.ui.var_p = var_p;
@ -394,7 +394,7 @@ int CVAR_Register_UI(cv_uint16_t * var_p, const char *var_name,
new_cvar.t.ui.ubound = ubound;
hash = CVAR_HashString(var_name);
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Added UNSIGNED INT ccvar to hash bucket %d.\n", hash);
#endif
@ -404,11 +404,11 @@ int CVAR_Register_UI(cv_uint16_t * var_p, const char *var_name,
// Registers a floating point type cvar.
int CVAR_Register_F(cv_float_t * var_p, const char *var_name,
const char *section, uint16 flags, cv_float_t lbound, cv_float_t ubound) {
R_CVAR new_cvar;
CVAR new_cvar;
int hash;
new_cvar.name = var_name;
new_cvar.type = R_CVAR_FLOAT;
new_cvar.type = CVAR_FLOAT;
new_cvar.section = section;
new_cvar.flags = flags;
new_cvar.t.f.var_p = var_p;
@ -416,7 +416,7 @@ int CVAR_Register_F(cv_float_t * var_p, const char *var_name,
new_cvar.t.f.ubound = ubound;
hash = CVAR_HashString(var_name);
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Added FLOAT cvar to hash bucket %d.\n", hash);
#endif
@ -426,18 +426,18 @@ int CVAR_Register_F(cv_float_t * var_p, const char *var_name,
// Registers a string type cvar. Storage must be provided in var_p for 'ubound'
// characters plus 1 for NUL char.
int CVAR_Register_S(cv_char_t * var_str, const char *var_name, const char *section, uint16 flags, int ubound) {
R_CVAR new_cvar;
CVAR new_cvar;
int hash;
new_cvar.name = var_name;
new_cvar.type = R_CVAR_STRING;
new_cvar.type = CVAR_STRING;
new_cvar.section = section;
new_cvar.flags = flags;
new_cvar.t.s.var_str = var_str;
new_cvar.t.s.ubound = ubound;
hash = CVAR_HashString(var_name);
#ifdef R_CVAR_TRACE
#ifdef CVAR_TRACE
printf("Added UNSIGNED INT var to hash bucket %d.\n", hash);
#endif
@ -445,26 +445,26 @@ int CVAR_Register_S(cv_char_t * var_str, const char *var_name, const char *secti
}
// Displays the value and type of the given cvar to the console.
int CVAR_Print(R_CVAR_P con_cvar) {
int CVAR_Print(CVAR_P con_cvar) {
switch (con_cvar->type) {
case R_CVAR_INT:
case CVAR_INT:
_vm->_console->print("\"%s\"(i) = %d", con_cvar->name, *(con_cvar->t.i.var_p));
break;
case R_CVAR_UINT:
case CVAR_UINT:
_vm->_console->print("\"%s\"(ui) = %u", con_cvar->name, *(con_cvar->t.ui.var_p));
break;
case R_CVAR_FLOAT:
case CVAR_FLOAT:
_vm->_console->print("\"%s\"(ui) = %f", con_cvar->name, *(con_cvar->t.f.var_p));
break;
case R_CVAR_STRING:
case CVAR_STRING:
_vm->_console->print("\"%s\"(s) = \"%s\"", con_cvar->name, con_cvar->t.s.var_str);
break;
case R_CVAR_FUNC:
case CVAR_FUNC:
if (con_cvar->t.func.func_argstr) {
_vm->_console->print("\"%s\"(func) Args: %s", con_cvar->name, con_cvar->t.func.func_argstr);
} else {
@ -477,7 +477,7 @@ int CVAR_Print(R_CVAR_P con_cvar) {
break;
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -28,40 +28,40 @@
namespace Saga {
#define R_CVAR_HASHLEN 32
#define CVAR_HASHLEN 32
struct R_SUBCVAR_INT {
struct SUBCVAR_INT {
cv_int_t *var_p;
cv_int_t ubound;
cv_int_t lbound;
};
struct R_SUBCVAR_UINT {
struct SUBCVAR_UINT {
cv_uint16_t *var_p;
cv_uint16_t ubound;
cv_uint16_t lbound;
};
struct R_SUBCVAR_FLOAT {
struct SUBCVAR_FLOAT {
cv_float_t *var_p;
cv_float_t ubound;
cv_float_t lbound;
};
struct R_SUBCVAR_STRING {
struct SUBCVAR_STRING {
cv_char_t *var_str;
int ubound;
};
struct R_SUBCVAR_FUNC {
struct SUBCVAR_FUNC {
cv_func_t func_p;
const char *func_argstr;
int min_args;
int max_args;
};
struct R_CVAR {
struct CVAR {
int type;
const char *name;
const char *section;
@ -69,14 +69,14 @@ struct R_CVAR {
void *refCon;
union {
R_SUBCVAR_INT i;
R_SUBCVAR_UINT ui;
R_SUBCVAR_FLOAT f;
R_SUBCVAR_STRING s;
R_SUBCVAR_FUNC func;
SUBCVAR_INT i;
SUBCVAR_UINT ui;
SUBCVAR_FLOAT f;
SUBCVAR_STRING s;
SUBCVAR_FUNC func;
} t;
R_CVAR *next;
CVAR *next;
};

View File

@ -40,35 +40,35 @@ typedef char cv_char_t;
typedef void (*cv_func_t) (int cv_argc, char *cv_argv[], void *refCon);
/******************************************/
typedef struct R_CVAR *R_CVAR_P; // opaque typedef
typedef struct CVAR *CVAR_P; // opaque typedef
enum R_CVAR_TYPES {
R_CVAR_INVALID,
R_CVAR_INT,
R_CVAR_UINT,
R_CVAR_FLOAT,
R_CVAR_STRING,
R_CVAR_FUNC
enum CVAR_TYPES {
CVAR_INVALID,
CVAR_INT,
CVAR_UINT,
CVAR_FLOAT,
CVAR_STRING,
CVAR_FUNC
};
enum R_CVAR_FLAGS {
R_CVAR_NONE,
R_CVAR_READONLY,
R_CVAR_LBOUND,
R_CVAR_UBOUND,
R_CVAR_CFG,
R_CVAR_SECTION
enum CVAR_FLAGS {
CVAR_NONE,
CVAR_READONLY,
CVAR_LBOUND,
CVAR_UBOUND,
CVAR_CFG,
CVAR_SECTION
};
#define R_CVAR_BOUNDED ( R_CVAR_LBOUND | R_CVAR_UBOUND )
#define CVAR_BOUNDED ( CVAR_LBOUND | CVAR_UBOUND )
int CVAR_Shutdown();
R_CVAR_P CVAR_Find(const char *var_str);
int CVAR_SetValue(R_CVAR_P cvar, char *r_value);
int CVAR_Print(R_CVAR_P con_cvar);
CVAR_P CVAR_Find(const char *var_str);
int CVAR_SetValue(CVAR_P cvar, char *r_value);
int CVAR_Print(CVAR_P con_cvar);
int CVAR_GetError(const char **err_str);
int CVAR_IsFunc(R_CVAR_P cvar_func);
int CVAR_Exec(R_CVAR_P cvar_func, char *r_value);
int CVAR_IsFunc(CVAR_P cvar_func);
int CVAR_Exec(CVAR_P cvar_func, char *r_value);
int CVAR_RegisterFunc(cv_func_t func, const char *func_name,
const char *func_argstr, uint16 flags, int min_args, int max_args, void *refCon);
int CVAR_Register_I(cv_int_t * var_p, const char *var_name,
@ -78,7 +78,7 @@ int CVAR_Register_UI(cv_uint16_t * var_p, const char *var_name,
int CVAR_Register_F(cv_float_t * var_p, const char *var_name,
const char *section, uint16 flags, cv_float_t lbound, cv_float_t ubound);
int CVAR_Register_S(cv_char_t * var_str, const char *var_name, const char *section, uint16 flags, int ubound);
int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P * expr_cvar, char **rvalue);
int EXPR_Parse(const char **exp_pp, int *len, CVAR_P * expr_cvar, char **rvalue);
char *EXPR_ReadString(const char **string_p, int *len, int term_char);
int EXPR_GetError(const char **err_str);
int EXPR_GetArgs(char *cmd_str, char ***expr_argv);

View File

@ -64,7 +64,7 @@ int Events::handleEvents(long msec) {
YS_DL_NODE *walk_node;
YS_DL_NODE *next_node;
R_EVENT *event_p;
EVENT *event_p;
long delta_time;
int result;
@ -74,7 +74,7 @@ int Events::handleEvents(long msec) {
// Process each event in list
for (walk_node = ys_dll_head(_eventList); walk_node != NULL; walk_node = next_node) {
event_p = (R_EVENT *)ys_dll_get_data(walk_node);
event_p = (EVENT *)ys_dll_get_data(walk_node);
// Save next event in case current event is handled and removed
next_node = ys_dll_next(walk_node);
@ -82,31 +82,31 @@ int Events::handleEvents(long msec) {
// Call the appropriate event handler for the specific event type
switch (event_p->type) {
case R_ONESHOT_EVENT:
case ONESHOT_EVENT:
result = handleOneShot(event_p);
break;
case R_CONTINUOUS_EVENT:
case CONTINUOUS_EVENT:
result = handleContinuous(event_p);
break;
case R_INTERVAL_EVENT:
case INTERVAL_EVENT:
result = handleInterval(event_p);
break;
case R_IMMEDIATE_EVENT:
case IMMEDIATE_EVENT:
result = handleImmediate(event_p);
break;
default:
result = R_EVENT_INVALIDCODE;
result = EVENT_INVALIDCODE;
warning("Invalid event code encountered");
break;
}
// Process the event appropriately based on result code from
// handler
if ((result == R_EVENT_DELETE) || (result == R_EVENT_INVALIDCODE)) {
if ((result == EVENT_DELETE) || (result == EVENT_INVALIDCODE)) {
// If there is no event chain, delete the base event.
if (event_p->chain == NULL) {
ys_dll_delete(walk_node);
@ -118,26 +118,26 @@ int Events::handleEvents(long msec) {
ys_dll_replace(walk_node, event_p->chain, sizeof *event_p);
event_p = (R_EVENT *)ys_dll_get_data(walk_node);
event_p = (EVENT *)ys_dll_get_data(walk_node);
event_p->time += delta_time;
next_node = walk_node;
}
} else if (result == R_EVENT_BREAK) {
} else if (result == EVENT_BREAK) {
break;
}
}
return R_SUCCESS;
return SUCCESS;
}
int Events::handleContinuous(R_EVENT *event) {
int Events::handleContinuous(EVENT *event) {
double event_pc = 0.0; // Event completion percentage
int event_done = 0;
R_BUFFER_INFO buf_info;
BUFFER_INFO buf_info;
SCENE_BGINFO bg_info;
R_SURFACE *back_buf;
SURFACE *back_buf;
event_pc = ((double)event->duration - event->time) / event->duration;
@ -149,15 +149,15 @@ int Events::handleContinuous(R_EVENT *event) {
if (event_pc < 0.0) {
// Event not signaled, skip it
return R_EVENT_CONTINUE;
} else if (!(event->code & R_SIGNALED)) {
return EVENT_CONTINUE;
} else if (!(event->code & SIGNALED)) {
// Signal event
event->code |= R_SIGNALED;
event->code |= SIGNALED;
event_pc = 0.0;
}
switch (event->code & R_EVENT_MASK) {
case R_PAL_EVENT:
switch (event->code & EVENT_MASK) {
case PAL_EVENT:
switch (event->op) {
case EVENT_BLACKTOPAL:
back_buf = _vm->_gfx->getBackBuffer();
@ -172,13 +172,13 @@ int Events::handleContinuous(R_EVENT *event) {
break;
}
break;
case R_TRANSITION_EVENT:
case TRANSITION_EVENT:
switch (event->op) {
case EVENT_DISSOLVE:
_vm->_render->getBufferInfo(&buf_info);
_vm->_scene->getBGInfo(&bg_info);
_vm->transitionDissolve(buf_info.r_bg_buf, buf_info.r_bg_buf_w,
buf_info.r_bg_buf_h, buf_info.r_bg_buf_w, bg_info.bg_buf, bg_info.bg_w,
_vm->transitionDissolve(buf_info.bg_buf, buf_info.bg_buf_w,
buf_info.bg_buf_h, buf_info.bg_buf_w, bg_info.bg_buf, bg_info.bg_w,
bg_info.bg_h, bg_info.bg_p, 0, 0, 0, event_pc);
break;
case EVENT_DISSOLVE_BGMASK:
@ -190,15 +190,15 @@ int Events::handleContinuous(R_EVENT *event) {
_vm->_render->getBufferInfo(&buf_info);
_vm->_scene->getBGMaskInfo(&w, &h, &mask_buf, &len);
_vm->transitionDissolve(buf_info.r_bg_buf, buf_info.r_bg_buf_w,
buf_info.r_bg_buf_h, buf_info.r_bg_buf_w, mask_buf, w, h, 0, 1,
_vm->transitionDissolve(buf_info.bg_buf, buf_info.bg_buf_w,
buf_info.bg_buf_h, buf_info.bg_buf_w, mask_buf, w, h, 0, 1,
(320 - w) / 2, (200 - h) / 2, event_pc);
break;
default:
break;
}
break;
case R_CONSOLE_EVENT:
case CONSOLE_EVENT:
switch (event->op) {
case EVENT_ACTIVATE:
_vm->_console->dropConsole(event_pc);
@ -216,17 +216,17 @@ int Events::handleContinuous(R_EVENT *event) {
}
if (event_done) {
return R_EVENT_DELETE;
return EVENT_DELETE;
}
return R_EVENT_CONTINUE;
return EVENT_CONTINUE;
}
int Events::handleImmediate(R_EVENT *event) {
int Events::handleImmediate(EVENT *event) {
double event_pc = 0.0; // Event completion percentage
bool event_done = false;
R_SURFACE *back_buf;
SURFACE *back_buf;
event_pc = ((double)event->duration - event->time) / event->duration;
@ -238,15 +238,15 @@ int Events::handleImmediate(R_EVENT *event) {
if (event_pc < 0.0) {
// Event not signaled, skip it
return R_EVENT_BREAK;
} else if (!(event->code & R_SIGNALED)) {
return EVENT_BREAK;
} else if (!(event->code & SIGNALED)) {
// Signal event
event->code |= R_SIGNALED;
event->code |= SIGNALED;
event_pc = 0.0;
}
switch (event->code & R_EVENT_MASK) {
case R_PAL_EVENT:
switch (event->code & EVENT_MASK) {
case PAL_EVENT:
switch (event->op) {
case EVENT_BLACKTOPAL:
back_buf = _vm->_gfx->getBackBuffer();
@ -261,9 +261,9 @@ int Events::handleImmediate(R_EVENT *event) {
break;
}
break;
case R_SCRIPT_EVENT:
case R_BG_EVENT:
case R_INTERFACE_EVENT:
case SCRIPT_EVENT:
case BG_EVENT:
case INTERFACE_EVENT:
handleOneShot(event);
event_done = true;
break;
@ -273,35 +273,35 @@ int Events::handleImmediate(R_EVENT *event) {
}
if (event_done) {
return R_EVENT_DELETE;
return EVENT_DELETE;
}
return R_EVENT_BREAK;
return EVENT_BREAK;
}
int Events::handleOneShot(R_EVENT *event) {
R_SURFACE *back_buf;
R_SCRIPT_THREAD *sthread;
int Events::handleOneShot(EVENT *event) {
SURFACE *back_buf;
SCRIPT_THREAD *sthread;
static SCENE_BGINFO bginfo;
if (event->time > 0) {
return R_EVENT_CONTINUE;
return EVENT_CONTINUE;
}
// Event has been signaled
switch (event->code & R_EVENT_MASK) {
case R_TEXT_EVENT:
switch (event->code & EVENT_MASK) {
case TEXT_EVENT:
switch (event->op) {
case EVENT_DISPLAY:
_vm->textSetDisplay((R_TEXTLIST_ENTRY *)event->data, 1);
_vm->textSetDisplay((TEXTLIST_ENTRY *)event->data, 1);
break;
case EVENT_REMOVE:
{
R_SCENE_INFO scene_info;
SCENE_INFO scene_info;
_vm->_scene->getInfo(&scene_info);
_vm->textDeleteEntry(scene_info.text_list, (R_TEXTLIST_ENTRY *)event->data);
_vm->textDeleteEntry(scene_info.text_list, (TEXTLIST_ENTRY *)event->data);
}
break;
default:
@ -309,20 +309,20 @@ int Events::handleOneShot(R_EVENT *event) {
}
break;
case R_VOICE_EVENT:
case VOICE_EVENT:
_vm->_sndRes->playVoice(event->param);
break;
case R_MUSIC_EVENT:
case MUSIC_EVENT:
_vm->_music->stop();
if (event->op == EVENT_PLAY)
_vm->_music->play(event->param, event->param2);
break;
case R_BG_EVENT:
case BG_EVENT:
{
R_BUFFER_INFO rbuf_info;
BUFFER_INFO rbuf_info;
Point bg_pt;
if (_vm->_scene->getMode() == R_SCENE_MODE_NORMAL) {
if (_vm->_scene->getMode() == SCENE_MODE_NORMAL) {
back_buf = _vm->_gfx->getBackBuffer();
@ -332,7 +332,7 @@ int Events::handleOneShot(R_EVENT *event) {
bg_pt.x = bginfo.bg_x;
bg_pt.y = bginfo.bg_y;
_vm->_gfx->bufToBuffer(rbuf_info.r_bg_buf, rbuf_info.r_bg_buf_w, rbuf_info.r_bg_buf_h,
_vm->_gfx->bufToBuffer(rbuf_info.bg_buf, rbuf_info.bg_buf_w, rbuf_info.bg_buf_h,
bginfo.bg_buf, bginfo.bg_w, bginfo.bg_h, NULL, &bg_pt);
if (event->param == SET_PALETTE) {
PALENTRY *pal_p;
@ -342,7 +342,7 @@ int Events::handleOneShot(R_EVENT *event) {
}
}
break;
case R_ANIM_EVENT:
case ANIM_EVENT:
switch (event->op) {
case EVENT_FRAME:
_vm->_anim->play(event->param, event->time);
@ -357,17 +357,17 @@ int Events::handleOneShot(R_EVENT *event) {
break;
}
break;
case R_SCENE_EVENT:
case SCENE_EVENT:
switch (event->op) {
case EVENT_END:
_vm->_scene->nextScene();
return R_EVENT_BREAK;
return EVENT_BREAK;
break;
default:
break;
}
break;
case R_PALANIM_EVENT:
case PALANIM_EVENT:
switch (event->op) {
case EVENT_CYCLESTART:
_vm->_palanim->cycleStart();
@ -379,7 +379,7 @@ int Events::handleOneShot(R_EVENT *event) {
break;
}
break;
case R_INTERFACE_EVENT:
case INTERFACE_EVENT:
switch (event->op) {
case EVENT_ACTIVATE:
_vm->_interface->activate();
@ -388,7 +388,7 @@ int Events::handleOneShot(R_EVENT *event) {
break;
}
break;
case R_SCRIPT_EVENT:
case SCRIPT_EVENT:
debug(0, "Starting start script #%d", event->param);
sthread = _vm->_script->SThreadCreate();
@ -412,18 +412,18 @@ int Events::handleOneShot(R_EVENT *event) {
break;
}
return R_EVENT_DELETE;
return EVENT_DELETE;
}
int Events::handleInterval(R_EVENT *event) {
return R_EVENT_DELETE;
int Events::handleInterval(EVENT *event) {
return EVENT_DELETE;
}
// Schedules an event in the event list; returns a pointer to the scheduled
// event suitable for chaining if desired.
R_EVENT *Events::queue(R_EVENT *event) {
EVENT *Events::queue(EVENT *event) {
YS_DL_NODE *new_node;
R_EVENT *queued_event;
EVENT *queued_event;
event->chain = NULL;
new_node = ys_dll_add_tail(_eventList, event, sizeof *event);
@ -432,7 +432,7 @@ R_EVENT *Events::queue(R_EVENT *event) {
return NULL;
}
queued_event = (R_EVENT *)ys_dll_get_data(new_node);
queued_event = (EVENT *)ys_dll_get_data(new_node);
initializeEvent(queued_event);
@ -441,12 +441,12 @@ R_EVENT *Events::queue(R_EVENT *event) {
// Places a 'add_event' on the end of an event chain given by 'head_event'
// (head_event may be in any position in the event chain)
R_EVENT *Events::chain(R_EVENT *head_event, R_EVENT *add_event) {
R_EVENT *walk_event;
R_EVENT *new_event;
EVENT *Events::chain(EVENT *head_event, EVENT *add_event) {
EVENT *walk_event;
EVENT *new_event;
// Allocate space for new event
new_event = (R_EVENT *)malloc(sizeof *new_event);
new_event = (EVENT *)malloc(sizeof *new_event);
if (new_event == NULL) {
return NULL;
}
@ -467,38 +467,38 @@ R_EVENT *Events::chain(R_EVENT *head_event, R_EVENT *add_event) {
return new_event;
}
int Events::initializeEvent(R_EVENT *event) {
int Events::initializeEvent(EVENT *event) {
switch (event->type) {
case R_ONESHOT_EVENT:
case ONESHOT_EVENT:
break;
case R_CONTINUOUS_EVENT:
case R_IMMEDIATE_EVENT:
case CONTINUOUS_EVENT:
case IMMEDIATE_EVENT:
event->time += event->duration;
break;
case R_INTERVAL_EVENT:
case INTERVAL_EVENT:
break;
default:
return R_FAILURE;
return FAILURE;
break;
}
return R_SUCCESS;
return SUCCESS;
}
int Events::clearList() {
YS_DL_NODE *walk_node;
YS_DL_NODE *next_node;
R_EVENT *chain_walk;
R_EVENT *next_chain;
R_EVENT *event_p;
EVENT *chain_walk;
EVENT *next_chain;
EVENT *event_p;
// Walk down event list
for (walk_node = ys_dll_head(_eventList); walk_node != NULL; walk_node = next_node) {
next_node = ys_dll_next(walk_node);
event_p = (R_EVENT *)ys_dll_get_data(walk_node);
event_p = (EVENT *)ys_dll_get_data(walk_node);
// Only remove events not marked R_NODESTROY (engine events)
if (!(event_p->code & R_NODESTROY)) {
// Only remove events not marked NODESTROY (engine events)
if (!(event_p->code & NODESTROY)) {
// Remove any events chained off this one */
for (chain_walk = event_p->chain; chain_walk != NULL; chain_walk = next_chain) {
next_chain = chain_walk->chain;
@ -508,20 +508,20 @@ int Events::clearList() {
}
}
return R_SUCCESS;
return SUCCESS;
}
// Removes all events from the list (even R_NODESTROY)
// Removes all events from the list (even NODESTROY)
int Events::freeList() {
YS_DL_NODE *walk_node;
YS_DL_NODE *next_node;
R_EVENT *chain_walk;
R_EVENT *next_chain;
R_EVENT *event_p;
EVENT *chain_walk;
EVENT *next_chain;
EVENT *event_p;
// Walk down event list
for (walk_node = ys_dll_head(_eventList); walk_node != NULL; walk_node = next_node) {
event_p = (R_EVENT *)ys_dll_get_data(walk_node);
event_p = (EVENT *)ys_dll_get_data(walk_node);
// Remove any events chained off current node
for (chain_walk = event_p->chain; chain_walk != NULL; chain_walk = next_chain) {
next_chain = chain_walk->chain;
@ -533,29 +533,29 @@ int Events::freeList() {
ys_dll_delete(walk_node);
}
return R_SUCCESS;
return SUCCESS;
}
// Walks down the event list, updating event times by 'msec'.
int Events::processEventTime(long msec) {
YS_DL_NODE *walk_node;
R_EVENT *event_p;
EVENT *event_p;
uint16 event_count = 0;
for (walk_node = ys_dll_head(_eventList); walk_node != NULL; walk_node = ys_dll_next(walk_node)) {
event_p = (R_EVENT *)ys_dll_get_data(walk_node);
event_p = (EVENT *)ys_dll_get_data(walk_node);
event_p->time -= msec;
event_count++;
if (event_p->type == R_IMMEDIATE_EVENT)
if (event_p->type == IMMEDIATE_EVENT)
break;
if (event_count > R_EVENT_WARNINGCOUNT) {
warning("Event list exceeds %u", R_EVENT_WARNINGCOUNT);
if (event_count > EVENT_WARNINGCOUNT) {
warning("Event list exceeds %u", EVENT_WARNINGCOUNT);
}
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -27,36 +27,36 @@
#define SAGA_EVENT_H
namespace Saga {
enum R_EVENT_TYPES {
R_ONESHOT_EVENT,
R_CONTINUOUS_EVENT,
R_INTERVAL_EVENT,
R_IMMEDIATE_EVENT
enum EVENT_TYPES {
ONESHOT_EVENT,
CONTINUOUS_EVENT,
INTERVAL_EVENT,
IMMEDIATE_EVENT
};
enum R_EVENT_FLAGS {
R_SIGNALED = 0x8000,
R_NODESTROY = 0x4000
enum EVENT_FLAGS {
SIGNALED = 0x8000,
NODESTROY = 0x4000
};
enum R_EVENT_CODES {
R_BG_EVENT = 1,
R_ANIM_EVENT,
R_MUSIC_EVENT,
R_VOICE_EVENT,
R_SOUND_EVENT,
R_SCENE_EVENT,
R_TEXT_EVENT,
R_PAL_EVENT,
R_PALANIM_EVENT,
R_TRANSITION_EVENT,
R_INTERFACE_EVENT,
R_CONSOLE_EVENT,
R_ACTOR_EVENT,
R_SCRIPT_EVENT
enum EVENT_CODES {
BG_EVENT = 1,
ANIM_EVENT,
MUSIC_EVENT,
VOICE_EVENT,
SOUND_EVENT,
SCENE_EVENT,
TEXT_EVENT,
PAL_EVENT,
PALANIM_EVENT,
TRANSITION_EVENT,
INTERFACE_EVENT,
CONSOLE_EVENT,
ACTOEVENT,
SCRIPT_EVENT
};
enum R_EVENT_OPS {
enum EVENT_OPS {
// INSTANTANEOUS events
// BG events
EVENT_DISPLAY = 1,
@ -93,12 +93,12 @@ enum R_EVENT_OPS {
EVENT_DISSOLVE_BGMASK = 2
};
enum R_EVENT_PARAMS {
enum EVENT_PARAMS {
NO_SET_PALETTE,
SET_PALETTE
};
struct R_EVENT {
struct EVENT {
unsigned int type;
unsigned int code; // Event operation category & flags
int op; // Event operation
@ -112,18 +112,18 @@ struct R_EVENT {
long duration; // Duration of event
long d_reserved;
R_EVENT *chain; // Event chain (For consecutive events)
R_EVENT() { memset(this, 0, sizeof(*this)); }
EVENT *chain; // Event chain (For consecutive events)
EVENT() { memset(this, 0, sizeof(*this)); }
};
#define R_EVENT_WARNINGCOUNT 1000
#define R_EVENT_MASK 0x00FF
#define EVENT_WARNINGCOUNT 1000
#define EVENT_MASK 0x00FF
enum R_EVENT_STATUSCODE {
R_EVENT_INVALIDCODE = 0,
R_EVENT_DELETE,
R_EVENT_CONTINUE,
R_EVENT_BREAK
enum EVENT_STATUSCODE {
EVENT_INVALIDCODE = 0,
EVENT_DELETE,
EVENT_CONTINUE,
EVENT_BREAK
};
class Events {
@ -133,16 +133,16 @@ class Events {
int handleEvents(long msec);
int clearList();
int freeList();
R_EVENT *queue(R_EVENT *event);
R_EVENT *chain(R_EVENT *eead_event, R_EVENT *add_event);
EVENT *queue(EVENT *event);
EVENT *chain(EVENT *eead_event, EVENT *add_event);
private:
int handleContinuous(R_EVENT * event);
int handleOneShot(R_EVENT * event);
int handleInterval(R_EVENT * event);
int handleImmediate(R_EVENT *event);
int handleContinuous(EVENT * event);
int handleOneShot(EVENT * event);
int handleInterval(EVENT * event);
int handleImmediate(EVENT *event);
int processEventTime(long msec);
int initializeEvent(R_EVENT * event);
int initializeEvent(EVENT * event);
private:
SagaEngine *_vm;

View File

@ -72,13 +72,13 @@ int EXPR_GetError(const char **err_str) {
}
// Parses an interactive expression.
// Sets 'expr_cvar' to the cvar/cfunction identifier input by the user, and
// Sets 'expCVAR' to the cvar/cfunction identifier input by the user, and
// 'rvalue' to the corresponding rvalue ( in an expression ) or argument string
// ( in a function call ).
//
// Memory pointed to by rvalue after return must be explicitly freed by the
// caller.
int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue) {
int EXPR_Parse(const char **exp_pp, int *len, CVAR_P *expCVAR, char **rvalue) {
int i;
int in_char;
int equ_offset = 0;
@ -96,7 +96,7 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
int test_char = '\0';
int have_func = 0;
R_CVAR_P lvalue_cvar;
CVAR_P lvalue_cvar;
expr_p = *exp_pp;
expr_len = strlen(*exp_pp);
@ -113,14 +113,14 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
if ((i == 0) && isdigit(in_char)) {
// First character of a valid identifier cannot be a digit
EXPR_ErrorState = EXERR_ILLEGAL;
return R_FAILURE;
return FAILURE;
}
// If we reach a character that isn't valid in an identifier...
if ((!isalnum(in_char)) && ((in_char != '_'))) {
// then eat remaining whitespace, if any
equ_offset = strspn(scan_p, R_EXPR_WHITESPACE);
equ_offset = strspn(scan_p, EXPR_WHITESPACE);
test_char = scan_p[equ_offset];
// and test for the only valid characters after an identifier
if ((test_char != '=') && (test_char != '\0') && (test_char != '(')) {
@ -129,7 +129,7 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
} else {
EXPR_ErrorState = EXERR_EXPR;
}
return R_FAILURE;
return FAILURE;
}
break;
}
@ -140,7 +140,7 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
if (lvalue_str == NULL) {
EXPR_ErrorState = EXERR_MEM;
return R_FAILURE;
return FAILURE;
}
strncpy(lvalue_str, expr_p, lvalue_len);
@ -150,7 +150,7 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
lvalue_cvar = CVAR_Find(lvalue_str);
if (lvalue_cvar == NULL) {
EXPR_ErrorState = EXERR_NOTFOUND;
return R_FAILURE;
return FAILURE;
}
if (lvalue_str) {
free(lvalue_str);
@ -170,7 +170,7 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
if (rvalue_str != NULL) {
// Successfully read string
//CON_Print("Read function parameters \"%s\".", rvalue_str);
*expr_cvar = lvalue_cvar;
*expCVAR = lvalue_cvar;
*rvalue = rvalue_str;
scan_len = (scan_p - expr_p);
@ -179,26 +179,26 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
*len -= scan_len;
EXPR_ErrorState = EXERR_NONE;
return R_SUCCESS;
return SUCCESS;
} else {
EXPR_ErrorState = EXERR_PAREN;
return R_FAILURE;
return FAILURE;
}
} else {
EXPR_ErrorState = EXERR_NOTFUNC;
return R_FAILURE;
return FAILURE;
}
}
// Eat more whitespace
rvalue_offset = strspn(scan_p, R_EXPR_WHITESPACE);
rvalue_offset = strspn(scan_p, EXPR_WHITESPACE);
if (rvalue_offset + i == expr_len) {
// Only found single lvalue
*expr_cvar = lvalue_cvar;
*expCVAR = lvalue_cvar;
*exp_pp = scan_p;
*len -= scan_len;
return R_SUCCESS;
return SUCCESS;
}
scan_p += rvalue_offset;
@ -217,7 +217,7 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
break;
} else {
EXPR_ErrorState = EXERR_LITERAL;
return R_FAILURE;
return FAILURE;
}
break;
@ -238,16 +238,16 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
break;
} else {
EXPR_ErrorState = EXERR_STRING;
return R_FAILURE;
return FAILURE;
}
} else {
EXPR_ErrorState = EXERR_NUMBER;
return R_FAILURE;
return FAILURE;
}
break;
}
*expr_cvar = lvalue_cvar;
*expCVAR = lvalue_cvar;
*rvalue = rvalue_str;
scan_len = (scan_p - expr_p);
@ -256,7 +256,7 @@ int EXPR_Parse(const char **exp_pp, int *len, R_CVAR_P *expr_cvar, char **rvalue
*len -= scan_len;
EXPR_ErrorState = EXERR_NONE;
return R_SUCCESS;
return SUCCESS;
}
@ -331,7 +331,7 @@ int EXPR_GetArgs(char *cmd_str, char ***expr_argv) {
*expr_argv = (char **)malloc((expr_argc + 1) * sizeof(**expr_argv));
if (expr_argv == NULL) {
return R_FAILURE;
return FAILURE;
}
EXPR_ParseArgs(cmd_str, *expr_argv);

View File

@ -28,7 +28,7 @@
namespace Saga {
#define R_EXPR_WHITESPACE "\t\n "
#define EXPR_WHITESPACE " \n "
int EXPR_ParseArgs(char *cmd_str, char **argv);

View File

@ -33,12 +33,12 @@
namespace Saga {
Font::Font(SagaEngine *vm) : _vm(vm), _initialized(false) {
R_GAME_FONTDESC *gamefonts;
GAME_FONTDESC *gamefonts;
int i;
// Load font module resource context
if (GAME_GetFileContext(&_fontContext,
R_GAME_RESOURCEFILE, 0) != R_SUCCESS) {
GAME_RESOURCEFILE, 0) != SUCCESS) {
error("Font::Font(): Couldn't get resource context.");
}
@ -47,7 +47,7 @@ Font::Font(SagaEngine *vm) : _vm(vm), _initialized(false) {
assert(_nFonts > 0);
_fonts = (R_FONT **)malloc(_nFonts * sizeof *_fonts);
_fonts = (FONT **)malloc(_nFonts * sizeof *_fonts);
if (_fonts == NULL) {
error("Font::Font(): Memory allocation failure.");
}
@ -64,7 +64,7 @@ Font::~Font(void) {
debug(0, "Font::~Font(): Freeing fonts.");
/*
for ( i = 0 ; i < R_FONT_COUNT ; i ++ ) {
for ( i = 0 ; i < FONT_COUNT ; i ++ ) {
if ( _fonts[i] != NULL ) {
if ( _fonts[i]->normal_loaded ) {
free( _fonts[i]->normal->font_free_p );
@ -83,35 +83,35 @@ Font::~Font(void) {
}
int Font::loadFont(uint32 font_rn, int font_id) {
R_FONT_HEADER fh;
R_FONT *font;
R_FONT_STYLE *normal_font;
FONT_HEADER fh;
FONT *font;
FONT_STYLE *normal_font;
byte *fontres_p;
size_t fontres_len;
int nbits;
int c;
if ((font_id < 0) || (font_id >= _nFonts)) {
return R_FAILURE;
return FAILURE;
}
// Load font resource
if (RSC_LoadResource(_fontContext, font_rn, &fontres_p, &fontres_len) != R_SUCCESS) {
if (RSC_LoadResource(_fontContext, font_rn, &fontres_p, &fontres_len) != SUCCESS) {
error("Font::loadFont(): Couldn't load font resource.");
return R_FAILURE;
return FAILURE;
}
if (fontres_len < R_FONT_DESCSIZE) {
if (fontres_len < FONT_DESCSIZE) {
error("Font::loadFont(): Invalid font length.");
}
MemoryReadStream readS(fontres_p, fontres_len);
// Create new font structure
font = (R_FONT *)malloc(sizeof *font);
font = (FONT *)malloc(sizeof *font);
if (font == NULL) {
error("Font:loadFont(): Memory allocation error.");
return R_MEM;
return MEM;
}
// Read font header
@ -121,16 +121,16 @@ int Font::loadFont(uint32 font_rn, int font_id) {
debug(1, "Font::loadFont(): Reading font resource...");
debug(2, "Character width:\t%d", fh.c_width);
debug(2, "Character height:\t%d", fh.c_height);
debug(2, "Row padding:\t%d", fh.row_length);
debug(2, "Character width: %d", fh.c_width);
debug(2, "Character height: %d", fh.c_height);
debug(2, "Row padding: %d", fh.row_length);
// Create normal font style
normal_font = (R_FONT_STYLE *)malloc(sizeof *normal_font);
normal_font = (FONT_STYLE *)malloc(sizeof *normal_font);
if (normal_font == NULL) {
error("Font::loadFont(): Memory allocation error.");
free(font);
return R_MEM;
return MEM;
}
normal_font->font_free_p = fontres_p;
@ -138,29 +138,29 @@ int Font::loadFont(uint32 font_rn, int font_id) {
normal_font->hdr.c_width = fh.c_width;
normal_font->hdr.row_length = fh.row_length;
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
for (c = 0; c < FONT_CHARCOUNT; c++) {
normal_font->fce[c].index = readS.readUint16LE();
}
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
for (c = 0; c < FONT_CHARCOUNT; c++) {
nbits = normal_font->fce[c].width = readS.readByte();
normal_font->fce[c].byte_width = getByteLen(nbits);
}
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
for (c = 0; c < FONT_CHARCOUNT; c++) {
normal_font->fce[c].flag = readS.readByte();
}
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
for (c = 0; c < FONT_CHARCOUNT; c++) {
normal_font->fce[c].tracking = readS.readByte();
}
if (readS.pos() != R_FONT_DESCSIZE) {
if (readS.pos() != FONT_DESCSIZE) {
warning("Invalid font resource size.");
return R_FAILURE;
return FAILURE;
}
normal_font->font_p = fontres_p + R_FONT_DESCSIZE;
normal_font->font_p = fontres_p + FONT_DESCSIZE;
font->normal = normal_font;
font->normal_loaded = 1;
@ -172,19 +172,19 @@ int Font::loadFont(uint32 font_rn, int font_id) {
// Set font data
_fonts[font_id] = font;
return R_SUCCESS;
return SUCCESS;
}
int Font::getHeight(int font_id) {
R_FONT *font;
FONT *font;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
if ((font_id < 0) || (font_id >= _nFonts) || (_fonts[font_id] == NULL)) {
error("Font::getHeight(): Invalid font id.");
return R_FAILURE;
return FAILURE;
}
font = _fonts[font_id];
@ -192,8 +192,8 @@ int Font::getHeight(int font_id) {
return font->normal->hdr.c_height;
}
R_FONT_STYLE *Font::createOutline(R_FONT_STYLE *src_font) {
R_FONT_STYLE *new_font;
FONT_STYLE *Font::createOutline(FONT_STYLE *src_font) {
FONT_STYLE *new_font;
unsigned char *new_font_data;
size_t new_font_data_len;
int s_width = src_font->hdr.c_width;
@ -214,7 +214,7 @@ R_FONT_STYLE *Font::createOutline(R_FONT_STYLE *src_font) {
unsigned char c_rep;
// Create new font style structure
new_font = (R_FONT_STYLE *)malloc(sizeof *new_font);
new_font = (FONT_STYLE *)malloc(sizeof *new_font);
if (new_font == NULL) {
error("Font::createOutline(): Memory allocation error.");
@ -224,11 +224,11 @@ R_FONT_STYLE *Font::createOutline(R_FONT_STYLE *src_font) {
memset(new_font, 0, sizeof *new_font);
// Populate new font style character data
for (i = 0; i < R_FONT_CHARCOUNT; i++) {
for (i = 0; i < FONT_CHARCOUNT; i++) {
new_byte_width = 0;
old_byte_width = 0;
index = src_font->fce[i].index;
if ((index > 0) || (i == R_FONT_FIRSTCHAR)) {
if ((index > 0) || (i == FONT_FIRSTCHAR)) {
index += index_offset;
}
@ -271,7 +271,7 @@ R_FONT_STYLE *Font::createOutline(R_FONT_STYLE *src_font) {
new_font->font_p = new_font_data;
// Generate outline font representation
for (i = 0; i < R_FONT_CHARCOUNT; i++) {
for (i = 0; i < FONT_CHARCOUNT; i++) {
for (row = 0; row < s_height; row++) {
for (current_byte = 0; current_byte < new_font->fce[i].byte_width; current_byte++) {
base_ptr = new_font->font_p + new_font->fce[i].index + current_byte;
@ -338,19 +338,19 @@ int Font::getByteLen(int num_bits) {
// into account any formatting options specified by 'flags'.
// If 'test_str_ct' is 0, all characters of 'test_str' are counted.
int Font::getStringWidth(int font_id, const char *test_str, size_t test_str_ct, int flags) {
R_FONT *font;
FONT *font;
size_t ct;
int width = 0;
int ch;
const byte *txt_p;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
if ((font_id < 0) || (font_id >= _nFonts) || (_fonts[font_id] == NULL)) {
error("Font::getStringWidth(): Invalid font id.");
return R_FAILURE;
return FAILURE;
}
font = _fonts[font_id];
@ -362,7 +362,7 @@ int Font::getStringWidth(int font_id, const char *test_str, size_t test_str_ct,
ch = *txt_p & 0xFFU;
// Translate character
ch = _charMap[ch];
assert(ch < R_FONT_CHARCOUNT);
assert(ch < FONT_CHARCOUNT);
width += font->normal->fce[ch].tracking;
}
@ -373,19 +373,19 @@ int Font::getStringWidth(int font_id, const char *test_str, size_t test_str_ct,
return width;
}
int Font::draw(int font_id, R_SURFACE *ds, const char *draw_str, size_t draw_str_ct,
int Font::draw(int font_id, SURFACE *ds, const char *draw_str, size_t draw_str_ct,
int text_x, int text_y, int color, int effect_color, int flags) {
R_FONT *font;
FONT *font;
if (!_initialized) {
error("Font::draw(): Font Module not initialized.");
return R_FAILURE;
return FAILURE;
}
if ((font_id < 0) || (font_id >= _nFonts) || (_fonts[font_id] == NULL)) {
error("Font::draw(): Invalid font id.");
return R_FAILURE;
return FAILURE;
}
font = _fonts[font_id];
@ -400,10 +400,10 @@ int Font::draw(int font_id, R_SURFACE *ds, const char *draw_str, size_t draw_str
outFont(font->normal, ds, draw_str, draw_str_ct, text_x, text_y, color);
}
return R_SUCCESS;
return SUCCESS;
}
int Font::outFont(R_FONT_STYLE * draw_font, R_SURFACE * ds, const char *draw_str, size_t draw_str_ct,
int Font::outFont(FONT_STYLE * draw_font, SURFACE * ds, const char *draw_str, size_t draw_str_ct,
int text_x, int text_y, int color) {
const byte *draw_str_p;
byte *c_data_ptr;
@ -424,7 +424,7 @@ int Font::outFont(R_FONT_STYLE * draw_font, R_SURFACE * ds, const char *draw_str
if ((text_x > ds->buf_w) || (text_y > ds->buf_h)) {
// Output string can't be visible
return R_SUCCESS;
return SUCCESS;
}
draw_str_p = (const byte *) draw_str;
@ -437,16 +437,16 @@ int Font::outFont(R_FONT_STYLE * draw_font, R_SURFACE * ds, const char *draw_str
// Translate character
c_code = _charMap[c_code];
assert(c_code < R_FONT_CHARCOUNT);
assert(c_code < FONT_CHARCOUNT);
// Check if character is defined
if ((draw_font->fce[c_code].index == 0) && (c_code != R_FONT_FIRSTCHAR)) {
#if R_FONT_SHOWUNDEFINED
if (c_code == R_FONT_CH_SPACE) {
if ((draw_font->fce[c_code].index == 0) && (c_code != FONT_FIRSTCHAR)) {
#if FONT_SHOWUNDEFINED
if (c_code == FONT_CH_SPACE) {
text_x += draw_font->fce[c_code].tracking;
continue;
}
c_code = R_FONT_CH_QMARK;
c_code = FONT_CH_QMARK;
#else
// Character code is not defined, but advance tracking
// ( Not defined if offset is 0, except for 33 ('!') which
@ -493,7 +493,7 @@ int Font::outFont(R_FONT_STYLE * draw_font, R_SURFACE * ds, const char *draw_str
text_x += draw_font->fce[c_code].tracking;
} // end per-character processing
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -30,21 +30,21 @@
namespace Saga {
#define R_FONT_SHOWUNDEFINED 1 // Define to draw undefined characters * as ?'s
#define FONT_SHOWUNDEFINED 1 // Define to draw undefined characters * as ?'s
// The first defined character (!) is the only one that may
// have a valid offset of '0'
#define R_FONT_FIRSTCHAR 33
#define FONT_FIRSTCHAR 33
#define R_FONT_CH_SPACE 32
#define R_FONT_CH_QMARK 63
#define FONT_CH_SPACE 32
#define FONT_CH_QMARK 63
// Minimum font header size without font data
// (6 + 512 + 256 + 256 + 256 )
#define R_FONT_DESCSIZE 1286
#define FONT_DESCSIZE 1286
#define R_FONT_CHARCOUNT 256
#define R_FONT_CHARMASK 0xFFU
#define FONT_CHARCOUNT 256
#define FONT_CHARMASK 0xFFU
#define SAGA_FONT_HEADER_LEN 6
@ -62,7 +62,7 @@ enum FONT_EFFECT_FLAGS {
FONT_CENTERED = 0x08
};
struct R_FONT_HEADER {
struct FONT_HEADER {
int c_height;
int c_width;
int row_length;
@ -76,21 +76,21 @@ struct FONT_CHAR_ENTRY {
int tracking;
};
struct R_FONT_STYLE {
R_FONT_HEADER hdr;
struct FONT_STYLE {
FONT_HEADER hdr;
FONT_CHAR_ENTRY fce[256];
byte *font_free_p;
byte *font_p;
};
struct R_FONT {
struct FONT {
uint32 font_rn;
int font_id;
int normal_loaded;
R_FONT_STYLE *normal;
FONT_STYLE *normal;
int outline_loaded;
R_FONT_STYLE *outline;
FONT_STYLE *outline;
byte *res_data;
size_t res_len;
@ -100,7 +100,7 @@ class Font {
public:
Font(SagaEngine *vm);
~Font(void);
int draw(int font_id, R_SURFACE *ds, const char *draw_str, size_t draw_str_len,
int draw(int font_id, SURFACE *ds, const char *draw_str, size_t draw_str_len,
int text_x, int text_y, int color, int effect_color, int flags);
int getStringWidth(int font_id, const char *test_str, size_t test_str_ct, int flags);
int getHeight(int font_id);
@ -108,8 +108,8 @@ class Font {
private:
int loadFont(uint32 font_rn, int font_id);
R_FONT_STYLE *createOutline(R_FONT_STYLE * src_font);
int outFont(R_FONT_STYLE *font, R_SURFACE * ds, const char *draw_str, size_t draw_str_ct,
FONT_STYLE *createOutline(FONT_STYLE * src_font);
int outFont(FONT_STYLE *font, SURFACE * ds, const char *draw_str, size_t draw_str_ct,
int text_x, int text_y, int color);
int getByteLen(int num_bits);
@ -117,10 +117,10 @@ class Font {
SagaEngine *_vm;
bool _initialized;
R_RSCFILE_CONTEXT *_fontContext;
RSCFILE_CONTEXT *_fontContext;
int _nFonts;
R_FONT **_fonts;
FONT **_fonts;
};
} // End of namespace Saga

View File

@ -41,126 +41,126 @@ namespace Saga {
// Inherit the Earth - DOS Demo version
R_GAME_FILEDESC ITEDEMO_GameFiles[] = {
{"ITE.RSC", R_GAME_RESOURCEFILE},
{"ITE.DMO", R_GAME_DEMOFILE},
{"SCRIPTS.RSC", R_GAME_SCRIPTFILE},
{"VOICES.RSC", R_GAME_SOUNDFILE | R_GAME_VOICEFILE}
GAME_FILEDESC ITEDEMO_GameFiles[] = {
{"ITE.RSC", GAME_RESOURCEFILE},
{"ITE.DMO", GAME_DEMOFILE},
{"SCRIPTS.RSC", GAME_SCRIPTFILE},
{"VOICES.RSC", GAME_SOUNDFILE | GAME_VOICEFILE}
};
R_GAME_FONTDESC ITEDEMO_GameFonts[] = {
{R_GAME_FONT_SMALL, 0},
{R_GAME_FONT_MEDIUM, 1}
GAME_FONTDESC ITEDEMO_GameFonts[] = {
{GAME_FONT_SMALL, 0},
{GAME_FONT_MEDIUM, 1}
};
R_GAME_SOUNDINFO ITEDEMO_GameSound = {
R_GAME_SOUND_VOC, 0, 0, 0
GAME_SOUNDINFO ITEDEMO_GameSound = {
GAME_SOUND_VOC, 0, 0, 0
};
// Inherit the Earth - win32 Wyrmkeep Demo version
R_GAME_FILEDESC ITEWINDEMO_GameFiles[] = {
{"ITED.RSC", R_GAME_RESOURCEFILE},
{"SCRIPTSD.RSC", R_GAME_SCRIPTFILE},
{"SOUNDSD.RSC", R_GAME_SOUNDFILE},
{"VOICESD.RSC", R_GAME_VOICEFILE}
GAME_FILEDESC ITEWINDEMO_GameFiles[] = {
{"ITED.RSC", GAME_RESOURCEFILE},
{"SCRIPTSD.RSC", GAME_SCRIPTFILE},
{"SOUNDSD.RSC", GAME_SOUNDFILE},
{"VOICESD.RSC", GAME_VOICEFILE}
};
// Inherit the Earth - Diskette version
R_GAME_FILEDESC ITEDISK_GameFiles[] = {
{"ITE.RSC", R_GAME_RESOURCEFILE} ,
{"SCRIPTS.RSC", R_GAME_SCRIPTFILE} ,
{"VOICES.RSC", R_GAME_SOUNDFILE | R_GAME_VOICEFILE}
GAME_FILEDESC ITEDISK_GameFiles[] = {
{"ITE.RSC", GAME_RESOURCEFILE} ,
{"SCRIPTS.RSC", GAME_SCRIPTFILE} ,
{"VOICES.RSC", GAME_SOUNDFILE | GAME_VOICEFILE}
};
R_GAME_FONTDESC ITEDISK_GameFonts[] = {
{R_GAME_FONT_MEDIUM, 0} ,
{R_GAME_FONT_LARGE, 1} ,
{R_GAME_FONT_SMALL, 2}
GAME_FONTDESC ITEDISK_GameFonts[] = {
{GAME_FONT_MEDIUM, 0} ,
{GAME_FONT_LARGE, 1} ,
{GAME_FONT_SMALL, 2}
};
R_GAME_RESOURCEDESC ITE_Resources = {
GAME_RESOURCEDESC ITE_Resources = {
ITE_SCENE_LUT, // Scene lookup table RN
ITE_SCRIPT_LUT, // Script lookup table RN
ITE_COMMAND_PANEL,
ITE_DIALOGUE_PANEL
};
R_GAME_SOUNDINFO ITE_GameSound = {
R_GAME_SOUND_VOC, 0, 0, 0
GAME_SOUNDINFO ITE_GameSound = {
GAME_SOUND_VOC, 0, 0, 0
};
// Inherit the Earth - CD Enhanced version
R_GAME_FILEDESC ITECD_GameFiles[] = {
{"ITE.RSC", R_GAME_RESOURCEFILE},
{"SCRIPTS.RSC", R_GAME_SCRIPTFILE},
{"SOUNDS.RSC", R_GAME_SOUNDFILE},
{"VOICES.RSC", R_GAME_VOICEFILE}
GAME_FILEDESC ITECD_GameFiles[] = {
{"ITE.RSC", GAME_RESOURCEFILE},
{"SCRIPTS.RSC", GAME_SCRIPTFILE},
{"SOUNDS.RSC", GAME_SOUNDFILE},
{"VOICES.RSC", GAME_VOICEFILE}
};
R_GAME_FONTDESC ITECD_GameFonts[] = {
{R_GAME_FONT_MEDIUM, 0},
{R_GAME_FONT_LARGE, 1},
{R_GAME_FONT_SMALL, 2}
GAME_FONTDESC ITECD_GameFonts[] = {
{GAME_FONT_MEDIUM, 0},
{GAME_FONT_LARGE, 1},
{GAME_FONT_SMALL, 2}
};
R_GAME_SOUNDINFO ITECD_GameSound = {
R_GAME_SOUND_PCM,
GAME_SOUNDINFO ITECD_GameSound = {
GAME_SOUND_PCM,
22050,
16,
0
};
// I Have No Mouth and I Must Scream - Demo version
R_GAME_FILEDESC IHNMDEMO_GameFiles[] = {
{"SCREAM.RES", R_GAME_RESOURCEFILE},
{"SCRIPTS.RES", R_GAME_SCRIPTFILE},
{"SFX.RES", R_GAME_SOUNDFILE},
{"VOICESD.RES", R_GAME_VOICEFILE}
GAME_FILEDESC IHNMDEMO_GameFiles[] = {
{"SCREAM.RES", GAME_RESOURCEFILE},
{"SCRIPTS.RES", GAME_SCRIPTFILE},
{"SFX.RES", GAME_SOUNDFILE},
{"VOICESD.RES", GAME_VOICEFILE}
};
// I Have No Mouth and I Must Scream - Retail CD version
R_GAME_FILEDESC IHNMCD_GameFiles[] = {
{"MUSICFM.RES", R_GAME_MUSICFILE},
{"MUSICGM.RES", R_GAME_MUSICFILE},
{"SCREAM.RES", R_GAME_RESOURCEFILE},
{"SCRIPTS.RES", R_GAME_SCRIPTFILE},
{"SFX.RES", R_GAME_SOUNDFILE},
{"VOICES1.RES", R_GAME_VOICEFILE},
{"VOICES2.RES", R_GAME_VOICEFILE},
{"VOICES3.RES", R_GAME_VOICEFILE},
{"VOICES4.RES", R_GAME_VOICEFILE},
{"VOICES5.RES", R_GAME_VOICEFILE},
{"VOICES6.RES", R_GAME_VOICEFILE},
{"VOICESS.RES", R_GAME_VOICEFILE}
GAME_FILEDESC IHNMCD_GameFiles[] = {
{"MUSICFM.RES", GAME_MUSICFILE},
{"MUSICGM.RES", GAME_MUSICFILE},
{"SCREAM.RES", GAME_RESOURCEFILE},
{"SCRIPTS.RES", GAME_SCRIPTFILE},
{"SFX.RES", GAME_SOUNDFILE},
{"VOICES1.RES", GAME_VOICEFILE},
{"VOICES2.RES", GAME_VOICEFILE},
{"VOICES3.RES", GAME_VOICEFILE},
{"VOICES4.RES", GAME_VOICEFILE},
{"VOICES5.RES", GAME_VOICEFILE},
{"VOICES6.RES", GAME_VOICEFILE},
{"VOICESS.RES", GAME_VOICEFILE}
};
R_GAME_FONTDESC IHNMCD_GameFonts[] = {
{R_GAME_FONT_MEDIUM, 2},
{R_GAME_FONT_LARGE, 3},
{R_GAME_FONT_SMALL, 4},
{R_GAME_FONT_SMALL2, 5},
{R_GAME_FONT_MEDIUM2, 6},
{R_GAME_FONT_LARGE2, 7},
{R_GAME_FONT_LARGE3, 8}
GAME_FONTDESC IHNMCD_GameFonts[] = {
{GAME_FONT_MEDIUM, 2},
{GAME_FONT_LARGE, 3},
{GAME_FONT_SMALL, 4},
{GAME_FONT_SMALL2, 5},
{GAME_FONT_MEDIUM2, 6},
{GAME_FONT_LARGE2, 7},
{GAME_FONT_LARGE3, 8}
};
R_GAME_RESOURCEDESC IHNM_Resources = {
GAME_RESOURCEDESC IHNM_Resources = {
IHNM_SCENE_LUT, // Scene lookup table RN
IHNM_SCRIPT_LUT, // Script lookup table RN
IHNM_COMMAND_PANEL,
IHNM_DIALOGUE_PANEL
};
R_GAME_SOUNDINFO IHNM_GameSound = {
R_GAME_SOUND_WAV, 0, 0, 0
GAME_SOUNDINFO IHNM_GameSound = {
GAME_SOUND_WAV, 0, 0, 0
};
R_GAMEDESC GameDescs[] = {
GAMEDESC GameDescs[] = {
// Inherit the earth - DOS Demo version
{
"ite-demo",
GID_ITE,
R_GAME_ITE_DEMO, // Game id
GAME_ITE_DEMO, // Game id
"Inherit the Earth (DOS Demo)", // Game title
320, 200, // Logical resolution
137, // Scene viewport height
@ -178,7 +178,7 @@ R_GAMEDESC GameDescs[] = {
{
"ite-demo-win",
GID_ITE,
R_GAME_ITE_WINDEMO,
GAME_ITE_WINDEMO,
"Inherit the Earth (Win32 Demo)",
320, 200,
137,
@ -197,7 +197,7 @@ R_GAMEDESC GameDescs[] = {
{
"itecd",
GID_ITE,
R_GAME_ITE_CD,
GAME_ITE_CD,
"Inherit the Earth (DOS CD Version)",
320, 200,
137,
@ -215,7 +215,7 @@ R_GAMEDESC GameDescs[] = {
{
"ite",
GID_ITE,
R_GAME_ITE_DISK,
GAME_ITE_DISK,
"Inherit the Earth (DOS)",
320, 200,
137,
@ -233,7 +233,7 @@ R_GAMEDESC GameDescs[] = {
{
"ihnm-demo",
GID_IHNM,
R_GAME_IHNM_DEMO,
GAME_IHNM_DEMO,
"I Have No Mouth and I Must Scream (DOS Demo)",
640, 480,
304,
@ -251,7 +251,7 @@ R_GAMEDESC GameDescs[] = {
{
"ihnm",
GID_IHNM,
R_GAME_IHNM_CD,
GAME_IHNM_CD,
"I Have No Mouth and I Must Scream (DOS)",
640, 480,
304,
@ -266,48 +266,48 @@ R_GAMEDESC GameDescs[] = {
}
};
static R_GAMEMODULE GameModule;
static GAMEMODULE GameModule;
int GAME_Register() {
return R_SUCCESS;
return SUCCESS;
// Register "g_language" cfg cvar
strncpy(GameModule.game_language, "us", R_MAXPATH);
strncpy(GameModule.game_language, "us", MAXPATH);
if (CVAR_Register_S(GameModule.game_language, "g_language",
NULL, R_CVAR_CFG, R_GAME_LANGSTR_LIMIT) != R_SUCCESS) {
return R_FAILURE;
NULL, CVAR_CFG, GAME_LANGSTR_LIMIT) != SUCCESS) {
return FAILURE;
}
// Register "g_skipintro" cfg cvar
if (CVAR_Register_I(&GameModule.g_skipintro, "g_skipintro", NULL, R_CVAR_CFG, 0, 1) != R_SUCCESS) {
return R_FAILURE;
if (CVAR_Register_I(&GameModule.g_skipintro, "g_skipintro", NULL, CVAR_CFG, 0, 1) != SUCCESS) {
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
int GAME_Init() {
uint16 game_n;
if (DetectGame(&game_n) != R_SUCCESS) {
if (DetectGame(&game_n) != SUCCESS) {
warning("No valid games were found in the specified directory.");
return R_FAILURE;
return FAILURE;
}
if (LoadGame(game_n) != R_SUCCESS) {
if (LoadGame(game_n) != SUCCESS) {
warning("Error loading game resource files.");
return R_FAILURE;
return FAILURE;
}
// Load dialogue file
LoadLanguage();
return R_SUCCESS;
return SUCCESS;
}
int LoadLanguage() {
char lang_file[R_MAXPATH];
char lang_file[MAXPATH];
uint16 game_n;
File test_file;
@ -315,22 +315,22 @@ int LoadLanguage() {
game_n = GameModule.game_number;
if (GameDescs[game_n].gd_game_type == GID_ITE) {
snprintf(lang_file, R_MAXPATH, "%s%s.%s", R_GAME_ITE_LANG_PREFIX, GameModule.game_language, R_GAME_LANG_EXT);
snprintf(lang_file, MAXPATH, "%s%s.%s", GAME_ITE_LANG_PREFIX, GameModule.game_language, GAME_LANG_EXT);
if (!test_file.open(lang_file)) {
debug(0, "Couldn't open language file %s. Using default (US English)", lang_file);
return R_SUCCESS;
return SUCCESS;
}
test_file.close();
if (_vm->_interface->registerLang() != R_SUCCESS) {
if (_vm->_interface->registerLang() != SUCCESS) {
warning("Error registering interface language cvars");
return R_FAILURE;
return FAILURE;
}
if (_vm->_scene->ITEIntroRegisterLang() != R_SUCCESS) {
if (_vm->_scene->ITEIntroRegisterLang() != SUCCESS) {
warning("Error registering intro sequence language cvars");
return R_FAILURE;
return FAILURE;
}
debug(0, "Using language file %s.", lang_file);
@ -340,19 +340,19 @@ int LoadLanguage() {
debug(0, "Language support for this game not implemented.");
}
return R_SUCCESS;
return SUCCESS;
}
int GAME_GetFileContext(R_RSCFILE_CONTEXT ** ctxt_p, uint16 r_type, int param) {
R_RSCFILE_CONTEXT *found_ctxt = NULL;
int GAME_GetFileContext(RSCFILE_CONTEXT ** ctxt_p, uint16 type, int param) {
RSCFILE_CONTEXT *found_ctxt = NULL;
uint16 i;
if (ctxt_p == NULL) {
return R_FAILURE;
return FAILURE;
}
for (i = 0; i < GameModule.gfile_n; i++) {
if (GameModule.gfile_data[i].file_types & r_type) {
if (GameModule.gfile_data[i].file_types & type) {
found_ctxt = GameModule.gfile_data[i].file_ctxt;
}
}
@ -363,7 +363,7 @@ int GAME_GetFileContext(R_RSCFILE_CONTEXT ** ctxt_p, uint16 r_type, int param) {
*ctxt_p = NULL;
}
return R_SUCCESS;
return SUCCESS;
}
DetectedGameList GAME_ProbeGame(const FSList &fslist) {
@ -424,7 +424,7 @@ int DetectGame(uint16 *game_n_p) {
int file_missing = 0;
if (game_n_p == NULL) {
return R_FAILURE;
return FAILURE;
}
for (game_n = 0; game_n < game_count; game_n++) {
@ -448,28 +448,28 @@ int DetectGame(uint16 *game_n_p) {
debug(0, "Found game: %s", GameDescs[game_n].gd_title);
*game_n_p = game_n;
return R_SUCCESS;
return SUCCESS;
}
return R_FAILURE;
return FAILURE;
}
int LoadGame(uint16 game_n) {
R_RSCFILE_CONTEXT *load_ctxt;
RSCFILE_CONTEXT *load_ctxt;
uint16 game_count = ARRAYSIZE(GameDescs);
const char *game_fname;
uint16 game_filect;
uint16 i;
if (game_n >= game_count) {
return R_FAILURE;
return FAILURE;
}
game_filect = GameDescs[game_n].gd_filect;
GameModule.gfile_data = (R_GAME_FILEDATA *)malloc(game_filect * sizeof *GameModule.gfile_data);
GameModule.gfile_data = (GAME_FILEDATA *)malloc(game_filect * sizeof *GameModule.gfile_data);
if (GameModule.gfile_data == NULL) {
return R_MEM;
return MEM;
}
GameModule.gfile_n = game_filect;
@ -478,8 +478,8 @@ int LoadGame(uint16 game_n) {
for (i = 0; i < game_filect; i++) {
load_ctxt = RSC_CreateContext();
game_fname = GameDescs[game_n].gd_filedescs[i].gf_fname;
if (RSC_OpenContext(load_ctxt, game_fname) != R_SUCCESS) {
return R_FAILURE;
if (RSC_OpenContext(load_ctxt, game_fname) != SUCCESS) {
return FAILURE;
}
debug(0, "Opened resource file: %s", game_fname);
@ -497,32 +497,32 @@ int LoadGame(uint16 game_n) {
GameModule.gamedesc = &GameDescs[game_n];
GameModule.game_init = 1;
return R_SUCCESS;
return SUCCESS;
}
int GAME_GetResourceInfo(R_GAME_RESOURCEDESC *rsc_desc) {
int GAME_GetResourceInfo(GAME_RESOURCEDESC *rsc_desc) {
assert(rsc_desc != NULL);
*rsc_desc = *GameModule.gamedesc->gd_resource_desc;
return R_SUCCESS;
return SUCCESS;
}
int GAME_GetSoundInfo(R_GAME_SOUNDINFO *snd_info) {
int GAME_GetSoundInfo(GAME_SOUNDINFO *snd_info) {
assert(snd_info != NULL);
*snd_info = *GameModule.gamedesc->gd_soundinfo;
return R_SUCCESS;
return SUCCESS;
}
int GAME_GetDisplayInfo(R_GAME_DISPLAYINFO *disp_info) {
int GAME_GetDisplayInfo(GAME_DISPLAYINFO *disp_info) {
int game_n;
assert(disp_info != NULL);
if (!GameModule.game_init) {
return R_FAILURE;
return FAILURE;
}
game_n = GameModule.game_number;
@ -531,25 +531,25 @@ int GAME_GetDisplayInfo(R_GAME_DISPLAYINFO *disp_info) {
disp_info->logical_h = GameDescs[game_n].gd_logical_h;
disp_info->scene_h = GameDescs[game_n].gd_scene_h;
return R_SUCCESS;
return SUCCESS;
}
int GAME_GetFontInfo(R_GAME_FONTDESC **gf_desc, int *font_n) {
int GAME_GetFontInfo(GAME_FONTDESC **gf_desc, int *font_n) {
assert((gf_desc != NULL) && (font_n != NULL));
*gf_desc = GameModule.gd_fontdescs;
*font_n = GameModule.gd_fontct;
return R_SUCCESS;
return SUCCESS;
}
int GAME_GetSceneInfo(R_GAME_SCENEDESC *gs_desc) {
int GAME_GetSceneInfo(GAME_SCENEDESC *gs_desc) {
assert(gs_desc != NULL);
gs_desc->first_scene = GameModule.gamedesc->gd_startscene;
gs_desc->scene_lut_rn = GameModule.gamedesc->gd_resource_desc->scene_lut_rn;
return R_SUCCESS;
return SUCCESS;
}
int GAME_GetGame() {

View File

@ -30,22 +30,22 @@
namespace Saga {
#define R_GAME_LANGSTR_LIMIT 3
#define R_GAME_PATH_LIMIT 512
#define GAME_LANGSTR_LIMIT 3
#define GAME_PATH_LIMIT 512
#define R_GAME_ITE_LANG_PREFIX "ite_"
#define R_GAME_LANG_EXT "lng"
#define GAME_ITE_LANG_PREFIX "ite_"
#define GAME_LANG_EXT "lng"
// Script lookup table entry sizes for game verification
#define R_SCR_LUT_ENTRYLEN_ITECD 22
#define R_SCR_LUT_ENTRYLEN_ITEDISK 16
#define SCR_LUT_ENTRYLEN_ITECD 22
#define SCR_LUT_ENTRYLEN_ITEDISK 16
struct R_GAME_FILEDESC {
struct GAME_FILEDESC {
const char *gf_fname;
uint16 gf_type;
};
struct R_GAMEDESC {
struct GAMEDESC {
const char *name;
int gd_game_type;
uint32 gd_game_id;
@ -54,12 +54,12 @@ struct R_GAMEDESC {
int gd_logical_h;
int gd_scene_h;
int gd_startscene;
R_GAME_RESOURCEDESC *gd_resource_desc;
GAME_RESOURCEDESC *gd_resource_desc;
int gd_filect;
R_GAME_FILEDESC *gd_filedescs;
GAME_FILEDESC *gd_filedescs;
int gd_fontct;
R_GAME_FONTDESC *gd_fontdescs;
R_GAME_SOUNDINFO *gd_soundinfo;
GAME_FONTDESC *gd_fontdescs;
GAME_SOUNDINFO *gd_soundinfo;
uint32 features;
GameSettings toGameSettings() const {
@ -68,22 +68,22 @@ struct R_GAMEDESC {
}
};
struct R_GAME_FILEDATA {
R_RSCFILE_CONTEXT *file_ctxt;
struct GAME_FILEDATA {
RSCFILE_CONTEXT *file_ctxt;
uint16 file_types;
uint16 file_flags;
};
struct R_GAMEMODULE {
struct GAMEMODULE {
int game_init;
int game_number;
R_GAMEDESC *gamedesc;
GAMEDESC *gamedesc;
int g_skipintro;
char game_language[R_GAME_LANGSTR_LIMIT];
char game_language[GAME_LANGSTR_LIMIT];
uint16 gfile_n;
R_GAME_FILEDATA *gfile_data;
GAME_FILEDATA *gfile_data;
uint16 gd_fontct;
R_GAME_FONTDESC *gd_fontdescs;
GAME_FONTDESC *gd_fontdescs;
int err_n;
const char *err_str;
};

View File

@ -30,64 +30,64 @@
namespace Saga {
enum R_GAME_IDS {
R_GAME_ITE_DEMO = 0,
R_GAME_ITE_DISK = 1,
R_GAME_ITE_CD = 2,
R_GAME_IHNM_DEMO = 3,
R_GAME_IHNM_CD = 4,
R_GAME_ITE_WINDEMO = 5
enum GAME_IDS {
GAME_ITE_DEMO = 0,
GAME_ITE_DISK = 1,
GAME_ITE_CD = 2,
GAME_IHNM_DEMO = 3,
GAME_IHNM_CD = 4,
GAME_ITE_WINDEMO = 5
};
enum R_GAME_FILETYPES {
R_GAME_RESOURCEFILE = 0x01,
R_GAME_SCRIPTFILE = 0x02,
R_GAME_SOUNDFILE = 0x04,
R_GAME_VOICEFILE = 0x08,
R_GAME_DEMOFILE = 0x10,
R_GAME_MUSICFILE = 0x20
enum GAME_FILETYPES {
GAME_RESOURCEFILE = 0x01,
GAME_SCRIPTFILE = 0x02,
GAME_SOUNDFILE = 0x04,
GAME_VOICEFILE = 0x08,
GAME_DEMOFILE = 0x10,
GAME_MUSICFILE = 0x20
};
enum R_GAME_SOUNDINFO_TYPES {
R_GAME_SOUND_PCM = 0,
R_GAME_SOUND_VOC,
R_GAME_SOUND_WAV
enum GAME_SOUNDINFO_TYPES {
GAME_SOUND_PCM = 0,
GAME_SOUND_VOC,
GAME_SOUND_WAV
};
enum R_GAME_FONT_IDS {
R_GAME_FONT_SMALL = 0,
R_GAME_FONT_MEDIUM,
R_GAME_FONT_LARGE,
R_GAME_FONT_SMALL2,
R_GAME_FONT_MEDIUM2,
R_GAME_FONT_LARGE2,
R_GAME_FONT_LARGE3
enum GAME_FONT_IDS {
GAME_FONT_SMALL = 0,
GAME_FONT_MEDIUM,
GAME_FONT_LARGE,
GAME_FONT_SMALL2,
GAME_FONT_MEDIUM2,
GAME_FONT_LARGE2,
GAME_FONT_LARGE3
};
struct R_GAME_DISPLAYINFO {
struct GAME_DISPLAYINFO {
int logical_w;
int logical_h;
int scene_h;
};
struct R_GAME_SOUNDINFO {
struct GAME_SOUNDINFO {
int res_type;
long freq;
int sample_size;
int stereo;
};
struct R_GAME_FONTDESC {
struct GAME_FONTDESC {
uint16 font_id;
uint32 font_rn;
};
struct R_GAME_SCENEDESC {
struct GAME_SCENEDESC {
uint32 scene_lut_rn;
uint32 first_scene;
};
struct R_GAME_RESOURCEDESC {
struct GAME_RESOURCEDESC {
uint32 scene_lut_rn;
uint32 script_lut_rn;
uint32 command_panel_rn;
@ -96,12 +96,12 @@ struct R_GAME_RESOURCEDESC {
int GAME_Register();
int GAME_Init();
int GAME_GetFileContext(R_RSCFILE_CONTEXT **ctxt_p, uint16 r_type, int param);
int GAME_GetFontInfo(R_GAME_FONTDESC **, int *);
int GAME_GetResourceInfo(R_GAME_RESOURCEDESC *);
int GAME_GetSoundInfo(R_GAME_SOUNDINFO *);
int GAME_GetDisplayInfo(R_GAME_DISPLAYINFO *);
int GAME_GetSceneInfo(R_GAME_SCENEDESC *);
int GAME_GetFileContext(RSCFILE_CONTEXT **ctxt_p, uint16 type, int param);
int GAME_GetFontInfo(GAME_FONTDESC **, int *);
int GAME_GetResourceInfo(GAME_RESOURCEDESC *);
int GAME_GetSoundInfo(GAME_SOUNDINFO *);
int GAME_GetDisplayInfo(GAME_DISPLAYINFO *);
int GAME_GetSceneInfo(GAME_SCENEDESC *);
int GAME_GetGame();
int GAME_GetGameType();
GameList GAME_GameList();

View File

@ -36,25 +36,25 @@
namespace Saga {
Gfx::Gfx(OSystem *system, int width, int height) {
R_SURFACE r_back_buf;
SURFACE back_buf;
_system = system;
_system->initSize(width, height);
debug(0, "Init screen %dx%d", width, height);
// Convert surface data to R surface data
r_back_buf.buf = (byte *)calloc(1, width * height);
r_back_buf.buf_w = width;
r_back_buf.buf_h = height;
r_back_buf.buf_pitch = width;
back_buf.buf = (byte *)calloc(1, width * height);
back_buf.buf_w = width;
back_buf.buf_h = height;
back_buf.buf_pitch = width;
r_back_buf.clip_rect.left = 0;
r_back_buf.clip_rect.top = 0;
r_back_buf.clip_rect.right = width;
r_back_buf.clip_rect.bottom = height;
back_buf.clip_rect.left = 0;
back_buf.clip_rect.top = 0;
back_buf.clip_rect.right = width;
back_buf.clip_rect.bottom = height;
// Set module data
_back_buf = r_back_buf;
_back_buf = back_buf;
_init = 1;
_white_index = -1;
_black_index = -1;
@ -70,7 +70,7 @@ Gfx::Gfx(OSystem *system, int width, int height) {
}
*/
int Gfx::drawPalette(R_SURFACE *dst_s) {
int Gfx::drawPalette(SURFACE *dst_s) {
int x;
int y;
int color = 0;
@ -93,7 +93,7 @@ int Gfx::drawPalette(R_SURFACE *dst_s) {
return 0;
}
int Gfx::simpleBlit(R_SURFACE *dst_s, R_SURFACE *src_s) {
int Gfx::simpleBlit(SURFACE *dst_s, SURFACE *src_s) {
byte *src_p;
byte *dst_p;
int y, w, p;
@ -115,7 +115,7 @@ int Gfx::simpleBlit(R_SURFACE *dst_s, R_SURFACE *src_s) {
src_p += p;
}
return R_SUCCESS;
return SUCCESS;
}
// TODO: I've fixed at least one clipping bug here, but I have a feeling there
@ -129,8 +129,8 @@ int Gfx::simpleBlit(R_SURFACE *dst_s, R_SURFACE *src_s) {
// origin.
// - If src_rect is NULL, the entire buffer is copied./
// - The surface must match the logical dimensions of the buffer exactly.
// - Returns R_FAILURE on error
int Gfx::bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h,
// - Returns FAILURE on error
int Gfx::bufToSurface(SURFACE *ds, const byte *src, int src_w, int src_h,
Rect *src_rect, Point *dst_pt) {
const byte *read_p;
byte *write_p;
@ -160,7 +160,7 @@ int Gfx::bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h,
if (s.width() <= 0 || s.height() <= 0) {
// Empty or negative region
return R_FAILURE;
return FAILURE;
}
// Get destination origin and clip rectangle
@ -197,7 +197,7 @@ int Gfx::bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h,
if (d_x < clip.left) {
if (d_x <= (-src_draw_w)) {
// dst rect completely off left edge
return R_SUCCESS;
return SUCCESS;
}
src_off_x += (clip.left - d_x);
@ -211,7 +211,7 @@ int Gfx::bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h,
if (d_y < clip.top) {
if (d_y >= (-src_draw_h)) {
// dst rect completely off top edge
return R_SUCCESS;
return SUCCESS;
}
src_off_y += (clip.top - d_y);
@ -224,7 +224,7 @@ int Gfx::bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h,
if (d_x >= clip.right) {
// dst rect completely off right edge
return R_SUCCESS;
return SUCCESS;
}
if ((d_x + src_draw_w) > clip.right) {
@ -235,7 +235,7 @@ int Gfx::bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h,
if (d_y > clip.bottom) {
// dst rect completely off bottom edge
return R_SUCCESS;
return SUCCESS;
}
if ((d_y + src_draw_h) > clip.bottom) {
@ -253,7 +253,7 @@ int Gfx::bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h,
read_p += src_w;
}
return R_SUCCESS;
return SUCCESS;
}
int Gfx::bufToBuffer(byte *dst_buf, int dst_w, int dst_h, const byte *src,
@ -287,7 +287,7 @@ int Gfx::bufToBuffer(byte *dst_buf, int dst_w, int dst_h, const byte *src,
if (s.width() <= 0 || s.height() <= 0) {
// Empty or negative region
return R_FAILURE;
return FAILURE;
}
// Get destination origin and clip rectangle
@ -317,7 +317,7 @@ int Gfx::bufToBuffer(byte *dst_buf, int dst_w, int dst_h, const byte *src,
if (d_x < clip.left) {
if (d_x <= (-src_draw_w)) {
// dst rect completely off left edge
return R_SUCCESS;
return SUCCESS;
}
src_off_x += (clip.left - d_x);
@ -331,7 +331,7 @@ int Gfx::bufToBuffer(byte *dst_buf, int dst_w, int dst_h, const byte *src,
if (d_y < clip.top) {
if (d_y >= (-src_draw_h)) {
// dst rect completely off top edge
return R_SUCCESS;
return SUCCESS;
}
src_off_y += (clip.top - d_y);
@ -344,7 +344,7 @@ int Gfx::bufToBuffer(byte *dst_buf, int dst_w, int dst_h, const byte *src,
if (d_x >= clip.right) {
// dst rect completely off right edge
return R_SUCCESS;
return SUCCESS;
}
if ((d_x + src_draw_w) > clip.right) {
@ -355,7 +355,7 @@ int Gfx::bufToBuffer(byte *dst_buf, int dst_w, int dst_h, const byte *src,
if (d_y >= clip.bottom) {
// dst rect completely off bottom edge
return R_SUCCESS;
return SUCCESS;
}
if ((d_y + src_draw_h) > clip.bottom) {
@ -373,12 +373,12 @@ int Gfx::bufToBuffer(byte *dst_buf, int dst_w, int dst_h, const byte *src,
read_p += src_w;
}
return R_SUCCESS;
return SUCCESS;
}
// Fills a rectangle in the surface ds from point 'p1' to point 'p2' using
// the specified color.
int Gfx::drawRect(R_SURFACE *ds, Rect *dst_rect, int color) {
int Gfx::drawRect(SURFACE *ds, Rect *dst_rect, int color) {
byte *write_p;
int w;
@ -396,7 +396,7 @@ int Gfx::drawRect(R_SURFACE *ds, Rect *dst_rect, int color) {
if ((left >= right) || (top >= bottom)) {
// Empty or negative region
return R_FAILURE;
return FAILURE;
}
} else {
left = 0;
@ -415,10 +415,10 @@ int Gfx::drawRect(R_SURFACE *ds, Rect *dst_rect, int color) {
write_p += ds->buf_pitch;
}
return R_SUCCESS;
return SUCCESS;
}
int Gfx::drawFrame(R_SURFACE *ds, const Point *p1, const Point *p2, int color) {
int Gfx::drawFrame(SURFACE *ds, const Point *p1, const Point *p2, int color) {
int left, top, right, bottom;
int min_x;
@ -457,10 +457,10 @@ int Gfx::drawFrame(R_SURFACE *ds, const Point *p1, const Point *p2, int color) {
drawLine(ds, &n_p3, &n_p4, color);
drawLine(ds, &n_p4, &n_p1, color);
return R_SUCCESS;
return SUCCESS;
}
int Gfx::drawPolyLine(R_SURFACE *ds, const Point *pts, int pt_ct, int draw_color) {
int Gfx::drawPolyLine(SURFACE *ds, const Point *pts, int pt_ct, int draw_color) {
const Point *first_pt = pts;
int last_i = 1;
int i;
@ -468,7 +468,7 @@ int Gfx::drawPolyLine(R_SURFACE *ds, const Point *pts, int pt_ct, int draw_color
assert((ds != NULL) & (pts != NULL));
if (pt_ct < 3) {
return R_FAILURE;
return FAILURE;
}
for (i = 1; i < pt_ct; i++) {
@ -478,17 +478,17 @@ int Gfx::drawPolyLine(R_SURFACE *ds, const Point *pts, int pt_ct, int draw_color
drawLine(ds, &pts[last_i], first_pt, draw_color);
return R_SUCCESS;
return SUCCESS;
}
int Gfx::getClipInfo(R_CLIPINFO *clipinfo) {
int Gfx::getClipInfo(CLIPINFO *clipinfo) {
Common::Rect s;
int d_x, d_y;
Common::Rect clip;
if (clipinfo == NULL) {
return R_FAILURE;
return FAILURE;
}
if (clipinfo->dst_pt != NULL) {
@ -518,7 +518,7 @@ int Gfx::getClipInfo(R_CLIPINFO *clipinfo) {
if (d_x <= -(clipinfo->draw_w)) {
// dst rect completely off left edge
clipinfo->nodraw = 1;
return R_SUCCESS;
return SUCCESS;
}
clipinfo->src_draw_x += (clip.left - d_x);
@ -531,7 +531,7 @@ int Gfx::getClipInfo(R_CLIPINFO *clipinfo) {
if (d_y <= -(clipinfo->draw_h)) {
// dst rect completely off top edge
clipinfo->nodraw = 1;
return R_SUCCESS;
return SUCCESS;
}
clipinfo->src_draw_y += (clip.top - d_y);
@ -544,7 +544,7 @@ int Gfx::getClipInfo(R_CLIPINFO *clipinfo) {
if (d_x >= clip.right) {
// dst rect completely off right edge
clipinfo->nodraw = 1;
return R_SUCCESS;
return SUCCESS;
}
if ((d_x + clipinfo->draw_w) > clip.right) {
@ -555,17 +555,17 @@ int Gfx::getClipInfo(R_CLIPINFO *clipinfo) {
if (d_y >= clip.bottom) {
// dst rect completely off bottom edge
clipinfo->nodraw = 1;
return R_SUCCESS;
return SUCCESS;
}
if ((d_y + clipinfo->draw_h) > clip.bottom) {
clipinfo->draw_h = clip.bottom - d_y;
}
return R_SUCCESS;
return SUCCESS;
}
int Gfx::clipLine(R_SURFACE *ds, const Point *src_p1, const Point *src_p2,
int Gfx::clipLine(SURFACE *ds, const Point *src_p1, const Point *src_p2,
Point *dst_p1, Point *dst_p2) {
const Point *n_p1;
const Point *n_p2;
@ -637,7 +637,7 @@ int Gfx::clipLine(R_SURFACE *ds, const Point *src_p1, const Point *src_p2,
// Coriolis Group Books, 1997
//
// Performs no clipping
void Gfx::drawLine(R_SURFACE *ds, const Point *p1, const Point *p2, int color) {
void Gfx::drawLine(SURFACE *ds, const Point *p1, const Point *p2, int color) {
byte *write_p;
int clip_result;
int temp;
@ -812,7 +812,7 @@ void Gfx::drawLine(R_SURFACE *ds, const Point *p1, const Point *p2, int color) {
return;
}
R_SURFACE *Gfx::getBackBuffer() {
SURFACE *Gfx::getBackBuffer() {
return &_back_buf;
}
@ -837,7 +837,7 @@ int Gfx::matchColor(unsigned long colormask) {
int best_index = 0;
byte *ppal;
for (i = 0, ppal = _cur_pal; i < R_PAL_ENTRIES; i++, ppal += 4) {
for (i = 0, ppal = _cur_pal; i < PAL_ENTRIES; i++, ppal += 4) {
dr = ppal[0] - red;
dr = ABS(dr);
dg = ppal[1] - green;
@ -846,7 +846,7 @@ int Gfx::matchColor(unsigned long colormask) {
db = ABS(db);
ppal[3] = 0;
color_delta = (long)(dr * R_RED_WEIGHT + dg * R_GREEN_WEIGHT + db * R_BLUE_WEIGHT);
color_delta = (long)(dr * RED_WEIGHT + dg * GREEN_WEIGHT + db * BLUE_WEIGHT);
if (color_delta == 0) {
return i;
@ -861,7 +861,7 @@ int Gfx::matchColor(unsigned long colormask) {
return best_index;
}
int Gfx::setPalette(R_SURFACE *surface, PALENTRY *pal) {
int Gfx::setPalette(SURFACE *surface, PALENTRY *pal) {
byte red;
byte green;
byte blue;
@ -873,7 +873,7 @@ int Gfx::setPalette(R_SURFACE *surface, PALENTRY *pal) {
int i;
byte *ppal;
for (i = 0, ppal = _cur_pal; i < R_PAL_ENTRIES; i++, ppal += 4) {
for (i = 0, ppal = _cur_pal; i < PAL_ENTRIES; i++, ppal += 4) {
red = pal[i].red;
ppal[0] = red;
color_delta = red;
@ -907,25 +907,25 @@ int Gfx::setPalette(R_SURFACE *surface, PALENTRY *pal) {
_white_index = best_windex;
_black_index = best_bindex;
_system->setPalette(_cur_pal, 0, R_PAL_ENTRIES);
_system->setPalette(_cur_pal, 0, PAL_ENTRIES);
return R_SUCCESS;
return SUCCESS;
}
int Gfx::getCurrentPal(PALENTRY *src_pal) {
int i;
byte *ppal;
for (i = 0, ppal = _cur_pal; i < R_PAL_ENTRIES; i++, ppal += 4) {
for (i = 0, ppal = _cur_pal; i < PAL_ENTRIES; i++, ppal += 4) {
src_pal[i].red = ppal[0];
src_pal[i].green = ppal[1];
src_pal[i].blue = ppal[2];
}
return R_SUCCESS;
return SUCCESS;
}
int Gfx::palToBlack(R_SURFACE *surface, PALENTRY *src_pal, double percent) {
int Gfx::palToBlack(SURFACE *surface, PALENTRY *src_pal, double percent) {
int i;
//int fade_max = 255;
int new_entry;
@ -943,7 +943,7 @@ int Gfx::palToBlack(R_SURFACE *surface, PALENTRY *src_pal, double percent) {
fpercent = 1.0 - fpercent;
// Use the correct percentage change per frame for each palette entry
for (i = 0, ppal = _cur_pal; i < R_PAL_ENTRIES; i++, ppal += 4) {
for (i = 0, ppal = _cur_pal; i < PAL_ENTRIES; i++, ppal += 4) {
new_entry = (int)(src_pal[i].red * fpercent);
if (new_entry < 0) {
@ -970,12 +970,12 @@ int Gfx::palToBlack(R_SURFACE *surface, PALENTRY *src_pal, double percent) {
ppal[3] = 0;
}
_system->setPalette(_cur_pal, 0, R_PAL_ENTRIES);
_system->setPalette(_cur_pal, 0, PAL_ENTRIES);
return R_SUCCESS;
return SUCCESS;
}
int Gfx::blackToPal(R_SURFACE *surface, PALENTRY *src_pal, double percent) {
int Gfx::blackToPal(SURFACE *surface, PALENTRY *src_pal, double percent) {
int new_entry;
double fpercent;
int color_delta;
@ -996,7 +996,7 @@ int Gfx::blackToPal(R_SURFACE *surface, PALENTRY *src_pal, double percent) {
fpercent = 1.0 - fpercent;
// Use the correct percentage change per frame for each palette entry
for (i = 0, ppal = _cur_pal; i < R_PAL_ENTRIES; i++, ppal += 4) {
for (i = 0, ppal = _cur_pal; i < PAL_ENTRIES; i++, ppal += 4) {
new_entry = (int)(src_pal[i].red - src_pal[i].red * fpercent);
if (new_entry < 0) {
@ -1025,7 +1025,7 @@ int Gfx::blackToPal(R_SURFACE *surface, PALENTRY *src_pal, double percent) {
// Find the best white and black color indices again
if (percent >= 1.0) {
for (i = 0, ppal = _cur_pal; i < R_PAL_ENTRIES; i++, ppal += 4) {
for (i = 0, ppal = _cur_pal; i < PAL_ENTRIES; i++, ppal += 4) {
color_delta = ppal[0];
color_delta += ppal[1];
color_delta += ppal[2];
@ -1049,9 +1049,9 @@ int Gfx::blackToPal(R_SURFACE *surface, PALENTRY *src_pal, double percent) {
setCursor(best_windex);
}
_system->setPalette(_cur_pal, 0, R_PAL_ENTRIES);
_system->setPalette(_cur_pal, 0, PAL_ENTRIES);
return R_SUCCESS;
return SUCCESS;
}
void Gfx::setCursor(int best_white) {
@ -1059,7 +1059,7 @@ void Gfx::setCursor(int best_white) {
byte keycolor = (best_white == 0) ? 1 : 0;
// Set up the mouse cursor
byte cursor_img[R_CURSOR_W * R_CURSOR_H] = {
byte cursor_img[CURSOR_W * CURSOR_H] = {
0, 0, 0, 255, 0, 0, 0,
0, 0, 0, 255, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
@ -1069,14 +1069,14 @@ void Gfx::setCursor(int best_white) {
0, 0, 0, 255, 0, 0, 0,
};
for (i = 0; i < R_CURSOR_W * R_CURSOR_H; i++) {
for (i = 0; i < CURSOR_W * CURSOR_H; i++) {
if (cursor_img[i] != 0)
cursor_img[i] = best_white;
else
cursor_img[i] = keycolor;
}
_system->setMouseCursor(cursor_img, R_CURSOR_W, R_CURSOR_H, 4, 4, keycolor);
_system->setMouseCursor(cursor_img, CURSOR_W, CURSOR_H, 4, 4, keycolor);
}
bool Gfx::hitTestPoly(const Point *points, unsigned int npoints, const Point& test_point) {

View File

@ -31,7 +31,7 @@ namespace Saga {
using Common::Point;
using Common::Rect;
struct R_CLIPINFO {
struct CLIPINFO {
// input members
const Rect *src_rect;
const Rect *dst_rect;
@ -53,14 +53,14 @@ struct PALENTRY {
byte blue;
};
struct R_COLOR {
struct COLOR {
int red;
int green;
int blue;
int alpha;
};
struct R_SURFACE {
struct SURFACE {
byte *buf;
int buf_w;
int buf_h;
@ -68,54 +68,54 @@ struct R_SURFACE {
Rect clip_rect;
};
#define R_PAL_ENTRIES 256
#define PAL_ENTRIES 256
#define R_RGB_RED 0x00FF0000UL
#define R_RGB_GREEN 0x0000FF00UL
#define R_RGB_BLUE 0x000000FFUL
#define RGB_RED 0x00FF0000UL
#define RGB_GREEN 0x0000FF00UL
#define RGB_BLUE 0x000000FFUL
#define R_CURSOR_W 7
#define R_CURSOR_H 7
#define CURSOR_W 7
#define CURSOR_H 7
#define R_CURSOR_ORIGIN_X 4
#define R_CURSOR_ORIGIN_Y 4
#define CURSOR_ORIGIN_X 4
#define CURSOR_ORIGIN_Y 4
#define R_RED_WEIGHT 0.299
#define R_GREEN_WEIGHT 0.587
#define R_BLUE_WEIGHT 0.114
#define RED_WEIGHT 0.299
#define GREEN_WEIGHT 0.587
#define BLUE_WEIGHT 0.114
class Gfx {
public:
int simpleBlit(R_SURFACE *dst_s, R_SURFACE *src_s);
int drawPalette(R_SURFACE *dst_s);
int bufToSurface(R_SURFACE *ds, const byte *src, int src_w, int src_h, Rect *src_rect, Point *dst_pt);
int simpleBlit(SURFACE *dst_s, SURFACE *src_s);
int drawPalette(SURFACE *dst_s);
int bufToSurface(SURFACE *ds, const byte *src, int src_w, int src_h, Rect *src_rect, Point *dst_pt);
int bufToBuffer(byte * dst_buf, int dst_w, int dst_h, const byte *src,
int src_w, int src_h, Rect *src_rect, Point *dst_pt);
int drawRect(R_SURFACE *ds, Rect *dst_rect, int color);
int drawFrame(R_SURFACE *ds, const Point *p1, const Point *p2, int color);
int drawPolyLine(R_SURFACE *ds, const Point *pts, int pt_ct, int draw_color);
int getClipInfo(R_CLIPINFO *clipinfo);
int clipLine(R_SURFACE *ds, const Point *src_p1, const Point *src_p2, Point *dst_p1, Point *dst_p2);
void drawLine(R_SURFACE * ds, const Point *p1, const Point *p2, int color);
int drawRect(SURFACE *ds, Rect *dst_rect, int color);
int drawFrame(SURFACE *ds, const Point *p1, const Point *p2, int color);
int drawPolyLine(SURFACE *ds, const Point *pts, int pt_ct, int draw_color);
int getClipInfo(CLIPINFO *clipinfo);
int clipLine(SURFACE *ds, const Point *src_p1, const Point *src_p2, Point *dst_p1, Point *dst_p2);
void drawLine(SURFACE * ds, const Point *p1, const Point *p2, int color);
Gfx(OSystem *system, int width, int height);
R_SURFACE *getBackBuffer();
SURFACE *getBackBuffer();
int getWhite();
int getBlack();
int matchColor(unsigned long colormask);
int setPalette(R_SURFACE *surface, PALENTRY *pal);
int setPalette(SURFACE *surface, PALENTRY *pal);
int getCurrentPal(PALENTRY *src_pal);
int palToBlack(R_SURFACE *surface, PALENTRY *src_pal, double percent);
int blackToPal(R_SURFACE *surface, PALENTRY *src_pal, double percent);
int palToBlack(SURFACE *surface, PALENTRY *src_pal, double percent);
int blackToPal(SURFACE *surface, PALENTRY *src_pal, double percent);
bool hitTestPoly(const Point *points, unsigned int npoints, const Point& test_point);
private:
void setCursor(int best_white);
int _init;
R_SURFACE _back_buf;
SURFACE _back_buf;
int _white_index;
int _black_index;
byte _cur_pal[R_PAL_ENTRIES * 4];
byte _cur_pal[PAL_ENTRIES * 4];
OSystem *_system;
};

View File

@ -36,51 +36,51 @@
namespace Saga {
R_SCENE_RESLIST IHNM_IntroMovie1RL[] = {
SCENE_RESLIST IHNM_IntroMovie1RL[] = {
{30, SAGA_BG_IMAGE, 0, 0} ,
{31, SAGA_ANIM_1, 0, 0}
};
R_SCENE_DESC IHNM_IntroMovie1Desc = {
SCENE_DESC IHNM_IntroMovie1Desc = {
0, 0, 0, 0, 0, 0, 0, 0,
IHNM_IntroMovie1RL,
ARRAYSIZE(IHNM_IntroMovie1RL)
};
R_SCENE_RESLIST IHNM_IntroMovie2RL[] = {
SCENE_RESLIST IHNM_IntroMovie2RL[] = {
{32, SAGA_BG_IMAGE, 0, 0} ,
{33, SAGA_ANIM_1, 0, 0}
};
R_SCENE_DESC IHNM_IntroMovie2Desc = {
SCENE_DESC IHNM_IntroMovie2Desc = {
0, 0, 0, 0, 0, 0, 0, 0,
IHNM_IntroMovie2RL,
ARRAYSIZE(IHNM_IntroMovie2RL)
};
R_SCENE_RESLIST IHNM_IntroMovie3RL[] = {
SCENE_RESLIST IHNM_IntroMovie3RL[] = {
{34, SAGA_BG_IMAGE, 0, 0},
{35, SAGA_ANIM_1, 0, 0}
};
R_SCENE_DESC IHNM_IntroMovie3Desc = {
SCENE_DESC IHNM_IntroMovie3Desc = {
0, 0, 0, 0, 0, 0, 0, 0,
IHNM_IntroMovie3RL,
ARRAYSIZE(IHNM_IntroMovie3RL)
};
R_SCENE_RESLIST IHNM_IntroMovie4RL[] = {
SCENE_RESLIST IHNM_IntroMovie4RL[] = {
{1227, SAGA_BG_IMAGE, 0, 0},
{1226, SAGA_ANIM_1, 0, 0}
};
R_SCENE_DESC IHNM_IntroMovie4Desc = {
SCENE_DESC IHNM_IntroMovie4Desc = {
0, 0, 0, 0, 0, 0, 0, 0,
IHNM_IntroMovie4RL,
ARRAYSIZE(IHNM_IntroMovie4RL)
};
R_SCENE_QUEUE IHNM_IntroList[] = {
SCENE_QUEUE IHNM_IntroList[] = {
{0, &IHNM_IntroMovie1Desc, BY_DESC, Scene::SC_IHNMIntroMovieProc1, 0, SCENE_NOFADE},
{0, &IHNM_IntroMovie2Desc, BY_DESC, Scene::SC_IHNMIntroMovieProc2, 0, SCENE_NOFADE},
{0, &IHNM_IntroMovie3Desc, BY_DESC, Scene::SC_IHNMIntroMovieProc3, 0, SCENE_NOFADE},
@ -97,27 +97,27 @@ int Scene::IHNMStartProc() {
_vm->_scene->queueScene(&IHNM_IntroList[i]);
}
return R_SUCCESS;
return SUCCESS;
}
int Scene::SC_IHNMIntroMovieProc1(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_IHNMIntroMovieProc1(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->IHNMIntroMovieProc1(param, scene_info);
}
int Scene::IHNMIntroMovieProc1(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
int Scene::IHNMIntroMovieProc1(int param, SCENE_INFO *scene_info) {
EVENT event;
switch (param) {
case SCENE_BEGIN:
// Background for intro scene is the first frame of the
// intro animation; display it and set the palette
event.type = R_ONESHOT_EVENT;
event.code = R_BG_EVENT;
event.type = ONESHOT_EVENT;
event.code = BG_EVENT;
event.op = EVENT_DISPLAY;
event.param = SET_PALETTE;
event.time = 0;
_vm->_events->queue(&event);
_vm->_anim->setFrameTime(0, R_IHNM_INTRO_FRAMETIME);
_vm->_anim->setFrameTime(0, IHNM_INTRO_FRAMETIME);
_vm->_anim->setFlag(0, ANIM_ENDSCENE);
_vm->_anim->play(0, 0);
break;
@ -128,35 +128,35 @@ int Scene::IHNMIntroMovieProc1(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_IHNMIntroMovieProc2(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_IHNMIntroMovieProc2(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->IHNMIntroMovieProc2(param, scene_info);
}
int Scene::IHNMIntroMovieProc2(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
int Scene::IHNMIntroMovieProc2(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
PALENTRY *pal;
static PALENTRY current_pal[R_PAL_ENTRIES];
static PALENTRY current_pal[PAL_ENTRIES];
switch (param) {
case SCENE_BEGIN:
// Fade to black out of the intro CyberDreams logo anim
_vm->_gfx->getCurrentPal(current_pal);
event.type = R_CONTINUOUS_EVENT;
event.code = R_PAL_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = PAL_EVENT;
event.op = EVENT_PALTOBLACK;
event.time = 0;
event.duration = R_IHNM_PALFADE_TIME;
event.duration = IHNM_PALFADE_TIME;
event.data = current_pal;
q_event = _vm->_events->queue(&event);
// Background for intro scene is the first frame of the
// intro animation; display it but don't set palette
event.type = R_ONESHOT_EVENT;
event.code = R_BG_EVENT;
event.type = ONESHOT_EVENT;
event.code = BG_EVENT;
event.op = EVENT_DISPLAY;
event.param = NO_SET_PALETTE;
event.time = 0;
@ -166,23 +166,23 @@ int Scene::IHNMIntroMovieProc2(int param, R_SCENE_INFO *scene_info) {
// Fade in from black to the scene background palette
_vm->_scene->getBGPal(&pal);
event.type = R_CONTINUOUS_EVENT;
event.code = R_PAL_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = PAL_EVENT;
event.op = EVENT_BLACKTOPAL;
event.time = 0;
event.duration = R_IHNM_PALFADE_TIME;
event.duration = IHNM_PALFADE_TIME;
event.data = pal;
q_event = _vm->_events->chain(q_event, &event);
_vm->_anim->setFlag(0, ANIM_LOOP);
_vm->_anim->play(0, R_IHNM_PALFADE_TIME * 2);
_vm->_anim->play(0, IHNM_PALFADE_TIME * 2);
// Queue end of scene after looping animation for a while
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = R_IHNM_DGLOGO_TIME;
event.time = IHNM_DGLOGO_TIME;
q_event = _vm->_events->chain(q_event, &event);
break;
@ -193,34 +193,34 @@ int Scene::IHNMIntroMovieProc2(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_IHNMIntroMovieProc3(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_IHNMIntroMovieProc3(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->IHNMIntroMovieProc3(param, scene_info);
}
int Scene::IHNMIntroMovieProc3(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
int Scene::IHNMIntroMovieProc3(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
PALENTRY *pal;
static PALENTRY current_pal[R_PAL_ENTRIES];
static PALENTRY current_pal[PAL_ENTRIES];
switch (param) {
case SCENE_BEGIN:
// Fade to black out of the intro DG logo anim
_vm->_gfx->getCurrentPal(current_pal);
event.type = R_CONTINUOUS_EVENT;
event.code = R_PAL_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = PAL_EVENT;
event.op = EVENT_PALTOBLACK;
event.time = 0;
event.duration = R_IHNM_PALFADE_TIME;
event.duration = IHNM_PALFADE_TIME;
event.data = current_pal;
q_event = _vm->_events->queue(&event);
// Background for intro scene is the first frame of the
// intro animation; display it but don't set palette
event.type = R_ONESHOT_EVENT;
event.code = R_BG_EVENT;
event.type = ONESHOT_EVENT;
event.code = BG_EVENT;
event.op = EVENT_DISPLAY;
event.param = NO_SET_PALETTE;
event.time = 0;
@ -230,11 +230,11 @@ int Scene::IHNMIntroMovieProc3(int param, R_SCENE_INFO *scene_info) {
// Fade in from black to the scene background palette
_vm->_scene->getBGPal(&pal);
event.type = R_CONTINUOUS_EVENT;
event.code = R_PAL_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = PAL_EVENT;
event.op = EVENT_BLACKTOPAL;
event.time = 0;
event.duration = R_IHNM_PALFADE_TIME;
event.duration = IHNM_PALFADE_TIME;
event.data = pal;
q_event = _vm->_events->chain(q_event, &event);
@ -242,10 +242,10 @@ int Scene::IHNMIntroMovieProc3(int param, R_SCENE_INFO *scene_info) {
_vm->_anim->play(0, 0);
// Queue end of scene after a while
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = R_IHNM_TITLE_TIME;
event.time = IHNM_TITLE_TIME;
q_event = _vm->_events->chain(q_event, &event);
break;
@ -256,20 +256,20 @@ int Scene::IHNMIntroMovieProc3(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_IHNMHateProc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_IHNMHateProc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->IHNMHateProc(param, scene_info);
}
int Scene::IHNMHateProc(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
int Scene::IHNMHateProc(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
switch (param) {
case SCENE_BEGIN:
// Background for intro scene is the first frame of the
// intro animation; display it and set the palette
event.type = R_ONESHOT_EVENT;
event.code = R_BG_EVENT;
event.type = ONESHOT_EVENT;
event.code = BG_EVENT;
event.op = EVENT_DISPLAY;
event.param = SET_PALETTE;
event.time = 0;

View File

@ -50,7 +50,7 @@ static int granulate(int value, int granularity) {
int SagaEngine::decodeBGImage(const byte *image_data, size_t image_size,
byte **output_buf, size_t *output_buf_len, int *w, int *h) {
R_IMAGE_HEADER hdr;
IMAGE_HEADER hdr;
int modex_height;
const byte *RLE_data_ptr;
size_t RLE_data_len;
@ -61,7 +61,7 @@ int SagaEngine::decodeBGImage(const byte *image_data, size_t image_size,
if (image_size <= SAGA_IMAGE_DATA_OFFSET) {
/* Image size is way too small */
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS(image_data, image_size);
@ -83,10 +83,10 @@ int SagaEngine::decodeBGImage(const byte *image_data, size_t image_size,
out_buf = (byte *)malloc(out_buf_len);
if (decodeBGImageRLE(RLE_data_ptr,
RLE_data_len, decode_buf, decode_buf_len) != R_SUCCESS) {
RLE_data_len, decode_buf, decode_buf_len) != SUCCESS) {
free(decode_buf);
free(out_buf);
return R_FAILURE;
return FAILURE;
}
unbankBGImage(out_buf, decode_buf, hdr.width, hdr.height);
@ -104,7 +104,7 @@ int SagaEngine::decodeBGImage(const byte *image_data, size_t image_size,
*w = hdr.width;
*h = hdr.height;
return R_SUCCESS;
return SUCCESS;
}
int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len) {
@ -146,7 +146,7 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
while ((inbuf_remain > 1) && (outbuf_remain > 0) && !decode_err) {
if ((inbuf_ptr > inbuf_end) || (outbuf_ptr > outbuf_end)) {
return R_FAILURE;
return FAILURE;
}
mark_byte = *inbuf_ptr++;
@ -159,7 +159,7 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
// Uncompressed run follows: Max runlength 63
runcount = mark_byte & 0x3f;
if ((inbuf_remain < runcount) || (outbuf_remain < runcount)) {
return R_FAILURE;
return FAILURE;
}
for (c = 0; c < runcount; c++) {
@ -174,7 +174,7 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
// Compressed run follows: Max runlength 63
runcount = (mark_byte & 0x3f) + 3;
if (!inbuf_remain || (outbuf_remain < runcount)) {
return R_FAILURE;
return FAILURE;
}
for (c = 0; c < runcount; c++) {
@ -196,7 +196,7 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
backtrack_amount = *inbuf_ptr;
if (!inbuf_remain || (backtrack_amount > (outbuf_ptr - outbuf)) || (runcount > outbuf_remain)) {
return R_FAILURE;
return FAILURE;
}
inbuf_ptr++;
@ -225,7 +225,7 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
runcount = (mark_byte & 0x0F) + 1;
if ((inbuf_remain < (runcount + 2)) || (outbuf_remain < (runcount * 8))) {
return R_FAILURE;
return FAILURE;
}
bitfield_byte1 = *inbuf_ptr++;
@ -253,7 +253,7 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
// Uncompressed run follows
runcount = ((mark_byte & 0x0F) << 8) + *inbuf_ptr;
if ((inbuf_remain < (runcount + 1)) || (outbuf_remain < runcount)) {
return R_FAILURE;
return FAILURE;
}
inbuf_ptr++;
@ -272,14 +272,14 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
// Repeat decoded sequence from output stream
backtrack_amount = ((mark_byte & 0x0F) << 8) + *inbuf_ptr;
if (inbuf_remain < 2) {
return R_FAILURE;
return FAILURE;
}
inbuf_ptr++;
runcount = *inbuf_ptr++;
if ((backtrack_amount > (outbuf_ptr - outbuf)) || (outbuf_remain < runcount)) {
return R_FAILURE;
return FAILURE;
}
backtrack_ptr = outbuf_ptr - backtrack_amount;
@ -293,12 +293,12 @@ int SagaEngine::decodeBGImageRLE(const byte *inbuf, size_t inbuf_len, byte *outb
continue;
break;
default:
return R_FAILURE;
return FAILURE;
break;
}
}
return R_SUCCESS;
return SUCCESS;
}
int SagaEngine::flipImage(byte *img_buf, int columns, int scanlines) {
@ -312,7 +312,7 @@ int SagaEngine::flipImage(byte *img_buf, int columns, int scanlines) {
tmp_scan = (byte *)malloc(columns);
if (tmp_scan == NULL) {
return R_FAILURE;
return FAILURE;
}
flip_p1 = img_buf;
@ -328,7 +328,7 @@ int SagaEngine::flipImage(byte *img_buf, int columns, int scanlines) {
free(tmp_scan);
return R_SUCCESS;
return SUCCESS;
}
int SagaEngine::unbankBGImage(byte *dst_buf, const byte *src_buf, int columns, int scanlines) {
@ -426,7 +426,7 @@ int SagaEngine::unbankBGImage(byte *dst_buf, const byte *src_buf, int columns, i
default:
break;
}
return R_SUCCESS;
return SUCCESS;
}
const byte *SagaEngine::getImagePal(const byte *image_data, size_t image_size) {

View File

@ -28,13 +28,13 @@
namespace Saga {
#define R_MIN_IMG_RLECODE 3
#define MIN_IMG_RLECODE 3
#define MODEX_SCANLINE_LIMIT 200
#define SAGA_IMAGE_DATA_OFFSET 776
#define SAGA_IMAGE_HEADER_LEN 8
struct R_IMAGE_HEADER {
struct IMAGE_HEADER {
int width;
int height;
int unknown4;

View File

@ -132,7 +132,7 @@ int SagaEngine::processInput() {
}
}
return R_SUCCESS;
return SUCCESS;
}
Point SagaEngine::getMousePos() {

View File

@ -41,7 +41,7 @@
namespace Saga {
static R_VERB_DATA I_VerbData[] = {
static VERB_DATA I_VerbData[] = {
{I_VERB_WALKTO, "verb_walkto", "Walk to", S_VERB_WALKTO},
{I_VERB_LOOKAT, "verb_lookat", "Look at", S_VERB_LOOKAT},
{I_VERB_PICKUP, "verb_pickup", "Pick up", S_VERB_PICKUP},
@ -52,7 +52,7 @@ static R_VERB_DATA I_VerbData[] = {
{I_VERB_GIVE, "verb_give", "Give", S_VERB_GIVE}
};
static R_INTERFACE_DESC ITE_interface = {
static INTERFACE_DESC ITE_interface = {
ITE_STATUS_Y,
ITE_STATUS_W,
ITE_STATUS_H,
@ -72,7 +72,7 @@ static R_INTERFACE_DESC ITE_interface = {
ITE_RPORTRAIT_Y
};
static R_INTERFACE_BUTTON ITE_c_buttons[] = {
static INTERFACE_BUTTON ITE_c_buttons[] = {
{5, 4, 46, 47, "Portrait", 0, 0, BUTTON_NONE, 0},
// "Walk To" and "Talk To" share button sprites
{52, 4, 109, 14, "Walk To", 1, 2, BUTTON_VERB, I_VERB_WALKTO},
@ -96,7 +96,7 @@ static R_INTERFACE_BUTTON ITE_c_buttons[] = {
{306, 41, 314, 45, "InvDown", 0, 0, BUTTON_NONE, 0}
};
static R_INTERFACE_DESC IHNM_interface = {
static INTERFACE_DESC IHNM_interface = {
IHNM_STATUS_Y,
IHNM_STATUS_W,
IHNM_STATUS_H,
@ -116,7 +116,7 @@ static R_INTERFACE_DESC IHNM_interface = {
IHNM_RPORTRAIT_Y
};
static R_INTERFACE_BUTTON IHNM_c_buttons[] = {
static INTERFACE_BUTTON IHNM_c_buttons[] = {
{5, 4, 46, 47, "Portrait", 0, 0, 0, 0}
};
@ -126,19 +126,19 @@ int Interface::registerLang(void) {
for (i = 0; i < ARRAYSIZE(I_VerbData); i++) {
if (CVAR_Register_S(I_VerbData[i].verb_str,
I_VerbData[i].verb_cvar,
NULL, R_CVAR_CFG, R_VERB_STRLIMIT) != R_SUCCESS) {
NULL, CVAR_CFG, VERB_STRLIMIT) != SUCCESS) {
return R_FAILURE;
return FAILURE;
}
assert(CVAR_Find(I_VerbData[i].verb_cvar) != NULL);
}
return R_SUCCESS;
return SUCCESS;
}
Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
R_GAME_RESOURCEDESC g_resdesc;
GAME_RESOURCEDESC g_resdesc;
int game_type;
int result;
@ -154,8 +154,8 @@ Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
}
// Load interface module resource file context
result = GAME_GetFileContext(&_interfaceContext, R_GAME_RESOURCEFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&_interfaceContext, GAME_RESOURCEFILE, 0);
if (result != SUCCESS) {
return;
}
@ -182,14 +182,14 @@ Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) {
// Load command panel resource
result = RSC_LoadResource(_interfaceContext, g_resdesc.command_panel_rn,
&_cPanel.res, &_cPanel.res_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
return;
}
// Load dialogue panel resource
result = RSC_LoadResource(_interfaceContext, g_resdesc.dialogue_panel_rn,
&_dPanel.res, &_dPanel.res_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
return;
}
@ -232,13 +232,13 @@ int Interface::activate() {
_active = 1;
draw();
return R_SUCCESS;
return SUCCESS;
}
int Interface::deactivate() {
_active = 0;
return R_SUCCESS;
return SUCCESS;
}
int Interface::setMode(int mode) {
@ -247,15 +247,15 @@ int Interface::setMode(int mode) {
_panelMode = mode;
draw();
return R_SUCCESS;
return SUCCESS;
}
int Interface::setStatusText(const char *new_txt) {
assert(new_txt != NULL);
strncpy(_statusText, new_txt, R_STATUS_TEXT_LEN);
strncpy(_statusText, new_txt, STATUS_TEXT_LEN);
return R_SUCCESS;
return SUCCESS;
}
int Interface::loadScenePortraits(int res) {
@ -269,19 +269,19 @@ int Interface::setLeftPortrait(int portrait) {
_leftPortrait = portrait;
draw();
return R_SUCCESS;
return SUCCESS;
}
int Interface::setRightPortrait(int portrait) {
_rightPortrait = portrait;
draw();
return R_SUCCESS;
return SUCCESS;
}
int Interface::draw() {
R_GAME_DISPLAYINFO g_di;
R_SURFACE *back_buf;
GAME_DISPLAYINFO g_di;
SURFACE *back_buf;
int xbase;
int ybase;
@ -296,7 +296,7 @@ int Interface::draw() {
back_buf = _vm->_gfx->getBackBuffer();
if (!_active) {
return R_SUCCESS;
return SUCCESS;
}
// Get game display info
@ -344,18 +344,18 @@ int Interface::draw() {
_vm->_sprite->draw(back_buf, _scenePortraits, _rightPortrait, rportrait_x, rportrait_y);
}
return R_SUCCESS;
return SUCCESS;
}
int Interface::update(const Point& imousePt, int update_flag) {
R_GAME_DISPLAYINFO g_di;
GAME_DISPLAYINFO g_di;
R_SURFACE *back_buf;
SURFACE *back_buf;
int imouse_x, imouse_y;
if (!_active) {
return R_SUCCESS;
return SUCCESS;
}
imouse_x = imousePt.x;
@ -387,11 +387,11 @@ int Interface::update(const Point& imousePt, int update_flag) {
drawStatusBar(back_buf);
return R_SUCCESS;
return SUCCESS;
}
int Interface::drawStatusBar(R_SURFACE *ds) {
R_GAME_DISPLAYINFO g_di;
int Interface::drawStatusBar(SURFACE *ds) {
GAME_DISPLAYINFO g_di;
Rect rect;
int string_w;
@ -412,10 +412,10 @@ int Interface::drawStatusBar(R_SURFACE *ds) {
_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;
return SUCCESS;
}
int Interface::handleCommandClick(R_SURFACE *ds, const Point& imousePt) {
int Interface::handleCommandClick(SURFACE *ds, const Point& imousePt) {
int hit_button;
int ibutton_num;
@ -429,9 +429,9 @@ int Interface::handleCommandClick(R_SURFACE *ds, const Point& imousePt) {
int set_button;
hit_button = hitTest(imousePt, &ibutton_num);
if (hit_button != R_SUCCESS) {
if (hit_button != SUCCESS) {
// Clicking somewhere other than a button doesn't do anything
return R_SUCCESS;
return SUCCESS;
}
x_base = _cPanel.x;
@ -463,10 +463,10 @@ int Interface::handleCommandClick(R_SURFACE *ds, const Point& imousePt) {
}
}
return R_SUCCESS;
return SUCCESS;
}
int Interface::handleCommandUpdate(R_SURFACE *ds, const Point& imousePt) {
int Interface::handleCommandUpdate(SURFACE *ds, const Point& imousePt) {
int hit_button;
int ibutton_num;
@ -482,7 +482,7 @@ int Interface::handleCommandUpdate(R_SURFACE *ds, const Point& imousePt) {
hit_button = hitTest(imousePt, &ibutton_num);
if (hit_button == R_SUCCESS) {
if (hit_button == SUCCESS) {
// Hovering over a command panel button
setStatusText(I_VerbData[_activeVerb].verb_str);
}
@ -517,10 +517,10 @@ int Interface::handleCommandUpdate(R_SURFACE *ds, const Point& imousePt) {
}
}
return R_SUCCESS;
return SUCCESS;
}
int Interface::handlePlayfieldClick(R_SURFACE *ds, const Point& imousePt) {
int Interface::handlePlayfieldClick(SURFACE *ds, const Point& imousePt) {
int objectNum;
uint16 object_flags = 0;
@ -533,7 +533,7 @@ int Interface::handlePlayfieldClick(R_SURFACE *ds, const Point& imousePt) {
// Player clicked on empty spot - walk here regardless of verb
_vm->_actor->StoA(&iactor_pt, imousePt);
_vm->_actor->walkTo(0, &iactor_pt, 0, NULL);
return R_SUCCESS;
return SUCCESS;
}
object_flags = _vm->_scene->_objectMap->getFlags(objectNum);
@ -554,15 +554,15 @@ int Interface::handlePlayfieldClick(R_SURFACE *ds, const Point& imousePt) {
_vm->_actor->walkTo(0, &iactor_pt, 0, NULL);
}
return R_SUCCESS;
return SUCCESS;
}
int Interface::handlePlayfieldUpdate(R_SURFACE *ds, const Point& imousePt) {
int Interface::handlePlayfieldUpdate(SURFACE *ds, const Point& imousePt) {
const char *object_name;
int objectNum;
uint16 object_flags = 0;
char new_status[R_STATUS_TEXT_LEN];
char new_status[STATUS_TEXT_LEN];
new_status[0] = 0;
@ -571,7 +571,7 @@ int Interface::handlePlayfieldUpdate(R_SURFACE *ds, const Point& imousePt) {
if (objectNum == -1) {
// Cursor over nothing - just display current verb
setStatusText(I_VerbData[_activeVerb].verb_str);
return R_SUCCESS;
return SUCCESS;
}
object_flags = _vm->_scene->_objectMap->getFlags(objectNum);
@ -580,20 +580,20 @@ int Interface::handlePlayfieldUpdate(R_SURFACE *ds, const Point& imousePt) {
if (object_flags & OBJECT_EXIT) { // FIXME. This is wrong
// Normal scene object - display as subject of verb
snprintf(new_status, R_STATUS_TEXT_LEN, "%s %s", I_VerbData[_activeVerb].verb_str, object_name);
snprintf(new_status, 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);
snprintf(new_status, STATUS_TEXT_LEN, "%s %s", I_VerbData[I_VERB_WALKTO].verb_str, object_name);
}
setStatusText(new_status);
return R_SUCCESS;
return SUCCESS;
}
int Interface::hitTest(const Point& imousePt, int *ibutton) {
R_INTERFACE_BUTTON *buttons;
INTERFACE_BUTTON *buttons;
int nbuttons;
int xbase;
@ -611,12 +611,12 @@ int Interface::hitTest(const Point& imousePt, int *ibutton) {
if ((imousePt.x >= (xbase + buttons[i].x1)) && (imousePt.x < (xbase + buttons[i].x2)) &&
(imousePt.y >= (ybase + buttons[i].y1)) && (imousePt.y < (ybase + buttons[i].y2))) {
*ibutton = i;
return R_SUCCESS;
return SUCCESS;
}
}
*ibutton = -1;
return R_FAILURE;
return FAILURE;
}
} // End of namespace Saga

View File

@ -36,9 +36,9 @@ enum INTERFACE_UPDATE_FLAGS {
UPDATE_MOUSECLICK
};
#define R_VERB_STRLIMIT 32
#define VERB_STRLIMIT 32
#define R_STATUS_TEXT_LEN 128
#define STATUS_TEXT_LEN 128
#define COMMAND_DEFAULT_BUTTON 1
@ -76,13 +76,13 @@ enum INTERFACE_UPDATE_FLAGS {
#define IHNM_RPORTRAIT_X -1
#define IHNM_RPORTRAIT_Y -1
enum R_PANEL_MODES {
enum PANEL_MODES {
kPanelNone,
kPanelCommand,
kPanelDialogue
};
enum R_BUTTON_FLAGS {
enum BUTTON_FLAGS {
BUTTON_NONE = 0x0,
BUTTON_LABEL = 0x01,
BUTTON_BITMAP = 0x02,
@ -92,7 +92,7 @@ enum R_BUTTON_FLAGS {
#define BUTTON_VERB ( BUTTON_LABEL | BUTTON_BITMAP | BUTTON_SET )
struct R_INTERFACE_BUTTON {
struct INTERFACE_BUTTON {
int x1;
int y1;
int x2;
@ -104,7 +104,7 @@ struct R_INTERFACE_BUTTON {
int data;
};
struct R_INTERFACE_PANEL {
struct INTERFACE_PANEL {
byte *res;
size_t res_len;
int x;
@ -115,11 +115,11 @@ struct R_INTERFACE_PANEL {
int img_h;
int set_button;
int nbuttons;
R_INTERFACE_BUTTON *buttons;
R_SPRITELIST *sprites;
INTERFACE_BUTTON *buttons;
SPRITELIST *sprites;
};
struct R_INTERFACE_DESC {
struct INTERFACE_DESC {
int status_y;
int status_w;
int status_h;
@ -136,7 +136,7 @@ struct R_INTERFACE_DESC {
int rportrait_y;
};
struct R_INTERFACE_MODULE {
struct INTERFACE_MODULE {
};
enum INTERFACE_VERBS {
@ -150,10 +150,10 @@ enum INTERFACE_VERBS {
I_VERB_GIVE
};
struct R_VERB_DATA {
struct VERB_DATA {
int i_verb;
const char *verb_cvar;
char verb_str[R_VERB_STRLIMIT];
char verb_str[VERB_STRLIMIT];
int s_verb;
};
@ -177,32 +177,32 @@ class Interface {
private:
int hitTest(const Point& imousePt, int *ibutton);
int drawStatusBar(R_SURFACE *ds);
int handleCommandUpdate(R_SURFACE *ds, const Point& imousePt);
int handleCommandClick(R_SURFACE *ds, const Point& imousePt);
int handlePlayfieldUpdate(R_SURFACE *ds, const Point& imousePt);
int handlePlayfieldClick(R_SURFACE *ds, const Point& imousePt);
int drawStatusBar(SURFACE *ds);
int handleCommandUpdate(SURFACE *ds, const Point& imousePt);
int handleCommandClick(SURFACE *ds, const Point& imousePt);
int handlePlayfieldUpdate(SURFACE *ds, const Point& imousePt);
int handlePlayfieldClick(SURFACE *ds, const Point& imousePt);
private:
SagaEngine *_vm;
bool _initialized;
int _active;
R_RSCFILE_CONTEXT *_interfaceContext;
R_INTERFACE_DESC _iDesc;
RSCFILE_CONTEXT *_interfaceContext;
INTERFACE_DESC _iDesc;
int _panelMode;
R_INTERFACE_PANEL _cPanel;
R_INTERFACE_PANEL _dPanel;
char _statusText[R_STATUS_TEXT_LEN];
INTERFACE_PANEL _cPanel;
INTERFACE_PANEL _dPanel;
char _statusText[STATUS_TEXT_LEN];
int _leftPortrait;
int _rightPortrait;
R_SPRITELIST *_defPortraits;
R_SPRITELIST *_scenePortraits;
SPRITELIST *_defPortraits;
SPRITELIST *_scenePortraits;
int _activeVerb;
R_SCRIPT_THREAD *_iThread;
SCRIPT_THREAD *_iThread;
};
} // End of namespace Saga
#endif /* R_INTERFACE_H__ */
#endif /* INTERFACE_H__ */
/* end "r_interface.h" */

View File

@ -38,8 +38,8 @@ IsoMap::IsoMap(Gfx *gfx) {
}
int IsoMap::loadTileset(const byte *tileres_p, size_t tileres_len) {
R_ISOTILE_ENTRY first_entry;
R_ISOTILE_ENTRY *tile_tbl;
ISOTILE_ENTRY first_entry;
ISOTILE_ENTRY *tile_tbl;
uint16 i;
@ -55,9 +55,9 @@ int IsoMap::loadTileset(const byte *tileres_p, size_t tileres_len) {
readS.seek(0);
tile_tbl = (R_ISOTILE_ENTRY *)malloc(_tile_ct * sizeof *tile_tbl);
tile_tbl = (ISOTILE_ENTRY *)malloc(_tile_ct * sizeof *tile_tbl);
if (tile_tbl == NULL) {
return R_MEM;
return MEM;
}
for (i = 0; i < _tile_ct; i++) {
@ -73,11 +73,11 @@ int IsoMap::loadTileset(const byte *tileres_p, size_t tileres_len) {
_tileres_p = tileres_p;
_tileres_len = tileres_len;
return R_SUCCESS;
return SUCCESS;
}
int IsoMap::loadMetaTileset(const byte *mtileres_p, size_t mtileres_len) {
R_ISO_METATILE_ENTRY *mtile_tbl;
ISO_METATILE_ENTRY *mtile_tbl;
uint16 mtile_ct;
uint16 ct;
int i;
@ -88,9 +88,9 @@ int IsoMap::loadMetaTileset(const byte *mtileres_p, size_t mtileres_len) {
MemoryReadStream readS(mtileres_p, mtileres_len);
mtile_ct = mtileres_len / SAGA_METATILE_ENTRY_LEN;
mtile_tbl = (R_ISO_METATILE_ENTRY *)malloc(mtile_ct * sizeof *mtile_tbl);
mtile_tbl = (ISO_METATILE_ENTRY *)malloc(mtile_ct * sizeof *mtile_tbl);
if (mtile_tbl == NULL) {
return R_MEM;
return MEM;
}
for (ct = 0; ct < mtile_ct; ct++) {
@ -111,7 +111,7 @@ int IsoMap::loadMetaTileset(const byte *mtileres_p, size_t mtileres_len) {
_mtiles_loaded = 1;
return R_SUCCESS;
return SUCCESS;
}
int IsoMap::loadMetamap(const byte *mm_res_p, size_t mm_res_len) {
@ -128,20 +128,20 @@ int IsoMap::loadMetamap(const byte *mm_res_p, size_t mm_res_len) {
_mm_res_len = mm_res_len;
_metamap_loaded = 1;
return R_SUCCESS;
return SUCCESS;
}
int IsoMap::draw(R_SURFACE *dst_s) {
R_GAME_DISPLAYINFO disp_info;
int IsoMap::draw(SURFACE *dst_s) {
GAME_DISPLAYINFO disp_info;
GAME_GetDisplayInfo(&disp_info);
Rect iso_rect(disp_info.logical_w, disp_info.scene_h);
_gfx->drawRect(dst_s, &iso_rect, 0);
drawMetamap(dst_s, -1000, -500);
return R_SUCCESS;
return SUCCESS;
}
int IsoMap::drawMetamap(R_SURFACE *dst_s, int map_x, int map_y) {
int IsoMap::drawMetamap(SURFACE *dst_s, int map_x, int map_y) {
int meta_base_x = map_x;
int meta_base_y = map_y;
int meta_xi;
@ -164,10 +164,10 @@ int IsoMap::drawMetamap(R_SURFACE *dst_s, int map_x, int map_y) {
meta_base_y += 64;
}
return R_SUCCESS;
return SUCCESS;
}
int IsoMap::drawMetaTile(R_SURFACE *dst_s, uint16 mtile_i, int mtile_x, int mtile_y) {
int IsoMap::drawMetaTile(SURFACE *dst_s, uint16 mtile_i, int mtile_x, int mtile_y) {
int tile_xi;
int tile_yi;
int tile_x;
@ -175,11 +175,11 @@ int IsoMap::drawMetaTile(R_SURFACE *dst_s, uint16 mtile_i, int mtile_x, int mtil
int tile_base_x;
int tile_base_y;
int tile_i;
R_ISO_METATILE_ENTRY *mtile_p;
ISO_METATILE_ENTRY *mtile_p;
assert(_init && _mtiles_loaded);
if (mtile_i >= _mtile_ct) {
return R_FAILURE;
return FAILURE;
}
mtile_p = &_mtile_tbl[mtile_i];
@ -200,10 +200,10 @@ int IsoMap::drawMetaTile(R_SURFACE *dst_s, uint16 mtile_i, int mtile_x, int mtil
tile_base_y += SAGA_ISOTILE_BASEHEIGHT / 2 + 1;
}
return R_SUCCESS;
return SUCCESS;
}
int IsoMap::drawTile(R_SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y) {
int IsoMap::drawTile(SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y) {
const byte *tile_p;
const byte *read_p;
byte *draw_p;
@ -219,17 +219,17 @@ int IsoMap::drawTile(R_SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y) {
assert(_init && _tiles_loaded);
if (tile_i >= _tile_ct) {
return R_FAILURE;
return FAILURE;
}
/* temporary x clip */
if (tile_x < 0) {
return R_SUCCESS;
return SUCCESS;
}
/* temporary x clip */
if (tile_x >= 320 - 32) {
return R_SUCCESS;
return SUCCESS;
}
tile_p = _tileres_p + _tile_tbl[tile_i].tile_offset;
@ -247,7 +247,7 @@ int IsoMap::drawTile(R_SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y) {
// temporary y clip
if (draw_y < 0) {
return R_SUCCESS;
return SUCCESS;
}
for (row = 0; row < tile_h; row++) {
@ -256,7 +256,7 @@ int IsoMap::drawTile(R_SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y) {
// temporary y clip
if ((draw_y + row) >= 137) {
return R_SUCCESS;
return SUCCESS;
}
for (;;) {
@ -276,7 +276,7 @@ int IsoMap::drawTile(R_SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y) {
}
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -28,7 +28,7 @@
namespace Saga {
struct R_ISOTILE_ENTRY {
struct ISOTILE_ENTRY {
int tile_h;
int unknown01;
size_t tile_offset;
@ -49,7 +49,7 @@ struct R_ISOTILE_ENTRY {
#define SAGA_METAMAP_H 16
#define SAGA_METAMAP_SIZE 256
struct R_ISO_METATILE_ENTRY {
struct ISO_METATILE_ENTRY {
int mtile_n;
int unknown02;
int unknown04;
@ -67,23 +67,23 @@ public:
int loadTileset(const byte *, size_t);
int loadMetaTileset(const byte *, size_t);
int loadMetamap(const byte *mm_res_p, size_t mm_res_len);
int draw(R_SURFACE *dst_s);
int draw(SURFACE *dst_s);
private:
int drawTile(R_SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y);
int drawMetaTile(R_SURFACE *dst_s, uint16 mtile_i, int mtile_x, int mtile_y);
int drawMetamap(R_SURFACE *dst_s, int map_x, int map_y);
int drawTile(SURFACE *dst_s, uint16 tile_i, int tile_x, int tile_y);
int drawMetaTile(SURFACE *dst_s, uint16 mtile_i, int mtile_x, int mtile_y);
int drawMetamap(SURFACE *dst_s, int map_x, int map_y);
int _init;
int _tiles_loaded;
const byte *_tileres_p;
size_t _tileres_len;
uint16 _tile_ct;
R_ISOTILE_ENTRY *_tile_tbl;
ISOTILE_ENTRY *_tile_tbl;
int _mtiles_loaded;
const byte *_mtileres_p;
size_t _mtileres_len;
uint16 _mtile_ct;
R_ISO_METATILE_ENTRY *_mtile_tbl;
ISO_METATILE_ENTRY *_mtile_tbl;
int _metamap_loaded;
int _metamap_n;

View File

@ -43,7 +43,7 @@
namespace Saga {
static R_INTRO_DIALOGUE IntroDiag[] = {
static INTRO_DIALOGUE IntroDiag[] = {
{
CAVE_VOICE_0, "intro1a",
"We see the sky, we see the land, we see the water, "
@ -111,7 +111,7 @@ static R_INTRO_DIALOGUE IntroDiag[] = {
},
};
R_SCENE_QUEUE ITE_IntroList[] = {
SCENE_QUEUE ITE_IntroList[] = {
{ITE_INTRO_ANIM_SCENE, NULL, BY_RESOURCE, Scene::SC_ITEIntroAnimProc, 0, SCENE_NOFADE},
{ITE_CAVE_SCENE_1, NULL, BY_RESOURCE, Scene::SC_ITEIntroCave1Proc, 0, SCENE_FADE_NO_INTERFACE},
{ITE_CAVE_SCENE_2, NULL, BY_RESOURCE, Scene::SC_ITEIntroCave2Proc, 0, SCENE_NOFADE},
@ -127,8 +127,8 @@ int Scene::ITEStartProc() {
size_t n_introscenes;
size_t i;
R_SCENE_QUEUE first_scene;
R_GAME_SCENEDESC gs_desc;
SCENE_QUEUE first_scene;
GAME_SCENEDESC gs_desc;
n_introscenes = ARRAYSIZE(ITE_IntroList);
@ -146,7 +146,7 @@ int Scene::ITEStartProc() {
_vm->_scene->queueScene(&first_scene);
return R_SUCCESS;
return SUCCESS;
}
int Scene::ITEIntroRegisterLang() {
@ -155,30 +155,30 @@ int Scene::ITEIntroRegisterLang() {
for (i = 0; i < ARRAYSIZE(IntroDiag); i++) {
if (CVAR_Register_S(IntroDiag[i].i_str,
IntroDiag[i].i_cvar_name,
NULL, R_CVAR_CFG, R_INTRO_STRMAX) != R_SUCCESS) {
NULL, CVAR_CFG, INTRO_STRMAX) != SUCCESS) {
warning("Error registering intro text cvars");
return R_FAILURE;
return FAILURE;
}
}
return R_SUCCESS;
return SUCCESS;
}
int Scene::SC_ITEIntroAnimProc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroAnimProc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroAnimProc(param, scene_info);
}
// Handles the introductory Dreamer's Guild / NWC logo animation scene.
int Scene::ITEIntroAnimProc(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
int Scene::ITEIntroAnimProc(int param, SCENE_INFO *scene_info) {
EVENT event;
switch (param) {
case SCENE_BEGIN:
// Background for intro scene is the first frame of the
// intro animation; display it and set the palette
event.type = R_ONESHOT_EVENT;
event.code = R_BG_EVENT;
event.type = ONESHOT_EVENT;
event.code = BG_EVENT;
event.op = EVENT_DISPLAY;
event.param = SET_PALETTE;
event.time = 0;
@ -207,10 +207,10 @@ int Scene::ITEIntroAnimProc(int param, R_SCENE_INFO *scene_info) {
_vm->_anim->play(0, 0);
// Queue intro music playback
event.type = R_ONESHOT_EVENT;
event.code = R_MUSIC_EVENT;
event.type = ONESHOT_EVENT;
event.code = MUSIC_EVENT;
event.param = MUSIC_1;
event.param2 = R_MUSIC_LOOP;
event.param2 = MUSIC_LOOP;
event.op = EVENT_PLAY;
event.time = 0;
@ -226,27 +226,27 @@ int Scene::ITEIntroAnimProc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroCave1Proc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroCave1Proc(param, scene_info);
}
// Handles first introductory cave painting scene
int Scene::ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
int Scene::ITEIntroCave1Proc(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
int event_time = 0;
int voice_len;
int voice_pad = 50;
R_TEXTLIST_ENTRY text_entry;
R_TEXTLIST_ENTRY *entry_p;
TEXTLIST_ENTRY text_entry;
TEXTLIST_ENTRY *entry_p;
int i;
int font_flags = FONT_OUTLINE | FONT_CENTERED;
switch (param) {
case SCENE_BEGIN:
// Begin palette cycling animation for candles
event.type = R_ONESHOT_EVENT;
event.code = R_PALANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = PALANIM_EVENT;
event.op = EVENT_CYCLESTART;
event.time = 0;
@ -265,8 +265,8 @@ int Scene::ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info) {
entry_p = _vm->textAddEntry(scene_info->text_list, &text_entry);
// Display text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_DISPLAY;
event.data = entry_p;
event.time = event_time;
@ -274,8 +274,8 @@ int Scene::ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
// Play voice
event.type = R_ONESHOT_EVENT;
event.code = R_VOICE_EVENT;
event.type = ONESHOT_EVENT;
event.code = VOICE_EVENT;
event.op = EVENT_PLAY;
event.param = IntroDiag[i].i_voice_rn;
event.time = event_time;
@ -288,8 +288,8 @@ int Scene::ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info) {
}
// Remove text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_REMOVE;
event.data = entry_p;
event.time = voice_len;
@ -300,8 +300,8 @@ int Scene::ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info) {
}
// End scene after last dialogue over
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = 0;
@ -318,27 +318,27 @@ int Scene::ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroCave2Proc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroCave2Proc(param, scene_info);
}
// Handles second introductory cave painting scene
int Scene::ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
int Scene::ITEIntroCave2Proc(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
int event_time = 0;
int voice_len;
int voice_pad = 50;
R_TEXTLIST_ENTRY text_entry;
R_TEXTLIST_ENTRY *entry_p;
TEXTLIST_ENTRY text_entry;
TEXTLIST_ENTRY *entry_p;
int i;
int font_flags = FONT_OUTLINE | FONT_CENTERED;
switch (param) {
case SCENE_BEGIN:
// Start 'dissolve' transition to new scene background
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE;
event.time = 0;
event.duration = DISSOLVE_DURATION;
@ -346,8 +346,8 @@ int Scene::ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->queue(&event);
// Begin palette cycling animation for candles
event.type = R_ONESHOT_EVENT;
event.code = R_PALANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = PALANIM_EVENT;
event.op = EVENT_CYCLESTART;
event.time = 0;
@ -366,8 +366,8 @@ int Scene::ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info) {
entry_p = _vm->textAddEntry(scene_info->text_list, &text_entry);
// Display text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_DISPLAY;
event.data = entry_p;
event.time = event_time;
@ -375,8 +375,8 @@ int Scene::ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
// Play voice
event.type = R_ONESHOT_EVENT;
event.code = R_VOICE_EVENT;
event.type = ONESHOT_EVENT;
event.code = VOICE_EVENT;
event.op = EVENT_PLAY;
event.param = IntroDiag[i].i_voice_rn;
event.time = event_time;
@ -389,8 +389,8 @@ int Scene::ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info) {
}
// Remove text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_REMOVE;
event.data = entry_p;
event.time = voice_len;
@ -401,8 +401,8 @@ int Scene::ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info) {
}
// End scene after last dialogue over
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = event_time;
@ -418,27 +418,27 @@ int Scene::ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroCave3Proc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroCave3Proc(param, scene_info);
}
// Handles third introductory cave painting scene
int Scene::ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
int Scene::ITEIntroCave3Proc(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
int event_time = 0;
int voice_len;
int voice_pad = 50;
R_TEXTLIST_ENTRY text_entry;
R_TEXTLIST_ENTRY *entry_p;
TEXTLIST_ENTRY text_entry;
TEXTLIST_ENTRY *entry_p;
int i;
int font_flags = FONT_OUTLINE | FONT_CENTERED;
switch (param) {
case SCENE_BEGIN:
// Start 'dissolve' transition to new scene background
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE;
event.time = 0;
event.duration = DISSOLVE_DURATION;
@ -446,8 +446,8 @@ int Scene::ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->queue(&event);
// Begin palette cycling animation for candles
event.type = R_ONESHOT_EVENT;
event.code = R_PALANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = PALANIM_EVENT;
event.op = EVENT_CYCLESTART;
event.time = 0;
@ -466,8 +466,8 @@ int Scene::ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info) {
entry_p = _vm->textAddEntry(scene_info->text_list, &text_entry);
// Display text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_DISPLAY;
event.data = entry_p;
event.time = event_time;
@ -475,8 +475,8 @@ int Scene::ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
// Play voice
event.type = R_ONESHOT_EVENT;
event.code = R_VOICE_EVENT;
event.type = ONESHOT_EVENT;
event.code = VOICE_EVENT;
event.op = EVENT_PLAY;
event.param = IntroDiag[i].i_voice_rn;
event.time = event_time;
@ -489,8 +489,8 @@ int Scene::ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info) {
}
// Remove text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_REMOVE;
event.data = entry_p;
event.time = voice_len;
@ -501,8 +501,8 @@ int Scene::ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info) {
}
// End scene after last dialogue over
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = event_time;
@ -519,27 +519,27 @@ int Scene::ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroCave4Proc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroCave4Proc(param, scene_info);
}
// Handles fourth introductory cave painting scene
int Scene::ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
int Scene::ITEIntroCave4Proc(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
int event_time = 0;
int voice_len;
int voice_pad = 50;
R_TEXTLIST_ENTRY text_entry;
R_TEXTLIST_ENTRY *entry_p;
TEXTLIST_ENTRY text_entry;
TEXTLIST_ENTRY *entry_p;
int i;
int font_flags = FONT_OUTLINE | FONT_CENTERED;
switch (param) {
case SCENE_BEGIN:
// Start 'dissolve' transition to new scene background
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE;
event.time = 0;
event.duration = DISSOLVE_DURATION;
@ -547,8 +547,8 @@ int Scene::ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->queue(&event);
// Begin palette cycling animation for candles
event.type = R_ONESHOT_EVENT;
event.code = R_PALANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = PALANIM_EVENT;
event.op = EVENT_CYCLESTART;
event.time = 0;
@ -567,8 +567,8 @@ int Scene::ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info) {
entry_p = _vm->textAddEntry(scene_info->text_list, &text_entry);
// Display text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_DISPLAY;
event.data = entry_p;
event.time = event_time;
@ -576,8 +576,8 @@ int Scene::ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
// Play voice
event.type = R_ONESHOT_EVENT;
event.code = R_VOICE_EVENT;
event.type = ONESHOT_EVENT;
event.code = VOICE_EVENT;
event.op = EVENT_PLAY;
event.param = IntroDiag[i].i_voice_rn;
event.time = event_time;
@ -590,8 +590,8 @@ int Scene::ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info) {
}
// Remove text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_REMOVE;
event.data = entry_p;
event.time = voice_len;
@ -602,8 +602,8 @@ int Scene::ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info) {
}
// End scene after last dialogue over
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = event_time;
@ -620,16 +620,16 @@ int Scene::ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroValleyProc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroValleyProc(param, scene_info);
}
// Handles intro title scene (valley overlook)
int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
R_TEXTLIST_ENTRY text_entry;
R_TEXTLIST_ENTRY *entry_p;
R_EVENT event;
R_EVENT *q_event;
int Scene::ITEIntroValleyProc(int param, SCENE_INFO *scene_info) {
TEXTLIST_ENTRY text_entry;
TEXTLIST_ENTRY *entry_p;
EVENT event;
EVENT *q_event;
int i;
const INTRO_CREDIT credits[] = {
@ -661,8 +661,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
// Begin ITE title theme music
_vm->_music->stop();
event.type = R_ONESHOT_EVENT;
event.code = R_MUSIC_EVENT;
event.type = ONESHOT_EVENT;
event.code = MUSIC_EVENT;
event.param = MUSIC_2;
event.param2 = 0;
event.op = EVENT_PLAY;
@ -671,8 +671,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->queue(&event);
// Pause animation before logo
event.type = R_ONESHOT_EVENT;
event.code = R_ANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = ANIM_EVENT;
event.op = EVENT_SETFLAG;
event.param = 0;
event.param2 = ANIM_PAUSE;
@ -681,8 +681,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
// Display logo
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE_BGMASK;
event.time = 0;
event.duration = LOGO_DISSOLVE_DURATION;
@ -690,8 +690,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
// Remove logo
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE;
event.time = 1000;
event.duration = LOGO_DISSOLVE_DURATION;
@ -699,8 +699,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
// Unpause animation before logo
event.type = R_ONESHOT_EVENT;
event.code = R_ANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = ANIM_EVENT;
event.op = EVENT_CLEARFLAG;
event.param = 0;
event.param2 = ANIM_PAUSE;
@ -708,8 +708,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->chain(q_event, &event);
event.type = R_ONESHOT_EVENT;
event.code = R_ANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = ANIM_EVENT;
event.op = EVENT_FRAME;
event.param = 0;
event.time = LOGO_DISSOLVE_DURATION;
@ -730,8 +730,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
entry_p = _vm->textAddEntry(scene_info->text_list, &text_entry);
// Display text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_DISPLAY;
event.data = entry_p;
event.time = event_delay += credits[i].delta_time;
@ -739,8 +739,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->queue(&event);
// Remove text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_REMOVE;
event.data = entry_p;
event.time = credits[i].duration;
@ -749,8 +749,8 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
}
// End scene after credit display
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = 1000;
@ -766,16 +766,16 @@ int Scene::ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroTreeHouseProc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroTreeHouseProc(param, scene_info);
}
// Handles second intro credit screen (treehouse view)
int Scene::ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info) {
R_TEXTLIST_ENTRY text_entry;
R_TEXTLIST_ENTRY *entry_p;
R_EVENT event;
R_EVENT *q_event;
int Scene::ITEIntroTreeHouseProc(int param, SCENE_INFO *scene_info) {
TEXTLIST_ENTRY text_entry;
TEXTLIST_ENTRY *entry_p;
EVENT event;
EVENT *q_event;
int i;
@ -812,8 +812,8 @@ int Scene::ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info) {
switch (param) {
case SCENE_BEGIN:
// Start 'dissolve' transition to new scene background
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE;
event.time = 0;
event.duration = DISSOLVE_DURATION;
@ -840,8 +840,8 @@ int Scene::ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info) {
entry_p = _vm->textAddEntry(scene_info->text_list, &text_entry);
// Display text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_DISPLAY;
event.data = entry_p;
event.time = event_delay += credits[i].delta_time;
@ -849,8 +849,8 @@ int Scene::ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->queue(&event);
// Remove text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_REMOVE;
event.data = entry_p;
event.time = credits[i].duration;
@ -859,8 +859,8 @@ int Scene::ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info) {
}
// End scene after credit display
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = 1000;
@ -876,16 +876,16 @@ int Scene::ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroFairePathProc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroFairePathProc(param, scene_info);
}
// Handles third intro credit screen (path to puzzle tent)
int Scene::ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info) {
R_TEXTLIST_ENTRY text_entry;
R_TEXTLIST_ENTRY *entry_p;
R_EVENT event;
R_EVENT *q_event;
int Scene::ITEIntroFairePathProc(int param, SCENE_INFO *scene_info) {
TEXTLIST_ENTRY text_entry;
TEXTLIST_ENTRY *entry_p;
EVENT event;
EVENT *q_event;
long event_delay = 0;
int i;
@ -925,8 +925,8 @@ int Scene::ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info) {
case SCENE_BEGIN:
// Start 'dissolve' transition to new scene background
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE;
event.time = 0;
event.duration = DISSOLVE_DURATION;
@ -953,8 +953,8 @@ int Scene::ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info) {
entry_p = _vm->textAddEntry(scene_info->text_list, &text_entry);
// Display text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_DISPLAY;
event.data = entry_p;
event.time = event_delay += credits[i].delta_time;
@ -962,8 +962,8 @@ int Scene::ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info) {
q_event = _vm->_events->queue(&event);
// Remove text
event.type = R_ONESHOT_EVENT;
event.code = R_TEXT_EVENT;
event.type = ONESHOT_EVENT;
event.code = TEXT_EVENT;
event.op = EVENT_REMOVE;
event.data = entry_p;
event.time = credits[i].duration;
@ -972,8 +972,8 @@ int Scene::ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info) {
}
// End scene after credit display
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = 1000;
@ -989,22 +989,22 @@ int Scene::ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info) {
return 0;
}
int Scene::SC_ITEIntroFaireTentProc(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_ITEIntroFaireTentProc(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->ITEIntroFaireTentProc(param, scene_info);
}
// Handles fourth intro credit screen (treehouse view)
int Scene::ITEIntroFaireTentProc(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
R_EVENT *q_event;
R_EVENT *q_event_start;
int Scene::ITEIntroFaireTentProc(int param, SCENE_INFO *scene_info) {
EVENT event;
EVENT *q_event;
EVENT *q_event_start;
switch (param) {
case SCENE_BEGIN:
// Start 'dissolve' transition to new scene background
event.type = R_CONTINUOUS_EVENT;
event.code = R_TRANSITION_EVENT;
event.type = CONTINUOUS_EVENT;
event.code = TRANSITION_EVENT;
event.op = EVENT_DISSOLVE;
event.time = 0;
event.duration = DISSOLVE_DURATION;
@ -1012,8 +1012,8 @@ int Scene::ITEIntroFaireTentProc(int param, R_SCENE_INFO *scene_info) {
q_event_start = _vm->_events->queue(&event);
// End scene after momentary pause
event.type = R_ONESHOT_EVENT;
event.code = R_SCENE_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCENE_EVENT;
event.op = EVENT_END;
event.time = 5000;
q_event = _vm->_events->chain(q_event_start, &event);

View File

@ -341,46 +341,46 @@ Music::~Music() {
// reset.mid seems to be unused.
const MUSIC_MIDITABLE Music::_midiTableITECD[26] = {
{ "cave.mid", R_MUSIC_LOOP }, // 9
{ "intro.mid", R_MUSIC_LOOP }, // 10
{ "fvillage.mid", R_MUSIC_LOOP }, // 11
{ "elkhall.mid", R_MUSIC_LOOP }, // 12
{ "cave.mid", MUSIC_LOOP }, // 9
{ "intro.mid", MUSIC_LOOP }, // 10
{ "fvillage.mid", MUSIC_LOOP }, // 11
{ "elkhall.mid", MUSIC_LOOP }, // 12
{ "mouse.mid", 0 }, // 13
{ "darkclaw.mid", R_MUSIC_LOOP }, // 14
{ "birdchrp.mid", R_MUSIC_LOOP }, // 15
{ "orbtempl.mid", R_MUSIC_LOOP }, // 16
{ "spooky.mid", R_MUSIC_LOOP }, // 17
{ "catfest.mid", R_MUSIC_LOOP }, // 18
{ "darkclaw.mid", MUSIC_LOOP }, // 14
{ "birdchrp.mid", MUSIC_LOOP }, // 15
{ "orbtempl.mid", MUSIC_LOOP }, // 16
{ "spooky.mid", MUSIC_LOOP }, // 17
{ "catfest.mid", MUSIC_LOOP }, // 18
{ "elkfanfare.mid", 0 }, // 19
{ "bcexpl.mid", R_MUSIC_LOOP }, // 20
{ "boargtnt.mid", R_MUSIC_LOOP }, // 21
{ "boarking.mid", R_MUSIC_LOOP }, // 22
{ "explorea.mid", R_MUSIC_LOOP }, // 23
{ "exploreb.mid", R_MUSIC_LOOP }, // 24
{ "explorec.mid", R_MUSIC_LOOP }, // 25
{ "sunstatm.mid", R_MUSIC_LOOP }, // 26
{ "nitstrlm.mid", R_MUSIC_LOOP }, // 27
{ "humruinm.mid", R_MUSIC_LOOP }, // 28
{ "damexplm.mid", R_MUSIC_LOOP }, // 29
{ "tychom.mid", R_MUSIC_LOOP }, // 30
{ "kitten.mid", R_MUSIC_LOOP }, // 31
{ "sweet.mid", R_MUSIC_LOOP }, // 32
{ "brutalmt.mid", R_MUSIC_LOOP }, // 33
{ "shiala.mid", R_MUSIC_LOOP } // 34
{ "bcexpl.mid", MUSIC_LOOP }, // 20
{ "boargtnt.mid", MUSIC_LOOP }, // 21
{ "boarking.mid", MUSIC_LOOP }, // 22
{ "explorea.mid", MUSIC_LOOP }, // 23
{ "exploreb.mid", MUSIC_LOOP }, // 24
{ "explorec.mid", MUSIC_LOOP }, // 25
{ "sunstatm.mid", MUSIC_LOOP }, // 26
{ "nitstrlm.mid", MUSIC_LOOP }, // 27
{ "humruinm.mid", MUSIC_LOOP }, // 28
{ "damexplm.mid", MUSIC_LOOP }, // 29
{ "tychom.mid", MUSIC_LOOP }, // 30
{ "kitten.mid", MUSIC_LOOP }, // 31
{ "sweet.mid", MUSIC_LOOP }, // 32
{ "brutalmt.mid", MUSIC_LOOP }, // 33
{ "shiala.mid", MUSIC_LOOP } // 34
};
int Music::play(uint32 music_rn, uint16 flags) {
R_RSCFILE_CONTEXT *rsc_ctxt = NULL;
RSCFILE_CONTEXT *rsc_ctxt = NULL;
byte *resource_data;
size_t resource_size;
if (!_musicInitialized) {
return R_FAILURE;
return FAILURE;
}
if (!_enabled) {
return R_SUCCESS;
return SUCCESS;
}
_player->stopMusic();
@ -394,7 +394,7 @@ int Music::play(uint32 music_rn, uint16 flags) {
if (GAME_GetGameType() == GID_ITE) {
if (music_rn >= 9 && music_rn <= 34) {
if (flags == R_MUSIC_DEFAULT) {
if (flags == MUSIC_DEFAULT) {
flags = _midiTableITECD[music_rn - 9].flags;
}
@ -403,7 +403,7 @@ int Music::play(uint32 music_rn, uint16 flags) {
uint32 length = _digiTableITECD[music_rn - 9].length;
if (length > 0) {
audioStream = makeRAWStream("music.rsc", start, length, flags == R_MUSIC_LOOP);
audioStream = makeRAWStream("music.rsc", start, length, flags == MUSIC_LOOP);
}
}
@ -413,14 +413,14 @@ int Music::play(uint32 music_rn, uint16 flags) {
}
}
if (flags == R_MUSIC_DEFAULT) {
if (flags == MUSIC_DEFAULT) {
flags = 0;
}
if (audioStream) {
debug(0, "Playing digitized music");
_mixer->playInputStream(&_musicHandle, audioStream, true);
return R_SUCCESS;
return SUCCESS;
}
// FIXME: Is resource_data ever freed?
@ -437,12 +437,12 @@ int Music::play(uint32 music_rn, uint16 flags) {
} else {
// Load XMI resource data
GAME_GetFileContext(&rsc_ctxt, R_GAME_RESOURCEFILE, 0);
GAME_GetFileContext(&rsc_ctxt, GAME_RESOURCEFILE, 0);
if (RSC_LoadResource(rsc_ctxt, music_rn, &resource_data,
&resource_size) != R_SUCCESS ) {
&resource_size) != SUCCESS ) {
warning("Music::play(): Resource load failed: %u", music_rn);
return R_FAILURE;
return FAILURE;
}
_player->setGM(false);
@ -463,37 +463,37 @@ int Music::play(uint32 music_rn, uint16 flags) {
_player->_parser = parser;
_player->setVolume(ConfMan.getInt("music_volume") * ConfMan.getInt("master_volume") / 255);
if (flags & R_MUSIC_LOOP)
if (flags & MUSIC_LOOP)
_player->setLoop(true);
else
_player->setLoop(false);
_player->playMusic();
return R_SUCCESS;
return SUCCESS;
}
int Music::pause(void) {
if (!_musicInitialized) {
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
int Music::resume(void) {
if (!_musicInitialized) {
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
int Music::stop(void) {
if (!_musicInitialized) {
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -34,8 +34,8 @@
namespace Saga {
enum MUSIC_FLAGS {
R_MUSIC_LOOP = 0x0001,
R_MUSIC_DEFAULT = 0xffff
MUSIC_LOOP = 0x0001,
MUSIC_DEFAULT = 0xffff
};
struct MUSIC_MIDITABLE {
@ -108,7 +108,7 @@ public:
void hasNativeMT32(bool b) { _player->hasNativeMT32(b); }
void setPassThrough(bool b) { _player->setPassThrough(b); }
int play(uint32 music_rn, uint16 flags = R_MUSIC_DEFAULT);
int play(uint32 music_rn, uint16 flags = MUSIC_DEFAULT);
int pause(void);
int resume(void);
int stop(void);

View File

@ -51,8 +51,8 @@ ObjectMap::~ObjectMap() {
// Loads an object map resource ( objects ( clickareas ( points ) ) )
int ObjectMap::load(const byte *om_res, size_t om_res_len) {
R_OBJECTMAP_ENTRY *object_map;
R_CLICKAREA *clickarea;
OBJECTMAP_ENTRY *object_map;
CLICKAREA *clickarea;
Point *point;
int i, k, m;
@ -66,11 +66,11 @@ int ObjectMap::load(const byte *om_res, size_t om_res_len) {
// Obtain object count N and allocate space for N objects
_nObjects = readS.readUint16LE();
_objectMaps = (R_OBJECTMAP_ENTRY *)malloc(_nObjects * sizeof *_objectMaps);
_objectMaps = (OBJECTMAP_ENTRY *)malloc(_nObjects * sizeof *_objectMaps);
if (_objectMaps == NULL) {
warning("Error: Memory allocation failed");
return R_MEM;
return MEM;
}
// Load all N objects
@ -82,11 +82,11 @@ int ObjectMap::load(const byte *om_res, size_t om_res_len) {
readS.readByte();
object_map->objectNum = readS.readUint16LE();
object_map->scriptNum = readS.readUint16LE();
object_map->clickareas = (R_CLICKAREA *)malloc(object_map->nClickareas * sizeof *(object_map->clickareas));
object_map->clickareas = (CLICKAREA *)malloc(object_map->nClickareas * sizeof *(object_map->clickareas));
if (object_map->clickareas == NULL) {
warning("Error: Memory allocation failed");
return R_MEM;
return MEM;
}
// Load all clickareas for this object
@ -98,7 +98,7 @@ int ObjectMap::load(const byte *om_res, size_t om_res_len) {
clickarea->points = (Point *)malloc(clickarea->n_points * sizeof *(clickarea->points));
if (clickarea->points == NULL) {
warning("Error: Memory allocation failed");
return R_MEM;
return MEM;
}
// Load all points for this clickarea
@ -114,18 +114,18 @@ int ObjectMap::load(const byte *om_res, size_t om_res_len) {
_objectsLoaded = true;
return R_SUCCESS;
return SUCCESS;
}
// Frees all storage allocated for the current object map data
int ObjectMap::freeMem() {
R_OBJECTMAP_ENTRY *object_map;
R_CLICKAREA *clickarea;
OBJECTMAP_ENTRY *object_map;
CLICKAREA *clickarea;
int i, k;
if (!_objectsLoaded) {
return R_FAILURE;
return FAILURE;
}
for (i = 0; i < _nObjects; i++) {
@ -143,7 +143,7 @@ int ObjectMap::freeMem() {
_objectsLoaded = false;
return R_SUCCESS;
return SUCCESS;
}
// Loads an object name list resource
@ -170,7 +170,7 @@ int ObjectMap::loadNames(const unsigned char *onl_res, size_t onl_res_len) {
if (_names == NULL) {
warning("Error: Memory allocation failed");
return R_MEM;
return MEM;
}
for (i = 0; i < n_names; i++) {
@ -182,13 +182,13 @@ int ObjectMap::loadNames(const unsigned char *onl_res, size_t onl_res_len) {
_namesLoaded = true;
return R_SUCCESS;
return SUCCESS;
}
// Frees all storage allocated for the current object name list data
int ObjectMap::freeNames() {
if (!_namesLoaded) {
return R_FAILURE;
return FAILURE;
}
if (_nNames) {
@ -196,13 +196,13 @@ int ObjectMap::freeNames() {
}
_namesLoaded = false;
return R_SUCCESS;
return SUCCESS;
}
// If 'object' is a valid object number in the currently loaded object
// name list resource, the funciton sets '*name' to the descriptive string
// corresponding to 'object' and returns R_SUCCESS. Otherwise it returns
// R_FAILURE.
// corresponding to 'object' and returns SUCCESS. Otherwise it returns
// FAILURE.
const char *ObjectMap::getName(int object) {
assert(_namesLoaded);
assert((object > 0) && (object <= _nNames));
@ -227,8 +227,8 @@ const uint16 ObjectMap::getFlags(int object) {
// If 'object' is a valid object number in the currently loaded object
// name list resource, the funciton sets '*ep_num' to the entrypoint number
// corresponding to 'object' and returns R_SUCCESS. Otherwise, it returns
// R_FAILURE.
// corresponding to 'object' and returns SUCCESS. Otherwise, it returns
// FAILURE.
const int ObjectMap::getEPNum(int object) {
int i;
@ -246,9 +246,9 @@ const int ObjectMap::getEPNum(int object) {
// Uses Gfx::drawLine to display all clickareas for each object in the
// currently loaded object map resource.
int ObjectMap::draw(R_SURFACE *ds, const Point& imousePt, int color, int color2) {
R_OBJECTMAP_ENTRY *object_map;
R_CLICKAREA *clickarea;
int ObjectMap::draw(SURFACE *ds, const Point& imousePt, int color, int color2) {
OBJECTMAP_ENTRY *object_map;
CLICKAREA *clickarea;
char txt_buf[32];
@ -261,7 +261,7 @@ int ObjectMap::draw(R_SURFACE *ds, const Point& imousePt, int color, int color2)
int i, k;
if (!_objectsLoaded) {
return R_FAILURE;
return FAILURE;
}
if ((objectNum = hitTest(imousePt)) != -1) {
@ -298,13 +298,13 @@ int ObjectMap::draw(R_SURFACE *ds, const Point& imousePt, int color, int color2)
_vm->_gfx->getWhite(), _vm->_gfx->getBlack(), FONT_OUTLINE);
}
return R_SUCCESS;
return SUCCESS;
}
int ObjectMap::hitTest(const Point& imousePt) {
Point imouse;
R_OBJECTMAP_ENTRY *object_map;
R_CLICKAREA *clickarea;
OBJECTMAP_ENTRY *object_map;
CLICKAREA *clickarea;
Point *points;
int n_points;

View File

@ -42,7 +42,7 @@ enum OBJECT_FLAGS {
OBJECT_PROJECT = (1<<3)
};
struct R_OBJECTMAP_ENTRY {
struct OBJECTMAP_ENTRY {
byte flags;
byte defaultVerb;
@ -50,7 +50,7 @@ struct R_OBJECTMAP_ENTRY {
int scriptNum;
int nClickareas;
R_CLICKAREA *clickareas;
CLICKAREA *clickareas;
};
class ObjectMap{
@ -65,7 +65,7 @@ public:
const char *getName(int object);
const uint16 getFlags(int object);
const int getEPNum(int object);
int draw(R_SURFACE *draw_surface, const Point& imousePt, int color, int color2);
int draw(SURFACE *draw_surface, const Point& imousePt, int color, int color2);
int hitTest(const Point& imousePt);
void info(void);
@ -73,7 +73,7 @@ private:
bool _objectsLoaded;
int _nObjects;
R_OBJECTMAP_ENTRY *_objectMaps;
OBJECTMAP_ENTRY *_objectMaps;
bool _namesLoaded;
int _nNames;

View File

@ -51,13 +51,13 @@ int PalAnim::loadPalAnim(const byte *resdata, size_t resdata_len) {
}
if (resdata == NULL) {
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS(resdata, resdata_len);
if (GAME_GetGameType() == GID_IHNM) {
return R_SUCCESS;
return SUCCESS;
}
_entryCount = readS.readUint16LE();
@ -67,7 +67,7 @@ int PalAnim::loadPalAnim(const byte *resdata, size_t resdata_len) {
test_p = calloc(_entryCount, sizeof(PALANIM_ENTRY));
if (test_p == NULL) {
warning("PalAnim::loadPalAnim(): Allocation failure");
return R_MEM;
return MEM;
}
_entries = (PALANIM_ENTRY *)test_p;
@ -88,20 +88,20 @@ int PalAnim::loadPalAnim(const byte *resdata, size_t resdata_len) {
test_p = calloc(1, sizeof(char) * pal_count);
if (test_p == NULL) {
warning("PalAnim::loadPalAnim(): Allocation failure");
return R_MEM;
return MEM;
}
_entries[i].pal_index = (byte *)test_p;
debug(2, "PalAnim::loadPalAnim(): Entry %d: Loading %d SAGA_COLOR structures.", i, color_count);
test_p = calloc(1, sizeof(R_COLOR) * color_count);
test_p = calloc(1, sizeof(COLOR) * color_count);
if (test_p == NULL) {
warning("PalAnim::loadPalAnim(): Allocation failure");
return R_MEM;
return MEM;
}
_entries[i].colors = (R_COLOR *)test_p;
_entries[i].colors = (COLOR *)test_p;
for (p = 0; p < pal_count; p++) {
_entries[i].pal_index[p] = readS.readByte();
@ -115,28 +115,28 @@ int PalAnim::loadPalAnim(const byte *resdata, size_t resdata_len) {
}
_loaded = true;
return R_SUCCESS;
return SUCCESS;
}
int PalAnim::cycleStart() {
R_EVENT event;
EVENT event;
if (!_loaded) {
return R_FAILURE;
return FAILURE;
}
event.type = R_ONESHOT_EVENT;
event.code = R_PALANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = PALANIM_EVENT;
event.op = EVENT_CYCLESTEP;
event.time = PALANIM_CYCLETIME;
_vm->_events->queue(&event);
return R_SUCCESS;
return SUCCESS;
}
int PalAnim::cycleStep(int vectortime) {
R_SURFACE *back_buf;
SURFACE *back_buf;
static PALENTRY pal[256];
uint16 pal_index;
@ -146,10 +146,10 @@ int PalAnim::cycleStep(int vectortime) {
uint16 cycle;
uint16 cycle_limit;
R_EVENT event;
EVENT event;
if (!_loaded) {
return R_FAILURE;
return FAILURE;
}
_vm->_gfx->getCurrentPal(pal);
@ -175,21 +175,21 @@ int PalAnim::cycleStep(int vectortime) {
_vm->_gfx->setPalette(back_buf, pal);
event.type = R_ONESHOT_EVENT;
event.code = R_PALANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = PALANIM_EVENT;
event.op = EVENT_CYCLESTEP;
event.time = vectortime + PALANIM_CYCLETIME;
_vm->_events->queue(&event);
return R_SUCCESS;
return SUCCESS;
}
int PalAnim::freePalAnim() {
uint16 i;
if (!_loaded) {
return R_FAILURE;
return FAILURE;
}
for (i = 0; i < _entryCount; i++) {
@ -205,7 +205,7 @@ int PalAnim::freePalAnim() {
_loaded = false;
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -35,7 +35,7 @@ struct PALANIM_ENTRY {
uint16 color_count;
uint16 cycle;
byte *pal_index;
R_COLOR *colors;
COLOR *colors;
};
struct PALANIM_DATA {

View File

@ -45,7 +45,7 @@ namespace Saga {
const char *test_txt = "The quick brown fox jumped over the lazy dog. She sells sea shells down by the sea shore.";
int Render::reg(void) {
return R_SUCCESS;
return SUCCESS;
}
Render::Render(SagaEngine *vm, OSystem *system) {
@ -53,7 +53,7 @@ Render::Render(SagaEngine *vm, OSystem *system) {
_system = system;
_initialized = false;
R_GAME_DISPLAYINFO disp_info;
GAME_DISPLAYINFO disp_info;
int tmp_w, tmp_h, tmp_bytepp;
// Initialize system graphics
@ -104,9 +104,9 @@ bool Render::initialized() {
}
int Render::drawScene() {
R_SURFACE *backbuf_surface;
R_GAME_DISPLAYINFO disp_info;
R_SCENE_INFO scene_info;
SURFACE *backbuf_surface;
GAME_DISPLAYINFO disp_info;
SCENE_INFO scene_info;
SCENE_BGINFO bg_info;
Point bg_pt;
char txt_buf[20];
@ -114,7 +114,7 @@ int Render::drawScene() {
Point mouse_pt;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
_framecount++;
@ -137,7 +137,7 @@ int Render::drawScene() {
if (_vm->_scene->_objectMap)
_vm->_scene->_objectMap->draw(backbuf_surface, mouse_pt, _vm->_gfx->getWhite(), _vm->_gfx->getBlack());
if (_vm->_scene->_actionMap)
_vm->_scene->_actionMap->draw(backbuf_surface, _vm->_gfx->matchColor(R_RGB_RED));
_vm->_scene->_actionMap->draw(backbuf_surface, _vm->_gfx->matchColor(RGB_RED));
}
// Draw queued actors
@ -161,9 +161,9 @@ int Render::drawScene() {
// Display "paused game" message, if applicable
if (_flags & RF_RENDERPAUSE) {
int msg_len = strlen(R_PAUSEGAME_MSG);
int msg_w = _vm->_font->getStringWidth(BIG_FONT_ID, R_PAUSEGAME_MSG, msg_len, FONT_OUTLINE);
_vm->_font->draw(BIG_FONT_ID, backbuf_surface, R_PAUSEGAME_MSG, msg_len,
int msg_len = strlen(PAUSEGAME_MSG);
int msg_w = _vm->_font->getStringWidth(BIG_FONT_ID, PAUSEGAME_MSG, msg_len, FONT_OUTLINE);
_vm->_font->draw(BIG_FONT_ID, backbuf_surface, PAUSEGAME_MSG, msg_len,
(backbuf_surface->buf_w - msg_w) / 2, 90, _vm->_gfx->getWhite(), _vm->_gfx->getBlack(), FONT_OUTLINE);
}
@ -189,7 +189,7 @@ int Render::drawScene() {
backbuf_surface->buf_w, backbuf_surface->buf_h);
_system->updateScreen();
return R_SUCCESS;
return SUCCESS;
}
unsigned int Render::getFrameCount() {
@ -225,18 +225,18 @@ void Render::toggleFlag(unsigned int flag) {
_flags ^= flag;
}
int Render::getBufferInfo(R_BUFFER_INFO *r_bufinfo) {
assert(r_bufinfo != NULL);
int Render::getBufferInfo(BUFFER_INFO *bufinfo) {
assert(bufinfo != NULL);
r_bufinfo->r_bg_buf = _bg_buf;
r_bufinfo->r_bg_buf_w = _bg_buf_w;
r_bufinfo->r_bg_buf_h = _bg_buf_h;
bufinfo->bg_buf = _bg_buf;
bufinfo->bg_buf_w = _bg_buf_w;
bufinfo->bg_buf_h = _bg_buf_h;
r_bufinfo->r_tmp_buf = _tmp_buf;
r_bufinfo->r_tmp_buf_w = _tmp_buf_w;
r_bufinfo->r_tmp_buf_h = _tmp_buf_h;
bufinfo->tmp_buf = _tmp_buf;
bufinfo->tmp_buf_w = _tmp_buf_w;
bufinfo->tmp_buf_h = _tmp_buf_h;
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -30,7 +30,7 @@
namespace Saga {
#define R_PAUSEGAME_MSG "PAWS GAME"
#define PAUSEGAME_MSG "PAWS GAME"
enum RENDER_FLAGS {
RF_SHOW_FPS = 0x01,
RF_PALETTE_TEST = 0x02,
@ -40,13 +40,13 @@ enum RENDER_FLAGS {
RF_GAMEPAUSE = 0x20
};
struct R_BUFFER_INFO {
byte *r_bg_buf;
int r_bg_buf_w;
int r_bg_buf_h;
byte *r_tmp_buf;
int r_tmp_buf_w;
int r_tmp_buf_h;
struct BUFFER_INFO {
byte *bg_buf;
int bg_buf_w;
int bg_buf_h;
byte *tmp_buf;
int tmp_buf_w;
int tmp_buf_h;
};
class Render {
@ -61,7 +61,7 @@ public:
void toggleFlag(unsigned int);
unsigned int getFrameCount(void);
unsigned int resetFrameCount(void);
int getBufferInfo(R_BUFFER_INFO *);
int getBufferInfo(BUFFER_INFO *);
private:
static void fpsTimerCallback(void *refCon);
@ -72,7 +72,7 @@ private:
bool _initialized;
// Module data
R_SURFACE *_backbuf_surface;
SURFACE *_backbuf_surface;
byte *_bg_buf;
int _bg_buf_w;
@ -81,7 +81,7 @@ private:
int _tmp_buf_w;
int _tmp_buf_h;
R_SPRITELIST *_test_sprite;
SPRITELIST *_test_sprite;
unsigned int _fps;
unsigned int _framecount;

View File

@ -29,16 +29,16 @@
namespace Saga {
R_RSCFILE_CONTEXT *RSC_CreateContext() {
R_RSCFILE_CONTEXT empty_context;
RSCFILE_CONTEXT *RSC_CreateContext() {
RSCFILE_CONTEXT empty_context;
empty_context.rc_file_fspec = NULL;
empty_context.rc_file_loaded = 0;
empty_context.rc_res_table = NULL;
empty_context.rc_res_ct = 0;
empty_context.rc_file = new File();
R_RSCFILE_CONTEXT *new_context;
RSCFILE_CONTEXT *new_context;
new_context = (R_RSCFILE_CONTEXT *)malloc(sizeof *new_context);
new_context = (RSCFILE_CONTEXT *)malloc(sizeof *new_context);
if (new_context == NULL) {
return NULL;
}
@ -48,27 +48,27 @@ R_RSCFILE_CONTEXT *RSC_CreateContext() {
return new_context;
}
int RSC_OpenContext(R_RSCFILE_CONTEXT *rsc_context, const char *fspec) {
int RSC_OpenContext(RSCFILE_CONTEXT *rsc_context, const char *fspec) {
if (rsc_context->rc_file->isOpen()) {
return R_FAILURE;
return FAILURE;
}
if (!rsc_context->rc_file->open(fspec)) {
return R_FAILURE;
return FAILURE;
}
rsc_context->rc_file_fspec = fspec;
if (RSC_LoadRSC(rsc_context) != R_SUCCESS) {
return R_FAILURE;
if (RSC_LoadRSC(rsc_context) != SUCCESS) {
return FAILURE;
}
rsc_context->rc_file_loaded = 1;
return R_SUCCESS;
return SUCCESS;
}
int RSC_CloseContext(R_RSCFILE_CONTEXT *rsc_context) {
int RSC_CloseContext(RSCFILE_CONTEXT *rsc_context) {
if (rsc_context->rc_file->isOpen()) {
rsc_context->rc_file->close();
}
@ -77,10 +77,10 @@ int RSC_CloseContext(R_RSCFILE_CONTEXT *rsc_context) {
rsc_context->rc_file_loaded = 0;
return R_SUCCESS;
return SUCCESS;
}
int RSC_DestroyContext(R_RSCFILE_CONTEXT *rsc_context) {
int RSC_DestroyContext(RSCFILE_CONTEXT *rsc_context) {
RSC_CloseContext(rsc_context);
if (rsc_context->rc_file_loaded) {
@ -89,10 +89,10 @@ int RSC_DestroyContext(R_RSCFILE_CONTEXT *rsc_context) {
free(rsc_context);
return R_SUCCESS;
return SUCCESS;
}
int RSC_LoadRSC(R_RSCFILE_CONTEXT *rsc) {
int RSC_LoadRSC(RSCFILE_CONTEXT *rsc) {
uint32 res_tbl_ct;
uint32 res_tbl_offset;
@ -101,17 +101,17 @@ int RSC_LoadRSC(R_RSCFILE_CONTEXT *rsc) {
size_t tbl_len;
uint32 i;
R_RSCFILE_RESOURCE *rsc_restbl;
RSCFILE_RESOURCE *rsc_restbl;
if (rsc->rc_file->size() < RSC_MIN_FILESIZE) {
return R_FAILURE;
return FAILURE;
}
// Read resource table info from the rear end of file
rsc->rc_file->seek((long)(rsc->rc_file->size() - 8), SEEK_SET);
if (rsc->rc_file->read(tblinfo_buf, RSC_TABLEINFO_SIZE) != RSC_TABLEINFO_SIZE) {
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS(tblinfo_buf, RSC_TABLEINFO_SIZE);
@ -122,7 +122,7 @@ int RSC_LoadRSC(R_RSCFILE_CONTEXT *rsc) {
// Check for sane table offset
if (res_tbl_offset != rsc->rc_file->size() - RSC_TABLEINFO_SIZE - RSC_TABLEENTRY_SIZE * res_tbl_ct) {
return R_FAILURE;
return FAILURE;
}
// Load resource table
@ -130,20 +130,20 @@ int RSC_LoadRSC(R_RSCFILE_CONTEXT *rsc) {
tbl_buf = (byte *)malloc(tbl_len);
if (tbl_buf == NULL) {
return R_FAILURE;
return FAILURE;
}
rsc->rc_file->seek((long)res_tbl_offset, SEEK_SET);
if (rsc->rc_file->read(tbl_buf, tbl_len) != tbl_len) {
free(tbl_buf);
return R_FAILURE;
return FAILURE;
}
rsc_restbl = (R_RSCFILE_RESOURCE *)malloc(res_tbl_ct * sizeof *rsc_restbl);
rsc_restbl = (RSCFILE_RESOURCE *)malloc(res_tbl_ct * sizeof *rsc_restbl);
if (rsc_restbl == NULL) {
free(tbl_buf);
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS1(tbl_buf, tbl_len);
@ -154,7 +154,7 @@ int RSC_LoadRSC(R_RSCFILE_CONTEXT *rsc) {
if ((rsc_restbl[i].res_offset > rsc->rc_file->size()) || (rsc_restbl[i].res_size > rsc->rc_file->size())) {
free(tbl_buf);
free(rsc_restbl);
return R_FAILURE;
return FAILURE;
}
}
@ -163,12 +163,12 @@ int RSC_LoadRSC(R_RSCFILE_CONTEXT *rsc) {
free(tbl_buf);
return R_SUCCESS;
return SUCCESS;
}
int RSC_FreeRSC(R_RSCFILE_CONTEXT *rsc) {
int RSC_FreeRSC(RSCFILE_CONTEXT *rsc) {
if (!rsc->rc_file_loaded) {
return R_FAILURE;
return FAILURE;
}
delete rsc->rc_file;
@ -176,52 +176,52 @@ int RSC_FreeRSC(R_RSCFILE_CONTEXT *rsc) {
free(rsc->rc_res_table);
return R_SUCCESS;
return SUCCESS;
}
uint32 RSC_GetResourceCount(R_RSCFILE_CONTEXT *rsc) {
uint32 RSC_GetResourceCount(RSCFILE_CONTEXT *rsc) {
return (rsc == NULL) ? 0 : rsc->rc_res_ct;
}
int RSC_GetResourceSize(R_RSCFILE_CONTEXT *rsc, uint32 res_num, uint32 *res_size) {
int RSC_GetResourceSize(RSCFILE_CONTEXT *rsc, uint32 res_num, uint32 *res_size) {
if ((rsc == NULL) || (res_size == NULL)) {
return R_FAILURE;
return FAILURE;
}
if (res_num > (rsc->rc_res_ct - 1)) {
return R_FAILURE;
return FAILURE;
}
*res_size = rsc->rc_res_table[res_num].res_size;
return R_SUCCESS;
return SUCCESS;
}
int RSC_GetResourceOffset(R_RSCFILE_CONTEXT *rsc, uint32 res_num, uint32 *res_offset) {
int RSC_GetResourceOffset(RSCFILE_CONTEXT *rsc, uint32 res_num, uint32 *res_offset) {
if ((rsc == NULL) || (res_offset == NULL)) {
return R_FAILURE;
return FAILURE;
}
if (res_num > (rsc->rc_res_ct - 1)) {
return R_FAILURE;
return FAILURE;
}
*res_offset = rsc->rc_res_table[res_num].res_offset;
return R_SUCCESS;
return SUCCESS;
}
int RSC_LoadResource(R_RSCFILE_CONTEXT *rsc, uint32 res_num, byte **res_p, size_t *res_size_p) {
int RSC_LoadResource(RSCFILE_CONTEXT *rsc, uint32 res_num, byte **res_p, size_t *res_size_p) {
uint32 res_offset;
size_t res_size;
byte *res_buf;
if ((rsc == NULL) || (res_p == NULL)) {
return R_FAILURE;
return FAILURE;
}
if (res_num > (rsc->rc_res_ct - 1)) {
return R_FAILURE;
return FAILURE;
}
res_offset = rsc->rc_res_table[res_num].res_offset;
@ -231,12 +231,12 @@ int RSC_LoadResource(R_RSCFILE_CONTEXT *rsc, uint32 res_num, byte **res_p, size_
res_buf = (byte *)malloc(res_size);
if (res_buf == NULL) {
return R_MEM;
return MEM;
}
if (rsc->rc_file->read(res_buf, res_size) != res_size) {
free(res_buf);
return R_FAILURE;
return FAILURE;
}
*res_p = res_buf;
@ -245,13 +245,13 @@ int RSC_LoadResource(R_RSCFILE_CONTEXT *rsc, uint32 res_num, byte **res_p, size_
*res_size_p = res_size;
}
return R_SUCCESS;
return SUCCESS;
}
int RSC_FreeResource(byte *resource_ptr) {
free(resource_ptr);
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -36,22 +36,22 @@ namespace Saga {
#define RSC_MIN_FILESIZE (RSC_TABLEINFO_SIZE + RSC_TABLEENTRY_SIZE + 1)
struct R_RSCFILE_RESOURCE {
struct RSCFILE_RESOURCE {
int res_type;
size_t res_offset;
size_t res_size;
};
struct R_RSCFILE_CONTEXT {
struct RSCFILE_CONTEXT {
const char *rc_file_fspec;
File *rc_file;
int rc_file_loaded;
R_RSCFILE_RESOURCE *rc_res_table;
RSCFILE_RESOURCE *rc_res_table;
size_t rc_res_ct;
};
int RSC_LoadRSC(R_RSCFILE_CONTEXT *rsc_context);
int RSC_FreeRSC(R_RSCFILE_CONTEXT *rsc);
int RSC_LoadRSC(RSCFILE_CONTEXT *rsc_context);
int RSC_FreeRSC(RSCFILE_CONTEXT *rsc);
} // End of namespace Saga

View File

@ -30,14 +30,14 @@
namespace Saga {
R_RSCFILE_CONTEXT *RSC_CreateContext();
int RSC_DestroyContext(R_RSCFILE_CONTEXT *);
int RSC_OpenContext(R_RSCFILE_CONTEXT *, const char *);
int RSC_CloseContext(R_RSCFILE_CONTEXT *);
uint32 RSC_GetResourceCount(R_RSCFILE_CONTEXT *);
int RSC_GetResourceSize(R_RSCFILE_CONTEXT *, uint32, uint32 *);
int RSC_GetResourceOffset(R_RSCFILE_CONTEXT *, uint32, uint32 *);
int RSC_LoadResource(R_RSCFILE_CONTEXT *, uint32, byte **, size_t *);
RSCFILE_CONTEXT *RSC_CreateContext();
int RSC_DestroyContext(RSCFILE_CONTEXT *);
int RSC_OpenContext(RSCFILE_CONTEXT *, const char *);
int RSC_CloseContext(RSCFILE_CONTEXT *);
uint32 RSC_GetResourceCount(RSCFILE_CONTEXT *);
int RSC_GetResourceSize(RSCFILE_CONTEXT *, uint32, uint32 *);
int RSC_GetResourceOffset(RSCFILE_CONTEXT *, uint32, uint32 *);
int RSC_LoadResource(RSCFILE_CONTEXT *, uint32, byte **, size_t *);
int RSC_FreeResource(byte *);
} // End of namespace Saga

View File

@ -71,7 +71,7 @@ REGISTER_PLUGIN("SAGA Engine", Engine_SAGA_gameList, Engine_SAGA_create, Engine_
namespace Saga {
#define R_MAX_TIME_DELTA 100
#define MAX_TIME_DELTA 100
static void CF_quitfunc(int argc, char *argv[], void *refCon);
static void CF_testfunc(int argc, char *argv[], void *refCon);
@ -116,18 +116,18 @@ void SagaEngine::go() {
_console = new Console(this);
CVAR_RegisterFunc(CF_testfunc, "testfunc", "foo [ optional foo ]", R_CVAR_NONE, 0, -1, this);
CVAR_RegisterFunc(CF_testfunc, "testfunc", "foo [ optional foo ]", CVAR_NONE, 0, -1, this);
CVAR_Register_I(&_soundEnabled, "sound", NULL, R_CVAR_CFG, 0, 1);
CVAR_Register_I(&_soundEnabled, "sound", NULL, CVAR_CFG, 0, 1);
CVAR_Register_I(&_musicEnabled, "music", NULL, R_CVAR_CFG, 0, 1);
CVAR_Register_I(&_musicEnabled, "music", NULL, CVAR_CFG, 0, 1);
CVAR_RegisterFunc(CF_quitfunc, "quit", NULL, R_CVAR_NONE, 0, 0, this);
CVAR_RegisterFunc(CF_quitfunc, "quit", NULL, CVAR_NONE, 0, 0, this);
// Process config file
// FIXME
/*
if (CFG_Read(NULL) != R_SUCCESS) {
if (CFG_Read(NULL) != SUCCESS) {
warning("Couldn't read configuration file");
}
*/
@ -135,7 +135,7 @@ void SagaEngine::go() {
// Process command line
// Detect game and open resource files
if (GAME_Init() != R_SUCCESS) {
if (GAME_Init() != SUCCESS) {
return;
}
@ -162,7 +162,7 @@ void SagaEngine::go() {
_previousTicks = _system->getMillis();
// Initialize graphics
R_GAME_DISPLAYINFO disp_info;
GAME_DISPLAYINFO disp_info;
GAME_GetDisplayInfo(&disp_info);
_gfx = new Gfx(_system, disp_info.logical_w, disp_info.logical_h);
@ -228,8 +228,8 @@ void SagaEngine::go() {
msec = currentTicks - _previousTicks;
_previousTicks = currentTicks;
}
if (msec > R_MAX_TIME_DELTA) {
msec = R_MAX_TIME_DELTA;
if (msec > MAX_TIME_DELTA) {
msec = MAX_TIME_DELTA;
}
_actor->direct(msec);
_events->handleEvents(msec);

View File

@ -60,16 +60,16 @@ class PalAnim;
using Common::MemoryReadStream;
#define R_PBOUNDS(n,max) (((n)>=(0))&&((n)<(max)))
#define R_MAXPATH 512
#define PBOUNDS(n,max) (((n)>=(0))&&((n)<(max)))
#define MAXPATH 512
struct R_RSCFILE_CONTEXT;
struct R_SEMAPHORE;
struct RSCFILE_CONTEXT;
struct SEMAPHORE;
enum R_ERRORCODE {
R_MEM = -2,
R_FAILURE = -1,
R_SUCCESS = 0
enum ERRORCODE {
MEM = -2,
FAILURE = -1,
SUCCESS = 0
};
enum SAGAGameId {
@ -78,7 +78,7 @@ enum SAGAGameId {
GID_IHNM
};
struct R_CLICKAREA {
struct CLICKAREA {
int n_points;
Point *points;
};
@ -128,16 +128,16 @@ public:
const byte *getImagePal(const byte *image_data, size_t image_size);
public:
R_TEXTLIST *textCreateList();
void textDestroyList(R_TEXTLIST *textlist);
void textClearList(R_TEXTLIST *textlist);
int textDrawList(R_TEXTLIST *textlist, R_SURFACE *ds);
R_TEXTLIST_ENTRY *textAddEntry(R_TEXTLIST *textlist, R_TEXTLIST_ENTRY *entry);
int textDeleteEntry(R_TEXTLIST *textlist, R_TEXTLIST_ENTRY *entry);
int textSetDisplay(R_TEXTLIST_ENTRY *entry, int val);
int textDraw(int font_id, R_SURFACE *ds, const char *string, int text_x, int text_y, int color,
TEXTLIST *textCreateList();
void textDestroyList(TEXTLIST *textlist);
void textClearList(TEXTLIST *textlist);
int textDrawList(TEXTLIST *textlist, SURFACE *ds);
TEXTLIST_ENTRY *textAddEntry(TEXTLIST *textlist, TEXTLIST_ENTRY *entry);
int textDeleteEntry(TEXTLIST *textlist, TEXTLIST_ENTRY *entry);
int textSetDisplay(TEXTLIST_ENTRY *entry, int val);
int textDraw(int font_id, SURFACE *ds, const char *string, int text_x, int text_y, int color,
int effect_color, int flags);
int textProcessList(R_TEXTLIST *textlist, long ms);
int textProcessList(TEXTLIST *textlist, long ms);
int transitionDissolve(byte *dst_img, int dst_w, int dst_h, int dst_p,
const byte *src_img, int src_w, int src_h, int src_p, int flags, int x, int y,

View File

@ -54,18 +54,18 @@ static void CF_objectinfo(int argc, char *argv[], void *refCon);
int Scene::reg() {
CVAR_Register_I(&_sceneNumber, "scene", NULL, R_CVAR_READONLY, 0, 0);
CVAR_RegisterFunc(CF_scenechange, "scene_change", "<Scene number>", R_CVAR_NONE, 1, 1, this);
CVAR_RegisterFunc(CF_sceneinfo, "scene_info", NULL, R_CVAR_NONE, 0, 0, this);
CVAR_Register_I(&_sceneNumber, "scene", NULL, CVAR_READONLY, 0, 0);
CVAR_RegisterFunc(CF_scenechange, "scene_change", "<Scene number>", CVAR_NONE, 1, 1, this);
CVAR_RegisterFunc(CF_sceneinfo, "scene_info", NULL, CVAR_NONE, 0, 0, this);
CVAR_RegisterFunc(CF_actioninfo,
"action_info", NULL, R_CVAR_NONE, 0, 0, this);
CVAR_RegisterFunc(CF_objectinfo, "object_info", NULL, R_CVAR_NONE, 0, 0, this);
"action_info", NULL, CVAR_NONE, 0, 0, this);
CVAR_RegisterFunc(CF_objectinfo, "object_info", NULL, CVAR_NONE, 0, 0, this);
return R_SUCCESS;
return SUCCESS;
}
Scene::Scene(SagaEngine *vm) : _vm(vm), _initialized(false) {
R_GAME_SCENEDESC gs_desc;
GAME_SCENEDESC gs_desc;
byte *scene_lut_p;
size_t scene_lut_len;
int result;
@ -75,8 +75,8 @@ Scene::Scene(SagaEngine *vm) : _vm(vm), _initialized(false) {
GAME_GetSceneInfo(&gs_desc);
// Load scene module resource context
result = GAME_GetFileContext(&_sceneContext, R_GAME_RESOURCEFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&_sceneContext, GAME_RESOURCEFILE, 0);
if (result != SUCCESS) {
warning("Scene::Scene(): Couldn't load scene resource context");
return;
}
@ -90,7 +90,7 @@ Scene::Scene(SagaEngine *vm) : _vm(vm), _initialized(false) {
// Load scene lookup table
debug(0, "Loading scene LUT from resource %u.", gs_desc.scene_lut_rn);
result = RSC_LoadResource(_sceneContext, gs_desc.scene_lut_rn, &scene_lut_p, &scene_lut_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Scene::Scene(): Error: couldn't load scene LUT");
return;
}
@ -154,13 +154,13 @@ Scene::~Scene() {
}
}
int Scene::queueScene(R_SCENE_QUEUE *scene_queue) {
int Scene::queueScene(SCENE_QUEUE *scene_queue) {
assert(_initialized);
assert(scene_queue != NULL);
ys_dll_add_tail(_sceneQueue, scene_queue, sizeof *scene_queue);
return R_SUCCESS;
return SUCCESS;
}
int Scene::clearSceneQueue() {
@ -168,23 +168,23 @@ int Scene::clearSceneQueue() {
ys_dll_delete_all(_sceneQueue);
return R_SUCCESS;
return SUCCESS;
}
int Scene::startScene() {
YS_DL_NODE *node;
R_SCENE_QUEUE *scene_qdat;
SCENE_QUEUE *scene_qdat;
assert(_initialized);
if (_sceneLoaded) {
warning("Scene::start(): Error: Can't start game...scene already loaded");
return R_FAILURE;
return FAILURE;
}
if (_inGame) {
warning("Scene::start(): Error: Can't start game...game already started");
return R_FAILURE;
return FAILURE;
}
switch (GAME_GetGameType()) {
@ -202,31 +202,31 @@ int Scene::startScene() {
// Load the head node in scene queue
node = ys_dll_head(_sceneQueue);
if (node == NULL) {
return R_SUCCESS;
return SUCCESS;
}
scene_qdat = (R_SCENE_QUEUE *)ys_dll_get_data(node);
scene_qdat = (SCENE_QUEUE *)ys_dll_get_data(node);
assert(scene_qdat != NULL);
loadScene(scene_qdat->scene_n, scene_qdat->load_flag, scene_qdat->scene_proc, scene_qdat->scene_desc, scene_qdat->fadeType);
return R_SUCCESS;
return SUCCESS;
}
int Scene::nextScene() {
YS_DL_NODE *node;
R_SCENE_QUEUE *scene_qdat;
SCENE_QUEUE *scene_qdat;
assert(_initialized);
if (!_sceneLoaded) {
warning("Scene::next(): Error: Can't advance scene...no scene loaded");
return R_FAILURE;
return FAILURE;
}
if (_inGame) {
warning("Scene::next(): Error: Can't advance scene...game already started");
return R_FAILURE;
return FAILURE;
}
endScene();
@ -234,7 +234,7 @@ int Scene::nextScene() {
// Delete the current head node in scene queue
node = ys_dll_head(_sceneQueue);
if (node == NULL) {
return R_SUCCESS;
return SUCCESS;
}
ys_dll_delete(node);
@ -242,15 +242,15 @@ int Scene::nextScene() {
// Load the head node in scene queue
node = ys_dll_head(_sceneQueue);
if (node == NULL) {
return R_SUCCESS;
return SUCCESS;
}
scene_qdat = (R_SCENE_QUEUE *)ys_dll_get_data(node);
scene_qdat = (SCENE_QUEUE *)ys_dll_get_data(node);
assert(scene_qdat != NULL);
loadScene(scene_qdat->scene_n, scene_qdat->load_flag, scene_qdat->scene_proc, scene_qdat->scene_desc, scene_qdat->fadeType);
return R_SUCCESS;
return SUCCESS;
}
int Scene::skipScene() {
@ -258,30 +258,30 @@ int Scene::skipScene() {
YS_DL_NODE *prev_node;
YS_DL_NODE *skip_node = NULL;
R_SCENE_QUEUE *scene_qdat = NULL;
R_SCENE_QUEUE *skip_qdat = NULL;
SCENE_QUEUE *scene_qdat = NULL;
SCENE_QUEUE *skip_qdat = NULL;
assert(_initialized);
if (!_sceneLoaded) {
warning("Scene::skip(): Error: Can't skip scene...no scene loaded");
return R_FAILURE;
return FAILURE;
}
if (_inGame) {
warning("Scene::skip(): Error: Can't skip scene...game already started");
return R_FAILURE;
return FAILURE;
}
// Walk down scene queue and try to find a skip target
node = ys_dll_head(_sceneQueue);
if (node == NULL) {
warning("Scene::skip(): Error: Can't skip scene...no scenes in queue");
return R_FAILURE;
return FAILURE;
}
for (node = ys_dll_next(node); node != NULL; node = ys_dll_next(node)) {
scene_qdat = (R_SCENE_QUEUE *)ys_dll_get_data(node);
scene_qdat = (SCENE_QUEUE *)ys_dll_get_data(node);
assert(scene_qdat != NULL);
if (scene_qdat->scene_skiptarget) {
@ -302,7 +302,7 @@ int Scene::skipScene() {
}
// Search for a scene to skip to
return R_SUCCESS;
return SUCCESS;
}
int Scene::changeScene(int scene_num) {
@ -310,23 +310,23 @@ int Scene::changeScene(int scene_num) {
if (!_sceneLoaded) {
warning("Scene::changeScene(): Error: Can't change scene. No scene currently loaded. Game in invalid state");
return R_FAILURE;
return FAILURE;
}
if ((scene_num < 0) || (scene_num > _sceneMax)) {
warning("Scene::changeScene(): Error: Can't change scene. Invalid scene number");
return R_FAILURE;
return FAILURE;
}
if (_sceneLUT[scene_num] == 0) {
warning("Scene::changeScene(): Error: Can't change scene; invalid scene descriptor resource number (0)");
return R_FAILURE;
return FAILURE;
}
endScene();
loadScene(scene_num, BY_SCENE, SC_defaultScene, NULL, false);
return R_SUCCESS;
return SUCCESS;
}
int Scene::getMode() {
@ -341,11 +341,11 @@ int Scene::getZInfo(SCENE_ZINFO *zinfo) {
zinfo->beginSlope = _desc.beginSlope;
zinfo->endSlope = _desc.endSlope;
return R_SUCCESS;
return SUCCESS;
}
int Scene::getBGInfo(SCENE_BGINFO *bginfo) {
R_GAME_DISPLAYINFO di;
GAME_DISPLAYINFO di;
int x, y;
assert(_initialized);
@ -371,21 +371,21 @@ int Scene::getBGInfo(SCENE_BGINFO *bginfo) {
bginfo->bg_x = x;
bginfo->bg_y = y;
return R_SUCCESS;
return SUCCESS;
}
int Scene::getBGPal(PALENTRY **pal) {
assert(_initialized);
*pal = _bg.pal;
return R_SUCCESS;
return SUCCESS;
}
int Scene::getBGMaskInfo(int *w, int *h, byte **buf, size_t *buf_len) {
assert(_initialized);
if (!_bgMask.loaded) {
return R_FAILURE;
return FAILURE;
}
*w = _bgMask.w;
@ -393,7 +393,7 @@ int Scene::getBGMaskInfo(int *w, int *h, byte **buf, size_t *buf_len) {
*buf = _bgMask.buf;
*buf_len = _bgMask.buf_len;
return R_SUCCESS;
return SUCCESS;
}
int Scene::isBGMaskPresent() {
@ -402,17 +402,17 @@ int Scene::isBGMaskPresent() {
return _bgMask.loaded;
}
int Scene::getInfo(R_SCENE_INFO *si) {
int Scene::getInfo(SCENE_INFO *si) {
assert(_initialized);
assert(si != NULL);
si->text_list = _textList;
return R_SUCCESS;
return SUCCESS;
}
int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SCENE_DESC *scene_desc_param, int fadeType) {
R_SCENE_INFO scene_info;
int Scene::loadScene(int scene_num, int load_flag, SCENE_PROC scene_proc, SCENE_DESC *scene_desc_param, int fadeType) {
SCENE_INFO scene_info;
uint32 res_number = 0;
int result;
int i;
@ -421,7 +421,7 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
if (_sceneLoaded) {
warning("Scene::loadScene(): Error, a scene is already loaded");
return R_FAILURE;
return FAILURE;
}
_animList = ys_dll_create();
@ -447,7 +447,7 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
break;
default:
warning("Scene::loadScene(): Error: Invalid scene load flag");
return R_FAILURE;
return FAILURE;
break;
}
@ -458,14 +458,14 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
assert(_sceneResNum != 0);
debug(0, "Loading scene resource %u:", res_number);
if (loadSceneDescriptor(res_number) != R_SUCCESS) {
if (loadSceneDescriptor(res_number) != SUCCESS) {
warning("Scene::loadScene(): Error reading scene descriptor");
return R_FAILURE;
return FAILURE;
}
if (loadSceneResourceList(_desc.resListRN) != R_SUCCESS) {
if (loadSceneResourceList(_desc.resListRN) != SUCCESS) {
warning("Scene::loadScene(): Error reading scene resource list");
return R_FAILURE;
return FAILURE;
}
} else {
debug(0, "Loading memory scene resource.");
@ -475,37 +475,37 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
for (i = 0; i < _resListEntries; i++) {
result = RSC_LoadResource(_sceneContext, _resList[i].res_number,
&_resList[i].res_data, &_resList[i].res_data_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Scene::loadScene(): Error: Allocation failure loading scene resource list");
return R_FAILURE;
return FAILURE;
}
}
// Process resources from scene resource list
if (processSceneResources() != R_SUCCESS) {
if (processSceneResources() != SUCCESS) {
warning("Scene::loadScene(): Error loading scene resources");
return R_FAILURE;
return FAILURE;
}
// Load scene script data
if (_desc.scriptNum > 0) {
if (_vm->_script->loadScript(_desc.scriptNum) != R_SUCCESS) {
if (_vm->_script->loadScript(_desc.scriptNum) != SUCCESS) {
warning("Scene::loadScene(): Error loading scene script");
return R_FAILURE;
return FAILURE;
}
}
_sceneLoaded = true;
if (fadeType == SCENE_FADE || fadeType == SCENE_FADE_NO_INTERFACE) {
R_EVENT event;
R_EVENT *q_event;
static PALENTRY current_pal[R_PAL_ENTRIES];
EVENT event;
EVENT *q_event;
static PALENTRY current_pal[PAL_ENTRIES];
// Fade to black out
_vm->_gfx->getCurrentPal(current_pal);
event.type = R_IMMEDIATE_EVENT;
event.code = R_PAL_EVENT;
event.type = IMMEDIATE_EVENT;
event.code = PAL_EVENT;
event.op = EVENT_PALTOBLACK;
event.time = 0;
event.duration = PALETTE_FADE_DURATION;
@ -514,8 +514,8 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
if (fadeType != SCENE_FADE_NO_INTERFACE) {
// Activate user interface
event.type = R_IMMEDIATE_EVENT;
event.code = R_INTERFACE_EVENT;
event.type = IMMEDIATE_EVENT;
event.code = INTERFACE_EVENT;
event.op = EVENT_ACTIVATE;
event.time = 0;
event.duration = 0;
@ -523,8 +523,8 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
}
// Display scene background, but stay with black palette
event.type = R_IMMEDIATE_EVENT;
event.code = R_BG_EVENT;
event.type = IMMEDIATE_EVENT;
event.code = BG_EVENT;
event.op = EVENT_DISPLAY;
event.param = NO_SET_PALETTE;
event.time = 0;
@ -533,8 +533,8 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
// Start the scene pre script, but stay with black palette
if (_desc.startScriptNum > 0) {
event.type = R_ONESHOT_EVENT;
event.code = R_SCRIPT_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCRIPT_EVENT;
event.op = EVENT_BLOCKING;
event.time = 0;
event.param = _desc.startScriptNum;
@ -547,8 +547,8 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
}
// Fade in from black to the scene background palette
event.type = R_IMMEDIATE_EVENT;
event.code = R_PAL_EVENT;
event.type = IMMEDIATE_EVENT;
event.code = PAL_EVENT;
event.op = EVENT_BLACKTOPAL;
event.time = 0;
event.duration = PALETTE_FADE_DURATION;
@ -567,7 +567,7 @@ int Scene::loadScene(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SC
_sceneProc(SCENE_BEGIN, &scene_info, this);
return R_SUCCESS;
return SUCCESS;
}
int Scene::loadSceneDescriptor(uint32 res_number) {
@ -576,14 +576,14 @@ int Scene::loadSceneDescriptor(uint32 res_number) {
int result;
result = RSC_LoadResource(_sceneContext, res_number, &scene_desc_data, &scene_desc_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Scene::loadSceneDescriptor(): Error: couldn't load scene descriptor");
return R_FAILURE;
return FAILURE;
}
if (scene_desc_len != SAGA_SCENE_DESC_LEN) {
warning("Scene::loadSceneDescriptor(): Error: scene descriptor length invalid");
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS(scene_desc_data, scene_desc_len);
@ -599,7 +599,7 @@ int Scene::loadSceneDescriptor(uint32 res_number) {
RSC_FreeResource(scene_desc_data);
return R_SUCCESS;
return SUCCESS;
}
int Scene::loadSceneResourceList(uint32 reslist_rn) {
@ -610,9 +610,9 @@ int Scene::loadSceneResourceList(uint32 reslist_rn) {
// Load the scene resource table
result = RSC_LoadResource(_sceneContext, reslist_rn, &resource_list, &resource_list_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Scene::loadSceneResourceList(): Error: couldn't load scene resource list");
return R_FAILURE;
return FAILURE;
}
MemoryReadStream readS(resource_list, resource_list_len);
@ -620,11 +620,11 @@ int Scene::loadSceneResourceList(uint32 reslist_rn) {
// Allocate memory for scene resource list
_resListEntries = resource_list_len / SAGA_RESLIST_ENTRY_LEN;
debug(0, "Scene resource list contains %d entries.", _resListEntries);
_resList = (R_SCENE_RESLIST *)calloc(_resListEntries, sizeof *_resList);
_resList = (SCENE_RESLIST *)calloc(_resListEntries, sizeof *_resList);
if (_resList == NULL) {
warning("Scene::loadSceneResourceList(): Error: Memory allocation failed");
return R_MEM;
return MEM;
}
// Load scene resource list from raw scene
@ -638,7 +638,7 @@ int Scene::loadSceneResourceList(uint32 reslist_rn) {
RSC_FreeResource(resource_list);
return R_SUCCESS;
return SUCCESS;
}
int Scene::processSceneResources() {
@ -657,7 +657,7 @@ int Scene::processSceneResources() {
case SAGA_BG_IMAGE: // Scene background resource
if (_bg.loaded) {
warning("Scene::processSceneResources(): Multiple background resources encountered");
return R_FAILURE;
return FAILURE;
}
debug(0, "Loading background resource.");
@ -670,14 +670,14 @@ int Scene::processSceneResources() {
&_bg.buf,
&_bg.buf_len,
&_bg.w,
&_bg.h) != R_SUCCESS) {
&_bg.h) != SUCCESS) {
warning("Scene::ProcessSceneResources(): Error loading background resource: %u", _resList[i].res_number);
return R_FAILURE;
return FAILURE;
}
pal_p = _vm->getImagePal(_bg.res_buf, _bg.res_len);
memcpy(_bg.pal, pal_p, sizeof _bg.pal);
_sceneMode = R_SCENE_MODE_NORMAL;
_sceneMode = SCENE_MODE_NORMAL;
break;
case SAGA_BG_MASK: // Scene background mask resource
if (_bgMask.loaded) {
@ -697,9 +697,9 @@ int Scene::processSceneResources() {
case SAGA_OBJECT_MAP:
debug(0, "Loading object map resource...");
if (_objectMap->load(res_data,
res_data_len) != R_SUCCESS) {
res_data_len) != SUCCESS) {
warning("Scene::ProcessSceneResources(): Error loading object map resource");
return R_FAILURE;
return FAILURE;
}
break;
case SAGA_ACTION_MAP:
@ -707,49 +707,49 @@ int Scene::processSceneResources() {
_actionMap = new ActionMap(_vm, res_data, res_data_len);
break;
case SAGA_ISO_TILESET:
if (_sceneMode == R_SCENE_MODE_NORMAL) {
if (_sceneMode == SCENE_MODE_NORMAL) {
warning("Scene::ProcessSceneResources(): Isometric tileset incompatible with normal scene mode");
return R_FAILURE;
return FAILURE;
}
debug(0, "Loading isometric tileset resource.");
if (_vm->_isoMap->loadTileset(res_data, res_data_len) != R_SUCCESS) {
if (_vm->_isoMap->loadTileset(res_data, res_data_len) != SUCCESS) {
warning("Scene::ProcessSceneResources(): Error loading isometric tileset resource");
return R_FAILURE;
return FAILURE;
}
_sceneMode = R_SCENE_MODE_ISO;
_sceneMode = SCENE_MODE_ISO;
break;
case SAGA_ISO_METAMAP:
if (_sceneMode == R_SCENE_MODE_NORMAL) {
if (_sceneMode == SCENE_MODE_NORMAL) {
warning("Scene::ProcessSceneResources(): Isometric metamap incompatible with normal scene mode");
return R_FAILURE;
return FAILURE;
}
debug(0, "Loading isometric metamap resource.");
if (_vm->_isoMap->loadMetamap(res_data, res_data_len) != R_SUCCESS) {
if (_vm->_isoMap->loadMetamap(res_data, res_data_len) != SUCCESS) {
warning("Scene::ProcessSceneResources(): Error loading isometric metamap resource");
return R_FAILURE;
return FAILURE;
}
_sceneMode = R_SCENE_MODE_ISO;
_sceneMode = SCENE_MODE_ISO;
break;
case SAGA_ISO_METATILESET:
if (_sceneMode == R_SCENE_MODE_NORMAL) {
if (_sceneMode == SCENE_MODE_NORMAL) {
warning("Scene::ProcessSceneResources(): Isometric metatileset incompatible with normal scene mode");
return R_FAILURE;
return FAILURE;
}
debug(0, "Loading isometric metatileset resource.");
if (_vm->_isoMap->loadMetaTileset(res_data, res_data_len) != R_SUCCESS) {
if (_vm->_isoMap->loadMetaTileset(res_data, res_data_len) != SUCCESS) {
warning("Scene::ProcessSceneResources(): Error loading isometric tileset resource");
return R_FAILURE;
return FAILURE;
}
_sceneMode = R_SCENE_MODE_ISO;
_sceneMode = SCENE_MODE_ISO;
break;
case SAGA_ANIM_1:
case SAGA_ANIM_2:
@ -767,13 +767,13 @@ int Scene::processSceneResources() {
new_animinfo = (SCENE_ANIMINFO *)malloc(sizeof *new_animinfo);
if (new_animinfo == NULL) {
warning("Scene::ProcessSceneResources(): Memory allocation error");
return R_MEM;
return MEM;
}
if (_vm->_anim->load(_resList[i].res_data,
_resList[i].res_data_len, &new_anim_id) != R_SUCCESS) {
_resList[i].res_data_len, &new_anim_id) != SUCCESS) {
warning("Scene::ProcessSceneResources(): Error loading animation resource");
return R_FAILURE;
return FAILURE;
}
new_animinfo->anim_handle = new_anim_id;
@ -797,12 +797,12 @@ int Scene::processSceneResources() {
break;
}
}
return R_SUCCESS;
return SUCCESS;
}
int Scene::draw(R_SURFACE *dst_s) {
R_GAME_DISPLAYINFO disp_info;
R_BUFFER_INFO buf_info;
int Scene::draw(SURFACE *dst_s) {
GAME_DISPLAYINFO disp_info;
BUFFER_INFO buf_info;
Point bg_pt;
assert(_initialized);
@ -815,24 +815,24 @@ int Scene::draw(R_SURFACE *dst_s) {
switch (_sceneMode) {
case R_SCENE_MODE_NORMAL:
_vm->_gfx->bufToSurface(dst_s, buf_info.r_bg_buf, disp_info.logical_w,
case SCENE_MODE_NORMAL:
_vm->_gfx->bufToSurface(dst_s, buf_info.bg_buf, disp_info.logical_w,
MAX(disp_info.scene_h, _bg.h), NULL, &bg_pt);
break;
case R_SCENE_MODE_ISO:
case SCENE_MODE_ISO:
_vm->_isoMap->draw(dst_s);
break;
default:
// Unknown scene mode
return R_FAILURE;
return FAILURE;
break;
};
return R_SUCCESS;
return SUCCESS;
}
int Scene::endScene() {
R_SCENE_INFO scene_info;
SCENE_INFO scene_info;
assert(_initialized);
@ -888,7 +888,7 @@ int Scene::endScene() {
_sceneLoaded = false;
return R_SUCCESS;
return SUCCESS;
}
void Scene::sceneChangeCmd(int argc, char *argv[]) {
@ -907,7 +907,7 @@ void Scene::sceneChangeCmd(int argc, char *argv[]) {
clearSceneQueue();
if (changeScene(scene_num) == R_SUCCESS) {
if (changeScene(scene_num) == SUCCESS) {
_vm->_console->print("Scene changed.");
} else {
_vm->_console->print("Couldn't change scene!");
@ -938,7 +938,7 @@ static void CF_sceneinfo(int argc, char *argv[], void *refCon) {
((Scene *)refCon)->sceneInfoCmd(argc, argv);
}
int Scene::SC_defaultScene(int param, R_SCENE_INFO *scene_info, void *refCon) {
int Scene::SC_defaultScene(int param, SCENE_INFO *scene_info, void *refCon) {
return ((Scene *)refCon)->defaultScene(param, scene_info);
}
@ -957,25 +957,25 @@ static void CF_objectinfo(int argc, char *argv[], void *refCon) {
}
int Scene::defaultScene(int param, R_SCENE_INFO *scene_info) {
R_EVENT event;
int Scene::defaultScene(int param, SCENE_INFO *scene_info) {
EVENT event;
switch (param) {
case SCENE_BEGIN:
_vm->_sound->stopVoice();
if (_desc.musicRN >= 0) {
event.type = R_ONESHOT_EVENT;
event.code = R_MUSIC_EVENT;
event.type = ONESHOT_EVENT;
event.code = MUSIC_EVENT;
event.param = _desc.musicRN;
event.param2 = R_MUSIC_DEFAULT;
event.param2 = MUSIC_DEFAULT;
event.op = EVENT_PLAY;
event.time = 0;
_vm->_events->queue(&event);
} else {
event.type = R_ONESHOT_EVENT;
event.code = R_MUSIC_EVENT;
event.type = ONESHOT_EVENT;
event.code = MUSIC_EVENT;
event.op = EVENT_STOP;
event.time = 0;
@ -983,8 +983,8 @@ int Scene::defaultScene(int param, R_SCENE_INFO *scene_info) {
}
// Set scene background
event.type = R_ONESHOT_EVENT;
event.code = R_BG_EVENT;
event.type = ONESHOT_EVENT;
event.code = BG_EVENT;
event.op = EVENT_DISPLAY;
event.param = SET_PALETTE;
event.time = 0;
@ -992,16 +992,16 @@ int Scene::defaultScene(int param, R_SCENE_INFO *scene_info) {
_vm->_events->queue(&event);
// Activate user interface
event.type = R_ONESHOT_EVENT;
event.code = R_INTERFACE_EVENT;
event.type = ONESHOT_EVENT;
event.code = INTERFACE_EVENT;
event.op = EVENT_ACTIVATE;
event.time = 0;
_vm->_events->queue(&event);
// Begin palette cycle animation if present
event.type = R_ONESHOT_EVENT;
event.code = R_PALANIM_EVENT;
event.type = ONESHOT_EVENT;
event.code = PALANIM_EVENT;
event.op = EVENT_CYCLESTART;
event.time = 0;
@ -1013,8 +1013,8 @@ int Scene::defaultScene(int param, R_SCENE_INFO *scene_info) {
// Start the scene main script
if (_desc.sceneScriptNum > 0) {
event.type = R_ONESHOT_EVENT;
event.code = R_SCRIPT_EVENT;
event.type = ONESHOT_EVENT;
event.code = SCRIPT_EVENT;
event.op = EVENT_NONBLOCKING;
event.time = 0;
event.param = _desc.sceneScriptNum;

View File

@ -33,10 +33,10 @@ namespace Saga {
class ActionMap;
class ObjectMap;
enum R_SCENE_MODES {
R_SCENE_MODE_INVALID,
R_SCENE_MODE_NORMAL,
R_SCENE_MODE_ISO
enum SCENE_MODES {
SCENE_MODE_INVALID,
SCENE_MODE_NORMAL,
SCENE_MODE_ISO
};
struct SCENE_ZINFO {
@ -54,13 +54,13 @@ struct SCENE_BGINFO {
size_t bg_buflen;
};
struct R_SCENE_INFO {
struct SCENE_INFO {
SCENE_ZINFO z_info;
SCENE_BGINFO bg_info;
R_TEXTLIST *text_list;
TEXTLIST *text_list;
};
typedef int (R_SCENE_PROC) (int, R_SCENE_INFO *, void *);
typedef int (SCENE_PROC) (int, SCENE_INFO *, void *);
#define PALETTE_FADE_DURATION 1000
@ -99,7 +99,7 @@ enum SAGA_RESOURCE_TYPES {
#define SAGA_RESLIST_ENTRY_LEN 4
struct R_SCENE_RESLIST {
struct SCENE_RESLIST {
uint32 res_number;
int res_type;
byte *res_data;
@ -108,7 +108,7 @@ struct R_SCENE_RESLIST {
#define SAGA_SCENE_DESC_LEN 16
struct R_SCENE_DESC {
struct SCENE_DESC {
int16 flags;
int16 resListRN;
int16 endSlope;
@ -117,7 +117,7 @@ struct R_SCENE_DESC {
uint16 sceneScriptNum;
uint16 startScriptNum;
int16 musicRN;
R_SCENE_RESLIST *resList;
SCENE_RESLIST *resList;
size_t resListCnt;
};
@ -145,23 +145,23 @@ enum SCENE_FADE_TYPES {
SCENE_FADE_NO_INTERFACE = 2
};
struct R_SCENE_QUEUE {
struct SCENE_QUEUE {
uint32 scene_n;
R_SCENE_DESC *scene_desc;
SCENE_DESC *scene_desc;
int load_flag;
R_SCENE_PROC *scene_proc;
SCENE_PROC *scene_proc;
int scene_skiptarget;
int fadeType;
};
///// IHNM-specific stuff
#define R_IHNM_PALFADE_TIME 1000
#define R_IHNM_INTRO_FRAMETIME 80
#define R_IHNM_DGLOGO_TIME 8000
#define R_IHNM_TITLE_TIME 16000
#define IHNM_PALFADE_TIME 1000
#define IHNM_INTRO_FRAMETIME 80
#define IHNM_DGLOGO_TIME 8000
#define IHNM_TITLE_TIME 16000
///// ITE-specific stuff
#define R_INTRO_STRMAX 256
#define INTRO_STRMAX 256
#define ITE_INTRO_FRAMETIME 90
@ -175,7 +175,7 @@ struct R_SCENE_QUEUE {
#define CREDIT_DURATION1 4000
enum R_INTRO_SCENE_DIALOGUE_INFO {
enum INTRO_SCENE_DIALOGUE_INFO {
INTRO_CAVE1_START = 0,
INTRO_CAVE1_END = 4,
@ -189,10 +189,10 @@ enum R_INTRO_SCENE_DIALOGUE_INFO {
INTRO_CAVE4_END = 14
};
struct R_INTRO_DIALOGUE {
struct INTRO_DIALOGUE {
uint32 i_voice_rn;
const char *i_cvar_name;
char i_str[R_INTRO_STRMAX];
char i_str[INTRO_STRMAX];
};
struct INTRO_CAPTION {
@ -220,15 +220,15 @@ class Scene {
int nextScene();
int skipScene();
int endScene();
int queueScene(R_SCENE_QUEUE *scene_queue);
int draw(R_SURFACE *);
int queueScene(SCENE_QUEUE *scene_queue);
int draw(SURFACE *);
int getMode();
int getBGMaskInfo(int *w, int *h, byte **buf, size_t *buf_len);
int isBGMaskPresent(void);
int getBGInfo(SCENE_BGINFO *bginfo);
int getZInfo(SCENE_ZINFO *zinfo);
int getBGPal(PALENTRY **pal);
int getInfo(R_SCENE_INFO *si);
int getInfo(SCENE_INFO *si);
int clearSceneQueue(void);
int changeScene(int scene_num);
@ -239,7 +239,7 @@ class Scene {
void sceneChangeCmd(int argc, char *argv[]);
private:
int loadScene(int scene, int load_flag, R_SCENE_PROC scene_proc, R_SCENE_DESC *,
int loadScene(int scene, int load_flag, SCENE_PROC scene_proc, SCENE_DESC *,
int fadeIn);
int loadSceneDescriptor(uint32 res_number);
int loadSceneResourceList(uint32 res_number);
@ -249,7 +249,7 @@ class Scene {
SagaEngine *_vm;
bool _initialized;
R_RSCFILE_CONTEXT *_sceneContext;
RSCFILE_CONTEXT *_sceneContext;
int *_sceneLUT;
int _sceneCount;
int _sceneMax;
@ -261,18 +261,18 @@ class Scene {
int _sceneResNum;
bool _inGame;
bool _loadDesc;
R_SCENE_DESC _desc;
SCENE_DESC _desc;
int _resListEntries;
R_SCENE_RESLIST *_resList;
SCENE_RESLIST *_resList;
int _animEntries;
YS_DL_LIST *_animList;
R_SCENE_PROC *_sceneProc;
R_TEXTLIST *_textList;
SCENE_PROC *_sceneProc;
TEXTLIST *_textList;
SCENE_IMAGE _bg;
SCENE_IMAGE _bgMask;
static int SC_defaultScene(int param, R_SCENE_INFO *scene_info, void *refCon);
int defaultScene(int param, R_SCENE_INFO *scene_info);
static int SC_defaultScene(int param, SCENE_INFO *scene_info, void *refCon);
int defaultScene(int param, SCENE_INFO *scene_info);
public:
ActionMap *_actionMap;
@ -283,39 +283,39 @@ class Scene {
int ITEStartProc();
public:
static int SC_IHNMIntroMovieProc1(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_IHNMIntroMovieProc2(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_IHNMIntroMovieProc3(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_IHNMHateProc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_IHNMIntroMovieProc1(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_IHNMIntroMovieProc2(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_IHNMIntroMovieProc3(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_IHNMHateProc(int param, SCENE_INFO *scene_info, void *refCon);
private:
int IHNMIntroMovieProc1(int param, R_SCENE_INFO *scene_info);
int IHNMIntroMovieProc2(int param, R_SCENE_INFO *scene_info);
int IHNMIntroMovieProc3(int param, R_SCENE_INFO *scene_info);
int IHNMHateProc(int param, R_SCENE_INFO *scene_info);
int IHNMIntroMovieProc1(int param, SCENE_INFO *scene_info);
int IHNMIntroMovieProc2(int param, SCENE_INFO *scene_info);
int IHNMIntroMovieProc3(int param, SCENE_INFO *scene_info);
int IHNMHateProc(int param, SCENE_INFO *scene_info);
public:
int ITEIntroRegisterLang(void);
static int SC_ITEIntroAnimProc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroFaireTentProc(int param, R_SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroAnimProc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave1Proc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave2Proc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave3Proc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroCave4Proc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroValleyProc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroTreeHouseProc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroFairePathProc(int param, SCENE_INFO *scene_info, void *refCon);
static int SC_ITEIntroFaireTentProc(int param, SCENE_INFO *scene_info, void *refCon);
private:
int ITEIntroAnimProc(int param, R_SCENE_INFO *scene_info);
int ITEIntroCave1Proc(int param, R_SCENE_INFO *scene_info);
int ITEIntroCave2Proc(int param, R_SCENE_INFO *scene_info);
int ITEIntroCave3Proc(int param, R_SCENE_INFO *scene_info);
int ITEIntroCave4Proc(int param, R_SCENE_INFO *scene_info);
int ITEIntroValleyProc(int param, R_SCENE_INFO *scene_info);
int ITEIntroTreeHouseProc(int param, R_SCENE_INFO *scene_info);
int ITEIntroFairePathProc(int param, R_SCENE_INFO *scene_info);
int ITEIntroFaireTentProc(int param, R_SCENE_INFO *scene_info);
int ITEIntroAnimProc(int param, SCENE_INFO *scene_info);
int ITEIntroCave1Proc(int param, SCENE_INFO *scene_info);
int ITEIntroCave2Proc(int param, SCENE_INFO *scene_info);
int ITEIntroCave3Proc(int param, SCENE_INFO *scene_info);
int ITEIntroCave4Proc(int param, SCENE_INFO *scene_info);
int ITEIntroValleyProc(int param, SCENE_INFO *scene_info);
int ITEIntroTreeHouseProc(int param, SCENE_INFO *scene_info);
int ITEIntroFairePathProc(int param, SCENE_INFO *scene_info);
int ITEIntroFaireTentProc(int param, SCENE_INFO *scene_info);
};

View File

@ -40,17 +40,17 @@ static void CF_script_exec(int argc, char *argv[], void *refCon);
static void CF_script_togglestep(int argc, char *argv[], void *refCon);
int Script::reg() {
CVAR_RegisterFunc(CF_script_info, "script_info", NULL, R_CVAR_NONE, 0, 0, this);
CVAR_RegisterFunc(CF_script_exec, "script_exec", "<Script number>", R_CVAR_NONE, 1, 1, this);
CVAR_RegisterFunc(CF_script_togglestep, "script_togglestep", NULL, R_CVAR_NONE, 0, 0, this);
CVAR_RegisterFunc(CF_script_info, "script_info", NULL, CVAR_NONE, 0, 0, this);
CVAR_RegisterFunc(CF_script_exec, "script_exec", "<Script number>", CVAR_NONE, 1, 1, this);
CVAR_RegisterFunc(CF_script_togglestep, "script_togglestep", NULL, CVAR_NONE, 0, 0, this);
return R_SUCCESS;
return SUCCESS;
}
// Initializes the scripting module.
// Loads script resource look-up table, initializes script data system
Script::Script() {
R_RSCFILE_CONTEXT *s_lut_ctxt;
RSCFILE_CONTEXT *s_lut_ctxt;
byte *rsc_ptr;
size_t rsc_len;
int prevTell;
@ -70,27 +70,27 @@ Script::Script() {
debug(0, "Initializing scripting subsystem");
// Load script resource file context
result = GAME_GetFileContext(&_scriptContext, R_GAME_SCRIPTFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&_scriptContext, GAME_SCRIPTFILE, 0);
if (result != SUCCESS) {
error("Couldn't get script file context");
}
// Load script LUT resource
result = GAME_GetFileContext(&s_lut_ctxt, R_GAME_RESOURCEFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&s_lut_ctxt, GAME_RESOURCEFILE, 0);
if (result != SUCCESS) {
error("Couldn't get resource file context");
}
result = RSC_LoadResource(s_lut_ctxt, ITE_SCRIPT_LUT, &rsc_ptr, &rsc_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
error("Error: Couldn't load script resource look-up table");
}
// Create logical script LUT from resource
if (rsc_len % R_S_LUT_ENTRYLEN_ITECD == 0) {
_scriptLUTEntryLen = R_S_LUT_ENTRYLEN_ITECD;
} else if (rsc_len % R_S_LUT_ENTRYLEN_ITEDISK == 0) {
_scriptLUTEntryLen = R_S_LUT_ENTRYLEN_ITEDISK;
if (rsc_len % S_LUT_ENTRYLEN_ITECD == 0) {
_scriptLUTEntryLen = S_LUT_ENTRYLEN_ITECD;
} else if (rsc_len % S_LUT_ENTRYLEN_ITEDISK == 0) {
_scriptLUTEntryLen = S_LUT_ENTRYLEN_ITEDISK;
} else {
error("Error: Invalid script lookup table length");
}
@ -99,7 +99,7 @@ Script::Script() {
_scriptLUTMax = rsc_len / _scriptLUTEntryLen;
// Allocate space for logical LUT
_scriptLUT = (R_SCRIPT_LUT_ENTRY *)malloc(_scriptLUTMax * sizeof(R_SCRIPT_LUT_ENTRY));
_scriptLUT = (SCRIPT_LUT_ENTRY *)malloc(_scriptLUTMax * sizeof(SCRIPT_LUT_ENTRY));
if (_scriptLUT == NULL) {
error("Error: Couldn't allocate memory for script resource look-up table");
}
@ -140,7 +140,7 @@ Script::Script() {
// Shut down script module gracefully; free all allocated module resources
Script::~Script() {
YS_DL_NODE *thread_node;
R_SCRIPT_THREAD *thread;
SCRIPT_THREAD *thread;
if (!_initialized) {
error("Script not initialized");
@ -155,7 +155,7 @@ Script::~Script() {
for (thread_node = ys_dll_head(_threadList); thread_node != NULL;
thread_node = ys_dll_next(thread_node)) {
thread = (R_SCRIPT_THREAD *)ys_dll_get_data(thread_node);
thread = (SCRIPT_THREAD *)ys_dll_get_data(thread_node);
SThreadDestroy(thread);
}
@ -164,7 +164,7 @@ Script::~Script() {
// Loads a script; including script bytecode and dialogue list
int Script::loadScript(int script_num) {
R_SCRIPTDATA *script_data;
SCRIPTDATA *script_data;
byte *bytecode_p;
size_t bytecode_len;
uint32 scriptl_rn;
@ -177,13 +177,13 @@ int Script::loadScript(int script_num) {
int result;
if (GAME_GetGameType() == GID_IHNM) {
return R_SUCCESS;
return SUCCESS;
}
// Validate script number
if ((script_num < 0) || (script_num > _scriptLUTMax)) {
warning("Script::loadScript(): Invalid script number");
return R_FAILURE;
return FAILURE;
}
// Release old script data if present
@ -192,10 +192,10 @@ int Script::loadScript(int script_num) {
// Initialize script data structure
debug(0, "Loading script data for script #%d", script_num);
script_data = (R_SCRIPTDATA *)malloc(sizeof *script_data);
script_data = (SCRIPTDATA *)malloc(sizeof *script_data);
if (script_data == NULL) {
warning("Memory allocation failed");
return R_MEM;
return MEM;
}
script_data->loaded = 0;
@ -209,10 +209,10 @@ int Script::loadScript(int script_num) {
scriptl_rn = _scriptLUT[script_num].script_rn;
result = RSC_LoadResource(_scriptContext, scriptl_rn, &bytecode_p, &bytecode_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Error loading script bytecode resource");
free(script_data);
return R_FAILURE;
return FAILURE;
}
script_data->bytecode = loadBytecode(bytecode_p, bytecode_len);
@ -221,7 +221,7 @@ int Script::loadScript(int script_num) {
warning("Error interpreting script bytecode resource");
free(script_data);
RSC_FreeResource(bytecode_p);
return R_FAILURE;
return FAILURE;
}
// Load script dialogue list
@ -229,11 +229,11 @@ int Script::loadScript(int script_num) {
// Load dialogue list resource
result = RSC_LoadResource(_scriptContext, diagl_rn, &diagl_p, &diagl_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Error loading dialogue list resource");
free(script_data);
RSC_FreeResource(bytecode_p);
return R_FAILURE;
return FAILURE;
}
// Convert dialogue list resource to logical dialogue list
@ -243,7 +243,7 @@ int Script::loadScript(int script_num) {
free(script_data);
RSC_FreeResource(bytecode_p);
RSC_FreeResource(diagl_p);
return R_FAILURE;
return FAILURE;
}
// Load voice resource lookup table
@ -252,12 +252,12 @@ int Script::loadScript(int script_num) {
// Load voice LUT resource
result = RSC_LoadResource(_scriptContext, voicelut_rn, &voicelut_p, &voicelut_len);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
warning("Error loading voice LUT resource");
free(script_data);
RSC_FreeResource(bytecode_p);
RSC_FreeResource(diagl_p);
return R_FAILURE;
return FAILURE;
}
// Convert voice LUT resource to logical voice LUT
@ -268,7 +268,7 @@ int Script::loadScript(int script_num) {
RSC_FreeResource(bytecode_p);
RSC_FreeResource(diagl_p);
RSC_FreeResource(voicelut_p);
return R_FAILURE;
return FAILURE;
}
}
@ -276,17 +276,17 @@ int Script::loadScript(int script_num) {
script_data->loaded = 1;
_currentScript = script_data;
return R_SUCCESS;
return SUCCESS;
}
// Frees all resources associated with current script.
int Script::freeScript() {
if (_currentScript == NULL) {
return R_FAILURE;
return FAILURE;
}
if (!_currentScript->loaded) {
return R_FAILURE;
return FAILURE;
}
debug(0, "Releasing script data.");
@ -314,14 +314,14 @@ int Script::freeScript() {
_currentScript = NULL;
return R_SUCCESS;
return SUCCESS;
}
// Reads the entrypoint table from a script bytecode resource in memory.
// Returns NULL on failure.
R_SCRIPT_BYTECODE *Script::loadBytecode(byte *bytecode_p, size_t bytecode_len) {
R_PROC_TBLENTRY *bc_ep_tbl = NULL;
R_SCRIPT_BYTECODE *bc_new_data = NULL;
SCRIPT_BYTECODE *Script::loadBytecode(byte *bytecode_p, size_t bytecode_len) {
PROC_TBLENTRY *bc_ep_tbl = NULL;
SCRIPT_BYTECODE *bc_new_data = NULL;
unsigned long n_entrypoints; // Number of entrypoints
size_t ep_tbl_offset; // Offset of bytecode entrypoint table
@ -337,12 +337,12 @@ R_SCRIPT_BYTECODE *Script::loadBytecode(byte *bytecode_p, size_t bytecode_len) {
ep_tbl_offset = scriptS.readUint32LE();
// Check that the entrypoint table offset is valid.
if ((bytecode_len - ep_tbl_offset) < (n_entrypoints * R_SCRIPT_TBLENTRY_LEN)) {
if ((bytecode_len - ep_tbl_offset) < (n_entrypoints * SCRIPT_TBLENTRY_LEN)) {
warning("Invalid table offset");
return NULL;
}
if (n_entrypoints > R_SCRIPT_MAX) {
if (n_entrypoints > SCRIPT_MAX) {
warning("Script limit exceeded");
return NULL;
}
@ -350,13 +350,13 @@ R_SCRIPT_BYTECODE *Script::loadBytecode(byte *bytecode_p, size_t bytecode_len) {
// Allocate a new bytecode resource information structure and table of
// entrypoints
bc_new_data = (R_SCRIPT_BYTECODE *)malloc(sizeof *bc_new_data);
bc_new_data = (SCRIPT_BYTECODE *)malloc(sizeof *bc_new_data);
if (bc_new_data == NULL) {
warning("Memory allocation failure loading script bytecode");
return NULL;
}
bc_ep_tbl = (R_PROC_TBLENTRY *)malloc(n_entrypoints * sizeof *bc_ep_tbl);
bc_ep_tbl = (PROC_TBLENTRY *)malloc(n_entrypoints * sizeof *bc_ep_tbl);
if (bc_ep_tbl == NULL) {
warning("Memory allocation failure creating script entrypoint table");
free(bc_new_data);
@ -396,8 +396,8 @@ R_SCRIPT_BYTECODE *Script::loadBytecode(byte *bytecode_p, size_t bytecode_len) {
// Reads a logical dialogue list from a dialogue list resource in memory.
// Returns NULL on failure.
R_DIALOGUE_LIST *Script::loadDialogue(const byte *dialogue_p, size_t dialogue_len) {
R_DIALOGUE_LIST *dialogue_list;
DIALOGUE_LIST *Script::loadDialogue(const byte *dialogue_p, size_t dialogue_len) {
DIALOGUE_LIST *dialogue_list;
uint16 n_dialogue;
uint16 i;
size_t offset;
@ -405,7 +405,7 @@ R_DIALOGUE_LIST *Script::loadDialogue(const byte *dialogue_p, size_t dialogue_le
debug(0, "Loading dialogue list...");
// Allocate dialogue list structure
dialogue_list = (R_DIALOGUE_LIST *)malloc(sizeof *dialogue_list);
dialogue_list = (DIALOGUE_LIST *)malloc(sizeof *dialogue_list);
if (dialogue_list == NULL) {
return NULL;
}
@ -458,13 +458,13 @@ R_DIALOGUE_LIST *Script::loadDialogue(const byte *dialogue_p, size_t dialogue_le
// Reads a logical voice LUT from a voice LUT resource in memory.
// Returns NULL on failure.
R_VOICE_LUT *Script::loadVoiceLUT(const byte *voicelut_p, size_t voicelut_len, R_SCRIPTDATA *script) {
R_VOICE_LUT *voice_lut;
VOICE_LUT *Script::loadVoiceLUT(const byte *voicelut_p, size_t voicelut_len, SCRIPTDATA *script) {
VOICE_LUT *voice_lut;
uint16 n_voices;
uint16 i;
voice_lut = (R_VOICE_LUT *)malloc(sizeof *voice_lut);
voice_lut = (VOICE_LUT *)malloc(sizeof *voice_lut);
if (voice_lut == NULL) {
return NULL;
}

View File

@ -31,27 +31,27 @@
namespace Saga {
#define R_SCRIPT_DATABUF_NUM 5
#define R_SCRIPT_DATABUF_LEN 1024
#define SCRIPT_DATABUF_NUM 5
#define SCRIPT_DATABUF_LEN 1024
#define R_S_LUT_ENTRYLEN_ITECD 22
#define R_S_LUT_ENTRYLEN_ITEDISK 16
#define S_LUT_ENTRYLEN_ITECD 22
#define S_LUT_ENTRYLEN_ITEDISK 16
#define R_SCRIPT_TBLENTRY_LEN 4
#define SCRIPT_TBLENTRY_LEN 4
#define R_SCRIPT_MAX 5000
#define R_SCRIPTLIST_HDR 12
#define R_SCRIPT_STRINGLIMIT 255
#define R_TAB " "
#define SCRIPT_MAX 5000
#define SCRIPTLIST_HDR 12
#define SCRIPT_STRINGLIMIT 255
#define TAB " "
#define S_ERROR_PREFIX "SError: "
#define S_WARN_PREFIX "SWarning: "
#define R_SFUNC_NUM 78
#define SFUNC_NUM 78
typedef unsigned int SDataWord_T;
enum R_SCRIPT_VERBS {
enum SCRIPT_VERBS {
S_VERB_WALKTO = 0,
S_VERB_LOOKAT = 2,
S_VERB_PICKUP = 1,
@ -64,7 +64,7 @@ enum R_SCRIPT_VERBS {
#define STHREAD_TIMESLICE 8
struct R_SEMAPHORE {
struct SEMAPHORE {
int hold_count;
};
@ -94,7 +94,7 @@ enum {
kTWaitPause
};
struct R_SCRIPT_THREAD {
struct SCRIPT_THREAD {
int flags;
int waitType;
@ -103,7 +103,7 @@ struct R_SCRIPT_THREAD {
unsigned long ep_offset; // Entrypoint offset
unsigned long i_offset; // Instruction offset
R_SEMAPHORE sem; // FIXME: no equivalent. should be replaced with flags
SEMAPHORE sem; // FIXME: no equivalent. should be replaced with flags
// The scripts are allowed to access the stack like any other memory
// area. It's therefore probably quite important that our stacks work
@ -137,49 +137,49 @@ struct R_SCRIPT_THREAD {
}
};
struct R_PROC_TBLENTRY {
struct PROC_TBLENTRY {
size_t name_offset;
size_t offset;
};
struct R_SCRIPT_BYTECODE {
struct SCRIPT_BYTECODE {
unsigned char *bytecode_p;
size_t bytecode_len;
size_t ep_tbl_offset;
unsigned long n_entrypoints;
R_PROC_TBLENTRY *entrypoints;
PROC_TBLENTRY *entrypoints;
};
struct R_DIALOGUE_LIST {
struct DIALOGUE_LIST {
unsigned int n_dialogue;
const char **str;
size_t *str_off;
};
struct R_VOICE_LUT {
struct VOICE_LUT {
int n_voices;
int *voices;
};
struct R_SCRIPTDATA {
struct SCRIPTDATA {
int loaded;
R_SCRIPT_BYTECODE *bytecode;
R_DIALOGUE_LIST *diag;
R_VOICE_LUT *voice;
SCRIPT_BYTECODE *bytecode;
DIALOGUE_LIST *diag;
VOICE_LUT *voice;
};
struct R_SCRIPT_LUT_ENTRY {
struct SCRIPT_LUT_ENTRY {
int script_rn;
int diag_list_rn;
int voice_lut_rn;
};
struct R_SCRIPT_DATABUF {
struct SCRIPT_DATABUF {
SDataWord_T *data;
int len;
};
#define R_SCRIPTFUNC_PARAMS R_SCRIPT_THREAD *thread
#define SCRIPTFUNC_PARAMS SCRIPT_THREAD *thread
class Script {
public:
@ -189,16 +189,16 @@ public:
int reg(void);
int loadScript(int scriptNum);
int freeScript();
R_SCRIPT_BYTECODE *loadBytecode(byte *bytecode_p, size_t bytecode_len);
R_DIALOGUE_LIST *loadDialogue(const byte *dialogue_p, size_t dialogue_len);
R_VOICE_LUT *loadVoiceLUT(const byte *voicelut_p, size_t voicelut_len, R_SCRIPTDATA *script);
int disassemble(R_SCRIPT_BYTECODE *script_list, R_DIALOGUE_LIST *diag_list);
SCRIPT_BYTECODE *loadBytecode(byte *bytecode_p, size_t bytecode_len);
DIALOGUE_LIST *loadDialogue(const byte *dialogue_p, size_t dialogue_len);
VOICE_LUT *loadVoiceLUT(const byte *voicelut_p, size_t voicelut_len, SCRIPTDATA *script);
int disassemble(SCRIPT_BYTECODE *script_list, DIALOGUE_LIST *diag_list);
bool isInitialized() const { return _initialized; }
bool isVoiceLUTPresent() const { return _voiceLUTPresent; }
R_SCRIPTDATA *currentScript() { return _currentScript; }
void setBuffer(int idx, R_SCRIPT_DATABUF *ptr) { _dataBuf[idx] = ptr; }
R_SCRIPT_DATABUF *dataBuffer(int idx) { return _dataBuf[idx]; }
SCRIPTDATA *currentScript() { return _currentScript; }
void setBuffer(int idx, SCRIPT_DATABUF *ptr) { _dataBuf[idx] = ptr; }
SCRIPT_DATABUF *dataBuffer(int idx) { return _dataBuf[idx]; }
YS_DL_LIST *threadList() { return _threadList; }
void scriptInfo(int argc, char *argv[]);
@ -207,12 +207,12 @@ public:
protected:
bool _initialized;
bool _voiceLUTPresent;
R_RSCFILE_CONTEXT *_scriptContext;
R_SCRIPT_LUT_ENTRY *_scriptLUT;
RSCFILE_CONTEXT *_scriptContext;
SCRIPT_LUT_ENTRY *_scriptLUT;
int _scriptLUTMax;
uint16 _scriptLUTEntryLen;
R_SCRIPTDATA *_currentScript;
R_SCRIPT_DATABUF *_dataBuf[R_SCRIPT_DATABUF_NUM];
SCRIPTDATA *_currentScript;
SCRIPT_DATABUF *_dataBuf[SCRIPT_DATABUF_NUM];
YS_DL_LIST *_threadList;
bool _skipSpeeches;
@ -221,86 +221,86 @@ protected:
public:
int _dbg_singlestep;
int _dbg_dostep;
R_SCRIPT_THREAD *_dbg_thread;
R_TEXTLIST_ENTRY *_dbg_txtentry;
SCRIPT_THREAD *_dbg_thread;
TEXTLIST_ENTRY *_dbg_txtentry;
public:
R_SCRIPT_THREAD *SThreadCreate();
int SThreadExecute(R_SCRIPT_THREAD *thread, int ep_num);
SCRIPT_THREAD *SThreadCreate();
int SThreadExecute(SCRIPT_THREAD *thread, int ep_num);
int SThreadExecThreads(uint msec);
int SThreadHoldSem(R_SEMAPHORE *sem);
int SThreadReleaseSem(R_SEMAPHORE *sem);
int SThreadHoldSem(SEMAPHORE *sem);
int SThreadReleaseSem(SEMAPHORE *sem);
int SThreadDebugStep();
void SThreadCompleteThread(void);
int SThreadDestroy(R_SCRIPT_THREAD *thread);
int SThreadDestroy(SCRIPT_THREAD *thread);
void SThreadAbortAll(void);
private:
void setFramePtr(R_SCRIPT_THREAD *thread, int newPtr);
unsigned char *SThreadGetReadPtr(R_SCRIPT_THREAD *thread);
void setFramePtr(SCRIPT_THREAD *thread, int newPtr);
unsigned char *SThreadGetReadPtr(SCRIPT_THREAD *thread);
unsigned long SThreadGetReadOffset(const byte *read_p);
size_t SThreadGetReadLen(R_SCRIPT_THREAD *thread);
int SThreadRun(R_SCRIPT_THREAD *thread, int instr_limit);
int SThreadSetEntrypoint(R_SCRIPT_THREAD *thread, int ep_num);
size_t SThreadGetReadLen(SCRIPT_THREAD *thread);
int SThreadRun(SCRIPT_THREAD *thread, int instr_limit);
int SThreadSetEntrypoint(SCRIPT_THREAD *thread, int ep_num);
private:
typedef int (Script::*SFunc_T)(R_SCRIPTFUNC_PARAMS);
typedef int (Script::*SFunc_T)(SCRIPTFUNC_PARAMS);
struct R_SFUNC_ENTRY {
struct SFUNC_ENTRY {
int sfunc_num;
int sfunc_argc;
SFunc_T sfunc_fp;
};
const R_SFUNC_ENTRY *_SFuncList;
const SFUNC_ENTRY *_SFuncList;
void setupScriptFuncList(void);
int SDebugPrintInstr(R_SCRIPT_THREAD *thread);
int SDebugPrintInstr(SCRIPT_THREAD *thread);
int SF_sleep(R_SCRIPTFUNC_PARAMS);
int SF_takeObject(R_SCRIPTFUNC_PARAMS);
int SF_objectIsCarried(R_SCRIPTFUNC_PARAMS);
int SF_setStatusText(R_SCRIPTFUNC_PARAMS);
int SF_commandMode(R_SCRIPTFUNC_PARAMS);
int SF_actorWalkTo(R_SCRIPTFUNC_PARAMS);
int SF_setFacing(R_SCRIPTFUNC_PARAMS);
int SF_startBgdAnim(R_SCRIPTFUNC_PARAMS);
int SF_freezeInterface(R_SCRIPTFUNC_PARAMS);
int SF_dialogMode(R_SCRIPTFUNC_PARAMS);
int SF_startAnim(R_SCRIPTFUNC_PARAMS);
int SF_stopBgdAnim(R_SCRIPTFUNC_PARAMS);
int SF_actorWalkToAsync(R_SCRIPTFUNC_PARAMS);
int SF_moveTo(R_SCRIPTFUNC_PARAMS);
int SF_actorWalk(R_SCRIPTFUNC_PARAMS);
int SF_cycleActorFrames(R_SCRIPTFUNC_PARAMS);
int SF_setFrame(R_SCRIPTFUNC_PARAMS);
int SF_setRightPortrait(R_SCRIPTFUNC_PARAMS);
int SF_setLeftPortrait(R_SCRIPTFUNC_PARAMS);
int SF_linkAnim(R_SCRIPTFUNC_PARAMS);
int SF_placeActor(R_SCRIPTFUNC_PARAMS);
int SF_checkUserInterrupt(R_SCRIPTFUNC_PARAMS);
int SF_moveRelative(R_SCRIPTFUNC_PARAMS);
int SF_doAction(R_SCRIPTFUNC_PARAMS);
int SF_faceTowards(R_SCRIPTFUNC_PARAMS);
int SF_setFollower(R_SCRIPTFUNC_PARAMS);
int SF_setBgdAnimSpeed(R_SCRIPTFUNC_PARAMS);
int SF_centerActor(R_SCRIPTFUNC_PARAMS);
int SF_setActorState(R_SCRIPTFUNC_PARAMS);
int SF_finishBgdAnim(R_SCRIPTFUNC_PARAMS);
int SF_swapActors(R_SCRIPTFUNC_PARAMS);
int SF_scriptSpecialWalk(R_SCRIPTFUNC_PARAMS);
int SF_walkRelative(R_SCRIPTFUNC_PARAMS);
int SF_throwActor(R_SCRIPTFUNC_PARAMS);
int SF_waitWalk(R_SCRIPTFUNC_PARAMS);
int SF_changeActorScene(R_SCRIPTFUNC_PARAMS);
int SF_climb(R_SCRIPTFUNC_PARAMS);
int SF_setActorZ(R_SCRIPTFUNC_PARAMS);
int SF_getActorX(R_SCRIPTFUNC_PARAMS);
int SF_getActorY(R_SCRIPTFUNC_PARAMS);
int SF_playMusic(R_SCRIPTFUNC_PARAMS);
int SF_enableEscape(R_SCRIPTFUNC_PARAMS);
int SF_playSound(R_SCRIPTFUNC_PARAMS);
int SF_gotoScene(R_SCRIPTFUNC_PARAMS);
int SF_sleep(SCRIPTFUNC_PARAMS);
int SF_takeObject(SCRIPTFUNC_PARAMS);
int SF_objectIsCarried(SCRIPTFUNC_PARAMS);
int SF_setStatusText(SCRIPTFUNC_PARAMS);
int SF_commandMode(SCRIPTFUNC_PARAMS);
int SF_actorWalkTo(SCRIPTFUNC_PARAMS);
int SF_setFacing(SCRIPTFUNC_PARAMS);
int SF_startBgdAnim(SCRIPTFUNC_PARAMS);
int SF_freezeInterface(SCRIPTFUNC_PARAMS);
int SF_dialogMode(SCRIPTFUNC_PARAMS);
int SF_startAnim(SCRIPTFUNC_PARAMS);
int SF_stopBgdAnim(SCRIPTFUNC_PARAMS);
int SF_actorWalkToAsync(SCRIPTFUNC_PARAMS);
int SF_moveTo(SCRIPTFUNC_PARAMS);
int SF_actorWalk(SCRIPTFUNC_PARAMS);
int SF_cycleActorFrames(SCRIPTFUNC_PARAMS);
int SF_setFrame(SCRIPTFUNC_PARAMS);
int SF_setRightPortrait(SCRIPTFUNC_PARAMS);
int SF_setLeftPortrait(SCRIPTFUNC_PARAMS);
int SF_linkAnim(SCRIPTFUNC_PARAMS);
int SF_placeActor(SCRIPTFUNC_PARAMS);
int SF_checkUserInterrupt(SCRIPTFUNC_PARAMS);
int SF_moveRelative(SCRIPTFUNC_PARAMS);
int SF_doAction(SCRIPTFUNC_PARAMS);
int SF_faceTowards(SCRIPTFUNC_PARAMS);
int SF_setFollower(SCRIPTFUNC_PARAMS);
int SF_setBgdAnimSpeed(SCRIPTFUNC_PARAMS);
int SF_centerActor(SCRIPTFUNC_PARAMS);
int SF_setActorState(SCRIPTFUNC_PARAMS);
int SF_finishBgdAnim(SCRIPTFUNC_PARAMS);
int SF_swapActors(SCRIPTFUNC_PARAMS);
int SF_scriptSpecialWalk(SCRIPTFUNC_PARAMS);
int SF_walkRelative(SCRIPTFUNC_PARAMS);
int SF_throwActor(SCRIPTFUNC_PARAMS);
int SF_waitWalk(SCRIPTFUNC_PARAMS);
int SF_changeActorScene(SCRIPTFUNC_PARAMS);
int SF_climb(SCRIPTFUNC_PARAMS);
int SF_setActorZ(SCRIPTFUNC_PARAMS);
int SF_getActorX(SCRIPTFUNC_PARAMS);
int SF_getActorY(SCRIPTFUNC_PARAMS);
int SF_playMusic(SCRIPTFUNC_PARAMS);
int SF_enableEscape(SCRIPTFUNC_PARAMS);
int SF_playSound(SCRIPTFUNC_PARAMS);
int SF_gotoScene(SCRIPTFUNC_PARAMS);
};
} // End of namespace Saga

View File

@ -35,36 +35,36 @@ SData::SData() {
debug(0, "Initializing script data buffers");
for (i = 0; i < R_SCRIPT_DATABUF_NUM; i++) {
for (i = 0; i < SCRIPT_DATABUF_NUM; i++) {
alloc_ptr = malloc(sizeof *_vm->_script->dataBuffer(0));
if (alloc_ptr == NULL) {
error("Couldn't allocate memory for script data buffer %d", i);
}
_vm->_script->setBuffer(i, (R_SCRIPT_DATABUF *)alloc_ptr);
_vm->_script->setBuffer(i, (SCRIPT_DATABUF *)alloc_ptr);
}
alloc_ptr = calloc(R_SCRIPT_DATABUF_LEN, sizeof(SDataWord_T));
alloc_ptr = calloc(SCRIPT_DATABUF_LEN, sizeof(SDataWord_T));
if (alloc_ptr == NULL) {
error("Couldn't allocate memory for shared script buffer");
}
// Buffer 0 is the shared data buffer. All scripts can access this.
_vm->_script->dataBuffer(0)->len = R_SCRIPT_DATABUF_LEN;
_vm->_script->dataBuffer(0)->len = SCRIPT_DATABUF_LEN;
_vm->_script->dataBuffer(0)->data = (SDataWord_T *)alloc_ptr;
// FIXME: Buffer 1 is the script's static area. The original
// interpreter uses part of buffer 0 for this, but I don't yet
// understand quite how.
_vm->_script->setBuffer(1, (R_SCRIPT_DATABUF *)alloc_ptr);
_vm->_script->dataBuffer(1)->len = R_SCRIPT_DATABUF_LEN;
_vm->_script->setBuffer(1, (SCRIPT_DATABUF *)alloc_ptr);
_vm->_script->dataBuffer(1)->len = SCRIPT_DATABUF_LEN;
_vm->_script->dataBuffer(1)->data = (SDataWord_T *)alloc_ptr;
// Remaining buffers are per-script.
for (i = 2; i < R_SCRIPT_DATABUF_NUM; i++) {
for (i = 2; i < SCRIPT_DATABUF_NUM; i++) {
_vm->_script->dataBuffer(i)->len = 0;
_vm->_script->dataBuffer(i)->data = NULL;
}
@ -75,35 +75,35 @@ SData::~SData() {
}
int SData::getWord(int n_buf, int n_word, SDataWord_T *data) {
if ((n_buf < 0) || (n_buf >= R_SCRIPT_DATABUF_NUM)) {
return R_FAILURE;
if ((n_buf < 0) || (n_buf >= SCRIPT_DATABUF_NUM)) {
return FAILURE;
}
if ((n_word < 0) || (n_word >= _vm->_script->dataBuffer(n_buf)->len)) {
return R_FAILURE;
return FAILURE;
}
if (data == NULL) {
return R_FAILURE;
return FAILURE;
}
*data = _vm->_script->dataBuffer(n_buf)->data[n_word];
return R_SUCCESS;
return SUCCESS;
}
int SData::putWord(int n_buf, int n_word, SDataWord_T data) {
if ((n_buf < 0) || (n_buf >= R_SCRIPT_DATABUF_NUM)) {
return R_FAILURE;
if ((n_buf < 0) || (n_buf >= SCRIPT_DATABUF_NUM)) {
return FAILURE;
}
if ((n_word < 0) || (n_word >= _vm->_script->dataBuffer(n_buf)->len)) {
return R_FAILURE;
return FAILURE;
}
_vm->_script->dataBuffer(n_buf)->data[n_word] = data;
return R_SUCCESS;
return SUCCESS;
}
int SData::setBit(int n_buf, SDataWord_T n_bit, int bitstate) {
@ -112,12 +112,12 @@ int SData::setBit(int n_buf, SDataWord_T n_bit, int bitstate) {
SDataWord_T bit_pattern = 0x01;
if ((n_buf < 0) || (n_buf >= R_SCRIPT_DATABUF_NUM)) {
return R_FAILURE;
if ((n_buf < 0) || (n_buf >= SCRIPT_DATABUF_NUM)) {
return FAILURE;
}
if (n_bit >= (unsigned long)_vm->_script->dataBuffer(n_buf)->len * (sizeof(SDataWord_T) * CHAR_BIT)) {
return R_FAILURE;
return FAILURE;
}
n_word = n_bit / (sizeof(SDataWord_T) * CHAR_BIT);
@ -131,7 +131,7 @@ int SData::setBit(int n_buf, SDataWord_T n_bit, int bitstate) {
_vm->_script->dataBuffer(n_buf)->data[n_word] &= ~bit_pattern;
}
return R_SUCCESS;
return SUCCESS;
}
int SData::getBit(int n_buf, SDataWord_T n_bit, int *bitstate) {
@ -140,12 +140,12 @@ int SData::getBit(int n_buf, SDataWord_T n_bit, int *bitstate) {
SDataWord_T bit_pattern = 0x01;
if ((n_buf < 0) || (n_buf >= R_SCRIPT_DATABUF_NUM)) {
return R_FAILURE;
if ((n_buf < 0) || (n_buf >= SCRIPT_DATABUF_NUM)) {
return FAILURE;
}
if (n_bit >= (SDataWord_T) _vm->_script->dataBuffer(n_buf)->len * (sizeof(SDataWord_T) * CHAR_BIT)) {
return R_FAILURE;
return FAILURE;
}
n_word = n_bit / (sizeof(SDataWord_T) * CHAR_BIT);
@ -155,7 +155,7 @@ int SData::getBit(int n_buf, SDataWord_T n_bit, int *bitstate) {
*bitstate = (_vm->_script->dataBuffer(n_buf)->data[n_word] & bit_pattern) ? 1 : 0;
return R_SUCCESS;
return SUCCESS;
}
int SData::readWordS(SDataWord_T word) {

View File

@ -36,15 +36,15 @@ namespace Saga {
#define SD_DISPLAY_LEN 128
#define SD_ADDTXT( x ) strncat( disp_buf, x, SD_DISPLAY_LEN );
int Script::SDebugPrintInstr(R_SCRIPT_THREAD *thread) {
R_TEXTLIST_ENTRY tl_e;
int Script::SDebugPrintInstr(SCRIPT_THREAD *thread) {
TEXTLIST_ENTRY tl_e;
char tmp_buf[80] = { 0 };
static char disp_buf[SD_DISPLAY_LEN] = { 0 };
int in_char;
// int op_offset;
int n_switch;
int i;
R_SCENE_INFO si;
SCENE_INFO si;
_vm->_scene->getInfo(&si);
@ -104,7 +104,7 @@ int Script::SDebugPrintInstr(R_SCRIPT_THREAD *thread) {
SD_ADDTXT(tmp_buf);
/*
if(( param >= 0 ) && ( param < diag_list->n_dialogue )) {
printf(" ; \"%.*s\"", R_SCRIPT_STRINGLIMIT, diag_list->str[param] );
printf(" ; \"%.*s\"", SCRIPT_STRINGLIMIT, diag_list->str[param] );
}
else {
printf(" ; Invalid dialogue string.\n" );
@ -328,10 +328,10 @@ int Script::SDebugPrintInstr(R_SCRIPT_THREAD *thread) {
for (i = 0; i < n_switch; i++) {
switch_num = readS.readUint16LE();
switch_jmp = readS.readUint16LE();
// printf( R_TAB "CASE %04X, %04X\n", switch_num, switch_jmp);
// printf( TAB "CASE %04X, %04X\n", switch_num, switch_jmp);
}
default_jmp = readS.readUint16LE();
//printf( R_TAB "DEF %04X", default_jmp);
//printf( TAB "DEF %04X", default_jmp);
}
break;
// Random branch
@ -351,7 +351,7 @@ int Script::SDebugPrintInstr(R_SCRIPT_THREAD *thread) {
//printf("\n");
switch_num = readS.readUint16LE();
switch_jmp = readS.readUint16LE();
//printf( R_TAB "WEIGHT %04X, %04X", switch_num, switch_jmp);
//printf( TAB "WEIGHT %04X, %04X", switch_num, switch_jmp);
}
}
break;
@ -515,7 +515,7 @@ int Script::SDebugPrintInstr(R_SCRIPT_THREAD *thread) {
_dbg_txtentry = _vm->textAddEntry(si.text_list, &tl_e);
_vm->textSetDisplay(_dbg_txtentry, 1);
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -42,7 +42,7 @@ namespace Saga {
#define OPCODE(x) &Script::x
void Script::setupScriptFuncList(void) {
static const R_SFUNC_ENTRY SFuncList[R_SFUNC_NUM] = {
static const SFUNC_ENTRY SFuncList[SFUNC_NUM] = {
{0, 0, NULL},
{1, 1, OPCODE(SF_sleep)},
{2, 1, OPCODE(SF_takeObject)},
@ -127,7 +127,7 @@ void Script::setupScriptFuncList(void) {
// Script function #1 (0x01) blocking
// Suspends thread execution for the specified time period
int Script::SF_sleep(R_SCRIPTFUNC_PARAMS) {
int Script::SF_sleep(SCRIPTFUNC_PARAMS) {
SDataWord_T time_param;
long time;
@ -138,19 +138,19 @@ int Script::SF_sleep(R_SCRIPTFUNC_PARAMS) {
thread->flags |= kTFlagWaiting; // put thread to sleep
thread->waitType = kTWaitDelay;
}
return R_SUCCESS;
return SUCCESS;
}
// Script function #2 (0x02)
int Script::SF_takeObject(R_SCRIPTFUNC_PARAMS) {
int Script::SF_takeObject(SCRIPTFUNC_PARAMS) {
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #3 (0x03)
// Unknown function; pops a parameter and pushes a return value
// Param1: unknown
int Script::SF_objectIsCarried(R_SCRIPTFUNC_PARAMS) {
int Script::SF_objectIsCarried(SCRIPTFUNC_PARAMS) {
// INCOMPLETE
SDataWord_T param1;
param1 = thread->pop();
@ -160,20 +160,20 @@ int Script::SF_objectIsCarried(R_SCRIPTFUNC_PARAMS) {
thread->retVal = 0;
return R_SUCCESS;
return SUCCESS;
}
// Script function #4 (0x04) nonblocking
// Set the command display to the specified text string
// Param1: dialogue index of string
int Script::SF_setStatusText(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setStatusText(SCRIPTFUNC_PARAMS) {
SDataWord_T param = thread->pop();
return _vm->_interface->setStatusText(currentScript()->diag->str[param]);
}
// Script function #5 (0x05)
int Script::SF_commandMode(R_SCRIPTFUNC_PARAMS) {
int Script::SF_commandMode(SCRIPTFUNC_PARAMS) {
return _vm->_interface->setMode(kPanelCommand);
}
@ -182,7 +182,7 @@ int Script::SF_commandMode(R_SCRIPTFUNC_PARAMS) {
// Param1: actor id
// Param2: actor destination x
// Param3: actor destination y
int Script::SF_actorWalkTo(R_SCRIPTFUNC_PARAMS) {
int Script::SF_actorWalkTo(SCRIPTFUNC_PARAMS) {
SDataWord_T actor_parm;
SDataWord_T x_parm;
SDataWord_T y_parm;
@ -198,7 +198,7 @@ int Script::SF_actorWalkTo(R_SCRIPTFUNC_PARAMS) {
actor_idx = _vm->_actor->getActorIndex(actor_id);
if (actor_idx < 0) {
_vm->_console->print(S_WARN_PREFIX "SF.08: Actor id 0x%X not found.", actor_id);
return R_FAILURE;
return FAILURE;
}
pt.x = _vm->_sdata->readWordS(x_parm);
@ -206,23 +206,23 @@ int Script::SF_actorWalkTo(R_SCRIPTFUNC_PARAMS) {
_vm->_actor->walkTo(actor_idx, &pt, 0, &thread->sem);
return R_SUCCESS;
return SUCCESS;
}
// Script function #7 (0x07)
int Script::SF_doAction(R_SCRIPTFUNC_PARAMS) {
int Script::SF_doAction(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #8 (0x08) nonblocking
// Sets the orientation of the specified actor.
// Param1: actor id
// Param2: actor orientation
int Script::SF_setFacing(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setFacing(SCRIPTFUNC_PARAMS) {
SDataWord_T actor_parm;
SDataWord_T orient_parm;
int actor_id;
@ -237,24 +237,24 @@ int Script::SF_setFacing(R_SCRIPTFUNC_PARAMS) {
actor_idx = _vm->_actor->getActorIndex(actor_id);
if (actor_idx < 0) {
_vm->_console->print(S_WARN_PREFIX "SF.08: Actor id 0x%X not found.", actor_id);
return R_FAILURE;
return FAILURE;
}
_vm->_actor->setOrientation(actor_idx, orientation);
return R_SUCCESS;
return SUCCESS;
}
// Script function #9 (0x09)
int Script::SF_startBgdAnim(R_SCRIPTFUNC_PARAMS) {
int Script::SF_startBgdAnim(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #10 (0x0A)
int Script::SF_stopBgdAnim(R_SCRIPTFUNC_PARAMS) {
int Script::SF_stopBgdAnim(SCRIPTFUNC_PARAMS) {
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #11 (0x0B) nonblocking
@ -262,7 +262,7 @@ int Script::SF_stopBgdAnim(R_SCRIPTFUNC_PARAMS) {
// continues to run. If the parameter is false, the user interface is
// reenabled.
// Param1: boolean
int Script::SF_freezeInterface(R_SCRIPTFUNC_PARAMS) {
int Script::SF_freezeInterface(SCRIPTFUNC_PARAMS) {
SDataWord_T b_param;
b_param = thread->pop();
@ -273,47 +273,47 @@ int Script::SF_freezeInterface(R_SCRIPTFUNC_PARAMS) {
_vm->_interface->activate();
}
return R_SUCCESS;
return SUCCESS;
}
// Script function #12 (0x0C)
// Disables mouse input, etc.
int Script::SF_dialogMode(R_SCRIPTFUNC_PARAMS) {
int Script::SF_dialogMode(SCRIPTFUNC_PARAMS) {
return _vm->_interface->setMode(kPanelDialogue);
}
// Script function #14 (0x0E)
int Script::SF_faceTowards(R_SCRIPTFUNC_PARAMS) {
int Script::SF_faceTowards(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #15 (0x0F)
int Script::SF_setFollower(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setFollower(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #16 (0x10)
int Script::SF_gotoScene(R_SCRIPTFUNC_PARAMS) {
int Script::SF_gotoScene(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #23 (0x17)
int Script::SF_setBgdAnimSpeed(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setBgdAnimSpeed(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #25 (0x19)
int Script::SF_centerActor(R_SCRIPTFUNC_PARAMS) {
int Script::SF_centerActor(SCRIPTFUNC_PARAMS) {
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #26 (0x1A) nonblocking
@ -321,7 +321,7 @@ int Script::SF_centerActor(R_SCRIPTFUNC_PARAMS) {
// Param1: ?
// Param2: frames of animation to play or -1 to loop
// Param3: animation id
int Script::SF_startAnim(R_SCRIPTFUNC_PARAMS) {
int Script::SF_startAnim(SCRIPTFUNC_PARAMS) {
// FIXME: implementation is wrong. Should link animation
SDataWord_T unk_parm;
SDataWord_T frame_parm;
@ -336,12 +336,12 @@ int Script::SF_startAnim(R_SCRIPTFUNC_PARAMS) {
frame_count = _vm->_sdata->readWordS(frame_parm);
anim_id = _vm->_sdata->readWordS(anim_id_parm);
if (_vm->_anim->play(anim_id, 0) != R_SUCCESS) {
if (_vm->_anim->play(anim_id, 0) != SUCCESS) {
_vm->_console->print(S_WARN_PREFIX "SF.26: Anim::play() failed. Anim id: %u\n", anim_id);
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
// Script function #27 (0x1B) nonblocking
@ -349,7 +349,7 @@ int Script::SF_startAnim(R_SCRIPTFUNC_PARAMS) {
// Param1: actor id
// Param2: actor destination x
// Param3: actor destination y
int Script::SF_actorWalkToAsync(R_SCRIPTFUNC_PARAMS) {
int Script::SF_actorWalkToAsync(SCRIPTFUNC_PARAMS) {
SDataWord_T actor_parm;
SDataWord_T x_parm;
SDataWord_T y_parm;
@ -366,21 +366,21 @@ int Script::SF_actorWalkToAsync(R_SCRIPTFUNC_PARAMS) {
if (actor_idx < 0) {
_vm->_console->print(S_WARN_PREFIX "SF.08: Actor id 0x%X not found.",
actor_id);
return R_FAILURE;
return FAILURE;
}
pt.x = _vm->_sdata->readWordS(x_parm);
pt.y = _vm->_sdata->readWordS(y_parm);
_vm->_actor->walkTo(actor_idx, &pt, 0, NULL);
return R_SUCCESS;
return SUCCESS;
}
// Script function #29 (0x1D)
int Script::SF_setActorState(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setActorState(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #30 (0x1E) nonblocking
@ -389,7 +389,7 @@ int Script::SF_setActorState(R_SCRIPTFUNC_PARAMS) {
// Param1: actor id
// Param2: actor pos x
// Param3: actor pos y
int Script::SF_moveTo(R_SCRIPTFUNC_PARAMS) {
int Script::SF_moveTo(SCRIPTFUNC_PARAMS) {
SDataWord_T actor_parm;
SDataWord_T x_parm;
SDataWord_T y_parm;
@ -408,29 +408,29 @@ int Script::SF_moveTo(R_SCRIPTFUNC_PARAMS) {
if (!_vm->_actor->actorExists(actor_id)) {
result = _vm->_actor->create(actor_id, pt.x, pt.y);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
_vm->_console->print(S_WARN_PREFIX "SF.30: Couldn't create actor 0x%X.", actor_id);
return R_FAILURE;
return FAILURE;
}
} else {
actor_idx = _vm->_actor->getActorIndex(actor_id);
_vm->_actor->move(actor_idx, &pt);
}
return R_SUCCESS;
return SUCCESS;
}
// Script function #33 (0x21)
int Script::SF_finishBgdAnim(R_SCRIPTFUNC_PARAMS) {
int Script::SF_finishBgdAnim(SCRIPTFUNC_PARAMS) {
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #34 (0x22)
int Script::SF_swapActors(R_SCRIPTFUNC_PARAMS) {
int Script::SF_swapActors(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #36 (0x24) ?
@ -439,7 +439,7 @@ int Script::SF_swapActors(R_SCRIPTFUNC_PARAMS) {
// Param2: actor destination x
// Param3: actor destination y
// Param4: unknown
int Script::SF_actorWalk(R_SCRIPTFUNC_PARAMS) {
int Script::SF_actorWalk(SCRIPTFUNC_PARAMS) {
// INCOMPLETE
SDataWord_T actor_parm;
SDataWord_T x_parm;
@ -456,7 +456,7 @@ int Script::SF_actorWalk(R_SCRIPTFUNC_PARAMS) {
actor_idx = _vm->_actor->getActorIndex(_vm->_sdata->readWordS(actor_parm));
if (actor_idx < 0) {
_vm->_console->print(S_WARN_PREFIX "SF.36: Actor id 0x%X not found.", (int)actor_parm);
return R_FAILURE;
return FAILURE;
}
pt.x = _vm->_sdata->readWordS(x_parm);
@ -468,7 +468,7 @@ int Script::SF_actorWalk(R_SCRIPTFUNC_PARAMS) {
_vm->_actor->walkTo(actor_idx, &pt, 0, &thread->sem);
#endif
return R_SUCCESS;
return SUCCESS;
}
// Script function #37 (0x25) nonblocking
@ -477,7 +477,7 @@ int Script::SF_actorWalk(R_SCRIPTFUNC_PARAMS) {
// Param2: unknown
// Param3: actor action state
// Param4: unknown
int Script::SF_cycleActorFrames(R_SCRIPTFUNC_PARAMS) {
int Script::SF_cycleActorFrames(SCRIPTFUNC_PARAMS) {
// INCOMPLETE
SDataWord_T actor_parm;
SDataWord_T unk1_parm;
@ -496,12 +496,12 @@ int Script::SF_cycleActorFrames(R_SCRIPTFUNC_PARAMS) {
action = _vm->_sdata->readWordS(action_parm);
actor_idx = _vm->_actor->getActorIndex(actor_id);
if (_vm->_actor->setAction(actor_idx, action, ACTION_NONE) != R_SUCCESS) {
if (_vm->_actor->setAction(actor_idx, action, ACTION_NONE) != SUCCESS) {
_vm->_console->print(S_WARN_PREFIX "SF.37: Actor::setAction() failed.");
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
// Script function #38 (0x26) nonblocking
@ -509,7 +509,7 @@ int Script::SF_cycleActorFrames(R_SCRIPTFUNC_PARAMS) {
// Param1: actor id
// Param2: actor action state
// Param3: unknown
int Script::SF_setFrame(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setFrame(SCRIPTFUNC_PARAMS) {
// INCOMPLETE
SDataWord_T actor_parm;
@ -529,17 +529,17 @@ int Script::SF_setFrame(R_SCRIPTFUNC_PARAMS) {
action = _vm->_sdata->readWordS(action_parm);
actor_idx = _vm->_actor->getActorIndex(actor_id);
if (_vm->_actor->setAction(actor_idx, action, ACTION_NONE) != R_SUCCESS) {
if (_vm->_actor->setAction(actor_idx, action, ACTION_NONE) != SUCCESS) {
_vm->_console->print(S_WARN_PREFIX "SF.38: Actor::setAction() failed.");
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
// Script function #39 (0x27)
// Sets the right-hand portrait
int Script::SF_setRightPortrait(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setRightPortrait(SCRIPTFUNC_PARAMS) {
SDataWord_T param = thread->pop();
return _vm->_interface->setRightPortrait(param);
@ -547,7 +547,7 @@ int Script::SF_setRightPortrait(R_SCRIPTFUNC_PARAMS) {
// Script function #40 (0x28)
// Sets the left-hand portrait
int Script::SF_setLeftPortrait(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setLeftPortrait(SCRIPTFUNC_PARAMS) {
SDataWord_T param = thread->pop();
return _vm->_interface->setLeftPortrait(param);
@ -560,7 +560,7 @@ int Script::SF_setLeftPortrait(R_SCRIPTFUNC_PARAMS) {
// Param2: total linked frame count
// Param3: animation id link target
// Param4: animation id link source
int Script::SF_linkAnim(R_SCRIPTFUNC_PARAMS) {
int Script::SF_linkAnim(SCRIPTFUNC_PARAMS) {
SDataWord_T unk_parm;
SDataWord_T tframes_parm;
SDataWord_T anim1_parm;
@ -577,21 +577,21 @@ int Script::SF_linkAnim(R_SCRIPTFUNC_PARAMS) {
anim_id1 = _vm->_sdata->readWordU(anim1_parm);
anim_id2 = _vm->_sdata->readWordU(anim2_parm);
if (_vm->_anim->link(anim_id1, anim_id2) != R_SUCCESS) {
if (_vm->_anim->link(anim_id1, anim_id2) != SUCCESS) {
_vm->_console->print(S_WARN_PREFIX "SF.41: Anim::link() failed. (%u->%u)\n", anim_id1, anim_id2);
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
// Script function #42 (0x2A)
int Script::SF_scriptSpecialWalk(R_SCRIPTFUNC_PARAMS) {
int Script::SF_scriptSpecialWalk(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #43 (0x2B) nonblocking
@ -603,7 +603,7 @@ int Script::SF_scriptSpecialWalk(R_SCRIPTFUNC_PARAMS) {
// Param4: ?
// Param5: actor action
// Param6: ?
int Script::SF_placeActor(R_SCRIPTFUNC_PARAMS) {
int Script::SF_placeActor(SCRIPTFUNC_PARAMS) {
// INCOMPLETE
SDataWord_T actor_parm;
SDataWord_T x_parm;
@ -630,9 +630,9 @@ int Script::SF_placeActor(R_SCRIPTFUNC_PARAMS) {
if (!_vm->_actor->actorExists(actor_id)) {
result = _vm->_actor->create(actor_id, pt.x, pt.y);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
_vm->_console->print(S_WARN_PREFIX "SF.43: Couldn't create actor 0x%X.", actor_id);
return R_FAILURE;
return FAILURE;
}
} else {
actor_idx = _vm->_actor->getActorIndex(actor_id);
@ -643,93 +643,93 @@ int Script::SF_placeActor(R_SCRIPTFUNC_PARAMS) {
_vm->_actor->setDefaultAction(actor_idx, action_state, ACTION_NONE);
_vm->_actor->setAction(actor_idx, action_state, ACTION_NONE);
return R_SUCCESS;
return SUCCESS;
}
// Script function #44 (0x2C) nonblocking
// Checks to see if the user has interrupted a currently playing
// game cinematic. Pushes a zero or positive value if the game
// has not been interrupted.
int Script::SF_checkUserInterrupt(R_SCRIPTFUNC_PARAMS) {
int Script::SF_checkUserInterrupt(SCRIPTFUNC_PARAMS) {
thread->retVal = (_skipSpeeches == true);
return R_SUCCESS;
return SUCCESS;
}
// Script function #45 (0x2D)
int Script::SF_walkRelative(R_SCRIPTFUNC_PARAMS) {
int Script::SF_walkRelative(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
thread->pop();
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #46 (0x2E)
int Script::SF_moveRelative(R_SCRIPTFUNC_PARAMS) {
int Script::SF_moveRelative(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
thread->pop();
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #52 (0x34)
int Script::SF_throwActor(R_SCRIPTFUNC_PARAMS) {
int Script::SF_throwActor(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
thread->pop();
thread->pop();
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #53 (0x35)
int Script::SF_waitWalk(R_SCRIPTFUNC_PARAMS) {
int Script::SF_waitWalk(SCRIPTFUNC_PARAMS) {
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #55 (0x37)
int Script::SF_changeActorScene(R_SCRIPTFUNC_PARAMS) {
int Script::SF_changeActorScene(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #56 (0x38)
int Script::SF_climb(R_SCRIPTFUNC_PARAMS) {
int Script::SF_climb(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #58 (0x3A)
int Script::SF_setActorZ(R_SCRIPTFUNC_PARAMS) {
int Script::SF_setActorZ(SCRIPTFUNC_PARAMS) {
thread->pop();
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #60 (0x3C)
int Script::SF_getActorX(R_SCRIPTFUNC_PARAMS) {
int Script::SF_getActorX(SCRIPTFUNC_PARAMS) {
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #61 (0x3D)
int Script::SF_getActorY(R_SCRIPTFUNC_PARAMS) {
int Script::SF_getActorY(SCRIPTFUNC_PARAMS) {
thread->pop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #63 (0x3F)
int Script::SF_playMusic(R_SCRIPTFUNC_PARAMS) {
int Script::SF_playMusic(SCRIPTFUNC_PARAMS) {
SDataWord_T param = thread->pop() + 9;
if (param >= 9 && param <= 34)
@ -737,11 +737,11 @@ int Script::SF_playMusic(R_SCRIPTFUNC_PARAMS) {
else
_vm->_music->stop();
return R_SUCCESS;
return SUCCESS;
}
// Script function #69
int Script::SF_enableEscape(R_SCRIPTFUNC_PARAMS) {
int Script::SF_enableEscape(SCRIPTFUNC_PARAMS) {
if (thread->pop())
_abortEnabled = true;
else {
@ -749,7 +749,7 @@ int Script::SF_enableEscape(R_SCRIPTFUNC_PARAMS) {
_abortEnabled = false;
}
return R_SUCCESS;
return SUCCESS;
}
static struct {
@ -824,7 +824,7 @@ static struct {
};
// Script function #70 (0x46)
int Script::SF_playSound(R_SCRIPTFUNC_PARAMS) {
int Script::SF_playSound(SCRIPTFUNC_PARAMS) {
SDataWord_T param = thread->pop() - 13;
if (/* param >= 0 && */ param < ARRAYSIZE(sfxTable))
@ -832,7 +832,7 @@ int Script::SF_playSound(R_SCRIPTFUNC_PARAMS) {
else
_vm->_sound->stopSound();
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -39,13 +39,13 @@ SndRes::SndRes(SagaEngine *vm) : _vm(vm) {
int result;
/* Load sound module resource file contexts */
result = GAME_GetFileContext(&_sfx_ctxt, R_GAME_SOUNDFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&_sfx_ctxt, GAME_SOUNDFILE, 0);
if (result != SUCCESS) {
return;
}
result = GAME_GetFileContext(&_voice_ctxt, R_GAME_VOICEFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&_voice_ctxt, GAME_VOICEFILE, 0);
if (result != SUCCESS) {
return;
}
@ -56,22 +56,22 @@ SndRes::SndRes(SagaEngine *vm) : _vm(vm) {
}
int SndRes::playSound(uint32 sound_rn, int volume) {
R_SOUNDBUFFER snd_buffer;
SOUNDBUFFER snd_buffer;
debug(0, "SndRes::playSound(%ld)", sound_rn);
if (load(_sfx_ctxt, sound_rn, &snd_buffer) != R_SUCCESS) {
debug(0, "Failed to load sound");
return R_FAILURE;
if (load(_sfx_ctxt, sound_rn, &snd_buffer) != SUCCESS) {
debug(0, "Failed to load sound");
return FAILURE;
}
_vm->_sound->playSound(&snd_buffer, volume);
return R_SUCCESS;
return SUCCESS;
}
int SndRes::playVoice(uint32 voice_rn) {
R_SOUNDBUFFER snd_buffer;
SOUNDBUFFER snd_buffer;
int result;
debug(0, "SndRes::playVoice(%ld)", voice_rn);
@ -91,7 +91,7 @@ int SndRes::playVoice(uint32 voice_rn) {
f.open("P2_A.iaf");
if (!f.isOpen())
return R_FAILURE;
return FAILURE;
size = f.size();
byte *snd_res = (byte *)malloc(size);
@ -105,7 +105,7 @@ int SndRes::playVoice(uint32 voice_rn) {
snd_buffer.s_buf = snd_res;
snd_buffer.s_buf_len = size;
snd_buffer.s_signed = 1;
result = R_SUCCESS;
result = SUCCESS;
} else {
result = loadVocSound(snd_res, size, &snd_buffer);
RSC_FreeResource(snd_res);
@ -113,16 +113,16 @@ int SndRes::playVoice(uint32 voice_rn) {
} else
result = load(_voice_ctxt, voice_rn, &snd_buffer);
if (result != R_SUCCESS) {
return R_FAILURE;
if (result != SUCCESS) {
return FAILURE;
}
_vm->_sound->playVoice(&snd_buffer);
return R_SUCCESS;
return SUCCESS;
}
int SndRes::load(R_RSCFILE_CONTEXT *snd_ctxt, uint32 snd_rn, R_SOUNDBUFFER *snd_buf_i) {
int SndRes::load(RSCFILE_CONTEXT *snd_ctxt, uint32 snd_rn, SOUNDBUFFER *snd_buf_i) {
byte *snd_res;
size_t snd_res_len;
@ -131,12 +131,12 @@ int SndRes::load(R_RSCFILE_CONTEXT *snd_ctxt, uint32 snd_rn, R_SOUNDBUFFER *snd_
assert((snd_ctxt != NULL) && (snd_buf_i != NULL));
result = RSC_LoadResource(snd_ctxt, snd_rn, &snd_res, &snd_res_len);
if (result != R_SUCCESS) {
return R_FAILURE;
if (result != SUCCESS) {
return FAILURE;
}
switch (_snd_info.res_type) {
case R_GAME_SOUND_PCM:
case GAME_SOUND_PCM:
snd_buf_i->s_freq = _snd_info.freq;
snd_buf_i->s_samplebits = _snd_info.sample_size;
snd_buf_i->s_stereo = _snd_info.stereo;
@ -144,51 +144,51 @@ int SndRes::load(R_RSCFILE_CONTEXT *snd_ctxt, uint32 snd_rn, R_SOUNDBUFFER *snd_
snd_buf_i->s_buf_len = snd_res_len;
snd_buf_i->s_signed = 1;
break;
case R_GAME_SOUND_VOC:
case GAME_SOUND_VOC:
result = loadVocSound(snd_res, snd_res_len, snd_buf_i);
RSC_FreeResource(snd_res);
if (result != R_SUCCESS) {
return R_FAILURE;
if (result != SUCCESS) {
return FAILURE;
}
break;
default:
/* Unknown sound type */
RSC_FreeResource(snd_res);
return R_FAILURE;
return FAILURE;
}
return R_SUCCESS;
return SUCCESS;
}
int SndRes::loadVocSound(byte *snd_res, size_t snd_res_len, R_SOUNDBUFFER *snd_buf_i) {
R_VOC_HEADER_BLOCK voc_hb;
R_VOC_GENBLOCK voc_gb;
R_VOC_BLOCK1 voc_b1;
int SndRes::loadVocSound(byte *snd_res, size_t snd_res_len, SOUNDBUFFER *snd_buf_i) {
VOC_HEADER_BLOCK voc_hb;
VOC_GENBLOCK voc_gb;
VOC_BLOCK1 voc_b1;
byte *data;
long byte_rate;
size_t i;
if (snd_res_len < R_VOC_HEADER_BLOCK_LEN) {
return R_FAILURE;
if (snd_res_len < VOC_HEADER_BLOCK_LEN) {
return FAILURE;
}
MemoryReadStream readS(snd_res, snd_res_len);
for (i = 0; i < R_VOC_FILE_DESC_LEN; i++)
for (i = 0; i < VOC_FILE_DESC_LEN; i++)
voc_hb.ft_desc[i] = readS.readByte();
if (memcmp(voc_hb.ft_desc, R_VOC_FILE_DESC, R_VOC_FILE_DESC_LEN) != 0) {
if (memcmp(voc_hb.ft_desc, VOC_FILE_DESC, VOC_FILE_DESC_LEN) != 0) {
/* Voc file desc string not found */
return R_FAILURE;
return FAILURE;
}
voc_hb.db_offset = readS.readUint16LE();
voc_hb.voc_version = readS.readUint16LE();
voc_hb.voc_fileid = readS.readUint16LE();
if ((int32)(snd_res_len - readS.pos()) < (int32)(voc_hb.db_offset + R_VOC_GENBLOCK_LEN)) {
return R_FAILURE;
if ((int32)(snd_res_len - readS.pos()) < (int32)(voc_hb.db_offset + VOC_GENBLOCK_LEN)) {
return FAILURE;
}
while (readS.pos() < voc_hb.db_offset)
@ -196,13 +196,13 @@ int SndRes::loadVocSound(byte *snd_res, size_t snd_res_len, R_SOUNDBUFFER *snd_b
for (;;) {
/* Read generic block header */
if (snd_res_len - readS.pos() < R_VOC_GENBLOCK_LEN) {
return R_FAILURE;
if (snd_res_len - readS.pos() < VOC_GENBLOCK_LEN) {
return FAILURE;
}
voc_gb.block_id = readS.readByte();
if (voc_gb.block_id == 0) {
return R_FAILURE;
return FAILURE;
}
voc_gb.block_len = readS.readUint24LE();
@ -215,10 +215,10 @@ int SndRes::loadVocSound(byte *snd_res, size_t snd_res_len, R_SOUNDBUFFER *snd_b
if (voc_b1.pack_method != 0) {
debug(0, "Packed VOC files not supported");
return R_FAILURE;
return FAILURE;
}
byte_rate = R_VOC_TIME_BASE / (R_VOC_TIME_CBASE - (voc_b1.time_constant << 8));
byte_rate = VOC_TIME_BASE / (VOC_TIME_CBASE - (voc_b1.time_constant << 8));
snd_buf_i->s_stereo = 0;
snd_buf_i->s_samplebits = 8;
@ -227,14 +227,14 @@ int SndRes::loadVocSound(byte *snd_res, size_t snd_res_len, R_SOUNDBUFFER *snd_b
data = (byte *)malloc(snd_buf_i->s_buf_len);
if (!data) {
return R_FAILURE;
return FAILURE;
}
readS.read(data, snd_buf_i->s_buf_len);
snd_buf_i->s_buf = data;
snd_buf_i->s_signed = 0;
return R_SUCCESS;
return SUCCESS;
default:
for (i = 0; i < voc_gb.block_len; i++)
readS.readByte();
@ -242,7 +242,7 @@ int SndRes::loadVocSound(byte *snd_res, size_t snd_res_len, R_SOUNDBUFFER *snd_b
}
}
return R_SUCCESS;
return SUCCESS;
}
int SndRes::getVoiceLength(uint32 voice_rn) {
@ -252,7 +252,7 @@ int SndRes::getVoiceLength(uint32 voice_rn) {
double ms_f;
int ms_i = -1;
int result = R_FAILURE;
int result = FAILURE;
assert(_init);
@ -264,30 +264,30 @@ int SndRes::getVoiceLength(uint32 voice_rn) {
if (GAME_GetGameType() == GID_ITE && voice_rn == 4) {
if (f.open("p2_a.voc")) {
result = R_SUCCESS;
result = SUCCESS;
length = f.size();
res_type = R_GAME_SOUND_VOC;
res_type = GAME_SOUND_VOC;
f.close();
} else if (f.open("P2_A.iaf")) {
result = R_SUCCESS;
result = SUCCESS;
length = f.size();
res_type = R_GAME_SOUND_PCM;
res_type = GAME_SOUND_PCM;
f.close();
}
}
if (result == R_FAILURE) {
if (result == FAILURE) {
result = RSC_GetResourceSize(_voice_ctxt, voice_rn, &length);
if (result != R_SUCCESS) {
if (result != SUCCESS) {
return -1;
}
}
if (res_type == R_GAME_SOUND_PCM) {
if (res_type == GAME_SOUND_PCM) {
ms_f = (double)length / (_snd_info.sample_size / CHAR_BIT) / (_snd_info.freq) * 1000.0;
ms_i = (int)ms_f;
} else if (res_type == R_GAME_SOUND_VOC) {
} else if (res_type == GAME_SOUND_VOC) {
// Rough hack, fix this to be accurate
ms_f = (double)length / 14705 * 1000.0;
ms_i = (int)ms_f;
@ -321,7 +321,7 @@ int SndRes::ITEVOC_Resample(long src_freq, long dst_freq, byte *src_buf,
resamp_len = (size_t) (src_buf_len * 1.5);
resamp_buf = (byte *)malloc(resamp_len);
if (resamp_buf == NULL) {
return R_FAILURE;
return FAILURE;
}
read_pa = src_buf;
@ -350,7 +350,7 @@ int SndRes::ITEVOC_Resample(long src_freq, long dst_freq, byte *src_buf,
*dst_buf = resamp_buf;
*dst_buf_len = resamp_len;
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -32,29 +32,29 @@
namespace Saga {
#define R_VOC_TIME_BASE 256000000L
#define R_VOC_TIME_CBASE 65536L
#define VOC_TIME_BASE 256000000L
#define VOC_TIME_CBASE 65536L
#define R_VOC_FILE_DESC_LEN 20
#define R_VOC_FILE_DESC "Creative Voice File\x1A"
#define VOC_FILE_DESC_LEN 20
#define VOC_FILE_DESC "Creative Voice File\x1A"
struct R_VOC_HEADER_BLOCK {
struct VOC_HEADER_BLOCK {
char ft_desc[20]; // BYTE [20]
uint16 db_offset; // WORD
uint16 voc_version;// WORD
uint16 voc_fileid; // WORD
};
#define R_VOC_HEADER_BLOCK_LEN 26
#define VOC_HEADER_BLOCK_LEN 26
struct R_VOC_GENBLOCK {
struct VOC_GENBLOCK {
int block_id; // BYTE
uint32 block_len; // BYTE[3]
};
#define R_VOC_GENBLOCK_LEN 4
#define VOC_GENBLOCK_LEN 4
struct R_VOC_BLOCK1 {
struct VOC_BLOCK1 {
int block_id; // BYTE
uint32 block_len; // BYTE[3]
uint16 time_constant; // BYTE
@ -74,15 +74,15 @@ public:
size_t src_buf_len, byte **dst_buf, size_t *dst_buf_len);
private:
int load(R_RSCFILE_CONTEXT *snd_ctxt, uint32 snd_rn, R_SOUNDBUFFER *snd_buf_i);
int loadVocSound(byte *snd_res, size_t snd_res_len, R_SOUNDBUFFER *snd_buf_i);
int load(RSCFILE_CONTEXT *snd_ctxt, uint32 snd_rn, SOUNDBUFFER *snd_buf_i);
int loadVocSound(byte *snd_res, size_t snd_res_len, SOUNDBUFFER *snd_buf_i);
int _init;
R_RSCFILE_CONTEXT *_sfx_ctxt;
R_RSCFILE_CONTEXT *_voice_ctxt;
RSCFILE_CONTEXT *_sfx_ctxt;
RSCFILE_CONTEXT *_voice_ctxt;
R_GAME_SOUNDINFO _snd_info;
GAME_SOUNDINFO _snd_info;
SagaEngine *_vm;
};

View File

@ -44,11 +44,11 @@ Sound::~Sound() {
_soundInitialized = 0;
}
int Sound::playSoundBuffer(PlayingSoundHandle *handle, R_SOUNDBUFFER *buf, int volume, bool loop) {
int Sound::playSoundBuffer(PlayingSoundHandle *handle, SOUNDBUFFER *buf, int volume, bool loop) {
byte flags;
if (!_soundInitialized) {
return R_FAILURE;
return FAILURE;
}
flags = SoundMixer::FLAG_AUTOFREE;
@ -68,7 +68,7 @@ int Sound::playSoundBuffer(PlayingSoundHandle *handle, R_SOUNDBUFFER *buf, int v
#if 0
int game_id = GAME_GetGame();
if((game_id == R_GAME_ITE_DISK) || (game_id == R_GAME_ITE_DEMO)) {
if((game_id == GAME_ITE_DISK) || (game_id == GAME_ITE_DEMO)) {
flags = SoundMixer::FLAG_UNSIGNED | SoundMixer::FLAG_AUTOFREE;
} else {
flags = SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_16BITS |
@ -78,75 +78,75 @@ int Sound::playSoundBuffer(PlayingSoundHandle *handle, R_SOUNDBUFFER *buf, int v
_mixer->playRaw(handle, buf->s_buf, buf->s_buf_len, buf->s_freq, flags, -1, volume);
return R_SUCCESS;
return SUCCESS;
}
int Sound::playSound(R_SOUNDBUFFER *buf, int volume) {
int Sound::playSound(SOUNDBUFFER *buf, int volume) {
return playSoundBuffer(&_effectHandle, buf, 2 * volume, false);
}
int Sound::pauseSound() {
if (!_soundInitialized) {
return R_FAILURE;
return FAILURE;
}
_mixer->pauseHandle(_effectHandle, true);
return R_SUCCESS;
return SUCCESS;
}
int Sound::resumeSound() {
if (!_soundInitialized) {
return R_FAILURE;
return FAILURE;
}
_mixer->pauseHandle(_effectHandle, false);
return R_SUCCESS;
return SUCCESS;
}
int Sound::stopSound() {
if (!_soundInitialized) {
return R_FAILURE;
return FAILURE;
}
_mixer->stopHandle(_effectHandle);
return R_SUCCESS;
return SUCCESS;
}
int Sound::playVoice(R_SOUNDBUFFER *buf) {
int Sound::playVoice(SOUNDBUFFER *buf) {
return playSoundBuffer(&_voiceHandle, buf, 255, false);
}
int Sound::pauseVoice() {
if (!_soundInitialized) {
return R_FAILURE;
return FAILURE;
}
_mixer->pauseHandle(_voiceHandle, true);
return R_SUCCESS;
return SUCCESS;
}
int Sound::resumeVoice() {
if (!_soundInitialized) {
return R_FAILURE;
return FAILURE;
}
_mixer->pauseHandle(_voiceHandle, false);
return R_SUCCESS;
return SUCCESS;
}
int Sound::stopVoice() {
if (!_soundInitialized) {
return R_FAILURE;
return FAILURE;
}
_mixer->stopHandle(_voiceHandle);
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -32,7 +32,7 @@
namespace Saga {
struct R_SOUNDBUFFER {
struct SOUNDBUFFER {
uint16 s_freq;
int s_samplebits;
int s_stereo;
@ -48,19 +48,19 @@ public:
Sound(SagaEngine *vm, SoundMixer *mixer, int enabled);
~Sound();
int playSound(R_SOUNDBUFFER *buf, int volume);
int playSound(SOUNDBUFFER *buf, int volume);
int pauseSound();
int resumeSound();
int stopSound();
int playVoice(R_SOUNDBUFFER *buf);
int playVoice(SOUNDBUFFER *buf);
int pauseVoice();
int resumeVoice();
int stopVoice();
private:
int playSoundBuffer(PlayingSoundHandle *handle, R_SOUNDBUFFER *buf, int volume, bool loop);
int playSoundBuffer(PlayingSoundHandle *handle, SOUNDBUFFER *buf, int volume, bool loop);
int _soundInitialized;
int _enabled;

View File

@ -42,14 +42,14 @@ Sprite::Sprite(SagaEngine *vm) : _vm(vm), _initialized(false) {
debug(0, "Initializing sprite subsystem...");
// Load sprite module resource context
result = GAME_GetFileContext(&_spriteContext, R_GAME_RESOURCEFILE, 0);
if (result != R_SUCCESS) {
result = GAME_GetFileContext(&_spriteContext, GAME_RESOURCEFILE, 0);
if (result != SUCCESS) {
return;
}
_decodeBufLen = R_DECODE_BUF_LEN;
_decodeBufLen = DECODE_BUF_LEN;
_decodeBuf = (byte *)malloc(R_DECODE_BUF_LEN);
_decodeBuf = (byte *)malloc(DECODE_BUF_LEN);
if (_decodeBuf == NULL) {
return;
}
@ -67,20 +67,20 @@ Sprite::~Sprite(void) {
free(_decodeBuf);
}
int Sprite::loadList(int resource_num, R_SPRITELIST **sprite_list_p) {
R_SPRITELIST *new_slist;
int Sprite::loadList(int resource_num, SPRITELIST **sprite_list_p) {
SPRITELIST *new_slist;
byte *spritelist_data;
size_t spritelist_len;
uint16 sprite_count;
uint16 i;
new_slist = (R_SPRITELIST *)malloc(sizeof *new_slist);
new_slist = (SPRITELIST *)malloc(sizeof *new_slist);
if (new_slist == NULL) {
return R_MEM;
return MEM;
}
if (RSC_LoadResource(_spriteContext, resource_num, &spritelist_data, &spritelist_len) != R_SUCCESS) {
return R_FAILURE;
if (RSC_LoadResource(_spriteContext, resource_num, &spritelist_data, &spritelist_len) != SUCCESS) {
return FAILURE;
}
MemoryReadStream readS(spritelist_data, spritelist_len);
@ -89,10 +89,10 @@ int Sprite::loadList(int resource_num, R_SPRITELIST **sprite_list_p) {
new_slist->sprite_count = sprite_count;
new_slist->offset_list = (R_SPRITELIST_OFFSET *)malloc(sprite_count * sizeof *new_slist->offset_list);
new_slist->offset_list = (SPRITELIST_OFFSET *)malloc(sprite_count * sizeof *new_slist->offset_list);
if (new_slist->offset_list == NULL) {
free(new_slist);
return R_MEM;
return MEM;
}
for (i = 0; i < sprite_count; i++) {
@ -106,10 +106,10 @@ int Sprite::loadList(int resource_num, R_SPRITELIST **sprite_list_p) {
*sprite_list_p = new_slist;
return R_SUCCESS;
return SUCCESS;
}
int Sprite::appendList(int resource_num, R_SPRITELIST *spritelist) {
int Sprite::appendList(int resource_num, SPRITELIST *spritelist) {
byte *spritelist_data;
size_t spritelist_len;
void *test_p;
@ -118,12 +118,12 @@ int Sprite::appendList(int resource_num, R_SPRITELIST *spritelist) {
uint16 sprite_count;
int i;
if (spritelist->append_count >= (R_APPENDMAX - 1)) {
return R_FAILURE;
if (spritelist->append_count >= (APPENDMAX - 1)) {
return FAILURE;
}
if (RSC_LoadResource(_spriteContext, resource_num, &spritelist_data, &spritelist_len) != R_SUCCESS) {
return R_FAILURE;
if (RSC_LoadResource(_spriteContext, resource_num, &spritelist_data, &spritelist_len) != SUCCESS) {
return FAILURE;
}
MemoryReadStream readS(spritelist_data, spritelist_len);
@ -135,10 +135,10 @@ int Sprite::appendList(int resource_num, R_SPRITELIST *spritelist) {
test_p = realloc(spritelist->offset_list, new_sprite_count * sizeof *spritelist->offset_list);
if (test_p == NULL) {
return R_MEM;
return MEM;
}
spritelist->offset_list = (R_SPRITELIST_OFFSET *)test_p;
spritelist->offset_list = (SPRITELIST_OFFSET *)test_p;
spritelist->sprite_count = new_sprite_count;
spritelist->append_count++;
@ -150,14 +150,14 @@ int Sprite::appendList(int resource_num, R_SPRITELIST *spritelist) {
spritelist->sprite_data[spritelist->append_count] = spritelist_data;
return R_SUCCESS;
return SUCCESS;
}
int Sprite::getListLen(R_SPRITELIST *spritelist) {
int Sprite::getListLen(SPRITELIST *spritelist) {
return spritelist->sprite_count;
}
int Sprite::freeSprite(R_SPRITELIST *spritelist) {
int Sprite::freeSprite(SPRITELIST *spritelist) {
int i;
for (i = 0; i <= spritelist->append_count; i++) {
@ -168,10 +168,10 @@ int Sprite::freeSprite(R_SPRITELIST *spritelist) {
free(spritelist->offset_list);
free(spritelist);
return R_SUCCESS;
return SUCCESS;
}
int Sprite::draw(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
int Sprite::draw(SURFACE *ds, SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
int offset;
int offset_idx;
byte *sprite_p;
@ -187,7 +187,7 @@ int Sprite::draw(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int s
int y_align;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
offset = sprite_list->offset_list[sprite_num].offset;
@ -244,10 +244,10 @@ int Sprite::draw(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int s
src_row_p += s_width;
}
return R_SUCCESS;
return SUCCESS;
}
int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
int Sprite::drawOccluded(SURFACE *ds, SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y) {
int offset;
int offset_idx;
byte *sprite_p;
@ -263,14 +263,14 @@ int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_nu
int s_height;
int x_align;
int y_align;
int z_lut[R_SPRITE_ZMAX];
int z_lut[SPRITE_ZMAX];
int e_slope;
// Clipinfo variables
Point spr_pt;
Rect spr_src_rect;
Rect spr_dst_rect;
R_CLIPINFO ci;
CLIPINFO ci;
// BG mask variables
int mask_w;
@ -285,7 +285,7 @@ int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_nu
int actor_z;
if (!_initialized) {
return R_FAILURE;
return FAILURE;
}
if (!_vm->_scene->isBGMaskPresent()) {
@ -294,7 +294,7 @@ int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_nu
if (sprite_num >= sprite_list->sprite_count) {
warning("Invalid sprite number (%d) for sprite list %d", sprite_num, sprite_list->slist_rn);
return R_FAILURE;
return FAILURE;
}
// Get sprite data from list
@ -321,7 +321,7 @@ int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_nu
e_slope = zinfo.endSlope;
for (i = 0; i < R_SPRITE_ZMAX; i++) {
for (i = 0; i < SPRITE_ZMAX; i++) {
z_lut[i] = (int)(e_slope + ((137.0 - e_slope) / 14.0) * (15.0 - i));
}
@ -352,7 +352,7 @@ int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_nu
_vm->_gfx->getClipInfo(&ci);
if (ci.nodraw) {
return R_SUCCESS;
return SUCCESS;
}
decodeRLESprite(sprite_data_p, 64000, _decodeBuf, s_width * s_height);
@ -369,7 +369,7 @@ int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_nu
mask_p = mask_row_p;
for (x = 0; x < ci.draw_w; x++) {
if (*src_p != 0) {
mask_z = *mask_p & R_SPRITE_ZMASK;
mask_z = *mask_p & SPRITE_ZMASK;
if (actor_z > z_lut[mask_z]) {
*dst_p = *src_p;
}
@ -390,7 +390,7 @@ int Sprite::drawOccluded(R_SURFACE *ds, R_SPRITELIST *sprite_list, int sprite_nu
_vm->textDraw(2, ds, buf, spr_x - x_align, spr_y - y_align, 255, 0, FONT_OUTLINE);
}
*/
return R_SUCCESS;
return SUCCESS;
}
int Sprite::decodeRLESprite(const byte *inbuf, size_t inbuf_len, byte *outbuf, size_t outbuf_len) {
@ -446,7 +446,7 @@ int Sprite::decodeRLESprite(const byte *inbuf, size_t inbuf_len, byte *outbuf, s
}
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -28,14 +28,14 @@
namespace Saga {
#define R_APPENDMAX 4
#define APPENDMAX 4
#define R_SPRITE_ZMAX 16
#define R_SPRITE_ZMASK 0x0F
#define SPRITE_ZMAX 16
#define SPRITE_ZMASK 0x0F
#define R_DECODE_BUF_LEN 64000
#define DECODE_BUF_LEN 64000
struct R_SPRITELIST_ENTRY {
struct SPRITELIST_ENTRY {
int x_align;
int y_align;
int width;
@ -43,17 +43,17 @@ struct R_SPRITELIST_ENTRY {
};
struct R_SPRITELIST_OFFSET {
struct SPRITELIST_OFFSET {
uint16 data_idx;
size_t offset;
};
struct R_SPRITELIST {
struct SPRITELIST {
int append_count;
int sprite_count;
R_SPRITELIST_OFFSET *offset_list;
SPRITELIST_OFFSET *offset_list;
int slist_rn;
byte *sprite_data[R_APPENDMAX];
byte *sprite_data[APPENDMAX];
};
@ -61,19 +61,19 @@ 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);
int loadList(int resource_num, SPRITELIST **sprite_list_p);
int appendList(int resource_num, SPRITELIST *spritelist);
int getListLen(SPRITELIST *spritelist);
int freeSprite(SPRITELIST *spritelist);
int draw(SURFACE *ds, SPRITELIST *sprite_list, int sprite_num, int spr_x, int spr_y);
int drawOccluded(SURFACE *ds, 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;
RSCFILE_CONTEXT *_spriteContext;
byte *_decodeBuf;
size_t _decodeBufLen;
};

View File

@ -35,21 +35,21 @@
namespace Saga {
void Script::setFramePtr(R_SCRIPT_THREAD *thread, int newPtr) {
void Script::setFramePtr(SCRIPT_THREAD *thread, int newPtr) {
thread->framePtr = newPtr;
dataBuffer(3)->len = ARRAYSIZE(thread->stackBuf) - thread->framePtr;
dataBuffer(3)->data = (SDataWord_T *) &(thread->stackBuf[newPtr]);
}
R_SCRIPT_THREAD *Script::SThreadCreate() {
SCRIPT_THREAD *Script::SThreadCreate() {
YS_DL_NODE *new_node;
R_SCRIPT_THREAD *new_thread;
SCRIPT_THREAD *new_thread;
if (!isInitialized()) {
return NULL;
}
new_thread = (R_SCRIPT_THREAD *)calloc(1, sizeof *new_thread);
new_thread = (SCRIPT_THREAD *)calloc(1, sizeof *new_thread);
if (new_thread == NULL) {
return NULL;
}
@ -57,7 +57,7 @@ R_SCRIPT_THREAD *Script::SThreadCreate() {
new_node = ys_dll_add_head(threadList(), new_thread, sizeof *new_thread);
free(new_thread);
new_thread = (R_SCRIPT_THREAD *)ys_dll_get_data(new_node);
new_thread = (SCRIPT_THREAD *)ys_dll_get_data(new_node);
new_thread->stackPtr = ARRAYSIZE(new_thread->stackBuf) - 1;
setFramePtr(new_thread, new_thread->stackPtr);
@ -71,31 +71,31 @@ R_SCRIPT_THREAD *Script::SThreadCreate() {
return new_thread;
}
int Script::SThreadDestroy(R_SCRIPT_THREAD *thread) {
int Script::SThreadDestroy(SCRIPT_THREAD *thread) {
YS_DL_NODE *walk_p;
R_SCRIPT_THREAD *th;
SCRIPT_THREAD *th;
if (thread == NULL) {
return R_FAILURE;
return FAILURE;
}
for (walk_p = ys_dll_head(threadList()); walk_p != NULL; walk_p = ys_dll_next(walk_p)) {
th = (R_SCRIPT_THREAD *)ys_dll_get_data(walk_p);
th = (SCRIPT_THREAD *)ys_dll_get_data(walk_p);
if (thread == th) {
ys_dll_delete(walk_p);
break;
}
}
return R_SUCCESS;
return SUCCESS;
}
int Script::SThreadExecThreads(uint msec) {
YS_DL_NODE *walk_p, *next_p;
R_SCRIPT_THREAD *thread;
SCRIPT_THREAD *thread;
if (!isInitialized()) {
return R_FAILURE;
return FAILURE;
}
walk_p = ys_dll_head(threadList());
@ -103,7 +103,7 @@ int Script::SThreadExecThreads(uint msec) {
while (walk_p != NULL) {
next_p = ys_dll_next(walk_p);
thread = (R_SCRIPT_THREAD *)ys_dll_get_data(walk_p);
thread = (SCRIPT_THREAD *)ys_dll_get_data(walk_p);
if (thread->flags & (kTFlagFinished | kTFlagAborted)) {
//if (thread->flags & kTFlagFinished) // FIXME. Missing function
@ -134,7 +134,7 @@ int Script::SThreadExecThreads(uint msec) {
walk_p = next_p;
}
return R_SUCCESS;
return SUCCESS;
}
void Script::SThreadCompleteThread(void) {
@ -142,8 +142,8 @@ void Script::SThreadCompleteThread(void) {
SThreadExecThreads(0);
}
int Script::SThreadSetEntrypoint(R_SCRIPT_THREAD *thread, int ep_num) {
R_SCRIPT_BYTECODE *bytecode;
int Script::SThreadSetEntrypoint(SCRIPT_THREAD *thread, int ep_num) {
SCRIPT_BYTECODE *bytecode;
int max_entrypoint;
assert(isInitialized());
@ -152,20 +152,20 @@ int Script::SThreadSetEntrypoint(R_SCRIPT_THREAD *thread, int ep_num) {
max_entrypoint = bytecode->n_entrypoints;
if ((ep_num < 0) || (ep_num >= max_entrypoint)) {
return R_FAILURE;
return FAILURE;
}
thread->ep_num = ep_num;
thread->ep_offset = bytecode->entrypoints[ep_num].offset;
return R_SUCCESS;
return SUCCESS;
}
int Script::SThreadExecute(R_SCRIPT_THREAD *thread, int ep_num) {
int Script::SThreadExecute(SCRIPT_THREAD *thread, int ep_num) {
assert(isInitialized());
if ((currentScript() == NULL) || (!currentScript()->loaded)) {
return R_FAILURE;
return FAILURE;
}
SThreadSetEntrypoint(thread, ep_num);
@ -173,7 +173,7 @@ int Script::SThreadExecute(R_SCRIPT_THREAD *thread, int ep_num) {
thread->i_offset = thread->ep_offset;
thread->flags = kTFlagNone;
return R_SUCCESS;
return SUCCESS;
}
void Script::SThreadAbortAll(void) {
@ -186,7 +186,7 @@ void Script::SThreadAbortAll(void) {
_vm->_script->SThreadExecThreads(0);
}
unsigned char *Script::SThreadGetReadPtr(R_SCRIPT_THREAD *thread) {
unsigned char *Script::SThreadGetReadPtr(SCRIPT_THREAD *thread) {
return currentScript()->bytecode->bytecode_p + thread->i_offset;
}
@ -194,24 +194,24 @@ unsigned long Script::SThreadGetReadOffset(const byte *read_p) {
return (unsigned long)(read_p - (unsigned char *)currentScript()->bytecode->bytecode_p);
}
size_t Script::SThreadGetReadLen(R_SCRIPT_THREAD *thread) {
size_t Script::SThreadGetReadLen(SCRIPT_THREAD *thread) {
return currentScript()->bytecode->bytecode_len - thread->i_offset;
}
int Script::SThreadHoldSem(R_SEMAPHORE *sem) {
int Script::SThreadHoldSem(SEMAPHORE *sem) {
if (sem == NULL) {
return R_FAILURE;
return FAILURE;
}
sem->hold_count++;
return R_SUCCESS;
return SUCCESS;
}
int Script::SThreadReleaseSem(R_SEMAPHORE *sem) {
int Script::SThreadReleaseSem(SEMAPHORE *sem) {
if (sem == NULL) {
return R_FAILURE;
return FAILURE;
}
sem->hold_count--;
@ -219,7 +219,7 @@ int Script::SThreadReleaseSem(R_SEMAPHORE *sem) {
sem->hold_count = 0;
}
return R_SUCCESS;
return SUCCESS;
}
int Script::SThreadDebugStep() {
@ -227,10 +227,10 @@ int Script::SThreadDebugStep() {
_dbg_dostep = 1;
}
return R_SUCCESS;
return SUCCESS;
}
int Script::SThreadRun(R_SCRIPT_THREAD *thread, int instr_limit) {
int Script::SThreadRun(SCRIPT_THREAD *thread, int instr_limit) {
int instr_count;
uint32 saved_offset;
SDataWord_T param1;
@ -256,7 +256,7 @@ int Script::SThreadRun(R_SCRIPT_THREAD *thread, int instr_limit) {
instr_limit = 1;
_dbg_dostep = 0;
} else {
return R_SUCCESS;
return SUCCESS;
}
}
@ -382,7 +382,7 @@ int Script::SThreadRun(R_SCRIPT_THREAD *thread, int instr_limit) {
n_args = scriptS.readByte();
func_num = scriptS.readUint16LE();
if (func_num >= R_SFUNC_NUM) {
if (func_num >= SFUNC_NUM) {
_vm->_console->print(S_ERROR_PREFIX "Invalid script function number: (%X)\n", func_num);
thread->flags |= kTFlagAborted;
break;
@ -398,7 +398,7 @@ int Script::SThreadRun(R_SCRIPT_THREAD *thread, int instr_limit) {
}
} else {
sfuncRetVal = (this->*sfunc)(thread);
if (sfuncRetVal != R_SUCCESS) {
if (sfuncRetVal != SUCCESS) {
_vm->_console->print(S_WARN_PREFIX "%X: Script function %d failed.\n", thread->i_offset, func_num);
}
@ -835,7 +835,7 @@ int Script::SThreadRun(R_SCRIPT_THREAD *thread, int instr_limit) {
}
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -33,7 +33,7 @@
namespace Saga {
int SagaEngine::textDraw(int font_id, R_SURFACE *ds, const char *string, int text_x, int text_y, int color,
int SagaEngine::textDraw(int font_id, SURFACE *ds, const char *string, int text_x, int text_y, int color,
int effect_color, int flags) {
int string_w;
int string_len;
@ -55,34 +55,34 @@ int SagaEngine::textDraw(int font_id, R_SURFACE *ds, const char *string, int tex
if (flags & FONT_CENTERED) {
// Text is centered... format output
// Enforce minimum and maximum center points for centered text
if (text_x < R_TEXT_CENTERLIMIT) {
text_x = R_TEXT_CENTERLIMIT;
if (text_x < TEXT_CENTERLIMIT) {
text_x = TEXT_CENTERLIMIT;
}
if (text_x > ds->buf_w - R_TEXT_CENTERLIMIT) {
text_x = ds->buf_w - R_TEXT_CENTERLIMIT;
if (text_x > ds->buf_w - TEXT_CENTERLIMIT) {
text_x = ds->buf_w - TEXT_CENTERLIMIT;
}
if (text_x < (R_TEXT_MARGIN * 2)) {
if (text_x < (TEXT_MARGIN * 2)) {
// Text can't be centered if it's too close to the margin
return R_FAILURE;
return FAILURE;
}
string_w = _font->getStringWidth(font_id, string, string_len, flags);
if (text_x < (ds->buf_w / 2)) {
// Fit to right side
fit_w = (text_x - R_TEXT_MARGIN) * 2;
fit_w = (text_x - TEXT_MARGIN) * 2;
} else {
// Fit to left side
fit_w = ((ds->buf_w - R_TEXT_MARGIN) - text_x) * 2;
fit_w = ((ds->buf_w - TEXT_MARGIN) - text_x) * 2;
}
if (fit_w >= string_w) {
// Entire string fits, draw it
text_x = text_x - (string_w / 2);
_font->draw(font_id, ds, string, string_len, text_x, text_y, color, effect_color, flags);
return R_SUCCESS;
return SUCCESS;
}
// String won't fit on one line
@ -112,13 +112,13 @@ int SagaEngine::textDraw(int font_id, R_SURFACE *ds, const char *string, int tex
// This word won't fit
if (wc == 0) {
// The first word in the line didn't fit. abort
return R_SUCCESS;
return SUCCESS;
}
// Wrap what we've got and restart
_font->draw(font_id, ds, start_p, len_total, text_x - (w_total / 2), text_y, color,
effect_color, flags);
text_y += h + R_TEXT_LINESPACING;
text_y += h + TEXT_LINESPACING;
w_total = 0;
len_total = 0;
wc = 0;
@ -133,7 +133,7 @@ int SagaEngine::textDraw(int font_id, R_SURFACE *ds, const char *string, int tex
// Since word hit NULL but fit, we are done
_font->draw(font_id, ds, start_p, len_total, text_x - (w_total / 2), text_y, color,
effect_color, flags);
return R_SUCCESS;
return SUCCESS;
}
search_p = measure_p + 1;
}
@ -143,13 +143,13 @@ int SagaEngine::textDraw(int font_id, R_SURFACE *ds, const char *string, int tex
_font->draw(font_id, ds, string, string_len, text_x, text_y, color, effect_color, flags);
}
return R_SUCCESS;
return SUCCESS;
}
R_TEXTLIST *SagaEngine::textCreateList() {
R_TEXTLIST *new_textlist;
TEXTLIST *SagaEngine::textCreateList() {
TEXTLIST *new_textlist;
new_textlist = (R_TEXTLIST *)malloc(sizeof *new_textlist);
new_textlist = (TEXTLIST *)malloc(sizeof *new_textlist);
if (new_textlist == NULL) {
return NULL;
@ -165,7 +165,7 @@ R_TEXTLIST *SagaEngine::textCreateList() {
return new_textlist;
}
void SagaEngine::textClearList(R_TEXTLIST *tlist) {
void SagaEngine::textClearList(TEXTLIST *tlist) {
if (tlist != NULL) {
ys_dll_delete_all(tlist->list);
}
@ -173,7 +173,7 @@ void SagaEngine::textClearList(R_TEXTLIST *tlist) {
return;
}
void SagaEngine::textDestroyList(R_TEXTLIST *tlist) {
void SagaEngine::textDestroyList(TEXTLIST *tlist) {
if (tlist != NULL) {
ys_dll_destroy(tlist->list);
}
@ -182,31 +182,31 @@ void SagaEngine::textDestroyList(R_TEXTLIST *tlist) {
return;
}
int SagaEngine::textDrawList(R_TEXTLIST *textlist, R_SURFACE *ds) {
R_TEXTLIST_ENTRY *entry_p;
int SagaEngine::textDrawList(TEXTLIST *textlist, SURFACE *ds) {
TEXTLIST_ENTRY *entry_p;
YS_DL_NODE *walk_p;
assert((textlist != NULL) && (ds != NULL));
for (walk_p = ys_dll_head(textlist->list); walk_p != NULL; walk_p = ys_dll_next(walk_p)) {
entry_p = (R_TEXTLIST_ENTRY *)ys_dll_get_data(walk_p);
entry_p = (TEXTLIST_ENTRY *)ys_dll_get_data(walk_p);
if (entry_p->display != 0) {
textDraw(entry_p->font_id, ds, entry_p->string, entry_p->text_x, entry_p->text_y, entry_p->color,
entry_p->effect_color, entry_p->flags);
}
}
return R_SUCCESS;
return SUCCESS;
}
int SagaEngine::textProcessList(R_TEXTLIST *textlist, long ms) {
R_TEXTLIST_ENTRY *entry_p;
int SagaEngine::textProcessList(TEXTLIST *textlist, long ms) {
TEXTLIST_ENTRY *entry_p;
YS_DL_NODE *walk_p;
YS_DL_NODE *temp_p;
for (walk_p = ys_dll_head(textlist->list); walk_p != NULL; walk_p = temp_p) {
temp_p = ys_dll_next(walk_p);
entry_p = (R_TEXTLIST_ENTRY *)ys_dll_get_data(walk_p);
entry_p = (TEXTLIST_ENTRY *)ys_dll_get_data(walk_p);
if (entry_p->flags & TEXT_TIMEOUT) {
entry_p->time -= ms;
if (entry_p->time <= 0) {
@ -215,34 +215,34 @@ int SagaEngine::textProcessList(R_TEXTLIST *textlist, long ms) {
}
}
return R_SUCCESS;
return SUCCESS;
}
R_TEXTLIST_ENTRY *SagaEngine::textAddEntry(R_TEXTLIST *textlist, R_TEXTLIST_ENTRY *entry) {
TEXTLIST_ENTRY *SagaEngine::textAddEntry(TEXTLIST *textlist, TEXTLIST_ENTRY *entry) {
YS_DL_NODE *new_node = NULL;
if (entry != NULL) {
new_node = ys_dll_add_tail(textlist->list, entry, sizeof *entry);
}
return (new_node != NULL) ? (R_TEXTLIST_ENTRY *)new_node->data : NULL;
return (new_node != NULL) ? (TEXTLIST_ENTRY *)new_node->data : NULL;
}
int SagaEngine::textSetDisplay(R_TEXTLIST_ENTRY *entry, int val) {
int SagaEngine::textSetDisplay(TEXTLIST_ENTRY *entry, int val) {
if (entry != NULL) {
entry->display = !!val;
return R_SUCCESS;
return SUCCESS;
}
return R_FAILURE;
return FAILURE;
}
int SagaEngine::textDeleteEntry(R_TEXTLIST *textlist, R_TEXTLIST_ENTRY *entry) {
int SagaEngine::textDeleteEntry(TEXTLIST *textlist, TEXTLIST_ENTRY *entry) {
YS_DL_NODE *walk_p;
if (entry == NULL) {
return R_FAILURE;
return FAILURE;
}
for (walk_p = ys_dll_head(textlist->list); walk_p != NULL; walk_p = ys_dll_next(walk_p)) {
@ -252,7 +252,7 @@ int SagaEngine::textDeleteEntry(R_TEXTLIST *textlist, R_TEXTLIST_ENTRY *entry) {
}
}
return R_SUCCESS;
return SUCCESS;
}
} // End of namespace Saga

View File

@ -30,21 +30,21 @@
namespace Saga {
#define R_TEXT_CENTERLIMIT 50
#define R_TEXT_MARGIN 10
#define R_TEXT_LINESPACING 2
#define TEXT_CENTERLIMIT 50
#define TEXT_MARGIN 10
#define TEXT_LINESPACING 2
struct R_TEXTLIST {
struct TEXTLIST {
YS_DL_LIST *list;
};
enum R_TEXT_FLAGS {
enum TEXT_FLAGS {
TEXT_TIMEOUT = 0x01
};
struct R_TEXTLIST_ENTRY {
R_TEXTLIST_ENTRY *next;
R_TEXTLIST_ENTRY *prev;
struct TEXTLIST_ENTRY {
TEXTLIST_ENTRY *next;
TEXTLIST_ENTRY *prev;
int display;
int id;
int text_x;
@ -55,7 +55,7 @@ struct R_TEXTLIST_ENTRY {
int font_id;
long time;
const char *string;
R_TEXTLIST_ENTRY() { memset(this, 0, sizeof(*this)); }
TEXTLIST_ENTRY() { memset(this, 0, sizeof(*this)); }
};