`z64game_over.h` (#1183)

* z64game_over.h

* format

* Update include/z64game_over.h

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

---------

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
Anghelo Carvajal 2023-03-24 15:29:54 -03:00 committed by GitHub
parent 147e4fcedc
commit 045c3537a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 48 additions and 26 deletions

View File

@ -2989,9 +2989,6 @@ u8 func_801A982C(void);
// void func_801A99B8(void);
// void func_801A9A74(void);
void GameOver_Init(PlayState* play);
void GameOver_FadeLights(PlayState* play);
void GameOver_Update(PlayState* play);
void Regs_InitData(PlayState* play);
#endif

View File

@ -39,6 +39,7 @@
#include "z64eff_footmark.h"
#include "z64effect.h"
#include "z64frameadvance.h"
#include "z64game_over.h"
#include "z64interface.h"
#include "z64item.h"
#include "z64light.h"
@ -615,22 +616,6 @@ typedef struct {
/* 0x1 */ u8 ambienceId;
} SequenceContext; // size = 0x2
typedef enum {
/* 0 */ GAMEOVER_INACTIVE,
/* 1 */ GAMEOVER_DEATH_START,
/* 2 */ GAMEOVER_DEATH_WAIT_GROUND, // wait for player to fall and hit the ground
/* 3 */ GAMEOVER_DEATH_FADE_OUT, // wait before fading out
/* 20 */ GAMEOVER_REVIVE_START = 20,
/* 21 */ GAMEOVER_REVIVE_RUMBLE,
/* 22 */ GAMEOVER_REVIVE_WAIT_GROUND, // wait for player to fall and hit the ground
/* 23 */ GAMEOVER_REVIVE_WAIT_FAIRY, // wait for the fairy to rise all the way up out of player's body
/* 24 */ GAMEOVER_REVIVE_FADE_OUT // fade out the game over lights as player is revived and gets back up
} GameOverState;
typedef struct {
/* 0x0 */ u16 state;
} GameOverContext; // size = 0x2
typedef struct PlayState {
/* 0x00000 */ GameState state;
/* 0x000A4 */ s16 sceneId;

30
include/z64game_over.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef Z64GAME_OVER_H
#define Z64GAME_OVER_H
#include "ultra64.h"
struct PlayState;
typedef enum GameOverState {
/* 0 */ GAMEOVER_INACTIVE,
/* 1 */ GAMEOVER_DEATH_START,
/* 2 */ GAMEOVER_DEATH_WAIT_GROUND, // wait for player to fall and hit the ground
/* 3 */ GAMEOVER_DEATH_FADE_OUT, // wait before fading out
/* 20 */ GAMEOVER_REVIVE_START = 20,
/* 21 */ GAMEOVER_REVIVE_RUMBLE,
/* 22 */ GAMEOVER_REVIVE_WAIT_GROUND, // wait for player to fall and hit the ground
/* 23 */ GAMEOVER_REVIVE_WAIT_FAIRY, // wait for the fairy to rise all the way up out of player's body
/* 24 */ GAMEOVER_REVIVE_FADE_OUT // fade out the game over lights as player is revived and gets back up
} GameOverState;
typedef struct GameOverContext {
/* 0x0 */ u16 state;
} GameOverContext; // size = 0x2
void GameOver_Init(struct PlayState* play);
void GameOver_FadeLights(struct PlayState* play);
void GameOver_Update(struct PlayState* play);
#endif

View File

@ -18,6 +18,6 @@ s32 ShrinkWindow_Pillarbox_GetSize(void);
void ShrinkWindow_Init(void);
void ShrinkWindow_Destroy(void);
void ShrinkWindow_Update(s32 framerateDivisor);
void ShrinkWindow_Draw(GraphicsContext* gfxCtx);
void ShrinkWindow_Draw(struct GraphicsContext* gfxCtx);
#endif

View File

@ -1,6 +1,10 @@
#include "global.h"
#include "z64game_over.h"
#include "z64rumble.h"
#include "z64shrink_window.h"
#include "z64.h"
#include "functions.h"
#include "variables.h"
#include "macros.h"
void GameOver_Init(PlayState* play) {
play->gameOverCtx.state = GAMEOVER_INACTIVE;
@ -67,6 +71,7 @@ void GameOver_Update(PlayState* play) {
Rumble_Request(0.0f, 126, 124, 63);
gameOverCtx->state = GAMEOVER_DEATH_WAIT_GROUND;
break;
case GAMEOVER_DEATH_FADE_OUT:
if (Audio_GetActiveSequence(SEQ_PLAYER_FANFARE) != NA_BGM_GAME_OVER) {
func_80169F78(&play->state);
@ -83,31 +88,36 @@ void GameOver_Update(PlayState* play) {
Rumble_StateReset();
}
break;
case GAMEOVER_REVIVE_START:
gameOverCtx->state++;
gameOverCtx->state++; // GAMEOVER_REVIVE_RUMBLE
sGameOverTimer = 0;
Kankyo_InitGameOverLights(play);
ShrinkWindow_Letterbox_SetSizeTarget(32);
break;
case GAMEOVER_REVIVE_RUMBLE:
sGameOverTimer = 50;
gameOverCtx->state++;
gameOverCtx->state++; // GAMEOVER_REVIVE_WAIT_GROUND
Rumble_Request(0.0f, 126, 124, 63);
break;
case GAMEOVER_REVIVE_WAIT_GROUND:
sGameOverTimer--;
if (sGameOverTimer == 0) {
sGameOverTimer = 64;
gameOverCtx->state++;
gameOverCtx->state++; // GAMEOVER_REVIVE_WAIT_FAIRY
}
break;
case GAMEOVER_REVIVE_WAIT_FAIRY:
sGameOverTimer--;
if (sGameOverTimer == 0) {
sGameOverTimer = 50;
gameOverCtx->state++;
gameOverCtx->state++; // GAMEOVER_REVIVE_FADE_OUT
}
break;
case GAMEOVER_REVIVE_FADE_OUT:
Kankyo_FadeOutGameOverLights(play);
sGameOverTimer--;

View File

@ -962,7 +962,7 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->promptChoice = PAUSE_PROMPT_YES;
pauseCtx->state++;
if (gameOverCtx->state == GAMEOVER_INACTIVE) {
pauseCtx->state++;
pauseCtx->state++; // GAMEOVER_DEATH_START
}
break;