Another function pair required for serialisation; these ones save

and restore anything vitally important in the game_ui. Most of the
game_ui is expected to be stuff about cursor positions and currently
active mouse drags, so it absolutely _doesn't_ want to be preserved
over a serialisation; but one or two things would be disorienting or
outright wrong to reset, such as the Net origin position and the
Mines death counter.

[originally from svn r6026]
This commit is contained in:
Simon Tatham
2005-06-28 07:33:49 +00:00
parent 08410651e0
commit cdb8433c0a
15 changed files with 170 additions and 0 deletions

19
net.c
View File

@ -1846,6 +1846,23 @@ static void free_ui(game_ui *ui)
sfree(ui);
}
char *encode_ui(game_ui *ui)
{
char buf[120];
/*
* We preserve the origin and centre-point coordinates over a
* serialise.
*/
sprintf(buf, "O%d,%d;C%d,%d", ui->org_x, ui->org_y, ui->cx, ui->cy);
return dupstr(buf);
}
void decode_ui(game_ui *ui, char *encoding)
{
sscanf(encoding, "O%d,%d;C%d,%d",
&ui->org_x, &ui->org_y, &ui->cx, &ui->cy);
}
static void game_changed_state(game_ui *ui, game_state *oldstate,
game_state *newstate)
{
@ -2739,6 +2756,8 @@ const struct game thegame = {
FALSE, game_text_format,
new_ui,
free_ui,
encode_ui,
decode_ui,
game_changed_state,
interpret_move,
execute_move,