From cdb8433c0a5bf546ae2f4c55bad1be064d05df3b Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 28 Jun 2005 07:33:49 +0000 Subject: 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] --- net.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'net.c') diff --git a/net.c b/net.c index 6253568..6feabda 100644 --- a/net.c +++ b/net.c @@ -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, -- cgit v1.1