annotate examples/example-drawable/main.c @ 381:f48367c5a92e

core: remove useless alext.h
author David Demelier <markand@malikania.fr>
date Fri, 07 Jan 2022 21:50:37 +0100
parents 460c78706989
children ae2dcf40c1eb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * example-drawable.c -- example on how to use automatic drawables
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
378
460c78706989 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 368
diff changeset
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
19 #include <stdio.h>
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
20 #include <stdlib.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
21
182
f6497ec74b49 core: add alloc module, closes #2512
David Demelier <markand@malikania.fr>
parents: 156
diff changeset
22 #include <core/alloc.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/animation.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
24 #include <core/core.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <core/event.h>
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
26 #include <core/game.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <core/drawable.h>
368
15bdac29ba4b core: split drawable and drawable_stack
David Demelier <markand@malikania.fr>
parents: 366
diff changeset
28 #include <core/drawable-stack.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include <core/key.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 #include <core/painter.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #include <core/panic.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 #include <core/sys.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 #include <core/image.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #include <core/sprite.h>
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
35 #include <core/state.h>
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 #include <core/texture.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 #include <core/util.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 #include <core/window.h>
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
40 #include <ui/label.h>
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
41 #include <ui/theme.h>
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
42 #include <ui/ui.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 145
diff changeset
43
364
570ab19bf268 misc: start removing adventure from library
David Demelier <markand@malikania.fr>
parents: 325
diff changeset
44 #include <assets/sprites/explosion.h>
570ab19bf268 misc: start removing adventure from library
David Demelier <markand@malikania.fr>
parents: 325
diff changeset
45
263
cd5bdb995052 cmake: create a new libmlk-data library
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
46 #define W 1280
cd5bdb995052 cmake: create a new libmlk-data library
David Demelier <markand@malikania.fr>
parents: 241
diff changeset
47 #define H 720
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 static struct label help = {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 .x = 10,
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 .y = 10,
153
aa6e70e330a1 ui: make label less smart
David Demelier <markand@malikania.fr>
parents: 150
diff changeset
52 .text = "Keys: <Esc> to reset. Click anywhere to spawn a drawable.",
145
7f1af54bb35a core: rework label alignment, closes #2494 @1h
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
53 .flags = LABEL_FLAGS_SHADOW
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 };
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 static struct drawable_stack stack;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 /*
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 * List of drawables for this example.
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 * -----------------------------------------------------------------------------
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 /* 0: Explosion animation. */
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 static struct texture explosion_tex;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 static struct sprite explosion_sprite;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
66
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
67 struct explosion {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
68 struct animation anim;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
69 struct drawable dw;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
70 };
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 init(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 {
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 364
diff changeset
75 if (core_init("fr.malikania", "example-drawable") < 0 || ui_init() < 0)
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
76 panic();
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 263
diff changeset
77 if (window_open("Example - Drawable", W, H) < 0)
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 panic();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 /* 0: Explosion animation. */
364
570ab19bf268 misc: start removing adventure from library
David Demelier <markand@malikania.fr>
parents: 325
diff changeset
81 if (image_openmem(&explosion_tex, assets_sprites_explosion, sizeof (assets_sprites_explosion)) < 0)
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 panic();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 sprite_init(&explosion_sprite, &explosion_tex, 256, 256);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
85 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
86
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 263
diff changeset
87 static int
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
88 explosion_update(struct drawable *dw, unsigned int ticks)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
89 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
90 struct explosion *ex = dw->data;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
91
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
92 return animation_update(&ex->anim, ticks);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
93 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
94
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
95 static void
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
96 explosion_draw(struct drawable *dw)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
97 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
98 struct explosion *ex = dw->data;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
99
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
100 animation_draw(&ex->anim, ex->dw.x, ex->dw.y);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
101 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
102
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
103 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
104 explosion_finish(struct drawable *dw)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
105 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
106 free(dw->data);
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 spawn(int x, int y)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 {
227
befa2e855d3b core: reinterface the alloc module
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
112 struct explosion *ex = alloc_new0(sizeof (*ex));
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
113
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
114 animation_init(&ex->anim, &explosion_sprite, 15);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
115
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
116 ex->dw.data = ex;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
117 ex->dw.x = x - (int)(explosion_sprite.cellw / 2);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
118 ex->dw.y = y - (int)(explosion_sprite.cellh / 2);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
119 ex->dw.update = explosion_update;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
120 ex->dw.draw = explosion_draw;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
121 ex->dw.finish = explosion_finish;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
122
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
123 drawable_stack_add(&stack, &ex->dw);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
124 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
125
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
126 static void
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
127 handle(struct state *st, const union event *ev)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
128 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
129 (void)st;
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
131 switch (ev->type) {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
132 case EVENT_KEYDOWN:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
133 switch (ev->key.key) {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
134 case KEY_ESCAPE:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
135 drawable_stack_finish(&stack);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
136 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
137 default:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
138 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
139 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
140 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
141 case EVENT_CLICKDOWN:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
142 spawn(ev->click.x, ev->click.y);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
143 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
144 case EVENT_QUIT:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
145 game_quit();
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
146 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
147 default:
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
148 break;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
149 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
150 }
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents: 134
diff changeset
151
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
152 static void
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
153 update(struct state *st, unsigned int ticks)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
154 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
155 (void)st;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
156
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
157 drawable_stack_update(&stack, ticks);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
158
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
159 }
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
160
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
161 static void
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
162 draw(struct state *st)
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
163 {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
164 (void)st;
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
165
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
166 painter_set_color(0xebede9ff);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
167 painter_clear();
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
168 label_draw(&help);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
169 drawable_stack_draw(&stack);
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
170 painter_present();
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 run(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 {
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
176 struct state state = {
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
177 .handle = handle,
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
178 .update = update,
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
179 .draw = draw
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
180 };
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
181
300
3638b39ef2bf examples: fix with new game_push function
David Demelier <markand@malikania.fr>
parents: 298
diff changeset
182 game_push(&state);
207
133926e08d6e examples: use game_loop for all
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
183 game_loop();
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 static void
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 quit(void)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 {
156
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
189 window_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
190 ui_finish();
c3a40062acc2 misc: create more generic startup function, closes #2500
David Demelier <markand@malikania.fr>
parents: 153
diff changeset
191 core_finish();
129
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 }
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
193
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 int
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 main(int argc, char **argv)
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 {
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 (void)argc;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 (void)argv;
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
199
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 init();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 run();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 quit();
9301c7c84471 core: implement basic drawables, closes #2491 @1h
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 }