marioparty4/include/game/minigame_seq.h
2024-08-10 12:10:56 -05:00

96 lines
3 KiB
C

#ifndef _GAME_MINIGAME_SEQ_H
#define _GAME_MINIGAME_SEQ_H
#include "game/object.h"
#include "stdarg.h"
#define MG_SEQ_TYPE_TIMER 1
#define MG_SEQ_TYPE_AUTO 3
#define MG_SEQ_TYPE_1VS3 4
#define MG_SEQ_TYPE_WIN 5
#define MG_SEQ_TYPE_BATTLE 6
#define MG_SEQ_TYPE_STORY 7
#define MG_SEQ_TYPE_4P 8
#define MG_SEQ_TYPE_2VS2 9
#define MG_SEQ_TYPE_PINBALL 10
#define MG_SEQ_TYPE_BOWSER 11
#define MG_SEQ_TYPE_ALTWIN 12
#define MG_SEQ_TYPE_DRAW 13
#define MG_SEQ_TYPE_RECORD 14
#define MG_SEQ_WIN_TYPE_WIN 3
#define MG_SEQ_WIN_TYPE_LOSE 4
#define MG_SEQ_WIN_TYPE_CHAMPION 5
#define MG_SEQ_WORD_START 0
#define MG_SEQ_WORD_FINISH 1
#define MG_SEQ_WORD_DRAW 2
#define MGSeqTimerCreate(value) MGSeqCreate(MG_SEQ_TYPE_TIMER, (value), -1, -1)
#define MGSeqTimerCreateXY(value, x, y) MGSeqCreate(MG_SEQ_TYPE_TIMER, (value), (int)(x), (int)(y))
#define MGSeqStartCreate() MGSeqCreate(MG_SEQ_TYPE_AUTO, MG_SEQ_WORD_START)
#define MGSeqFinishCreate() MGSeqCreate(MG_SEQ_TYPE_AUTO, MG_SEQ_WORD_FINISH)
#define MGSeqDrawCreate() MGSeqCreate(MG_SEQ_TYPE_AUTO, MG_SEQ_WORD_DRAW)
#define MGSeqStartCreateType(type) MGSeqCreate((type), MG_SEQ_WORD_START)
#define MGSeqFinishCreateType(type) MGSeqCreate((type), MG_SEQ_WORD_FINISH)
#define MGSeqDrawCreateType(type) MGSeqCreate((type), MG_SEQ_WORD_DRAW)
#define MGSeqWinCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_WIN, MG_SEQ_WIN_TYPE_WIN, (player_1), (player_2), (player_3), (player_4))
#define MGSeqLoseCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_WIN, MG_SEQ_WIN_TYPE_LOSE, (player_1), (player_2), (player_3), (player_4))
#define MGSeqChampionCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_ALTWIN, MG_SEQ_WIN_TYPE_CHAMPION, (player_1), (player_2), (player_3), (player_4))
#define MGSeqAltWinCreate(player_1, player_2, player_3, player_4) MGSeqCreate(MG_SEQ_TYPE_ALTWIN, MG_SEQ_WIN_TYPE_WIN, (player_1), (player_2), (player_3), (player_4))
#define MGSeqRecordCreate(value) MGSeqCreate(MG_SEQ_TYPE_RECORD, (value))
typedef struct seq_work SeqWork;
typedef s32 (*SeqUpdateFunc)(SeqWork *work);
typedef s32 (*SeqInitFunc)(SeqWork *work, va_list params);
typedef struct seq_work {
SeqUpdateFunc update;
char *data;
float x;
float y;
float scale_x;
float scale_y;
float unk_18;
float angle;
float win_scale;
float unk_24;
s16 time;
s16 time_max;
s16 timer_val;
s16 state;
s16 alt_word_len;
s16 word_len;
s16 param[2];
s16 type;
s16 spr_grp[16];
s16 sprite[16];
u8 seq_no;
u8 stat;
u8 unk_7C;
u8 unk_7D;
} SeqWork;
void MGSeqInit(void);
void MGSeqMain(void);
s16 MGSeqCreate(s16 type, ...);
u8 MGSeqStatGet(s16 id);
void MGSeqPosSet(s16 id, float x, float y);
void MGSeqParamSet(s16 id, s16 param1, s16 param2);
void MGSeqSprKill(SeqWork *work);
void MGSeqKill(s16 id);
void MGSeqKillAll(void);
s32 MGSeqDoneCheck(void);
void MGSeqStub(void);
void MGSeqPauseInit(void);
void MGSeqPauseEnableCtrl(s32 flag);
void MGSeqPracticeInit(void);
void MGSeqPracticeExitCheck(omObjData *object);
extern OverlayID mgSeqOvlPrev;
#endif