56 lines
1 KiB
C
56 lines
1 KiB
C
|
#include "global.h"
|
||
|
#include "money.h"
|
||
|
|
||
|
#define MAX_MONEY 999999
|
||
|
|
||
|
u32 GetMoney(u32* moneyPtr)
|
||
|
{
|
||
|
return *moneyPtr ^ gSaveBlock2Ptr->encryptionKey;
|
||
|
}
|
||
|
|
||
|
void SetMoney(u32* moneyPtr, u32 newValue)
|
||
|
{
|
||
|
*moneyPtr = gSaveBlock2Ptr->encryptionKey ^ newValue;
|
||
|
}
|
||
|
|
||
|
bool8 IsEnoughMoney(u32* moneyPtr, u32 cost)
|
||
|
{
|
||
|
if (GetMoney(moneyPtr) >= cost)
|
||
|
return TRUE;
|
||
|
else
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
void AddMoney(u32* moneyPtr, u32 toAdd)
|
||
|
{
|
||
|
u32 toSet = GetMoney(moneyPtr);
|
||
|
|
||
|
// can't have more money than MAX
|
||
|
if (toSet + toAdd > MAX_MONEY)
|
||
|
{
|
||
|
toSet = MAX_MONEY;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
toSet += toAdd;
|
||
|
// check overflow, can't have less money after you receive more
|
||
|
if (toSet < GetMoney(moneyPtr))
|
||
|
toSet = MAX_MONEY;
|
||
|
}
|
||
|
|
||
|
SetMoney(moneyPtr, toSet);
|
||
|
}
|
||
|
|
||
|
void SubtractMoney(u32* moneyPtr, u32 toSub)
|
||
|
{
|
||
|
u32 toSet = GetMoney(moneyPtr);
|
||
|
|
||
|
// can't subtract more than you already have
|
||
|
if (toSet < toSub)
|
||
|
toSet = 0;
|
||
|
else
|
||
|
toSet -= toSub;
|
||
|
|
||
|
SetMoney(moneyPtr, toSet);
|
||
|
}
|