annotate libmlk-adventure/adventure/state/continue.c @ 282:a15f77eda9a4

adventure: rename functions
author David Demelier <markand@malikania.fr>
date Sun, 20 Dec 2020 11:04:41 +0100
parents 87b8c7510717
children 196264679079
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
281
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * continue.c -- select save to continue the game
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <core/alloc.h>
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <core/event.h>
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <core/game.h>
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/painter.h>
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/state.h>
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <adventure/dialog/save.h>
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include "mainmenu.h"
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include "continue.h"
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 struct self {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 struct state state;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 struct dialog_save dialog;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 };
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 static void
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 start(struct state *state)
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 struct self *self = state->data;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 dialog_save_init(&self->dialog);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 }
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 static void
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 handle(struct state *state, const union event *ev)
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 struct self *self = state->data;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 bool selected = false;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 switch (ev->type) {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 case EVENT_QUIT:
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 game_quit();
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 break;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 case EVENT_KEYDOWN:
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 if (ev->key.key == KEY_ESCAPE)
282
a15f77eda9a4 adventure: rename functions
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
55 game_switch(state_mainmenu_new(), false);
281
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 else
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 selected = dialog_save_handle(&self->dialog, ev);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 break;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 default:
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 selected = dialog_save_handle(&self->dialog, ev);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 break;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 }
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 if (selected)
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 game_quit();
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 }
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 static void
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 update(struct state *state, unsigned int ticks)
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 struct self *self = state->data;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 dialog_save_update(&self->dialog, ticks);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 }
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
75
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 static void
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 draw(struct state *state)
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 struct self *self = state->data;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 painter_set_color(0xffffffff);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 painter_clear();
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 dialog_save_draw(&self->dialog);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 painter_present();
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 }
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 static void
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 finish(struct state *state)
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 struct self *self = state->data;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
91
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 dialog_save_finish(&self->dialog);
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 }
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 struct state *
282
a15f77eda9a4 adventure: rename functions
David Demelier <markand@malikania.fr>
parents: 281
diff changeset
96 state_continue_new(void)
281
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 {
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 struct self *self;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 self = alloc_new0(sizeof (*self));
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 self->state.data = self;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 self->state.start = start;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 self->state.handle = handle;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 self->state.update = update;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 self->state.draw = draw;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 self->state.finish = finish;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
107
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 return &self->state;
87b8c7510717 rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 }