From 6a868ef42028165f0ab83ec3c1ce0e5916cddb13 Mon Sep 17 00:00:00 2001 From: skyjake Date: Mon, 8 Sep 2003 22:15:25 +0000 Subject: [PATCH] Added triggers --- doomsday/Include/m_misc.h | 8 ++++++++ doomsday/Src/m_misc.c | 24 ++++++++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/doomsday/Include/m_misc.h b/doomsday/Include/m_misc.h index b123bd00de..f21b27372a 100644 --- a/doomsday/Include/m_misc.h +++ b/doomsday/Include/m_misc.h @@ -27,6 +27,11 @@ #define MAX_READ 8192 #define ISSPACE(c) ((c) == 0 || (c) == ' ' || (c) == '\t' || (c) == '\n' || (c) == '\r') +typedef struct trigger_s { + timespan_t duration; + timespan_t accum; +} trigger_t; + extern int read_count; extern int rndindex; @@ -84,6 +89,9 @@ void M_RotateVector(float vec[3], float degYaw, float degPitch); void M_ProjectPointOnLinef(fixed_t *point, fixed_t *linepoint, fixed_t *delta, float gap, float *result); float M_CycleIntoRange(float value, float length); +// Time utilities. +boolean M_CheckTrigger(trigger_t *trigger, timespan_t advanceTime); + // Other utilities. int M_ScreenShot(char *filename, int bits); diff --git a/doomsday/Src/m_misc.c b/doomsday/Src/m_misc.c index 7fbb59df9c..309f0e5789 100644 --- a/doomsday/Src/m_misc.c +++ b/doomsday/Src/m_misc.c @@ -922,10 +922,9 @@ void M_ReplaceFileExt(char *path, char *newext) } } -//=========================================================================== -// M_Pretty -// Return a prettier copy of the original path. -//=========================================================================== +/* + * Return a prettier copy of the original path. + */ const char *M_Pretty(const char *path) { #define MAX_BUFS 8 @@ -943,3 +942,20 @@ const char *M_Pretty(const char *path) // We don't know how to make this prettier. return path; } + +/* + * Advances time and return true if the trigger is triggered. + */ +boolean M_CheckTrigger(trigger_t *trigger, timespan_t advanceTime) +{ + trigger->accum += advanceTime; + + if(trigger->accum >= trigger->duration) + { + trigger->accum -= trigger->duration; + return true; + } + + // It wasn't triggered. + return false; +}