Project

General

Profile

Bug #1523 » 0055-savecompat-Update-capitals-when-loading-3.3-savegame.patch

S3_3 - Marko Lindqvist, 06/13/2025 07:15 AM

View differences:

server/savegame/savecompat.c
/* server */
#include "aiiface.h"
#include "plrhand.h"
#include "setcompat.h"
#include "settings.h"
#include "unittools.h"
......
static void compat_load_030300(struct loaddata *loading, enum sgf_version format_class);
static void compat_post_load_030100(struct loaddata *loading,
enum sgf_version format_class);
static void compat_post_load_030300(struct loaddata *loading,
enum sgf_version format_class);
#ifdef FREECIV_DEV_SAVE_COMPAT
static void compat_load_dev(struct loaddata *loading);
......
/* version 51 to 59 are reserved for possible changes in 3.1.x */
{ 60, compat_load_030200, NULL },
/* version 61 to 69 are reserved for possible changes in 3.2.x */
{ 70, compat_load_030300, NULL },
{ 70, compat_load_030300, compat_post_load_030300 },
/* Current savefile version is listed above this line; it corresponds to
the definitions in this file. */
};
......
Some compatibility needs access to game state not available in
sg_load_compat(). Do those here.
This function is called after a savegame has loaded the game state. The
data should be changed in the game state since the game already is done
This function is called after a savegame has loaded the game state.
The data should be changed in the game state since the game already is done
loading. Prefer using sg_load_compat() when possible.
****************************************************************************/
void sg_load_post_load_compat(struct loaddata *loading,
......
} player_slots_iterate_end;
}
/************************************************************************//**
Update loaded game data from 3.3.x to something usable by 3.3.0.
****************************************************************************/
static void compat_post_load_030300(struct loaddata *loading,
enum sgf_version format_class)
{
/* Check status and return if not OK (sg_success FALSE). */
sg_check_ret();
/* Capital information was not saved in older savegames,
* so we have no capital setup at all at the moment.
* Best we can do is to do recalculation now. It might be
* a bit off compared to the situation before the game was saved,
* but definitely better than not setting capitals at all. */
players_iterate_alive(pplayer) {
update_capital(pplayer);
} players_iterate_alive_end;
}
/************************************************************************//**
Translate savegame secfile data from earlier development version format
to current one.
(2-2/2)