annotate src/examples/example-action/main.c @ 320:8f9937403749

misc: improve loading of data
author David Demelier <markand@malikania.fr>
date Fri, 01 Oct 2021 20:30:00 +0200
parents examples/example-action/main.c@d01e83210ca2
children
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 *
314
d01e83210ca2 misc: update years
David Demelier <markand@malikania.fr>
parents: 300
diff changeset
4 * Copyright (c) 2020-2021 David Demelier <markand@malikania.fr>
136
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>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
22 #include <core/core.h>
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/event.h>
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
24 #include <core/game.h>
136
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>
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
31 #include <core/state.h>
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 #include <core/sys.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 #include <core/texture.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #include <core/util.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 #include <core/window.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
37 #include <ui/theme.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
38 #include <ui/ui.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
39
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
40 #include <rpg/message.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
41 #include <rpg/rpg.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
42
263
cd5bdb995052 cmake: create a new libmlk-data library
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
43 #define W 1280
cd5bdb995052 cmake: create a new libmlk-data library
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
44 #define H 720
cd5bdb995052 cmake: create a new libmlk-data library
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
45 #define PATH(r) util_pathf("%s/mlk-adventure/%s", sys_dir(SYS_DIR_DATA), r)
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
46
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
47 #define MW (W * 0.75)
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
48 #define MX ((W / 2) - (MW / 2))
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
49 #define MY (100)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
50
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
51 /* This is a stack of "parallel" events. */
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
52 static struct action_stack events;
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
53
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
54 /* This is a stack of modal events. */
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
55 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
56
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 * 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
59 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 static struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 struct message msg;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 struct action msg_act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 int x;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 int y;
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
65 int opened;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 struct texture image;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 struct sprite sprite;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 struct action event;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 } chest = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
71 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
72 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
73 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 "100000 pièces.",
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 "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
77 }
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 * 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
83 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 * 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
85 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 * [guide.event]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 * | spawn
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 * (on click)------------------->[message 1]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 * v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 * [message 2]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 * v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 * [question 3]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 * spawn v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 * [response]<---------------------[check result]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 * v
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 * [message 4/5]
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 static struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 struct message msg;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 struct action act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 } msgs[5];
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 /* 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
105 int x;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 int y;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 struct texture image;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 struct sprite sprite;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 struct action event;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 /* 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
112 struct action response;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 struct script script;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 struct action script_act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 } guide = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 .msgs = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
120 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
121 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
122 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
123 .delay = MESSAGE_DELAY_DEFAULT,
141
4eeeccf2b732 core: add trace/vtrace functions, closes #2493
David Demelier <markand@malikania.fr>
parents: 140
diff changeset
124 .flags = MESSAGE_FLAGS_FADEIN,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 "Bienvenue dans ce monde Molko."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 }
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 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
132 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
133 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
134 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 "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
137 }
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 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
142 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
143 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
144 .w = MW,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
145 .flags = MESSAGE_FLAGS_QUESTION,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 "Non j'ai la trouille.",
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 "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
149 }
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 /* In case of NO. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
156 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
157 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
158 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 "Poule mouillée."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 }
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 /* In case of YES. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 .msg = {
140
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
168 .x = MX,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
169 .y = MY,
453651d76f7c core: upgrade message in terms of customization
David Demelier <markand@malikania.fr>
parents: 139
diff changeset
170 .w = MW,
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 .text = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 "Prépare toi à souffrir."
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 }
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
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
179 static int
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 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
181 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 /* 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
183 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 (void)ticks;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
186 return 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 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
191 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
193
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 /* 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
195 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
196
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 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
198 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
199 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
200 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 guide_popup(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 /* 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
206 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
207 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
208 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
209 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
210 }
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 /* Reset the message index. */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 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
214
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 /* 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
216 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
217 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
218 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
219
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 script_action(&guide.script, &guide.script_act);
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
221 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
222 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 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
226 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
229 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
230 return;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
231
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 switch (ev->type) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 case EVENT_CLICKDOWN:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 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
235 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
236 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
237 guide_popup();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 break;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 default:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 break;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 guide_draw(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
248
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 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
250 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 guide_init(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
255 if (image_open(&guide.image, PATH("sprites/people.png")) < 0)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 panic();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
257
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 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
259
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 /* 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
261 guide.event.handle = guide_handle;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 guide.event.draw = guide_draw;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 guide.x = 200;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 guide.y = 200;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 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
269 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
271
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
272 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
273 return;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
274
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 switch (ev->type) {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 case EVENT_CLICKDOWN:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 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
278 ev->click.x, ev->click.y)) {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
279 chest.opened = 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 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
281 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
282 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
283 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 default:
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 break;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 chest_draw(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 (void)act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
293
294
1606b061e4ce examples: fix actions
David Demelier <markand@malikania.fr>
parents: 263
diff changeset
294 const int row = chest.opened ? chest.sprite.nrows - 1 : 0;
1606b061e4ce examples: fix actions
David Demelier <markand@malikania.fr>
parents: 263
diff changeset
295 const int col = chest.opened ? chest.sprite.ncols - 1 : 0;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
296
294
1606b061e4ce examples: fix actions
David Demelier <markand@malikania.fr>
parents: 263
diff changeset
297 sprite_draw(&chest.sprite, row, col, chest.x, chest.y);
136
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 {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
303 if (image_open(&chest.image, PATH("sprites/chest.png")) < 0)
136
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 {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
317 if (core_init("fr.malikania", "actions") < 0 || ui_init() < 0 || rpg_init() < 0)
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
318 panic();
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 294
diff changeset
319 if (window_open("Example - Action", W, H) < 0)
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
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
327 handle(struct state *st, const union event *ev)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
328 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
329 (void)st;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
330
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
331 switch (ev->type) {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
332 case EVENT_QUIT:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
333 game_quit();
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
334 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
335 default:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
336 action_stack_handle(&events, ev);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
337 action_stack_handle(&modal, ev);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
338 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
339 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
340 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
341
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
342 static void
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
343 update(struct state *st, unsigned int ticks)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
344 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
345 (void)st;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
346
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
347 action_stack_update(&events, ticks);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
348 action_stack_update(&modal, ticks);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
349 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
350
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
351 static void
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
352 draw(struct state *st)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
353 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
354 (void)st;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
355
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
356 painter_set_color(0xffffffff);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
357 painter_clear();
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
358 action_stack_draw(&events);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
359 action_stack_draw(&modal);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
360 painter_present();
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
361 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
362
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
363 static void
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 run(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 {
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
366 struct state state = {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
367 .handle = handle,
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
368 .update = update,
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
369 .draw = draw
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
370 };
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
371
139
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
372 action_stack_add(&events, &chest.event);
8b035f7f978a core: add action_stack_completed function
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
373 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
374
300
3638b39ef2bf examples: fix with new game_push function
David Demelier <markand@malikania.fr>
parents: 298
diff changeset
375 game_push(&state);
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 161
diff changeset
376 game_loop();
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
377 }
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 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
380 quit(void)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
381 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
382 window_finish();
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
383 rpg_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
384 ui_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
385 core_finish();
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
386 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
387
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
388 int
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
389 main(int argc, char **argv)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
390 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
391 (void)argc;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
392 (void)argv;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
393
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
394 init();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
395 run();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
396 quit();
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
397
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
398 return 0;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
399 }