From 9ff12c476604f923f00f8b621eb5d7d6f6f0d16f Mon Sep 17 00:00:00 2001 From: stevenhowes <38082088+stevenhowes@users.noreply.github.com> Date: Sat, 29 May 2021 20:48:17 +0100 Subject: [PATCH] WIP new event system --- !TheEsc/!RunImage,ff8 | Bin 24056 -> 24668 bytes !TheEsc/c/Mission2 | 116 ++++++++++++++++++++++++++++++++++++++++-- !TheEsc/m2_map,ffd | Bin 10000 -> 10000 bytes !TheEsc/m2_smart,ffd | Bin 2400 -> 2400 bytes 4 files changed, 112 insertions(+), 4 deletions(-) diff --git a/!TheEsc/!RunImage,ff8 b/!TheEsc/!RunImage,ff8 index ec9d1b97e3964e33040e6126fff5a7b954338182..fc4959227aa0744e65536d638ece8efbffd67eff 100644 GIT binary patch delta 4754 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 UTn1bN+}uTmxg}l8syq1q17cYlRR910 delta 4087 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 C?k9f$ diff --git a/!TheEsc/c/Mission2 b/!TheEsc/c/Mission2 index befbeb6..61f04de 100644 --- a/!TheEsc/c/Mission2 +++ b/!TheEsc/c/Mission2 @@ -15,6 +15,9 @@ extern _kernel_swi_regs outreg; #define SMARTTILES 200 #define AREAS 20 +#define MAXEVENTS 200 +#define MAXEVENTACTIONS 1000 + // map[0] is the 'master', [1] and [2] represents what is currently // believed to be displayed in the corresponding (+1) screen buffer // and we run a compare to see if re-drawing is needed. 0xFF is used @@ -67,14 +70,67 @@ struct TilePlayer_s { struct TilePlayer_s TilePlayer; +/* VVV deprecated VVV */ struct SmartTile_s { int Tile; int ActionTarget; unsigned char Action; unsigned char ActionValue; }; - struct SmartTile_s SmartTiles[SMARTTILES]; +/* ^^^ deprecated ^^^ */ + + +struct EventAction_s { + int Event; + unsigned char Action; //0=change tile / 1=change area / sound + unsigned char ActionValue; //tile sprite no. / area ID / sound ID + int ActionTarget; //tile ID / n/a / channel ID +}; +struct EventAction_s EventActions[MAXEVENTACTIONS]; + +struct Event_s { + unsigned char Name[16]; + unsigned char Triggered; + int RearmDelay; + int NextRearm; +}; +struct Event_s Events[MAXEVENTS]; + +void game2_loadevents() +{ + int i; + for(i = 0; i 0) + { + if(tick > Events[id].NextRearm) + { + Events[id].Triggered = 0; + Events[id].NextRearm = -1; + } + } + + // Don't trigger if we've been fired and not reset + if(Events[id].Triggered == 1) + { + printf("Not triggering event %d - %s\n",id,Events[id].Name); + return; + } + + // Record firing + Events[id].Triggered = 1; + printf("Triggering event %d - %s\n",id,Events[id].Name); + + // Schedule re-arm if required + if(Events[id].RearmDelay >= 0) + Events[id].NextRearm = tick + Events[id].RearmDelay; + + // Go through our actions + for(i = 0; iH^Fa0HY3BvoF!@iA8iDn delta 12 TcmbQ>H^Fa0HY3Z%oF!@iAAtm< diff --git a/!TheEsc/m2_smart,ffd b/!TheEsc/m2_smart,ffd index 5bda14cb7de53a0c5e63a5470fd2197e85a798f1..0523da0fd89a52e224d8f7d2a1690781961f062a 100644 GIT binary patch delta 25 fcmaDL^gxI!n}LDhKM*i6Y&K-kXWi_;qRs*Ue|!j* literal 2400 zcmeH_$xQ=M5JcNH2peKRW;uEUDIjFW0D>di1(5^@0$~e+?TCS(K3#u!avcd^MwhTDPvP~56XQ?g$>6U~dK%*$<6Yw)tGzHjH$Gg7c*{E`5eLRE z#^dFM=i2zj_{jXn#vjJp=D#z(HCCR@{2fi32UZ?fd0^#%l?PTHSb1ROft3eV9$0zc z*Ywx@Od~c@hjqg8!tbVUnXW#y=dA4ms}9x)s}HO`@I3#!l2@-+ioT=D{Zh_yW$5Zz zIiIS7l>v|51%4bZJfqQqhwz}32RzC9$*PG-DNpdUW!1;5l+`?|C-o~h{o?9rO1U&$ zjIO!VYA(D7XCGC(>c(^F?<1~IiOWJq0%zGk`@ Y{n`46(c4Mgv)e$ofo=oc2L7{wU-&Bww*UYD