annotate libmlk-example/mlk/example/registry.c @ 580:459ff09c09b3

core: animation can be looped
author David Demelier <markand@malikania.fr>
date Sat, 11 Mar 2023 21:20:33 +0100
parents cba66f7d8a53
children 76ce31b0151f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * registry.h -- registry of resources
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 431
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <stddef.h>
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
431
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 414
diff changeset
21 #include <mlk/core/image.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 414
diff changeset
22 #include <mlk/core/panic.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 414
diff changeset
23 #include <mlk/core/util.h>
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 414
diff changeset
24 #include <mlk/core/sys.h>
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
26 #include <assets/images/battle-background.h>
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
27 #include <assets/images/black-cat.h>
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
28 #include <assets/images/haunted-wood.h>
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
29 #include <assets/images/sword.h>
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
30
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
31 #include <assets/sounds/fire.h>
482
f78455f45bf6 examples: improve example-action more
David Demelier <markand@malikania.fr>
parents: 479
diff changeset
32 #include <assets/sounds/open-chest.h>
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
580
459ff09c09b3 core: animation can be looped
David Demelier <markand@malikania.fr>
parents: 571
diff changeset
34 #include <assets/sprites/cat-running.h>
479
8e41ed5474cf examples: resurrect example-action
David Demelier <markand@malikania.fr>
parents: 474
diff changeset
35 #include <assets/sprites/chest.h>
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
36 #include <assets/sprites/explosion.h>
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
37 #include <assets/sprites/john-sword.h>
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
38 #include <assets/sprites/john-walk.h>
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
39 #include <assets/sprites/john.h>
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
40 #include <assets/sprites/numbers.h>
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
41 #include <assets/sprites/people.h>
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
42 #include <assets/sprites/ui-cursor.h>
552
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents: 547
diff changeset
43 #include <assets/sprites/water.h>
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents: 547
diff changeset
44 #include <assets/sprites/world.h>
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
45
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
46 #include <assets/music/vabsounds-romance.h>
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
47
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
48 #include "registry.h"
263
cd5bdb995052 cmake: create a new libmlk-data library
David Demelier <markand@malikania.fr>
parents: 261
diff changeset
49
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
50 struct mlk_texture mlk_registry_images[MLK_REGISTRY_IMAGE_LAST] = {0};
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
51 struct mlk_texture mlk_registry_textures[MLK_REGISTRY_TEXTURE_LAST] = {0};
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
52 struct mlk_sprite mlk_registry_sprites[MLK_REGISTRY_TEXTURE_LAST] = {0};
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
53 struct mlk_sound mlk_registry_sounds[MLK_REGISTRY_SOUND_LAST] = {0};
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
54 struct mlk_music mlk_registry_music[MLK_REGISTRY_MUSIC_LAST] = {0};
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
56 #define MLK_REGISTRY_IMAGE(i, data) \
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
57 { (i), (data), sizeof (data) }
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
58 #define MLK_REGISTRY_TEXTURE(s, data, cw, ch) \
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
59 { (s), (data), sizeof (data), (cw), (ch) }
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
60 #define MLK_REGISTRY_SOUND(s, data) \
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
61 { (s), (data), sizeof (data) }
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
62 #define MLK_REGISTRY_MUSIC(m, data) \
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
63 { (m), (data), sizeof (data) }
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
64
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
65 static const struct {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
66 enum mlk_registry_image index;
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
67 const unsigned char *data;
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
68 size_t datasz;
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
69 } images[] = {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
70 MLK_REGISTRY_IMAGE(MLK_REGISTRY_IMAGE_BATTLE_BACKGROUND, assets_images_battle_background)
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
71 };
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
72
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 static const struct {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
74 enum mlk_registry_texture index;
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
75 const unsigned char *data;
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
76 size_t datasz;
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 unsigned int cellw;
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 unsigned int cellh;
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 } textures[] = {
580
459ff09c09b3 core: animation can be looped
David Demelier <markand@malikania.fr>
parents: 571
diff changeset
80 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_BLACK_CAT, assets_images_black_cat, 0, 0),
459ff09c09b3 core: animation can be looped
David Demelier <markand@malikania.fr>
parents: 571
diff changeset
81 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_CAT_RUNNING, assets_sprites_cat_running, 512, 256),
459ff09c09b3 core: animation can be looped
David Demelier <markand@malikania.fr>
parents: 571
diff changeset
82 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_CHEST, assets_sprites_chest, 32, 32),
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
83 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_CURSOR, assets_sprites_ui_cursor, 24, 24),
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
84 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_EXPLOSION, assets_sprites_explosion, 256, 256),
580
459ff09c09b3 core: animation can be looped
David Demelier <markand@malikania.fr>
parents: 571
diff changeset
85 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_HAUNTED_WOOD, assets_images_haunted_wood, 0, 0),
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
86 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_JOHN, assets_sprites_john, 48, 48),
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
87 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_JOHN_SWORD, assets_sprites_john_sword, 256, 256),
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
88 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_JOHN_WALK, assets_sprites_john_walk, 256, 256),
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
89 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_NUMBERS, assets_sprites_numbers, 48, 48),
580
459ff09c09b3 core: animation can be looped
David Demelier <markand@malikania.fr>
parents: 571
diff changeset
90 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_PEOPLE, assets_sprites_people, 48, 48),
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
91 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_SWORD, assets_images_sword, 0, 0),
580
459ff09c09b3 core: animation can be looped
David Demelier <markand@malikania.fr>
parents: 571
diff changeset
92 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_WATER, assets_sprites_water, 48, 48),
552
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents: 547
diff changeset
93 MLK_REGISTRY_TEXTURE(MLK_REGISTRY_TEXTURE_WORLD, assets_sprites_world, 48, 48)
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 };
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 static const struct {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
97 enum mlk_registry_sound index;
382
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
98 const unsigned char *data;
43d155668a55 rpg: expose battle state functions
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
99 size_t datasz;
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 } sounds[] = {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
101 MLK_REGISTRY_SOUND(MLK_REGISTRY_SOUND_FIRE, assets_sounds_fire),
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
102 MLK_REGISTRY_SOUND(MLK_REGISTRY_SOUND_OPEN_CHEST, assets_sounds_open_chest)
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 };
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
104
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
105 static const struct {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
106 enum mlk_registry_music index;
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
107 const unsigned char *data;
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
108 size_t datasz;
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
109 } musics[] = {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
110 MLK_REGISTRY_MUSIC(MLK_REGISTRY_MUSIC_ROMANCE, assets_music_vabsounds_romance)
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
111 };
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
112
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 static void
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
114 load_images(void)
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
115 {
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
116 struct mlk_texture *texture;
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
117
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
118 for (size_t i = 0; i < MLK_UTIL_SIZE(images); ++i) {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
119 texture = &mlk_registry_images[images[i].index];
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
120
547
c7664b679a95 misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents: 516
diff changeset
121 if (mlk_image_openmem(texture, images[i].data, images[i].datasz) < 0)
571
cba66f7d8a53 misc: various windows fixes
David Demelier <markand@malikania.fr>
parents: 554
diff changeset
122 mlk_panicf("unable to open image: %s", mlk_err());
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
123 }
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
124 }
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
125
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
126 static void
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 load_textures_and_sprites(void)
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 {
479
8e41ed5474cf examples: resurrect example-action
David Demelier <markand@malikania.fr>
parents: 474
diff changeset
129 struct mlk_texture *texture;
8e41ed5474cf examples: resurrect example-action
David Demelier <markand@malikania.fr>
parents: 474
diff changeset
130 struct mlk_sprite *sprite;
8e41ed5474cf examples: resurrect example-action
David Demelier <markand@malikania.fr>
parents: 474
diff changeset
131
474
ca30ff96bbe0 core: util -> mlk_util
David Demelier <markand@malikania.fr>
parents: 472
diff changeset
132 for (size_t i = 0; i < MLK_UTIL_SIZE(textures); ++i) {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
133 texture = &mlk_registry_textures[textures[i].index];
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
134 sprite = &mlk_registry_sprites[textures[i].index];
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
547
c7664b679a95 misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents: 516
diff changeset
136 if (mlk_image_openmem(texture, textures[i].data, textures[i].datasz) < 0)
571
cba66f7d8a53 misc: various windows fixes
David Demelier <markand@malikania.fr>
parents: 554
diff changeset
137 mlk_panicf("unable to open image: %s", mlk_err());
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
516
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
139 if (textures[i].cellw == 0 || textures[i].cellh == 0) {
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
140 sprite->cellw = texture->w;
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
141 sprite->cellh = texture->h;
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
142 } else {
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
143 sprite->cellw = textures[i].cellw;
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
144 sprite->cellh = textures[i].cellh;
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
145 }
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
146
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
147 sprite->texture = texture;
6af0524913b3 misc: fix
David Demelier <markand@malikania.fr>
parents: 500
diff changeset
148 mlk_sprite_init(sprite);
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 }
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 }
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
151
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 static void
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 load_sounds(void)
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 {
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
155 struct mlk_sound *sound;
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
156
474
ca30ff96bbe0 core: util -> mlk_util
David Demelier <markand@malikania.fr>
parents: 472
diff changeset
157 for (size_t i = 0; i < MLK_UTIL_SIZE(sounds); ++i) {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
158 sound = &mlk_registry_sounds[sounds[i].index];
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
159
547
c7664b679a95 misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents: 516
diff changeset
160 if (mlk_sound_openmem(sound, sounds[i].data, sounds[i].datasz) < 0)
571
cba66f7d8a53 misc: various windows fixes
David Demelier <markand@malikania.fr>
parents: 554
diff changeset
161 mlk_panicf("unable to open sound: %s", mlk_err());
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
162 }
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
163 }
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
164
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
165 static void
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
166 load_music(void)
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
167 {
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
168 struct mlk_music *music;
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
169
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
170 for (size_t i = 0; i < MLK_UTIL_SIZE(musics); ++i) {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
171 music = &mlk_registry_music[musics[i].index];
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
172
547
c7664b679a95 misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents: 516
diff changeset
173 if (mlk_music_openmem(music, musics[i].data, musics[i].datasz) < 0)
571
cba66f7d8a53 misc: various windows fixes
David Demelier <markand@malikania.fr>
parents: 554
diff changeset
174 mlk_panicf("unable to open music: %s", mlk_err());
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 }
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 }
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 void
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
179 mlk_registry_init(void)
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 {
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 209
diff changeset
181 load_images();
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 load_textures_and_sprites();
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 load_sounds();
486
d6757c30658e core: rework errors
David Demelier <markand@malikania.fr>
parents: 482
diff changeset
184 load_music();
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 }
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 void
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
188 mlk_registry_finish(void)
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 {
500
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
190 for (size_t i = 0; i < MLK_UTIL_SIZE(mlk_registry_images); ++i)
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
191 mlk_texture_finish(&mlk_registry_images[i]);
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
192 for (size_t i = 0; i < MLK_UTIL_SIZE(mlk_registry_textures); ++i)
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
193 mlk_texture_finish(&mlk_registry_textures[i]);
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
194 for (size_t i = 0; i < MLK_UTIL_SIZE(mlk_registry_sounds); ++i)
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
195 mlk_sound_finish(&mlk_registry_sounds[i]);
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
196 for (size_t i = 0; i < MLK_UTIL_SIZE(mlk_registry_music); ++i)
d7855791a2b8 examples: prefix mlk
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
197 mlk_music_finish(&mlk_registry_music[i]);
192
4ad7420ab678 rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 }