mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r2080) - Fix: [OldAI] p->ai.state_counter was uint16 but could hold a tile index, therefore overflowing - changed that to uint32 and bumped the savegame revision to 32. It *MIGHT* close bug 1151374 - it certainly caused AI to stop building anything sometimes.
- While at it, use TileIndex as the tile index type in AiRemovePlayerRailOrRoad() and AiStateRemoveTrack(). - Make the number of tiles scanned 4*MapSizeX() instead of 1000. It *MIGHT* close bug 1116614.
This commit is contained in:
parent
e416fe8066
commit
0c5d61bd56
7
ai.c
7
ai.c
|
@ -3640,7 +3640,7 @@ static void AiStateRemoveStation(Player *p)
|
|||
|
||||
}
|
||||
|
||||
static void AiRemovePlayerRailOrRoad(Player *p, uint tile)
|
||||
static void AiRemovePlayerRailOrRoad(Player *p, TileIndex tile)
|
||||
{
|
||||
byte m5;
|
||||
|
||||
|
@ -3758,10 +3758,11 @@ pos_3:
|
|||
|
||||
static void AiStateRemoveTrack(Player *p)
|
||||
{
|
||||
int num = 1000;
|
||||
/* Was 1000 for standard 8x8 maps. */
|
||||
int num = MapSizeX() * 4;
|
||||
|
||||
do {
|
||||
uint tile = ++p->ai.state_counter;
|
||||
TileIndex tile = ++p->ai.state_counter;
|
||||
|
||||
// Iterated all tiles?
|
||||
if (tile >= MapSize()) {
|
||||
|
|
2
player.h
2
player.h
|
@ -27,7 +27,7 @@ typedef struct AiBuildRec {
|
|||
typedef struct PlayerAI {
|
||||
byte state;
|
||||
byte tick; // Used to determine how often to move
|
||||
uint16 state_counter;
|
||||
uint32 state_counter; // Can hold tile index!
|
||||
uint16 timeout_counter;
|
||||
|
||||
byte state_mode;
|
||||
|
|
|
@ -974,7 +974,8 @@ static const byte _player_economy_desc[] = {
|
|||
static const byte _player_ai_desc[] = {
|
||||
SLE_VAR(PlayerAI,state, SLE_UINT8),
|
||||
SLE_VAR(PlayerAI,tick, SLE_UINT8),
|
||||
SLE_VAR(PlayerAI,state_counter, SLE_UINT16),
|
||||
SLE_CONDVAR(PlayerAI,state_counter, SLE_FILE_U16 | SLE_VAR_U32, 0, 12),
|
||||
SLE_CONDVAR(PlayerAI,state_counter, SLE_UINT32, 13, 255),
|
||||
SLE_VAR(PlayerAI,timeout_counter, SLE_UINT16),
|
||||
|
||||
SLE_VAR(PlayerAI,state_mode, SLE_UINT8),
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include "saveload.h"
|
||||
|
||||
enum {
|
||||
SAVEGAME_MAJOR_VERSION = 0xC,
|
||||
SAVEGAME_MAJOR_VERSION = 13,
|
||||
SAVEGAME_MINOR_VERSION = 0x1,
|
||||
|
||||
SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION
|
||||
|
|
Loading…
Reference in New Issue