annotate examples/example-action.c @ 201:bd5b3a11fe6f

core: remove unneeded files
author David Demelier <markand@malikania.fr>
date Mon, 09 Nov 2020 19:19:57 +0100
parents 31d7f23c0588
children 133926e08d6e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
2 * example-action.c -- example on how to use automatic actions
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <assert.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <core/action.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/clock.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
23 #include <core/core.h>
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include <core/event.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <core/image.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include <core/maths.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <core/painter.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include <core/panic.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include <core/script.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 #include <core/sprite.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #include <core/sys.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 #include <core/texture.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 #include <core/util.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #include <core/window.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
36 #include <ui/theme.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
37 #include <ui/ui.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
38
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
39 #include <rpg/message.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
40 #include <rpg/rpg.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
41
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 #include <assets/sprites/chest.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 #include <assets/sprites/people.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
45 #define W (1280)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
46 #define H (720)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
47
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
48 #define MW (W * 0.75)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
49 #define MX ((W / 2) - (MW / 2))
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
50 #define MY (100)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
52 /* This is a stack of "parallel" events. */
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
53 static struct action_stack events;
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
54
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
55 /* This is a stack of modal events. */
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
56 static struct action_stack modal;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 /*
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 * Event object for the chest to click on.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 static struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 struct message msg;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 struct action msg_act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 int x;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 int y;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 bool opened;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 struct texture image;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 struct sprite sprite;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 struct action event;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 } chest = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
72 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
73 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
74 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 "100000 pièces.",
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 "Te voilà riche sale file de crevette."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 };
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 /*
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * Event object for the guide who ask dialog with you.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 * It is a script spawned upon click like this.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 * [guide.event]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 * | spawn
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 * (on click)------------------->[message 1]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 * v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 * [message 2]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 * v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 * [question 3]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 * spawn v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 * [response]<---------------------[check result]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 * v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 * [message 4/5]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 static struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 struct message msg;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 struct action act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 } msgs[5];
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
104
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 /* This is the sprite and action to click on. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 int x;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 int y;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 struct texture image;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 struct sprite sprite;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 struct action event;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 /* This is the event for the response. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 struct action response;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 struct script script;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 struct action script_act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 } guide = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 .msgs = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
121 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
122 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
123 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
124 .delay = MESSAGE_DELAY_DEFAULT,
141
4eeeccf2b732 core: add trace/vtrace functions, closes #2493
David Demelier <markand@malikania.fr>
parents: 140
diff changeset
125 .flags = MESSAGE_FLAGS_FADEIN,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 "Bienvenue dans ce monde Molko."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
133 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
134 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
135 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 "Penses tu vraiment pouvoir me battre ?"
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
143 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
144 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
145 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
146 .flags = MESSAGE_FLAGS_QUESTION,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 "Non j'ai la trouille.",
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 "Bien sûr, je suis la légende."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
153
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 /* In case of NO. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
157 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
158 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
159 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 "Poule mouillée."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 /* In case of YES. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
169 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
170 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
171 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 "Prépare toi à souffrir."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 };
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 static bool
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 guide_response_update(struct action *act, unsigned int ticks)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 /* Immediately return to get access to end. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 (void)ticks;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 return true;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
189
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 guide_response_end(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 /* We add a final response depending on the result. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 const int index = guide.msgs[2].msg.index + 3;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
197
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 message_action(&guide.msgs[index].msg, &guide.msgs[index].act);
161
31d7f23c0588 ui: label no longer has w, h fields
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
199 message_query(&guide.msgs[index].msg, NULL, &guide.msgs[index].msg.h);
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
200 action_stack_add(&modal, &guide.msgs[index].act);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
202
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 guide_popup(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 /* Prepare the script with first 3 messages. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 for (size_t i = 0; i < 3; ++i) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 message_action(&guide.msgs[i].msg, &guide.msgs[i].act);
161
31d7f23c0588 ui: label no longer has w, h fields
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
209 message_query(&guide.msgs[i].msg, NULL, &guide.msgs[i].msg.h);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 script_append(&guide.script, &guide.msgs[i].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 /* Reset the message index. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 guide.msgs[2].msg.index = 0;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
215
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 /* This is final action that analyze user input. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 guide.response.update = guide_response_update;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 guide.response.end = guide_response_end;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 script_append(&guide.script, &guide.response);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
220
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 script_action(&guide.script, &guide.script_act);
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
222 action_stack_add(&modal, &guide.script_act);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 guide_handle(struct action *act, const union event *ev)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
229
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
230 if (!action_stack_completed(&modal))
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 return;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
232
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 switch (ev->type) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 case EVENT_CLICKDOWN:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 if (maths_is_boxed(guide.x, guide.y,
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 guide.sprite.cellw, guide.sprite.cellh,
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 ev->click.x, ev->click.y))
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 guide_popup();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 break;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 default:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 break;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
244
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 guide_draw(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
249
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 sprite_draw(&guide.sprite, 0, 0, guide.x, guide.y);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
252
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 guide_init(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 if (!image_openmem(&guide.image, sprites_people, sizeof (sprites_people)))
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 panic();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
258
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 sprite_init(&guide.sprite, &guide.image, 48, 48);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
260
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 /* This is the global guide action. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 guide.event.handle = guide_handle;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 guide.event.draw = guide_draw;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 guide.x = 200;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 guide.y = 200;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
267
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 chest_handle(struct action *act, const union event *ev)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
272
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
273 if (chest.opened || !action_stack_completed(&modal))
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 return;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
275
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 switch (ev->type) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 case EVENT_CLICKDOWN:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 if (maths_is_boxed(chest.x, chest.y, chest.sprite.cellw, chest.sprite.cellh,
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 ev->click.x, ev->click.y)) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 chest.opened = true;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
281 message_action(&chest.msg, &chest.msg_act);
161
31d7f23c0588 ui: label no longer has w, h fields
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
282 message_query(&chest.msg, NULL, &chest.msg.h);
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
283 action_stack_add(&modal, &chest.msg_act);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 default:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 break;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
288 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
289
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 chest_draw(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
294
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 const int row = chest.opened ? 3 : 0;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
296
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 sprite_draw(&chest.sprite, row, 0, chest.x, chest.y);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
299
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 chest_init(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 if (!image_openmem(&chest.image, sprites_chest, sizeof (sprites_chest)))
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 panic();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
305
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 sprite_init(&chest.sprite, &chest.image, 32, 32);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
307
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 chest.x = 100;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 chest.y = 100;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 chest.event.handle = chest_handle;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
311 chest.event.draw = chest_draw;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
313
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 init(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
317 if (!core_init() || !ui_init() || !rpg_init())
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
318 panic();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
319 if (!window_open("Example - Action", W, H))
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 panic();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
321
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 guide_init();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 chest_init();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
325
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
326 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 run(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 struct clock clock = {0};
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
330
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
331 clock_start(&clock);
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
332 action_stack_add(&events, &chest.event);
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
333 action_stack_add(&events, &guide.event);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
334
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
335 for (;;) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
336 unsigned int elapsed = clock_elapsed(&clock);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
337
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
338 clock_start(&clock);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
339
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 for (union event ev; event_poll(&ev); ) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
341 switch (ev.type) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
342 case EVENT_QUIT:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 return;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
344 default:
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
345 action_stack_handle(&events, &ev);
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
346 action_stack_handle(&modal, &ev);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
347 break;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
348 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
350
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 painter_set_color(0xffffffff);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
352 painter_clear();
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
353 action_stack_update(&events, elapsed);
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
354 action_stack_update(&modal, elapsed);
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
355 action_stack_draw(&events);
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
356 action_stack_draw(&modal);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
357 painter_present();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
358
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
359 if ((elapsed = clock_elapsed(&clock)) < 20)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
360 delay(20 - elapsed);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
362 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
363
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 quit(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
366 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
367 window_finish();
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
368 rpg_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
369 ui_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
370 core_finish();
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
371 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
372
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
373 int
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
374 main(int argc, char **argv)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
375 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
376 (void)argc;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
377 (void)argv;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
378
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
379 init();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
380 run();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
381 quit();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
382
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
383 return 0;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
384 }