Use inlines for coin gain and collect amounts

This commit is contained in:
gamemasterplc 2024-04-02 13:31:26 -05:00
parent 1ff18808ea
commit a75efa7882
5 changed files with 32 additions and 12 deletions

View file

@ -2,6 +2,7 @@
#define _GAMEWORK_DATA_H
#include "dolphin.h"
#include "game/flag.h"
typedef struct player_config {
s16 character;
@ -97,8 +98,8 @@ typedef struct player_state {
/* 0x20 */ s16 coins_total;
/* 0x22 */ s16 coins_max;
/* 0x24 */ s16 coins_battle;
/* 0x26 */ s16 unk_26;
/* 0x28 */ s16 coin_gain;
/* 0x26 */ s16 coin_collect;
/* 0x28 */ s16 coin_win;
/* 0x2A */ s16 stars;
/* 0x2C */ s16 stars_max;
/* 0x2E */ char unk_2E[2];
@ -233,4 +234,27 @@ static inline void GWLuckyValueSet(s32 value)
GWSystem.lucky_value = value;
}
static inline s16 GWPlayerCoinCollectGet(s32 player)
{
return GWPlayer[player].coin_collect;
}
static inline void GWPlayerCoinCollectSet(s32 player, s16 value)
{
GWPlayer[player].coin_collect = value;
}
static inline s16 GWPlayerCoinWinGet(s32 player)
{
return GWPlayer[player].coin_win;
}
static inline void GWPlayerCoinWinSet(s32 player, s16 value)
{
if (_CheckFlag(0x1000C) == 0) {
GWPlayer[player].coin_win = value;
}
}
#endif

View file

@ -467,8 +467,7 @@ static void DoMGReturnEffect(void)
s32 mess;
s32 mess_char;
for(player=0; player<4; player++) {
s16 gain = GWPlayer[player].coin_gain;
if(gain == 1) {
if(GWPlayerCoinWinGet(player) == 1) {
break;
}
}

View file

@ -322,8 +322,8 @@ void BoardSaveInit(s32 board)
GWPlayer[i].coins_max = 0;
GWPlayer[i].stars_max = 0;
GWPlayer[i].coins_battle = 0;
GWPlayer[i].unk_26 = 0;
GWPlayer[i].coin_gain = 0;
GWPlayer[i].coin_collect = 0;
GWPlayer[i].coin_win = 0;
GWPlayer[i].items[0] = -1;
GWPlayer[i].items[1] = -1;
GWPlayer[i].items[2] = -1;

View file

@ -15,7 +15,7 @@ static u8 *GetFlagPtr(u32 flag)
return ret;
}
u32 _CheckFlag(u32 flag)
s32 _CheckFlag(u32 flag)
{
u8 *flag_ptr = GetFlagPtr(flag);
u16 index = flag;

View file

@ -1199,11 +1199,8 @@ void omGameSysInit(Process *objman) {
omSysPauseEnable(0);
for (i = 0; i < 4; i++) {
if (_CheckFlag(0x1000C) == 0) {
GWPlayer[i].coin_gain = 0;
}
GWPlayer[i].unk_26 = 0;
GWPlayerCoinWinSet(i, 0);
GWPlayerCoinCollectSet(i, 0);
}
if (mgPracticeEnableF != 0) {