mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r19400) -Codechange: CheckforTownRating returns a CommandCost.
This commit is contained in:
parent
7134201524
commit
6b6ff9c52b
|
@ -140,7 +140,9 @@ bool CheckAllowRemoveRoad(TileIndex tile, RoadBits remove, Owner owner, RoadType
|
||||||
|
|
||||||
/* check if you're allowed to remove the street owned by a town
|
/* check if you're allowed to remove the street owned by a town
|
||||||
* removal allowance depends on difficulty setting */
|
* removal allowance depends on difficulty setting */
|
||||||
if (!CheckforTownRating(flags, t, ROAD_REMOVE)) return false;
|
CommandCost ret = CheckforTownRating(flags, t, ROAD_REMOVE);
|
||||||
|
ret.SetGlobalErrorMessage();
|
||||||
|
if (ret.Failed()) return false;
|
||||||
|
|
||||||
/* Get a bitmask of which neighbouring roads has a tile */
|
/* Get a bitmask of which neighbouring roads has a tile */
|
||||||
RoadBits n = ROAD_NONE;
|
RoadBits n = ROAD_NONE;
|
||||||
|
|
|
@ -179,7 +179,7 @@ enum {
|
||||||
TOWN_HAS_STADIUM = 2 ///< There can be only one stadium by town.
|
TOWN_HAS_STADIUM = 2 ///< There can be only one stadium by town.
|
||||||
};
|
};
|
||||||
|
|
||||||
bool CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type);
|
CommandCost CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type);
|
||||||
|
|
||||||
|
|
||||||
TileIndexDiff GetHouseNorthPart(HouseID &house);
|
TileIndexDiff GetHouseNorthPart(HouseID &house);
|
||||||
|
|
|
@ -2795,12 +2795,19 @@ void ChangeTownRating(Town *t, int add, int max, DoCommandFlag flags)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type)
|
/**
|
||||||
|
* Does the town authority allow the (destructive) action of the current company?
|
||||||
|
* @param flags Checking flags of the command.
|
||||||
|
* @param t Town that must allow the company action.
|
||||||
|
* @param type Type of action that is wanted.
|
||||||
|
* @return A succeeded command if the action is allowed, a failed command if it is not allowed.
|
||||||
|
*/
|
||||||
|
CommandCost CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type)
|
||||||
{
|
{
|
||||||
/* if magic_bulldozer cheat is active, town doesn't restrict your destructive actions */
|
/* if magic_bulldozer cheat is active, town doesn't restrict your destructive actions */
|
||||||
if (t == NULL || !Company::IsValidID(_current_company) ||
|
if (t == NULL || !Company::IsValidID(_current_company) ||
|
||||||
_cheats.magic_bulldozer.value || (flags & DC_NO_TEST_TOWN_RATING)) {
|
_cheats.magic_bulldozer.value || (flags & DC_NO_TEST_TOWN_RATING)) {
|
||||||
return true;
|
return CommandCost();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* minimum rating needed to be allowed to remove stuff */
|
/* minimum rating needed to be allowed to remove stuff */
|
||||||
|
@ -2819,11 +2826,10 @@ bool CheckforTownRating(DoCommandFlag flags, Town *t, TownRatingCheckType type)
|
||||||
|
|
||||||
if (GetRating(t) < needed) {
|
if (GetRating(t) < needed) {
|
||||||
SetDParam(0, t->index);
|
SetDParam(0, t->index);
|
||||||
_error_message = STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS;
|
return_cmd_error(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return CommandCost();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TownsMonthlyLoop()
|
void TownsMonthlyLoop()
|
||||||
|
|
|
@ -638,10 +638,9 @@ static CommandCost DoClearTunnel(TileIndex tile, DoCommandFlag flags)
|
||||||
|
|
||||||
/* Check if you are allowed to remove the tunnel owned by a town
|
/* Check if you are allowed to remove the tunnel owned by a town
|
||||||
* Removal depends on difficulty settings */
|
* Removal depends on difficulty settings */
|
||||||
if (!CheckforTownRating(flags, t, TUNNELBRIDGE_REMOVE)) {
|
CommandCost ret = CheckforTownRating(flags, t, TUNNELBRIDGE_REMOVE);
|
||||||
SetDParam(0, t->index);
|
ret.SetGlobalErrorMessage();
|
||||||
return_cmd_error(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS);
|
if (ret.Failed()) return ret;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* checks if the owner is town then decrease town rating by RATING_TUNNEL_BRIDGE_DOWN_STEP until
|
/* checks if the owner is town then decrease town rating by RATING_TUNNEL_BRIDGE_DOWN_STEP until
|
||||||
|
@ -706,10 +705,9 @@ static CommandCost DoClearBridge(TileIndex tile, DoCommandFlag flags)
|
||||||
|
|
||||||
/* Check if you are allowed to remove the bridge owned by a town
|
/* Check if you are allowed to remove the bridge owned by a town
|
||||||
* Removal depends on difficulty settings */
|
* Removal depends on difficulty settings */
|
||||||
if (!CheckforTownRating(flags, t, TUNNELBRIDGE_REMOVE)) {
|
CommandCost ret = CheckforTownRating(flags, t, TUNNELBRIDGE_REMOVE);
|
||||||
SetDParam(0, t->index);
|
ret.SetGlobalErrorMessage();
|
||||||
return_cmd_error(STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS);
|
if (ret.Failed()) return ret;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* checks if the owner is town then decrease town rating by RATING_TUNNEL_BRIDGE_DOWN_STEP until
|
/* checks if the owner is town then decrease town rating by RATING_TUNNEL_BRIDGE_DOWN_STEP until
|
||||||
|
|
Loading…
Reference in New Issue