Mercurial > molko
annotate examples/example-label/example-label.c @ 593:f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
The structure is just an allocator and owner for various data shared among the
map and the tileset such as sprites, textures, animations...
While here, simplify use of mlk_(map|tileset)_loader_file so they don't have a
public structure anymore but insert themselves into the loader->data.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 21 Mar 2023 14:08:15 +0100 |
parents | c7664b679a95 |
children | ed1d3244ed57 |
rev | line source |
---|---|
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * example-label.c -- show how to use label and alignments |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
433
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <stddef.h> |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
431
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
21 #include <mlk/core/core.h> |
486 | 22 #include <mlk/core/err.h> |
431
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
23 #include <mlk/core/event.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
24 #include <mlk/core/game.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
25 #include <mlk/core/painter.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
26 #include <mlk/core/panic.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
27 #include <mlk/core/state.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
28 #include <mlk/core/sys.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
29 #include <mlk/core/util.h> |
8f59201dc76b
core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
415
diff
changeset
|
30 #include <mlk/core/window.h> |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
433
862b15c3a3ae
ui: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
32 #include <mlk/ui/align.h> |
862b15c3a3ae
ui: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
33 #include <mlk/ui/label.h> |
862b15c3a3ae
ui: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents:
431
diff
changeset
|
34 #include <mlk/ui/ui.h> |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
486 | 36 #include <mlk/example/example.h> |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
37 #include <mlk/example/glower.h> |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
39 static struct mlk_label_style style = { |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
40 .color = 0x005162ff |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
41 }; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
42 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
43 /* |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
44 * Add a glower effect to the main label in the middle. |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
45 */ |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
46 static void main_update(struct mlk_label_delegate *, struct mlk_label *, unsigned int); |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
47 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
48 static struct mlk_glower main_glower = { |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
49 .start = 0xffce7fff, |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
50 .end = 0xd58d6bff, |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
51 .delay = 22 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
52 }; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
53 static struct mlk_label_delegate main_delegate = { |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
54 .update = main_update |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
55 }; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
56 static struct mlk_label_style main_style; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
57 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
58 static struct { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
59 enum mlk_align align; |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
60 struct mlk_label label; |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 } table[] = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 { |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
63 .align = MLK_ALIGN_CENTER, |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
64 .label = { |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
65 .text = "The world is Malikania.", |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
66 .style = &main_style, |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
67 .delegate = &main_delegate |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
68 } |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
69 }, |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
70 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
71 .align = MLK_ALIGN_TOP_LEFT, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 .label = { |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
73 .text = "Top left", |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
74 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 }, |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
78 .align = MLK_ALIGN_TOP, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 .label = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 .text = "Top", |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
81 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 }, |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
85 .align = MLK_ALIGN_TOP_RIGHT, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 .label = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 .text = "Top right", |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
88 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 }, |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
92 .align = MLK_ALIGN_RIGHT, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 .label = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 .text = "Right", |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
95 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 }, |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
99 .align = MLK_ALIGN_BOTTOM_RIGHT, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 .label = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 .text = "Bottom right", |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
102 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 }, |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
106 .align = MLK_ALIGN_BOTTOM, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 .label = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 .text = "Bottom", |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
109 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 }, |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
113 .align = MLK_ALIGN_BOTTOM_LEFT, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 .label = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 .text = "Bottom left", |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
116 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 }, |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 { |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
120 .align = MLK_ALIGN_LEFT, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 .label = { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 .text = "Left", |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
123 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 }; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
128 static struct mlk_label mouse_label = { |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
129 .text = "This one follows your mouse and is not aligned.", |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
130 .style = &style |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 }; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
133 static void |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
134 main_update(struct mlk_label_delegate *delegate, struct mlk_label *label, unsigned int ticks) |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
135 { |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
136 (void)delegate; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
137 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
138 mlk_glower_update(&main_glower, ticks); |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
139 label->style->color = main_glower.color; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
140 } |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 static void |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 init(void) |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 { |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
145 unsigned int w, h; |
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
146 struct mlk_label *l; |
486 | 147 |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
522
diff
changeset
|
148 if (mlk_example_init("example-label") < 0) |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
522
diff
changeset
|
149 mlk_panic(); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 |
474
ca30ff96bbe0
core: util -> mlk_util
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
151 for (size_t i = 0; i < MLK_UTIL_SIZE(table); ++i) { |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
152 l = &table[i].label; |
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
153 mlk_label_query(l, &w, &h); |
487
f2d3c5a97884
ui: align -> mlk_align
David Demelier <markand@malikania.fr>
parents:
486
diff
changeset
|
154 mlk_align(table[i].align, &l->x, &l->y, w, h, 0, 0, mlk_window.w, mlk_window.h); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 } |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
156 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
157 mlk_glower_init(&main_glower); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 static void |
469
0d6206cee6b9
core: state -> mlk_state
David Demelier <markand@malikania.fr>
parents:
465
diff
changeset
|
161 handle(struct mlk_state *st, const union mlk_event *ev) |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 (void)st; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 switch (ev->type) { |
459
541cb950997b
examples: add libmlk-example library
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
166 case MLK_EVENT_MOUSE: |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
167 mouse_label.x = ev->mouse.x; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
168 mouse_label.y = ev->mouse.y; |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 break; |
459
541cb950997b
examples: add libmlk-example library
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
170 case MLK_EVENT_QUIT: |
541cb950997b
examples: add libmlk-example library
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
171 mlk_game_quit(); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 break; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 default: |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 break; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 static void |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
179 update(struct mlk_state *st, unsigned int ticks) |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
180 { |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
181 (void)st; |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
182 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
183 for (size_t i = 0; i < MLK_UTIL_SIZE(table); ++i) |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
184 mlk_label_update(&table[i].label, ticks); |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
185 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
186 mlk_label_update(&mouse_label, ticks); |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
187 } |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
188 |
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
189 static void |
469
0d6206cee6b9
core: state -> mlk_state
David Demelier <markand@malikania.fr>
parents:
465
diff
changeset
|
190 draw(struct mlk_state *st) |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
191 { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
192 (void)st; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
193 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
194 mlk_painter_set_color(MLK_EXAMPLE_BG); |
459
541cb950997b
examples: add libmlk-example library
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
195 mlk_painter_clear(); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
196 |
474
ca30ff96bbe0
core: util -> mlk_util
David Demelier <markand@malikania.fr>
parents:
469
diff
changeset
|
197 for (size_t i = 0; i < MLK_UTIL_SIZE(table); ++i) |
493
fce3b3c4b496
ui: label -> mlk_label
David Demelier <markand@malikania.fr>
parents:
487
diff
changeset
|
198 mlk_label_draw(&table[i].label); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
200 mlk_label_draw(&mouse_label); |
459
541cb950997b
examples: add libmlk-example library
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
201 mlk_painter_present(); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
204 static void |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 run(void) |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
206 { |
469
0d6206cee6b9
core: state -> mlk_state
David Demelier <markand@malikania.fr>
parents:
465
diff
changeset
|
207 struct mlk_state state = { |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 .handle = handle, |
507
d49a05e7a5b5
ui: separate delegate/style
David Demelier <markand@malikania.fr>
parents:
498
diff
changeset
|
209 .update = update, |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 .draw = draw |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 }; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
212 |
522
f45a023f6690
core: doxygenize game
David Demelier <markand@malikania.fr>
parents:
507
diff
changeset
|
213 mlk_game_init(); |
459
541cb950997b
examples: add libmlk-example library
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
214 mlk_game_push(&state); |
541cb950997b
examples: add libmlk-example library
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
215 mlk_game_loop(); |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 } |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 |
498
41267f6e344d
examples: use mlk_example_finish
David Demelier <markand@malikania.fr>
parents:
497
diff
changeset
|
218 static void |
41267f6e344d
examples: use mlk_example_finish
David Demelier <markand@malikania.fr>
parents:
497
diff
changeset
|
219 quit(void) |
41267f6e344d
examples: use mlk_example_finish
David Demelier <markand@malikania.fr>
parents:
497
diff
changeset
|
220 { |
41267f6e344d
examples: use mlk_example_finish
David Demelier <markand@malikania.fr>
parents:
497
diff
changeset
|
221 mlk_example_finish(); |
41267f6e344d
examples: use mlk_example_finish
David Demelier <markand@malikania.fr>
parents:
497
diff
changeset
|
222 } |
41267f6e344d
examples: use mlk_example_finish
David Demelier <markand@malikania.fr>
parents:
497
diff
changeset
|
223 |
415
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 int |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 main(int argc, char **argv) |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
226 { |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
227 (void)argc; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
228 (void)argv; |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
229 |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
230 init(); |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 run(); |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
232 quit(); |
a5b98db4fd87
misc: fix .hgignore too greedy
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
233 } |