Mercurial > molko
annotate examples/example-action/main.c @ 314:d01e83210ca2
misc: update years
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 22 Sep 2021 07:22:20 +0200 |
parents | 3638b39ef2bf |
children |
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 | 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 } |