summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2008-01-03 23:54:23 +0000
committerglx <glx@openttd.org>2008-01-03 23:54:23 +0000
commit72afdb8d3440dc3570dd6d4c4b3127f1e7345642 (patch)
treebbec8af9e203adb15cc08783b1ea8a8a70114806
parent42bddcf723fdcabf6ea8d4069effc086710ef156 (diff)
downloadopenttd-72afdb8d3440dc3570dd6d4c4b3127f1e7345642.tar.xz
(svn r11750) -Revert (r11749): commited too much
-rw-r--r--src/command.cpp9
-rw-r--r--src/road_cmd.cpp11
-rw-r--r--src/town.h2
-rw-r--r--src/town_cmd.cpp29
-rw-r--r--src/tree_cmd.cpp14
-rw-r--r--src/tunnelbridge_cmd.cpp18
6 files changed, 28 insertions, 55 deletions
diff --git a/src/command.cpp b/src/command.cpp
index 5cdac4432..fcbeefa18 100644
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -17,7 +17,6 @@
#include "strings_func.h"
#include "gfx_func.h"
#include "functions.h"
-#include "town.h"
const char *_cmd_text = NULL;
@@ -389,7 +388,7 @@ byte GetCommandFlags(uint cmd)
return _command_proc_table[cmd & 0xFF].flags;
}
-static int _docommand_recursive = 0;
+static int _docommand_recursive;
/*!
* This function executes a given command with the parameters from the #CommandProc parameter list.
@@ -421,9 +420,7 @@ CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32
/* only execute the test call if it's toplevel, or we're not execing. */
if (_docommand_recursive == 1 || !(flags & DC_EXEC) || (flags & DC_FORCETEST) ) {
- SetTownRatingTestMode(true);
res = proc(tile, flags & ~DC_EXEC, p1, p2);
- SetTownRatingTestMode(false);
if (CmdFailed(res)) {
res.SetGlobalErrorMessage();
goto error;
@@ -557,7 +554,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
(cmd & 0xFF) == CMD_REMOVE_ROAD ||
(cmd & 0xFF) == CMD_REMOVE_LONG_ROAD ||
(cmd & 0xFF) == CMD_CLONE_VEHICLE;
- notest = false;
+
_docommand_recursive = 1;
/* cost estimation only? */
@@ -584,9 +581,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
if (!((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) {
/* first test if the command can be executed. */
- SetTownRatingTestMode(true);
res = proc(tile, flags, p1, p2);
- SetTownRatingTestMode(false);
if (CmdFailed(res)) {
res.SetGlobalErrorMessage();
goto show_error;
diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp
index 015f8c1be..90afac8de 100644
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
@@ -201,8 +201,9 @@ CommandCost CmdRemoveRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
c &= present;
if (c == ROAD_NONE) return CMD_ERROR;
- ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
if (flags & DC_EXEC) {
+ ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
+
present ^= c;
if (present == ROAD_NONE) {
RoadTypes rts = GetRoadTypes(tile) & ComplementRoadTypes(RoadTypeToRoadTypes(rt));
@@ -235,11 +236,11 @@ CommandCost CmdRemoveRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
* we can't draw the crossing without trambits ;) */
if (rt == ROADTYPE_ROAD && HasBit(GetRoadTypes(tile), ROADTYPE_TRAM) && ((flags & DC_EXEC) || !HasBit(p1, 6))) return CMD_ERROR;
- if (rt == ROADTYPE_ROAD) {
- ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
- }
-
if (flags & DC_EXEC) {
+ if (rt == ROADTYPE_ROAD) {
+ ChangeTownRating(t, -road_remove_cost[(byte)edge_road], RATING_ROAD_MINIMUM);
+ }
+
RoadTypes rts = GetRoadTypes(tile) & ComplementRoadTypes(RoadTypeToRoadTypes(rt));
if (rts == ROADTYPES_NONE) {
MakeRailNormal(tile, GetTileOwner(tile), GetCrossingRailBits(tile), GetRailType(tile));
diff --git a/src/town.h b/src/town.h
index 2e2dc8011..89e7dddbd 100644
--- a/src/town.h
+++ b/src/town.h
@@ -109,7 +109,6 @@ struct Town : PoolItem<Town, TownID, &_Town_pool> {
PlayerByte exclusivity; ///< which player has exslusivity
uint8 exclusive_counter; ///< months till the exclusivity expires
int16 ratings[MAX_PLAYERS];
- int16 test_rating;
/* Maximum amount of passengers and mail that can be transported. */
uint32 max_pass;
@@ -359,6 +358,5 @@ bool CheckIfAuthorityAllows(TileIndex tile);
Town *ClosestTownFromTile(TileIndex tile, uint threshold);
void ChangeTownRating(Town *t, int add, int max);
uint GetTownRadiusGroup(const Town* t, TileIndex tile);
-void SetTownRatingTestMode(bool mode);
#endif /* TOWN_H */
diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp
index 2f4b3de9d..9abf01875 100644
--- a/src/town_cmd.cpp
+++ b/src/town_cmd.cpp
@@ -522,8 +522,8 @@ static CommandCost ClearTile_Town(TileIndex tile, byte flags)
}
}
- ChangeTownRating(t, -rating, RATING_HOUSE_MINIMUM);
if (flags & DC_EXEC) {
+ ChangeTownRating(t, -rating, RATING_HOUSE_MINIMUM);
ClearTownHouse(t, tile);
}
@@ -2261,23 +2261,6 @@ Town *ClosestTownFromTile(TileIndex tile, uint threshold)
}
}
-static bool _town_rating_test = false;
-
-void SetTownRatingTestMode(bool mode)
-{
- static int ref_count = 0;
- if (mode) {
- if (ref_count == 0) {
- Town *t;
- FOR_ALL_TOWNS(t) t->test_rating = t->ratings[_current_player];
- }
- ref_count++;
- } else {
- assert(ref_count > 0);
- ref_count--;
- }
- _town_rating_test = !(ref_count == 0);
-}
void ChangeTownRating(Town *t, int add, int max)
{
@@ -2292,7 +2275,7 @@ void ChangeTownRating(Town *t, int add, int max)
SetBit(t->have_ratings, _current_player);
- rating = _town_rating_test ? t->test_rating : t->ratings[_current_player];
+ rating = t->ratings[_current_player];
if (add < 0) {
if (rating > max) {
@@ -2305,11 +2288,7 @@ void ChangeTownRating(Town *t, int add, int max)
if (rating > max) rating = max;
}
}
- if (_town_rating_test) {
- t->test_rating = rating;
- } else {
- t->ratings[_current_player] = rating;
- }
+ t->ratings[_current_player] = rating;
}
/* penalty for removing town-owned stuff */
@@ -2334,7 +2313,7 @@ bool CheckforTownRating(uint32 flags, Town *t, byte type)
*/
modemod = _default_rating_settings[_opt.diff.town_council_tolerance][type];
- if ((_town_rating_test ? t->test_rating : t->ratings[_current_player]) < 16 + modemod && !(flags & DC_NO_TOWN_RATING)) {
+ if (t->ratings[_current_player] < 16 + modemod && !(flags & DC_NO_TOWN_RATING)) {
SetDParam(0, t->index);
_error_message = STR_2009_LOCAL_AUTHORITY_REFUSES;
return false;
diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp
index 713100f71..5d00f96fc 100644
--- a/src/tree_cmd.cpp
+++ b/src/tree_cmd.cpp
@@ -330,16 +330,16 @@ CommandCost CmdPlantTree(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
default: break;
}
- if (_game_mode != GM_EDITOR && IsValidPlayer(_current_player)) {
- Town *t = ClosestTownFromTile(tile, _patches.dist_local_authority);
- if (t != NULL)
- ChangeTownRating(t, RATING_TREE_UP_STEP, RATING_TREE_MAXIMUM);
- }
-
if (flags & DC_EXEC) {
TreeType treetype;
uint growth;
+ if (_game_mode != GM_EDITOR && IsValidPlayer(_current_player)) {
+ Town *t = ClosestTownFromTile(tile, _patches.dist_local_authority);
+ if (t != NULL)
+ ChangeTownRating(t, RATING_TREE_UP_STEP, RATING_TREE_MAXIMUM);
+ }
+
treetype = (TreeType)p1;
if (treetype == TREE_INVALID) {
treetype = GetRandomTreeType(tile, GB(Random(), 24, 8));
@@ -488,7 +488,7 @@ static CommandCost ClearTile_Trees(TileIndex tile, byte flags)
{
uint num;
- if (IsValidPlayer(_current_player)) {
+ if ((flags & DC_EXEC) && IsValidPlayer(_current_player)) {
Town *t = ClosestTownFromTile(tile, _patches.dist_local_authority);
if (t != NULL)
ChangeTownRating(t, RATING_TREE_DOWN_STEP, RATING_TREE_MINIMUM);
diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp
index ec72c544f..d1512baef 100644
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
@@ -599,16 +599,16 @@ static CommandCost DoClearTunnel(TileIndex tile, uint32 flags)
}
}
- /* Adjust the town's player rating. Do this before removing the tile owner info. */
- if (IsTileOwner(tile, OWNER_TOWN) && _game_mode != GM_EDITOR)
- ChangeTownRating(t, RATING_TUNNEL_BRIDGE_DOWN_STEP, RATING_TUNNEL_BRIDGE_MINIMUM);
-
if (flags & DC_EXEC) {
/* We first need to request the direction before calling DoClearSquare
* else the direction is always 0.. dah!! ;) */
DiagDirection dir = GetTunnelBridgeDirection(tile);
Track track;
+ /* Adjust the town's player rating. Do this before removing the tile owner info. */
+ if (IsTileOwner(tile, OWNER_TOWN) && _game_mode != GM_EDITOR)
+ ChangeTownRating(t, RATING_TUNNEL_BRIDGE_DOWN_STEP, RATING_TUNNEL_BRIDGE_MINIMUM);
+
DoClearSquare(tile);
DoClearSquare(endtile);
UpdateSignalsOnSegment(tile, ReverseDiagDir(dir));
@@ -650,15 +650,15 @@ static CommandCost DoClearBridge(TileIndex tile, uint32 flags)
}
}
- /* checks if the owner is town then decrease town rating by RATING_TUNNEL_BRIDGE_DOWN_STEP until
- * you have a "Poor" (0) town rating */
- if (IsTileOwner(tile, OWNER_TOWN) && _game_mode != GM_EDITOR)
- ChangeTownRating(t, RATING_TUNNEL_BRIDGE_DOWN_STEP, RATING_TUNNEL_BRIDGE_MINIMUM);
-
if (flags & DC_EXEC) {
TileIndex c;
Track track;
+ /* checks if the owner is town then decrease town rating by RATING_TUNNEL_BRIDGE_DOWN_STEP until
+ * you have a "Poor" (0) town rating */
+ if (IsTileOwner(tile, OWNER_TOWN) && _game_mode != GM_EDITOR)
+ ChangeTownRating(t, RATING_TUNNEL_BRIDGE_DOWN_STEP, RATING_TUNNEL_BRIDGE_MINIMUM);
+
DoClearSquare(tile);
DoClearSquare(endtile);
for (c = tile + delta; c != endtile; c += delta) {