--- a/src/players.cpp Sat Apr 14 22:16:11 2007 +0000
+++ b/src/players.cpp Sun Apr 15 00:17:57 2007 +0000
@@ -435,6 +435,7 @@
PlayerID i = p->index;
memset(p, 0, sizeof(Player));
p->index = i;
+ p->is_noai = true;
return p;
}
}
@@ -1140,8 +1141,11 @@
SLE_CONDVAR(Player, engine_renew_money, SLE_UINT32, 16, SL_MAX_VERSION),
SLE_CONDVAR(Player, renew_keep_length, SLE_BOOL, 2, SL_MAX_VERSION), // added with 16.1, but was blank since 2
- /* reserve extra space in savegame here. (currently 63 bytes) */
- SLE_CONDNULL(63, 2, SL_MAX_VERSION),
+ /* Reserve extra space in savegame here. (currently 62 bytes)
+ * The 63rd byte is used to tell us whether we are a player of the NoAI-branch or not.
+ * Part of the NoAI 'hack' to retain savegame compatability with trunk. */
+ SLE_CONDVAR(Player, is_noai, SLE_BOOL, 2, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(62, 2, SL_MAX_VERSION),
SLE_END()
};
@@ -1167,41 +1171,41 @@
};
static const SaveLoad _player_ai_desc[] = {
- SLE_CONDNULL(2, 0, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(2, 0, SL_NOAI_MAX_VERSION),
SLE_CONDNULL(2, 0, 12),
- SLE_CONDNULL(4, 13, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDNULL(8, 0, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDVAR(PlayerOldAI, num_build_rec, SLE_UINT8, 0, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDNULL(3, 0, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(4, 13, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(8, 0, SL_NOAI_MAX_VERSION),
+ SLE_CONDVAR(PlayerOldAI, num_build_rec, SLE_UINT8, 0, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(3, 0, SL_NOAI_MAX_VERSION),
SLE_CONDNULL(2, 0, 5),
- SLE_CONDNULL(4, 6, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(4, 6, SL_NOAI_MAX_VERSION),
SLE_CONDNULL(2, 0, 5),
- SLE_CONDNULL(4, 6, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDNULL(2, 0, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(4, 6, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(2, 0, SL_NOAI_MAX_VERSION),
SLE_CONDNULL(2, 0, 5),
- SLE_CONDNULL(4, 6, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(4, 6, SL_NOAI_MAX_VERSION),
SLE_CONDNULL(2, 0, 5),
- SLE_CONDNULL(4, 6, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDNULL(2, 0, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(4, 6, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(2, 0, SL_NOAI_MAX_VERSION),
- SLE_CONDNULL(2, 0, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(2, 0, SL_NOAI_MAX_VERSION),
- SLE_CONDNULL(18, 0, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDNULL(20, 0, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDNULL(32, 0, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(18, 0, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(20, 0, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(32, 0, SL_NOAI_MAX_VERSION),
- SLE_CONDNULL(64, 2, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(64, 2, SL_NOAI_MAX_VERSION),
SLE_END()
};
static const SaveLoad _player_ai_build_rec_desc[] = {
SLE_CONDNULL(2, 0, 5),
- SLE_CONDNULL(4, 6, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(4, 6, SL_NOAI_MAX_VERSION),
SLE_CONDNULL(2, 0, 5),
- SLE_CONDNULL(4, 6, SAVELOAD_AIREMOVE_VERSION),
- SLE_CONDNULL(8, 0, SAVELOAD_AIREMOVE_VERSION),
+ SLE_CONDNULL(4, 6, SL_NOAI_MAX_VERSION),
+ SLE_CONDNULL(8, 0, SL_NOAI_MAX_VERSION),
SLE_END()
};
@@ -1219,7 +1223,7 @@
SlObject(p, _player_desc);
/* Keep backwards compatible for savegames, so load the old AI block */
- if (!IsHumanPlayer(p->index) && CheckSavegameVersion(SAVELOAD_AIREMOVE_VERSION + 1)) {
+ if (!IsHumanPlayer(p->index) && !p->is_noai) {
PlayerOldAI old_ai;
char nothing;
@@ -1261,6 +1265,7 @@
Player *p = GetPlayer((PlayerID)index);
SaveLoad_PLYR(p);
_player_colors[index] = p->player_color;
+ p->is_noai = true;
UpdatePlayerMoney32(p);
/* This is needed so an AI is attached to a loaded AI */
--- a/src/settings.cpp Sat Apr 14 22:16:11 2007 +0000
+++ b/src/settings.cpp Sun Apr 15 00:17:57 2007 +0000
@@ -653,6 +653,7 @@
* 32-bit variable
* TODO: Support 64-bit settings/variables */
switch (GetVarMemType(sd->save.conv)) {
+ case SLE_VAR_NULL: return; // Part of the NoAI 'hack' to retain savegame compatability with trunk.
case SLE_VAR_BL:
case SLE_VAR_I8:
case SLE_VAR_U8:
@@ -1388,7 +1389,7 @@
/***************************************************************************/
/* AI section of the GUI-configure patches window */
- SDT_CONDNULL(1, 0, SAVELOAD_AIREMOVE_VERSION), // ai-new setting, became invalid with new AI system
+ SDT_CONDNULL(1, 0, SL_NOAI_MAX_VERSION), // ai-new setting, became invalid with new AI system. Part of the NoAI 'hack' to retain savegame compatability with trunk.
SDT_BOOL(Patches, ai_in_multiplayer, 0, 0, false, STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER, Ai_In_Multiplayer_Warning),
SDT_BOOL(Patches, ai_disable_veh_train, 0, 0, false, STR_CONFIG_PATCHES_AI_BUILDS_TRAINS, NULL),
SDT_BOOL(Patches, ai_disable_veh_roadveh, 0, 0, false, STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH, NULL),