annotate examples/example-action/main.c @ 313:dbfe05b88627

cmake: bring back for good It's just too complicated to get portability done right using pure GNU make and since we're targeting more OSes than Linux we have to incorporate some portability bits.
author David Demelier <markand@malikania.fr>
date Wed, 22 Sep 2021 07:19:32 +0200
parents 3638b39ef2bf
children d01e83210ca2
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>
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 }