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