Codechange: Un-bitstuff all remaining commands.

This commit is contained in:
Michael Lutz
2021-11-23 01:05:58 +01:00
parent 58cff7b081
commit 13528bfcd0
40 changed files with 192 additions and 260 deletions

View File

@@ -28,22 +28,16 @@
#include "safeguards.h"
/* Make sure we can discard lower 2 bits of 64bit amount when passing it to Cmd[In|De]creaseLoan() */
static_assert((LOAN_INTERVAL & 3) == 0);
/**
* Increase the loan of your company.
* @param flags operation to perform
* @param tile unused
* @param p1 higher half of amount to increase the loan with, multitude of LOAN_INTERVAL. Only used when (p2 & 3) == 2.
* @param p2 (bit 2-31) - lower half of amount (lower 2 bits assumed to be 0)
* (bit 0-1) - when 0: loans LOAN_INTERVAL
* when 1: loans the maximum loan permitting money (press CTRL),
* when 2: loans the amount specified in p1 and p2
* @param text unused
* @param cmd when LoanCommand::Interval: loans LOAN_INTERVAL,
* when LoanCommand::Max: loans the maximum loan permitting money (press CTRL),
* when LoanCommand::Amount: loans the amount specified in \c amount
* @param amount amount to increase the loan with, multitude of LOAN_INTERVAL. Only used when cmd == LoanCommand::Amount.
* @return the cost of this operation or an error
*/
CommandCost CmdIncreaseLoan(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2, const std::string &text)
CommandCost CmdIncreaseLoan(DoCommandFlag flags, LoanCommand cmd, Money amount)
{
Company *c = Company::Get(_current_company);
@@ -53,16 +47,16 @@ CommandCost CmdIncreaseLoan(DoCommandFlag flags, TileIndex tile, uint32 p1, uint
}
Money loan;
switch (p2 & 3) {
switch (cmd) {
default: return CMD_ERROR; // Invalid method
case 0: // Take some extra loan
case LoanCommand::Interval: // Take some extra loan
loan = LOAN_INTERVAL;
break;
case 1: // Take a loan as big as possible
case LoanCommand::Max: // Take a loan as big as possible
loan = _economy.max_loan - c->current_loan;
break;
case 2: // Take the given amount of loan
loan = ((uint64)p1 << 32) | (p2 & 0xFFFFFFFC);
case LoanCommand::Amount: // Take the given amount of loan
loan = amount;
if (loan < LOAN_INTERVAL || c->current_loan + loan > _economy.max_loan || loan % LOAN_INTERVAL != 0) return CMD_ERROR;
break;
}
@@ -82,33 +76,30 @@ CommandCost CmdIncreaseLoan(DoCommandFlag flags, TileIndex tile, uint32 p1, uint
/**
* Decrease the loan of your company.
* @param flags operation to perform
* @param tile unused
* @param p1 higher half of amount to decrease the loan with, multitude of LOAN_INTERVAL. Only used when (p2 & 3) == 2.
* @param p2 (bit 2-31) - lower half of amount (lower 2 bits assumed to be 0)
* (bit 0-1) - when 0: pays back LOAN_INTERVAL
* when 1: pays back the maximum loan permitting money (press CTRL),
* when 2: pays back the amount specified in p1 and p2
* @param text unused
* @param cmd when LoanCommand::Interval: pays back LOAN_INTERVAL,
* when LoanCommand::Max: pays back the maximum loan permitting money (press CTRL),
* when LoanCommand::Amount: pays back the amount specified in \c amount
* @param amount amount to decrease the loan with, multitude of LOAN_INTERVAL. Only used when cmd == LoanCommand::Amount.
* @return the cost of this operation or an error
*/
CommandCost CmdDecreaseLoan(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2, const std::string &text)
CommandCost CmdDecreaseLoan(DoCommandFlag flags, LoanCommand cmd, Money amount)
{
Company *c = Company::Get(_current_company);
if (c->current_loan == 0) return_cmd_error(STR_ERROR_LOAN_ALREADY_REPAYED);
Money loan;
switch (p2 & 3) {
switch (cmd) {
default: return CMD_ERROR; // Invalid method
case 0: // Pay back one step
case LoanCommand::Interval: // Pay back one step
loan = std::min(c->current_loan, (Money)LOAN_INTERVAL);
break;
case 1: // Pay back as much as possible
case LoanCommand::Max: // Pay back as much as possible
loan = std::max(std::min(c->current_loan, c->money), (Money)LOAN_INTERVAL);
loan -= loan % LOAN_INTERVAL;
break;
case 2: // Repay the given amount of loan
loan = ((uint64)p1 << 32) | (p2 & 0xFFFFFFFC);
case LoanCommand::Amount: // Repay the given amount of loan
loan = amount;
if (loan % LOAN_INTERVAL != 0 || loan < LOAN_INTERVAL || loan > c->current_loan) return CMD_ERROR; // Invalid amount to loan
break;
}
@@ -135,7 +126,7 @@ CommandCost CmdDecreaseLoan(DoCommandFlag flags, TileIndex tile, uint32 p1, uint
static void AskUnsafeUnpauseCallback(Window *w, bool confirmed)
{
if (confirmed) {
Command<CMD_PAUSE>::Post(0, PM_PAUSED_ERROR, 0, {});
Command<CMD_PAUSE>::Post(PM_PAUSED_ERROR, false);
}
}
@@ -145,15 +136,13 @@ static void AskUnsafeUnpauseCallback(Window *w, bool confirmed)
* unpaused. A bitset is used instead of a boolean value/counter to have
* more control over the game when saving/loading, etc.
* @param flags operation to perform
* @param tile unused
* @param p1 the pause mode to change
* @param p2 1 pauses, 0 unpauses this mode
* @param text unused
* @param mode the pause mode to change
* @param pause true pauses, false unpauses this mode
* @return the cost of this operation or an error
*/
CommandCost CmdPause(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2, const std::string &text)
CommandCost CmdPause(DoCommandFlag flags, PauseMode mode, bool pause)
{
switch (p1) {
switch (mode) {
case PM_PAUSED_SAVELOAD:
case PM_PAUSED_ERROR:
case PM_PAUSED_NORMAL:
@@ -169,7 +158,7 @@ CommandCost CmdPause(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2,
default: return CMD_ERROR;
}
if (flags & DC_EXEC) {
if (p1 == PM_PAUSED_NORMAL && _pause_mode & PM_PAUSED_ERROR) {
if (mode == PM_PAUSED_NORMAL && _pause_mode & PM_PAUSED_ERROR) {
ShowQuery(
STR_NEWGRF_UNPAUSE_WARNING_TITLE,
STR_NEWGRF_UNPAUSE_WARNING,
@@ -179,13 +168,13 @@ CommandCost CmdPause(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2,
} else {
PauseMode prev_mode = _pause_mode;
if (p2 == 0) {
_pause_mode = static_cast<PauseMode>(_pause_mode & (byte)~p1);
if (pause) {
_pause_mode |= mode;
} else {
_pause_mode = static_cast<PauseMode>(_pause_mode | (byte)p1);
_pause_mode &= ~mode;
}
NetworkHandlePauseChange(prev_mode, (PauseMode)p1);
NetworkHandlePauseChange(prev_mode, mode);
}
SetWindowDirty(WC_STATUS_BAR, 0);
@@ -197,33 +186,25 @@ CommandCost CmdPause(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2,
/**
* Change the financial flow of your company.
* @param flags operation to perform
* @param tile unused
* @param p1 the amount of money to receive (if positive), or spend (if negative)
* @param p2 unused
* @param text unused
* @param amount the amount of money to receive (if positive), or spend (if negative)
* @return the cost of this operation or an error
*/
CommandCost CmdMoneyCheat(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2, const std::string &text)
CommandCost CmdMoneyCheat(DoCommandFlag flags, Money amount)
{
return CommandCost(EXPENSES_OTHER, -(int32)p1);
return CommandCost(EXPENSES_OTHER, -amount);
}
/**
* Change the bank bank balance of a company by inserting or removing money without affecting the loan.
* @param flags operation to perform
* @param tile tile to show text effect on (if not 0)
* @param p1 the amount of money to receive (if positive), or spend (if negative)
* @param p2 (bit 0-7) - the company ID.
* (bit 8-15) - the expenses type which should register the cost/income @see ExpensesType.
* @param text unused
* @param delta the amount of money to receive (if positive), or spend (if negative)
* @param company the company ID.
* @param expenses_type the expenses type which should register the cost/income @see ExpensesType.
* @return zero cost or an error
*/
CommandCost CmdChangeBankBalance(DoCommandFlag flags, TileIndex tile, uint32 p1, uint32 p2, const std::string &text)
CommandCost CmdChangeBankBalance(DoCommandFlag flags, TileIndex tile, Money delta, CompanyID company, ExpensesType expenses_type)
{
int32 delta = (int32)p1;
CompanyID company = (CompanyID) GB(p2, 0, 8);
ExpensesType expenses_type = Extract<ExpensesType, 8, 8>(p2);
if (!Company::IsValidID(company)) return CMD_ERROR;
if (expenses_type >= EXPENSES_END) return CMD_ERROR;
if (_current_company != OWNER_DEITY) return CMD_ERROR;