mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-22 10:15:22 -05:00
45 lines
1.4 KiB
C
45 lines
1.4 KiB
C
#ifndef POKEPLATINUM_FIELD_SCRIPT_CONTEXT_H
|
|
#define POKEPLATINUM_FIELD_SCRIPT_CONTEXT_H
|
|
|
|
#include "field/field_system_decl.h"
|
|
|
|
#include "field_task.h"
|
|
#include "message.h"
|
|
|
|
typedef struct ScriptContext ScriptContext;
|
|
|
|
typedef BOOL (*ShouldResumeScriptFunc)(ScriptContext *);
|
|
typedef BOOL (*ScrCmdFunc)(ScriptContext *);
|
|
|
|
struct ScriptContext {
|
|
u8 stackPointer;
|
|
u8 state;
|
|
u8 comparisonResult;
|
|
ShouldResumeScriptFunc shouldResume;
|
|
const u8 *scriptPtr;
|
|
const u8 *stack[20];
|
|
const ScrCmdFunc *cmdTable;
|
|
u32 cmdTableSize;
|
|
u32 data[4];
|
|
FieldTask *task;
|
|
MessageLoader *loader;
|
|
const u8 *scripts;
|
|
FieldSystem *fieldSystem;
|
|
};
|
|
|
|
#define ScriptContext_ReadByte(ctx) (*(ctx->scriptPtr++))
|
|
|
|
void ScriptContext_Init(ScriptContext *ctx, const ScrCmdFunc *cmdTable, u32 cmdTableSize);
|
|
BOOL ScriptContext_Start(ScriptContext *ctx, const u8 *ptr);
|
|
void ScriptContext_Pause(ScriptContext *ctx, ShouldResumeScriptFunc shouldResume);
|
|
void ScriptContext_Stop(ScriptContext *ctx);
|
|
void ScriptContext_SetTask(ScriptContext *ctx, FieldTask *taskManager);
|
|
BOOL ScriptContext_Run(ScriptContext *ctx);
|
|
void ScriptContext_Jump(ScriptContext *ctx, const u8 *ptr);
|
|
void ScriptContext_Call(ScriptContext *ctx, const u8 *ptr);
|
|
void ScriptContext_Return(ScriptContext *ctx);
|
|
u16 ScriptContext_ReadHalfWord(ScriptContext *ctx);
|
|
u32 ScriptContext_ReadWord(ScriptContext *ctx);
|
|
|
|
#endif // POKEPLATINUM_FIELD_SCRIPT_CONTEXT_H
|