aboutsummaryrefslogtreecommitdiff
path: root/net.c
diff options
context:
space:
mode:
authorSimon Tatham <anakin@pobox.com>2005-06-28 07:33:49 +0000
committerSimon Tatham <anakin@pobox.com>2005-06-28 07:33:49 +0000
commitcdb8433c0a5bf546ae2f4c55bad1be064d05df3b (patch)
tree3e6026b5dde0edba0477de9d714b46c0f687e6cf /net.c
parent08410651e05b0723073d53e7d75174767633bf87 (diff)
downloadpuzzles-cdb8433c0a5bf546ae2f4c55bad1be064d05df3b.zip
puzzles-cdb8433c0a5bf546ae2f4c55bad1be064d05df3b.tar.gz
puzzles-cdb8433c0a5bf546ae2f4c55bad1be064d05df3b.tar.bz2
puzzles-cdb8433c0a5bf546ae2f4c55bad1be064d05df3b.tar.xz
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]
Diffstat (limited to 'net.c')
-rw-r--r--net.c19
1 files changed, 19 insertions, 0 deletions
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,