mirror of https://github.com/OpenTTD/OpenTTD
(svn r5222) Misc. smaller changes, mostly const, variable scope and replacing some magic numbers by enums
parent
4ba334ffde
commit
0f5453d95b
|
@ -114,9 +114,10 @@ static void AiStateVehLoop(Player *p)
|
|||
}
|
||||
|
||||
/* not reliable? */
|
||||
if ((v->age != 0 &&
|
||||
GetEngine(v->engine_type)->reliability < 35389) ||
|
||||
v->age >= v->max_age) {
|
||||
if (v->age >= v->max_age || (
|
||||
v->age != 0 &&
|
||||
GetEngine(v->engine_type)->reliability < 35389
|
||||
)) {
|
||||
p->ai.state = AIS_VEH_CHECK_REPLACE_VEHICLE;
|
||||
p->ai.cur_veh = v;
|
||||
return;
|
||||
|
@ -148,8 +149,7 @@ static EngineID AiChooseTrainToBuild(RailType railtype, int32 money, byte flag,
|
|||
}
|
||||
|
||||
ret = DoCommand(tile, i, 0, 0, CMD_BUILD_RAIL_VEHICLE);
|
||||
if (!CmdFailed(ret) && ret <= money &&
|
||||
rvi->ai_rank >= best_veh_score) {
|
||||
if (!CmdFailed(ret) && ret <= money && rvi->ai_rank >= best_veh_score) {
|
||||
best_veh_score = rvi->ai_rank;
|
||||
best_veh_index = i;
|
||||
}
|
||||
|
@ -162,16 +162,16 @@ static EngineID AiChooseRoadVehToBuild(CargoID cargo, int32 money, TileIndex til
|
|||
{
|
||||
EngineID best_veh_index = INVALID_ENGINE;
|
||||
int32 best_veh_cost = 0;
|
||||
int32 ret;
|
||||
|
||||
EngineID i = _cargoc.ai_roadveh_start[cargo];
|
||||
EngineID end = i + _cargoc.ai_roadveh_count[cargo];
|
||||
|
||||
for (; i != end; i++) {
|
||||
const Engine* e = GetEngine(i);
|
||||
int32 ret;
|
||||
|
||||
if (!HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D)
|
||||
if (!HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = DoCommand(tile, i, 0, 0, CMD_BUILD_ROAD_VEH);
|
||||
if (!CmdFailed(ret) && ret <= money && ret >= best_veh_cost) {
|
||||
|
@ -187,18 +187,17 @@ static EngineID AiChooseAircraftToBuild(int32 money, byte flag)
|
|||
{
|
||||
EngineID best_veh_index = INVALID_ENGINE;
|
||||
int32 best_veh_cost = 0;
|
||||
int32 ret;
|
||||
EngineID i;
|
||||
|
||||
EngineID i = AIRCRAFT_ENGINES_INDEX;
|
||||
EngineID end = i + NUM_AIRCRAFT_ENGINES;
|
||||
|
||||
for (; i != end; i++) {
|
||||
for (i = AIRCRAFT_ENGINES_INDEX; i != AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; i++) {
|
||||
const Engine* e = GetEngine(i);
|
||||
int32 ret;
|
||||
|
||||
if (!HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D)
|
||||
if (!HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (flag&1) {
|
||||
if (flag & 1) {
|
||||
if (i<253) continue;
|
||||
} else {
|
||||
if (i>=253) continue;
|
||||
|
@ -214,7 +213,7 @@ static EngineID AiChooseAircraftToBuild(int32 money, byte flag)
|
|||
return best_veh_index;
|
||||
}
|
||||
|
||||
static int32 AiGetBasePrice(Player *p)
|
||||
static int32 AiGetBasePrice(const Player* p)
|
||||
{
|
||||
int32 base = _price.station_value;
|
||||
|
||||
|
@ -238,23 +237,23 @@ static EngineID AiChooseShipToBuild(byte cargo, int32 money)
|
|||
}
|
||||
#endif
|
||||
|
||||
static EngineID AiChooseRoadVehToReplaceWith(Player* p, Vehicle* v)
|
||||
static EngineID AiChooseRoadVehToReplaceWith(const Player* p, const Vehicle* v)
|
||||
{
|
||||
int32 avail_money = p->player_money + v->value;
|
||||
return AiChooseRoadVehToBuild(v->cargo_type, avail_money, v->tile);
|
||||
}
|
||||
|
||||
static EngineID AiChooseAircraftToReplaceWith(Player* p, Vehicle* v)
|
||||
static EngineID AiChooseAircraftToReplaceWith(const Player* p, const Vehicle* v)
|
||||
{
|
||||
int32 avail_money = p->player_money + v->value;
|
||||
return AiChooseAircraftToBuild(avail_money, v->engine_type>=253?1:0);
|
||||
}
|
||||
|
||||
static EngineID AiChooseTrainToReplaceWith(Player* p, Vehicle* v)
|
||||
static EngineID AiChooseTrainToReplaceWith(const Player* p, const Vehicle* v)
|
||||
{
|
||||
int32 avail_money = p->player_money + v->value;
|
||||
int num=0;
|
||||
Vehicle *u = v;
|
||||
const Vehicle* u = v;
|
||||
int num = 0;
|
||||
|
||||
while (++num, u->next != NULL) {
|
||||
u = u->next;
|
||||
|
@ -264,7 +263,7 @@ static EngineID AiChooseTrainToReplaceWith(Player* p, Vehicle* v)
|
|||
return AiChooseTrainToBuild(v->u.rail.railtype, avail_money, 0, v->tile);
|
||||
}
|
||||
|
||||
static EngineID AiChooseShipToReplaceWith(Player* p, Vehicle* v)
|
||||
static EngineID AiChooseShipToReplaceWith(const Player* p, const Vehicle* v)
|
||||
{
|
||||
error("!AiChooseShipToReplaceWith");
|
||||
|
||||
|
@ -301,7 +300,7 @@ static void AiRestoreVehicleOrders(Vehicle *v, BackuppedOrders *bak)
|
|||
|
||||
static void AiHandleReplaceTrain(Player *p)
|
||||
{
|
||||
Vehicle *v = p->ai.cur_veh;
|
||||
const Vehicle* v = p->ai.cur_veh;
|
||||
BackuppedOrders orderbak[1];
|
||||
EngineID veh;
|
||||
|
||||
|
@ -331,7 +330,7 @@ static void AiHandleReplaceTrain(Player *p)
|
|||
|
||||
static void AiHandleReplaceRoadVeh(Player *p)
|
||||
{
|
||||
Vehicle *v = p->ai.cur_veh;
|
||||
const Vehicle* v = p->ai.cur_veh;
|
||||
BackuppedOrders orderbak[1];
|
||||
EngineID veh;
|
||||
|
||||
|
@ -360,7 +359,7 @@ static void AiHandleReplaceRoadVeh(Player *p)
|
|||
|
||||
static void AiHandleReplaceAircraft(Player *p)
|
||||
{
|
||||
Vehicle *v = p->ai.cur_veh;
|
||||
const Vehicle* v = p->ai.cur_veh;
|
||||
BackuppedOrders orderbak[1];
|
||||
EngineID veh;
|
||||
|
||||
|
@ -392,7 +391,7 @@ static void AiHandleReplaceShip(Player *p)
|
|||
error("!AiHandleReplaceShip");
|
||||
}
|
||||
|
||||
typedef EngineID CheckReplaceProc(Player* p, Vehicle* v);
|
||||
typedef EngineID CheckReplaceProc(const Player* p, const Vehicle* v);
|
||||
|
||||
static CheckReplaceProc* const _veh_check_replace_proc[] = {
|
||||
AiChooseTrainToReplaceWith,
|
||||
|
@ -411,7 +410,7 @@ static DoReplaceProc* const _veh_do_replace_proc[] = {
|
|||
|
||||
static void AiStateCheckReplaceVehicle(Player *p)
|
||||
{
|
||||
Vehicle *v = p->ai.cur_veh;
|
||||
const Vehicle* v = p->ai.cur_veh;
|
||||
|
||||
if (v->type == 0 ||
|
||||
v->owner != _current_player ||
|
||||
|
@ -457,9 +456,8 @@ static void AiFindSubsidyIndustryRoute(FoundRoute *fr)
|
|||
{
|
||||
uint i;
|
||||
CargoID cargo;
|
||||
Subsidy *s;
|
||||
Industry *from, *to_ind;
|
||||
Town *to_tow;
|
||||
const Subsidy* s;
|
||||
Industry* from;
|
||||
TileIndex to_xy;
|
||||
|
||||
// initially error
|
||||
|
@ -473,20 +471,25 @@ static void AiFindSubsidyIndustryRoute(FoundRoute *fr)
|
|||
|
||||
// Don't want passengers or mail
|
||||
cargo = s->cargo_type;
|
||||
if (cargo == CT_INVALID || cargo == CT_PASSENGERS || cargo == CT_MAIL || s->age > 7)
|
||||
if (cargo == CT_INVALID ||
|
||||
cargo == CT_PASSENGERS ||
|
||||
cargo == CT_MAIL ||
|
||||
s->age > 7) {
|
||||
return;
|
||||
}
|
||||
fr->cargo = cargo;
|
||||
|
||||
fr->from = from = GetIndustry(s->from);
|
||||
|
||||
if (cargo == CT_GOODS || cargo == CT_FOOD) {
|
||||
to_tow = GetTown(s->to);
|
||||
if (to_tow->population < (uint32)(cargo == CT_FOOD ? 200 : 900))
|
||||
return; // error
|
||||
Town* to_tow = GetTown(s->to);
|
||||
|
||||
if (to_tow->population < (cargo == CT_FOOD ? 200 : 900)) return; // error
|
||||
fr->to = to_tow;
|
||||
to_xy = to_tow->xy;
|
||||
} else {
|
||||
to_ind = GetIndustry(s->to);
|
||||
Industry* to_ind = GetIndustry(s->to);
|
||||
|
||||
fr->to = to_ind;
|
||||
to_xy = to_ind->xy;
|
||||
}
|
||||
|
@ -497,7 +500,7 @@ static void AiFindSubsidyIndustryRoute(FoundRoute *fr)
|
|||
static void AiFindSubsidyPassengerRoute(FoundRoute *fr)
|
||||
{
|
||||
uint i;
|
||||
Subsidy *s;
|
||||
const Subsidy* s;
|
||||
Town *from,*to;
|
||||
|
||||
// initially error
|
||||
|
@ -524,8 +527,7 @@ static void AiFindSubsidyPassengerRoute(FoundRoute *fr)
|
|||
|
||||
static void AiFindRandomIndustryRoute(FoundRoute *fr)
|
||||
{
|
||||
Industry *i,*i2;
|
||||
Town *t;
|
||||
Industry* i;
|
||||
uint32 r;
|
||||
CargoID cargo;
|
||||
|
||||
|
@ -545,21 +547,27 @@ static void AiFindRandomIndustryRoute(FoundRoute *fr)
|
|||
fr->cargo = cargo;
|
||||
|
||||
// don't allow passengers
|
||||
if (cargo == 0xFF || cargo == CT_PASSENGERS) return;
|
||||
if (cargo == CT_INVALID || cargo == CT_PASSENGERS) return;
|
||||
|
||||
if (cargo != CT_GOODS && cargo != CT_FOOD) {
|
||||
// pick a dest, and see if it can receive
|
||||
i2 = AiFindRandomIndustry();
|
||||
if (i2 == NULL || i == i2 || !(i2->accepts_cargo[0] == cargo || i2->accepts_cargo[1] == cargo || i2->accepts_cargo[2] == cargo))
|
||||
Industry* i2 = AiFindRandomIndustry();
|
||||
|
||||
if (i2 == NULL || i == i2 || (
|
||||
i2->accepts_cargo[0] != cargo &&
|
||||
i2->accepts_cargo[1] != cargo &&
|
||||
i2->accepts_cargo[2] != cargo)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
fr->to = i2;
|
||||
fr->distance = DistanceManhattan(i->xy, i2->xy);
|
||||
} else {
|
||||
// pick a dest town, and see if it's big enough
|
||||
t = AiFindRandomTown();
|
||||
if (t == NULL || t->population < (uint32)(cargo == CT_FOOD ? 200 : 900))
|
||||
return;
|
||||
Town* t = AiFindRandomTown();
|
||||
|
||||
if (t == NULL || t->population < (cargo == CT_FOOD ? 200 : 900)) return;
|
||||
|
||||
fr->to = t;
|
||||
fr->distance = DistanceManhattan(i->xy, t->xy);
|
||||
|
@ -590,7 +598,7 @@ static bool AiCheckIfRouteIsGood(Player *p, FoundRoute *fr, byte bitmask)
|
|||
{
|
||||
TileIndex from_tile, to_tile;
|
||||
Station *st;
|
||||
int dist, cur;
|
||||
int dist;
|
||||
uint same_station = 0;
|
||||
|
||||
// Make sure distance to closest station is < 37 pixels.
|
||||
|
@ -598,7 +606,10 @@ static bool AiCheckIfRouteIsGood(Player *p, FoundRoute *fr, byte bitmask)
|
|||
to_tile = GET_TOWN_OR_INDUSTRY_TILE(fr->to);
|
||||
|
||||
dist = 0xFFFF;
|
||||
FOR_ALL_STATIONS(st) if (st->xy != 0 && st->owner == _current_player) {
|
||||
FOR_ALL_STATIONS(st) {
|
||||
int cur;
|
||||
|
||||
if (st->xy == 0 || st->owner != _current_player) continue;
|
||||
cur = DistanceMax(from_tile, st->xy);
|
||||
if (cur < dist) dist = cur;
|
||||
cur = DistanceMax(to_tile, st->xy);
|
||||
|
@ -610,7 +621,7 @@ static bool AiCheckIfRouteIsGood(Player *p, FoundRoute *fr, byte bitmask)
|
|||
// For each road or airport station, we want 350 of population!
|
||||
if ((bitmask == 2 || bitmask == 4) &&
|
||||
same_station > 2 &&
|
||||
((Town*)(fr->from))->population < same_station * 350) {
|
||||
((Town*)fr->from)->population < same_station * 350) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -623,20 +634,26 @@ static bool AiCheckIfRouteIsGood(Player *p, FoundRoute *fr, byte bitmask)
|
|||
}
|
||||
|
||||
if (fr->cargo == CT_PASSENGERS || fr->cargo == CT_MAIL) {
|
||||
if (((Town*)fr->from)->pct_pass_transported > 0x99 ||
|
||||
((Town*)fr->to)->pct_pass_transported > 0x99)
|
||||
const Town* from = fr->from;
|
||||
const Town* to = fr->to;
|
||||
|
||||
if (from->pct_pass_transported > 0x99 ||
|
||||
to->pct_pass_transported > 0x99) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Make sure it has a reasonably good rating
|
||||
if (((Town*)fr->from)->ratings[_current_player] < -100 ||
|
||||
((Town*)fr->to)->ratings[_current_player] < -100)
|
||||
if (from->ratings[_current_player] < -100 ||
|
||||
to->ratings[_current_player] < -100) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
const Industry* i = (const Industry*)fr->from;
|
||||
|
||||
if (i->pct_transported[fr->cargo != i->produced_cargo[0]] > 0x99 ||
|
||||
i->total_production[fr->cargo != i->produced_cargo[0]] == 0)
|
||||
i->total_production[fr->cargo != i->produced_cargo[0]] == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
p->ai.route_type_mask |= bitmask;
|
||||
|
@ -1504,25 +1521,22 @@ static void AiStateWantNewRoute(Player *p)
|
|||
|
||||
static bool AiCheckTrackResources(TileIndex tile, const AiDefaultBlockData *p, byte cargo)
|
||||
{
|
||||
uint values[NUM_CARGO];
|
||||
int rad;
|
||||
uint rad = (_patches.modified_catchment) ? CA_TRAIN : 4;
|
||||
|
||||
for (;p->mode != 4;p++) if (p->mode == 1) {
|
||||
TileIndex tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
|
||||
for (; p->mode != 4; p++) {
|
||||
AcceptedCargo values;
|
||||
TileIndex tile2;
|
||||
uint w;
|
||||
uint h;
|
||||
|
||||
if (p->mode != 1) continue;
|
||||
|
||||
tile2 = TILE_ADD(tile, ToTileIndexDiff(p->tileoffs));
|
||||
w = GB(p->attr, 1, 3);
|
||||
h = GB(p->attr, 4, 3);
|
||||
|
||||
if (p->attr & 1) uintswap(w, h);
|
||||
|
||||
|
||||
if (_patches.modified_catchment) {
|
||||
rad = CA_TRAIN;
|
||||
} else {
|
||||
rad = 4;
|
||||
}
|
||||
|
||||
if (cargo & 0x80) {
|
||||
GetProductionAroundTiles(values, tile2, w, h, rad);
|
||||
return values[cargo & 0x7F] != 0;
|
||||
|
@ -1876,7 +1890,7 @@ static bool AiIsTileBanned(const Player* p, TileIndex tile, byte val)
|
|||
|
||||
static void AiBanTile(Player* p, TileIndex tile, byte val)
|
||||
{
|
||||
int i;
|
||||
uint i;
|
||||
|
||||
for (i = lengthof(p->ai.banned_tiles) - 1; i != 0; i--) {
|
||||
p->ai.banned_tiles[i] = p->ai.banned_tiles[i - 1];
|
||||
|
@ -1954,15 +1968,14 @@ static inline void AiCheckBuildRailBridgeHere(AiRailFinder *arf, TileIndex tile,
|
|||
}
|
||||
|
||||
// Is building a (rail)bridge possible at this place (type doesn't matter)?
|
||||
if (CmdFailed(DoCommand(tile_new, tile, 0 | arf->player->ai.railtype_to_use << 8,
|
||||
DC_AUTO, CMD_BUILD_BRIDGE)) )
|
||||
return;
|
||||
if (CmdFailed(DoCommand(tile_new, tile, 0 | arf->player->ai.railtype_to_use << 8, DC_AUTO, CMD_BUILD_BRIDGE))) {
|
||||
return;
|
||||
}
|
||||
AiBuildRailRecursive(arf, tile_new, dir2);
|
||||
|
||||
// At the bottom depth, check if the new path is better than the old one.
|
||||
if (arf->depth == 1) {
|
||||
if (AiCheckRailPathBetter(arf, p))
|
||||
arf->bridge_end_tile = tile_new;
|
||||
if (AiCheckRailPathBetter(arf, p)) arf->bridge_end_tile = tile_new;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1991,14 +2004,12 @@ static void AiBuildRailRecursive(AiRailFinder *arf, TileIndex tile, int dir)
|
|||
// Reached destination?
|
||||
if (tile == arf->final_tile) {
|
||||
if (arf->final_dir != (dir^2)) {
|
||||
if (arf->recursive_mode != 2)
|
||||
arf->recursive_mode = 1;
|
||||
if (arf->recursive_mode != 2) arf->recursive_mode = 1;
|
||||
} else if (arf->recursive_mode != 2) {
|
||||
arf->recursive_mode = 2;
|
||||
arf->cur_best_depth = arf->depth;
|
||||
} else {
|
||||
if (arf->depth < arf->cur_best_depth)
|
||||
arf->cur_best_depth = arf->depth;
|
||||
if (arf->depth < arf->cur_best_depth) arf->cur_best_depth = arf->depth;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -2226,23 +2237,30 @@ static void AiBuildRailDestruct(Player *p)
|
|||
|
||||
static void AiBuildRail(Player *p)
|
||||
{
|
||||
if (p->ai.state_mode < 1) {
|
||||
// Construct mode, build new rail.
|
||||
AiBuildRailConstruct(p);
|
||||
} else if (p->ai.state_mode == 1) {
|
||||
// Destruct mode, destroy the rail currently built.
|
||||
AiBuildRailDestruct(p);
|
||||
} else if (p->ai.state_mode == 2) {
|
||||
uint i;
|
||||
switch (p->ai.state_mode) {
|
||||
case 0: // Construct mode, build new rail.
|
||||
AiBuildRailConstruct(p);
|
||||
break;
|
||||
|
||||
// Terraform some and then try building again.
|
||||
for (i = 0; i != 4; i++)
|
||||
AiDoTerraformLand(p->ai.cur_tile_a, p->ai.cur_dir_a, 3, 0);
|
||||
case 1: // Destruct mode, destroy the rail currently built.
|
||||
AiBuildRailDestruct(p);
|
||||
break;
|
||||
|
||||
if (++p->ai.state_counter == 4) {
|
||||
p->ai.state_counter = 0;
|
||||
p->ai.state_mode = 0;
|
||||
case 2: {
|
||||
uint i;
|
||||
|
||||
// Terraform some and then try building again.
|
||||
for (i = 0; i != 4; i++) {
|
||||
AiDoTerraformLand(p->ai.cur_tile_a, p->ai.cur_dir_a, 3, 0);
|
||||
}
|
||||
|
||||
if (++p->ai.state_counter == 4) {
|
||||
p->ai.state_counter = 0;
|
||||
p->ai.state_mode = 0;
|
||||
}
|
||||
}
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2463,19 +2481,15 @@ handle_nocash:
|
|||
|
||||
static void AiStateDeleteRailBlocks(Player *p)
|
||||
{
|
||||
int num;
|
||||
AiBuildRec *aib;
|
||||
const AiDefaultBlockData *b;
|
||||
const AiBuildRec* aib = &p->ai.src;
|
||||
uint num = p->ai.num_build_rec;
|
||||
|
||||
num = p->ai.num_build_rec;
|
||||
aib = &p->ai.src;
|
||||
do {
|
||||
if (aib->cur_building_rule != 255) {
|
||||
b = _default_rail_track_data[aib->cur_building_rule]->data;
|
||||
while (b->mode != 4) {
|
||||
DoCommand(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
b++;
|
||||
}
|
||||
const AiDefaultBlockData* b;
|
||||
|
||||
if (aib->cur_building_rule == 255) continue;
|
||||
for (b = _default_rail_track_data[aib->cur_building_rule]->data; b->mode != 4; b++) {
|
||||
DoCommand(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
}
|
||||
} while (++aib,--num);
|
||||
|
||||
|
@ -2812,13 +2826,13 @@ static bool AiCheckRoadFinished(Player *p)
|
|||
|
||||
static bool AiBuildRoadHelper(TileIndex tile, int flags, int type)
|
||||
{
|
||||
static const byte _road_bits[] = {
|
||||
8+2,
|
||||
1+4,
|
||||
1+8,
|
||||
4+2,
|
||||
1+2,
|
||||
8+4,
|
||||
static const RoadBits _road_bits[] = {
|
||||
ROAD_X,
|
||||
ROAD_Y,
|
||||
ROAD_NW | ROAD_NE,
|
||||
ROAD_SW | ROAD_SE,
|
||||
ROAD_NW | ROAD_SW,
|
||||
ROAD_SE | ROAD_NE
|
||||
};
|
||||
return !CmdFailed(DoCommand(tile, _road_bits[type], 0, flags, CMD_BUILD_ROAD));
|
||||
}
|
||||
|
@ -3191,21 +3205,16 @@ static void AiStateBuildRoadVehicles(Player *p)
|
|||
|
||||
static void AiStateDeleteRoadBlocks(Player *p)
|
||||
{
|
||||
int num;
|
||||
AiBuildRec *aib;
|
||||
const AiDefaultBlockData *b;
|
||||
const AiBuildRec* aib = &p->ai.src;
|
||||
uint num = p->ai.num_build_rec;
|
||||
|
||||
num = p->ai.num_build_rec;
|
||||
aib = &p->ai.src;
|
||||
do {
|
||||
if (aib->cur_building_rule != 255) {
|
||||
b = _road_default_block_data[aib->cur_building_rule]->data;
|
||||
while (b->mode != 4) {
|
||||
if (b->mode <= 1) {
|
||||
DoCommand(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
}
|
||||
b++;
|
||||
}
|
||||
const AiDefaultBlockData* b;
|
||||
|
||||
if (aib->cur_building_rule == 255) continue;
|
||||
for (b = _road_default_block_data[aib->cur_building_rule]->data; b->mode != 4; b++) {
|
||||
if (b->mode > 1) continue;
|
||||
DoCommand(TILE_ADD(aib->use_tile, ToTileIndexDiff(b->tileoffs)), 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
}
|
||||
} while (++aib,--num);
|
||||
|
||||
|
@ -3818,7 +3827,7 @@ static void AiHandleTakeover(Player *p)
|
|||
}
|
||||
}
|
||||
|
||||
static void AiAdjustLoan(Player *p)
|
||||
static void AiAdjustLoan(const Player* p)
|
||||
{
|
||||
int32 base = AiGetBasePrice(p);
|
||||
|
||||
|
|
Loading…
Reference in New Issue