changeset 3965:6fc5fe6c5d36 draft

(svn r5128) Remove the global variable _cur_ai_player
author tron <tron@openttd.org>
date Mon, 05 Jun 2006 15:29:47 +0000
parents ae9d8c18a39c
children 90be09cda573
files ai/default/default.c
diffstat 1 files changed, 11 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/ai/default/default.c
+++ b/ai/default/default.c
@@ -28,7 +28,6 @@
 #include "default.h"
 
 // remove some day perhaps?
-static Player *_cur_ai_player;
 static uint _ai_service_interval;
 
 typedef void AiStateAction(Player *p);
@@ -1537,7 +1536,7 @@
 	return true;
 }
 
-static int32 AiDoBuildDefaultRailTrack(TileIndex tile, const AiDefaultBlockData *p, byte flag)
+static int32 AiDoBuildDefaultRailTrack(TileIndex tile, const AiDefaultBlockData* p, RailType railtype, byte flag)
 {
 	int32 ret;
 	int32 total_cost = 0;
@@ -1554,10 +1553,10 @@
 		if (p->mode < 2) {
 			if (p->mode == 0) {
 				// Depot
-				ret = DoCommand(c, _cur_ai_player->ai.railtype_to_use, p->attr, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_TRAIN_DEPOT);
+				ret = DoCommand(c, railtype, p->attr, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_TRAIN_DEPOT);
 			} else {
 				// Station
-				ret = DoCommand(c, (p->attr&1) | (p->attr>>4)<<8 | (p->attr>>1&7)<<16, _cur_ai_player->ai.railtype_to_use, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_RAILROAD_STATION);
+				ret = DoCommand(c, (p->attr&1) | (p->attr>>4)<<8 | (p->attr>>1&7)<<16, railtype, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_RAILROAD_STATION);
 			}
 
 			if (CmdFailed(ret)) return CMD_ERROR;
@@ -1581,7 +1580,7 @@
 			for (i = 0; i != 6; i++, j >>= 1) {
 				if (j&1) {
 					k = i;
-					ret = DoCommand(c, _cur_ai_player->ai.railtype_to_use, i, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
+					ret = DoCommand(c, railtype, i, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
 					if (CmdFailed(ret)) return CMD_ERROR;
 					total_cost += ret;
 				}
@@ -1613,7 +1612,7 @@
 			total_cost += ret + _price.build_rail;
 
 			if (flag & DC_EXEC) {
-				DoCommand(c, _cur_ai_player->ai.railtype_to_use, p->attr&1, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_SINGLE_RAIL);
+				DoCommand(c, railtype, p->attr&1, flag | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, CMD_BUILD_SINGLE_RAIL);
 			}
 
 			goto clear_town_stuff;
@@ -1635,7 +1634,7 @@
 }
 
 // Returns rule and cost
-static int AiBuildDefaultRailTrack(TileIndex tile, byte p0, byte p1, byte p2, byte p3, byte dir, byte cargo, int32 *cost)
+static int AiBuildDefaultRailTrack(TileIndex tile, byte p0, byte p1, byte p2, byte p3, byte dir, byte cargo, RailType railtype, int32* cost)
 {
 	int i;
 	const AiDefaultRailBlock *p;
@@ -1643,7 +1642,7 @@
 	for (i = 0; (p = _default_rail_track_data[i]) != NULL; i++) {
 		if (p->p0 == p0 && p->p1 == p1 && p->p2 == p2 && p->p3 == p3 &&
 				(p->dir == 0xFF || p->dir == dir || ((p->dir - 1) & 3) == dir)) {
-			*cost = AiDoBuildDefaultRailTrack(tile, p->data, DC_NO_TOWN_RATING);
+			*cost = AiDoBuildDefaultRailTrack(tile, p->data, railtype, DC_NO_TOWN_RATING);
 			if (!CmdFailed(*cost) && AiCheckTrackResources(tile, p->data, cargo))
 				return i;
 		}
@@ -1747,7 +1746,9 @@
 			rule = AiBuildDefaultRailTrack(aib->use_tile,
 				p->ai.build_kind, p->ai.num_wagons,
 				aib->unk6, aib->unk7,
-				aib->direction, aib->cargo, &cost
+				aib->direction, aib->cargo,
+				p->ai.railtype_to_use,
+				&cost
 			);
 
 			if (rule == -1) {
@@ -1768,6 +1769,7 @@
 				r = AiDoBuildDefaultRailTrack(
 					aib->use_tile,
 					_default_rail_track_data[rule]->data,
+					p->ai.railtype_to_use,
 					DC_EXEC | DC_NO_TOWN_RATING
 				);
 				assert(!CmdFailed(r));
@@ -3862,8 +3864,6 @@
 
 void AiDoGameLoop(Player *p)
 {
-	_cur_ai_player = p;
-
 	if (p->bankrupt_asked != 0) {
 		AiHandleTakeover(p);
 		return;