aboutsummaryrefslogtreecommitdiff
path: root/saga/events.cpp
diff options
context:
space:
mode:
authorPaweł Kołodziejski2004-05-01 06:50:20 +0000
committerPaweł Kołodziejski2004-05-01 06:50:20 +0000
commit7792c3fd5ec79067262415685b3125d41cc37688 (patch)
tree3d189d1105bc90d3750f50a4cb9f45a8140598dc /saga/events.cpp
parente8cb50e17fc15270ee493f8c1b1623c20e47071e (diff)
downloadscummvm-rg350-7792c3fd5ec79067262415685b3125d41cc37688.tar.gz
scummvm-rg350-7792c3fd5ec79067262415685b3125d41cc37688.tar.bz2
scummvm-rg350-7792c3fd5ec79067262415685b3125d41cc37688.zip
indent
svn-id: r13691
Diffstat (limited to 'saga/events.cpp')
-rw-r--r--saga/events.cpp293
1 files changed, 67 insertions, 226 deletions
diff --git a/saga/events.cpp b/saga/events.cpp
index 3db350da08..5cc1b5e072 100644
--- a/saga/events.cpp
+++ b/saga/events.cpp
@@ -20,23 +20,15 @@
* $Header$
*
*/
-/*
- Description:
-
- Event management module
+// Event management module
- Notes:
-*/
#include "saga.h"
#include "reinherit.h"
#include "yslib.h"
-/*
- * Uses the following modules:
-\*--------------------------------------------------------------------------*/
#include "animation_mod.h"
#include "console_mod.h"
#include "scene_mod.h"
@@ -49,9 +41,6 @@
#include "sndres.h"
#include "music.h"
-/*
- * Begin module
-\*--------------------------------------------------------------------------*/
#include "events_mod.h"
#include "events.h"
@@ -59,31 +48,22 @@ namespace Saga {
static YS_DL_LIST *EventList;
-int EVENT_Init(void)
-{
+int EVENT_Init() {
R_printf(R_STDOUT, "Initializing event subsystem...\n");
-
EventList = ys_dll_create();
-
return (EventList != NULL) ? R_SUCCESS : R_FAILURE;
}
-int EVENT_Shutdown(void)
-{
+int EVENT_Shutdown() {
R_printf(R_STDOUT, "Shutting down event subsystem...\n");
-
EVENT_FreeList();
-
return R_SUCCESS;
}
-int EVENT_HandleEvents(long msec)
-/*--------------------------------------------------------------------------*\
- * Function to process event list once per frame.
- * First advances event times, then processes each event with the appropriate
- * handler depending on the type of event.
-\*--------------------------------------------------------------------------*/
-{
+// Function to process event list once per frame.
+// First advances event times, then processes each event with the appropriate
+// handler depending on the type of event.
+int EVENT_HandleEvents(long msec) {
YS_DL_NODE *walk_node;
YS_DL_NODE *next_node;
@@ -92,21 +72,17 @@ int EVENT_HandleEvents(long msec)
long delta_time;
int result;
- /* Advance event times
- * \*------------------------------------------------------------- */
+ // Advance event times
ProcessEventTime(msec);
- /* Process each event in list
- * \*------------------------------------------------------------- */
- for (walk_node = ys_dll_head(EventList);
- walk_node != NULL; walk_node = next_node) {
-
+ // 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);
- /* Save next event in case current event is handled and removed */
+ // Save next event in case current event is handled and removed
next_node = ys_dll_next(walk_node);
- /* Call the appropriate event handler for the specific event type */
+ // Call the appropriate event handler for the specific event type
switch (event_p->type) {
case R_ONESHOT_EVENT:
@@ -123,27 +99,23 @@ int EVENT_HandleEvents(long msec)
default:
result = R_EVENT_INVALIDCODE;
- R_printf(R_STDERR,
- "Invalid event code encountered.\n");
+ R_printf(R_STDERR, "Invalid event code encountered.\n");
break;
}
- /* Process the event appropriately based on result code from
- * handler */
- if ((result == R_EVENT_DELETE) ||
- (result == R_EVENT_INVALIDCODE)) {
-
- /* If there is no event chain, delete the base event. */
+ // Process the event appropriately based on result code from
+ // handler
+ if ((result == R_EVENT_DELETE) || (result == R_EVENT_INVALIDCODE)) {
+ // If there is no event chain, delete the base event.
if (event_p->chain == NULL) {
ys_dll_delete(walk_node);
} else {
- /* If there is an event chain present, move the next event
- * in the chain up, adjust it by the previous delta time,
- * and reprocess the event by adjusting next_node. */
+ // If there is an event chain present, move the next event
+ // in the chain up, adjust it by the previous delta time,
+ // and reprocess the event by adjusting next_node. */
delta_time = event_p->time;
- ys_dll_replace(walk_node, event_p->chain,
- sizeof *event_p);
+ ys_dll_replace(walk_node, event_p->chain, sizeof *event_p);
event_p = (R_EVENT *)ys_dll_get_data(walk_node);
event_p->time += delta_time;
@@ -151,19 +123,15 @@ int EVENT_HandleEvents(long msec)
next_node = walk_node;
}
} else if (result == R_EVENT_BREAK) {
-
break;
}
-
- } /* end for () */
+ }
return R_SUCCESS;
}
-int HandleContinuous(R_EVENT * event)
-{
-
- double event_pc = 0.0; /* Event completion percentage */
+int HandleContinuous(R_EVENT *event) {
+ double event_pc = 0.0; // Event completion percentage
int event_done = 0;
R_BUFFER_INFO buf_info;
@@ -173,93 +141,64 @@ int HandleContinuous(R_EVENT * event)
event_pc = ((double)event->duration - event->time) / event->duration;
if (event_pc >= 1.0) {
- /* Cap percentage to 100 */
+ // Cap percentage to 100
event_pc = 1.0;
event_done = 1;
}
if (event_pc < 0.0) {
- /* Event not signaled, skip it */
+ // Event not signaled, skip it
return R_EVENT_CONTINUE;
} else if (!(event->code & R_SIGNALED)) {
- /* Signal event */
+ // Signal event
event->code |= R_SIGNALED;
event_pc = 0.0;
}
switch (event->code & R_EVENT_MASK) {
-
case R_PAL_EVENT:
-
switch (event->op) {
-
case EVENT_BLACKTOPAL:
-
back_buf = SYSGFX_GetBackBuffer();
-
SYSGFX_BlackToPal(back_buf, (PALENTRY *)event->data, event_pc);
break;
case EVENT_PALTOBLACK:
-
back_buf = SYSGFX_GetBackBuffer();
-
SYSGFX_PalToBlack(back_buf, (PALENTRY *)event->data, event_pc);
break;
-
default:
break;
- } /* end switch() */
-
+ }
break;
-
case R_TRANSITION_EVENT:
-
switch (event->op) {
-
case EVENT_DISSOLVE:
-
RENDER_GetBufferInfo(&buf_info);
SCENE_GetBGInfo(&bg_info);
-
- TRANSITION_Dissolve(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_p, 0, event_pc);
-
+ TRANSITION_Dissolve(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_p, 0, event_pc);
break;
-
default:
break;
}
-
break;
-
case R_CONSOLE_EVENT:
-
switch (event->op) {
-
case EVENT_ACTIVATE:
-
CON_DropConsole(event_pc);
break;
-
case EVENT_DEACTIVATE:
-
CON_RaiseConsole(event_pc);
break;
-
default:
break;
}
-
break;
-
default:
break;
- } /* end switch( event->event_code ) */
+ }
if (event_done) {
return R_EVENT_DELETE;
@@ -268,9 +207,7 @@ int HandleContinuous(R_EVENT * event)
return R_EVENT_CONTINUE;
}
-static int HandleOneShot(R_EVENT * event)
-{
-
+static int HandleOneShot(R_EVENT *event) {
R_SURFACE *back_buf;
static SCENE_BGINFO bginfo;
@@ -279,46 +216,32 @@ static int HandleOneShot(R_EVENT * event)
return R_EVENT_CONTINUE;
}
- /* Event has been signaled */
+ // Event has been signaled
switch (event->code & R_EVENT_MASK) {
-
case R_TEXT_EVENT:
-
switch (event->op) {
-
case EVENT_DISPLAY:
-
TEXT_SetDisplay((R_TEXTLIST_ENTRY *)event->data, 1);
break;
-
case EVENT_REMOVE:
{
R_SCENE_INFO scene_info;
-
SCENE_GetInfo(&scene_info);
-
- TEXT_DeleteEntry(scene_info.text_list,
- (R_TEXTLIST_ENTRY *)event->data);
+ TEXT_DeleteEntry(scene_info.text_list, (R_TEXTLIST_ENTRY *)event->data);
}
break;
-
default:
break;
}
break;
-
case R_VOICE_EVENT:
-
_vm->_sndRes->playVoice(event->param);
break;
-
case R_MUSIC_EVENT:
-
_vm->_music->play(event->param, event->param2);
break;
-
case R_BG_EVENT:
{
R_BUFFER_INFO rbuf_info;
@@ -334,115 +257,75 @@ static int HandleOneShot(R_EVENT * event)
bg_pt.x = bginfo.bg_x;
bg_pt.y = bginfo.bg_y;
- GFX_BufToBuffer(rbuf_info.r_bg_buf,
- rbuf_info.r_bg_buf_w,
- rbuf_info.r_bg_buf_h,
- bginfo.bg_buf,
- bginfo.bg_w, bginfo.bg_h, NULL, &bg_pt);
-
+ GFX_BufToBuffer(rbuf_info.r_bg_buf, rbuf_info.r_bg_buf_w, rbuf_info.r_bg_buf_h,
+ bginfo.bg_buf, bginfo.bg_w, bginfo.bg_h, NULL, &bg_pt);
if (event->param == SET_PALETTE) {
-
PALENTRY *pal_p;
-
SCENE_GetBGPal(&pal_p);
SYSGFX_SetPalette(back_buf, pal_p);
}
}
}
break;
-
case R_ANIM_EVENT:
-
switch (event->op) {
-
case EVENT_FRAME:
-
ANIM_Play(event->param, event->time);
break;
-
default:
break;
}
-
break;
-
case R_SCENE_EVENT:
-
switch (event->op) {
-
case EVENT_END:
-
SCENE_Next();
-
return R_EVENT_BREAK;
break;
-
default:
break;
}
-
break;
-
case R_PALANIM_EVENT:
-
switch (event->op) {
-
case EVENT_CYCLESTART:
-
PALANIM_CycleStart();
break;
-
case EVENT_CYCLESTEP:
-
PALANIM_CycleStep(event->time);
break;
-
default:
break;
}
break;
-
case R_INTERFACE_EVENT:
-
switch (event->op) {
-
case EVENT_ACTIVATE:
-
INTERFACE_Activate();
break;
-
default:
break;
}
-
break;
-
default:
break;
-
- } /* end switch( event->code ) */
+ }
return R_EVENT_DELETE;
}
-static int HandleInterval(R_EVENT * event)
-{
+static int HandleInterval(R_EVENT *event) {
YS_IGNORE_PARAM(event);
-
return R_EVENT_DELETE;
}
-R_EVENT *EVENT_Queue(R_EVENT * event)
-/*--------------------------------------------------------------------------*\
- * Schedules an event in the event list; returns a pointer to the scheduled
- * event suitable for chaining if desired.
-\*--------------------------------------------------------------------------*/
-{
+// Schedules an event in the event list; returns a pointer to the scheduled
+// event suitable for chaining if desired.
+R_EVENT *EVENT_Queue(R_EVENT *event) {
YS_DL_NODE *new_node;
R_EVENT *queued_event;
event->chain = NULL;
-
new_node = ys_dll_add_tail(EventList, event, sizeof *event);
if (new_node == NULL) {
@@ -456,55 +339,43 @@ R_EVENT *EVENT_Queue(R_EVENT * event)
return queued_event;
}
-R_EVENT *EVENT_Chain(R_EVENT * head_event, R_EVENT * add_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)
-\*--------------------------------------------------------------------------*/
-{
+// 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 *EVENT_Chain(R_EVENT *head_event, R_EVENT *add_event) {
R_EVENT *walk_event;
R_EVENT *new_event;
- /* Allocate space for new event */
+ // Allocate space for new event
new_event = (R_EVENT *)malloc(sizeof *new_event);
if (new_event == NULL) {
return NULL;
}
- /* Copy event data to new event */
+ // Copy event data to new event
*new_event = *add_event;
- /* Walk to end of chain */
- for (walk_event = head_event;
- walk_event->chain != NULL; walk_event = walk_event->chain) {
-
+ // Walk to end of chain
+ for (walk_event = head_event; walk_event->chain != NULL; walk_event = walk_event->chain) {
continue;
}
- /* Place new event */
+ // Place new event
walk_event->chain = new_event;
new_event->chain = NULL;
-
InitializeEvent(new_event);
return new_event;
}
-static int InitializeEvent(R_EVENT * event)
-{
-
+static int InitializeEvent(R_EVENT *event) {
switch (event->type) {
-
case R_ONESHOT_EVENT:
break;
-
case R_CONTINUOUS_EVENT:
event->time += event->duration;
break;
-
case R_INTERVAL_EVENT:
break;
-
default:
return R_FAILURE;
break;
@@ -513,37 +384,25 @@ static int InitializeEvent(R_EVENT * event)
return R_SUCCESS;
}
-int EVENT_ClearList(void)
-/*--------------------------------------------------------------------------*\
- * Removes all events from the list except NODESTROY (engine) events
-\*--------------------------------------------------------------------------*/
-{
+int EVENT_ClearList() {
YS_DL_NODE *walk_node;
YS_DL_NODE *next_node;
-
R_EVENT *chain_walk;
R_EVENT *next_chain;
-
R_EVENT *event_p;
- /* Walk down event list */
- for (walk_node = ys_dll_head(EventList);
- walk_node != NULL; walk_node = next_node) {
-
+ // 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);
- /* Only remove events not marked R_NODESTROY (engine events) */
+ // Only remove events not marked R_NODESTROY (engine events)
if (!(event_p->code & R_NODESTROY)) {
-
- /* Remove any events chained off this one */
- for (chain_walk = event_p->chain;
- chain_walk != NULL; chain_walk = next_chain) {
-
+ // 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;
free(chain_walk);
}
-
ys_dll_delete(walk_node);
}
}
@@ -551,34 +410,24 @@ int EVENT_ClearList(void)
return R_SUCCESS;
}
-int EVENT_FreeList(void)
-/*--------------------------------------------------------------------------*\
- * Removes all events from the list (even R_NODESTROY)
-\*--------------------------------------------------------------------------*/
-{
+// Removes all events from the list (even R_NODESTROY)
+int EVENT_FreeList() {
YS_DL_NODE *walk_node;
YS_DL_NODE *next_node;
-
R_EVENT *chain_walk;
R_EVENT *next_chain;
-
R_EVENT *event_p;
- /* Walk down event list */
- for (walk_node = ys_dll_head(EventList);
- walk_node != NULL; walk_node = next_node) {
-
+ // 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);
-
- /* Remove any events chained off current node */
- for (chain_walk = event_p->chain;
- chain_walk != NULL; chain_walk = next_chain) {
-
+ // 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;
free(chain_walk);
}
- /* Delete current node */
+ // Delete current node
next_node = ys_dll_next(walk_node);
ys_dll_delete(walk_node);
}
@@ -586,27 +435,19 @@ int EVENT_FreeList(void)
return R_SUCCESS;
}
-static int ProcessEventTime(long msec)
-/*--------------------------------------------------------------------------*\
- * Walks down the event list, updating event times by 'msec'.
-\*--------------------------------------------------------------------------*/
-{
+// Walks down the event list, updating event times by 'msec'.
+static int ProcessEventTime(long msec) {
YS_DL_NODE *walk_node;
R_EVENT *event_p;
-
uint16 event_count = 0;
- for (walk_node = ys_dll_head(EventList);
- walk_node != NULL; walk_node = ys_dll_next(walk_node)) {
-
+ 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->time -= msec;
-
event_count++;
if (event_count > R_EVENT_WARNINGCOUNT) {
- R_printf(R_STDERR,
- "WARNING: Event list exceeds %u.\n", R_EVENT_WARNINGCOUNT);
+ R_printf(R_STDERR, "WARNING: Event list exceeds %u.\n", R_EVENT_WARNINGCOUNT);
}
}