summaryrefslogtreecommitdiff
path: root/src/players.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/players.cpp')
-rw-r--r--src/players.cpp18
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;