23 #ifndef M4_WSCRIPT_WS_MACHINE_H 24 #define M4_WSCRIPT_WS_MACHINE_H 26 #include "common/algorithm.h" 27 #include "m4/m4_types.h" 28 #include "m4/gui/gui.h" 32 #define DEAD_MACHINE_ID 0xdeaddead 83 typedef void (*MessageCB)(
frac16 myMessage,
struct machine *sender);
105 M4Rect *currLocation =
nullptr;
106 M4Rect *newLocation =
nullptr;
107 M4Rect *maxArea =
nullptr;
111 uint32 *streamSSHeader =
nullptr;
112 uint32 *streamSpriteSource =
nullptr;
113 void *myStream =
nullptr;
114 char *seriesName =
nullptr;
117 #define JSR_STACK_MAX 8 120 int32 eosReqOffset = 0;
121 int32 eosReqCount = 0;
122 Anim8 *next =
nullptr;
123 Anim8 *prev =
nullptr;
125 Anim8 *infront =
nullptr;
126 Anim8 *behind =
nullptr;
127 Anim8 *myParent =
nullptr;
129 MemHandle sequHandle =
nullptr;
131 CCB *myCCB =
nullptr;
133 MemHandle dataHandle =
nullptr;
134 int32 dataOffset = 0;
136 int32 switchTime = 0;
143 int32 numLocalVars = 0;
146 int32 returnStackIndex = 0;
147 uint32 returnHashes[JSR_STACK_MAX] = { 0 };
148 int32 returnOffsets[JSR_STACK_MAX] = { 0 };
151 Common::fill(returnHashes, returnHashes + JSR_STACK_MAX, 0);
152 Common::fill(returnOffsets, returnOffsets + JSR_STACK_MAX, 0);
161 char *machName =
nullptr;
162 MemHandle machHandle =
nullptr;
163 int32 machInstrOffset = 0;
164 int32 stateTableOffset = 0;
166 int32 numOfStates = 0;
167 uint32 recurseLevel = 0;
168 Anim8 *myAnim8 =
nullptr;
169 Anim8 *parentAnim8 =
nullptr;
171 MemHandle dataHandle =
nullptr;
172 int32 dataOffset = 0;
173 int32 targetCount = 0;
174 struct machine *msgReplyXM =
nullptr;
192 int32 _pauseTime = 0;
194 bool _enginesPaused =
false;
196 int32 *_dataFormats =
nullptr;
197 uint32 _machineIDCount = 0;
198 machine *_firstMachine =
nullptr;
204 frac16 *_ws_globals =
nullptr;
205 void *_addrExists =
nullptr;
208 bool ws_Initialize(
frac16 *theGlobals);
211 void unpauseEngines();
213 void cycleEngines(
Buffer *cleanBackground, int16 *depth_table,
Buffer *screenCodes,
214 uint8 *myPalette, uint8 *ICT,
bool updateVideo);
215 void ws_RefreshWoodscriptBuffer(
Buffer *cleanBackground, int16 *depth_table,
216 Buffer *screenCodes, uint8 *myPalette, uint8 *ICT);
218 void terminateMachine(
machine *m);
219 void terminateMachinesByHash(uint32 machHash);
220 void terminateMachineAndNull(
machine *&m);
221 bool verifyMachineExists(
machine *m);
222 int32 ws_KillMachines();
223 void ws_KillDeadMachines();
224 void ws_StepWhile(
machine *m, int32 pcOffset, int32 pcCount);
226 machine *TriggerMachineByHash(int32 myHash,
Anim8 *parentAnim8, int32 dataHash, int32 dataRow, MessageCB CintrMsg,
bool debug,
const char *machName);
227 machine *TriggerMachineByHash(int32 val1, int32 val2, int32 val3, int32 val4, int32 val5, int32 val6,
228 int32 x, int32 y, int32 scale, int32 layer,
bool flag,
229 MessageCB intrMsg,
const char *machName);
230 machine *TriggerMachineByHash(MessageCB intrMsg,
const char *machName);
236 uint32 machHash,
machine *sendM, int32 msgCount);
238 int32 trigger, int32 series2, int32 val6, int32 val7, int32 val8);
240 #define kernel_spawn_machine(name,hash,callback) TriggerMachineByHash(hash, nullptr, -1, -1, callback, false, name) 241 #define kernel_terminate_machine(m) terminateMachine(m) Definition: ws_machine.h:156
Definition: ws_machine.h:86
Definition: ws_machine.h:118
Definition: ws_machine.h:74
intptr frac16
Definition: m4_types.h:45
void debug(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: m4_types.h:54
Definition: database.h:28
Definition: ws_machine.h:182
Definition: ws_machine.h:191
signed char * fill(signed char *first, signed char *last, Value val)
Definition: algorithm.h:168
Definition: ws_machine.h:95
Definition: ws_machine.h:102
void sendWSMessage(uint32 msgHash, frac16 msgValue, machine *recvM, uint32 machHash, machine *sendM, int32 msgCount)