diff options
Diffstat (limited to 'src/players.cpp')
-rw-r--r-- | src/players.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/players.cpp b/src/players.cpp index fc90dc2fb..f4cd472f8 100644 --- a/src/players.cpp +++ b/src/players.cpp @@ -208,6 +208,24 @@ bool CheckPlayerHasMoney(CommandCost cost) return true; } +/** Backs up current economic data for a player + */ +PlayerMoneyBackup::PlayerMoneyBackup(Player *player) +{ + p = player; + memcpy(backup_yearly_expenses, p->yearly_expenses, EXPENSES_END * sizeof(Money)); + backup_cur_economy = p->cur_economy; +} + +/** Restore the economic data from last backup + * This should only be used right after Player::BackupEconomy() + */ +void PlayerMoneyBackup::Restore() +{ + memcpy(p->yearly_expenses, backup_yearly_expenses, EXPENSES_END * sizeof(Money)); + p->cur_economy = backup_cur_economy; +} + static void SubtractMoneyFromAnyPlayer(Player *p, CommandCost cost) { if (cost.GetCost() == 0) return; |