Mercurial > molko
annotate libmlk-rpg/mlk/rpg/tileset-loader-file.c @ 631:bb67f935a93f
rpg: rework a little tileset/map loaders
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 27 Aug 2023 11:28:35 +0200 |
parents | fee7bd30725c |
children |
rev | line source |
---|---|
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
2 * tileset-loader-file.c -- tileset file loader implementation |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <string.h> |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <mlk/core/alloc.h> |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <mlk/core/animation.h> |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include <mlk/core/image.h> |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include <mlk/core/sprite.h> |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 #include <mlk/core/texture.h> |
629
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
27 #include <mlk/core/util.h> |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
29 #include "loader-file_p.h" |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 #include "tileset-loader-file.h" |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 #include "tileset-loader.h" |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 #include "tileset.h" |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
629
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
34 #define THIS(loader) \ |
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
35 MLK_CONTAINER_OF(loader, struct mlk_tileset_loader_file, iface) |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
37 static void |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
38 trash(struct mlk_tileset_loader_file *file) |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
39 { |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
40 mlk__loader_file_clear(file->lf); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
41 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
42 mlk_alloc_free(file->tilecollisions); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
43 mlk_alloc_free(file->tileanimations); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
44 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
45 file->tilecollisions = NULL; |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
46 file->tileanimations = NULL; |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
47 } |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
48 |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 static void * |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 expand(void **array, size_t n, size_t w) |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 { |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 void *ptr; |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 if (!*array) |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 ptr = mlk_alloc_new0(n, w); |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 else |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 ptr = mlk_alloc_expand(*array, n); |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 if (ptr) |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 *array = ptr; |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 return ptr; |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 } |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
65 static struct mlk_texture * |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
66 new_texture(struct mlk_tileset_loader *self, struct mlk_tileset *tileset, const char *ident) |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 { |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
68 (void)tileset; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
70 struct mlk_tileset_loader_file *file = THIS(self); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
72 return mlk__loader_file_texture_open(file->lf, ident); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 } |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 static struct mlk_sprite * |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
76 new_sprite(struct mlk_tileset_loader *self, struct mlk_tileset *tileset) |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 { |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
78 (void)tileset; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
80 struct mlk_tileset_loader_file *file = THIS(self); |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
81 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
82 return mlk__loader_file_sprite_new(file->lf); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 } |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 static struct mlk_animation * |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
86 new_animation(struct mlk_tileset_loader *self, struct mlk_tileset *tileset) |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 { |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
88 (void)tileset; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
90 struct mlk_tileset_loader_file *file = THIS(self); |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
91 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
92 return mlk__loader_file_animation_new(file->lf); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 } |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 struct mlk_tileset_collision * |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
96 expand_collisions(struct mlk_tileset_loader *self, |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
97 struct mlk_tileset *tileset, |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 struct mlk_tileset_collision *array, |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 size_t arraysz) |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 { |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
101 (void)tileset; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 (void)array; |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
104 struct mlk_tileset_loader_file *file = THIS(self); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
106 return expand((void **)&file->tilecollisions, arraysz, sizeof (struct mlk_tileset_collision)); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 } |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 struct mlk_tileset_animation * |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
110 expand_animations(struct mlk_tileset_loader *self, |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
111 struct mlk_tileset *tileset, |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 struct mlk_tileset_animation *array, |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 size_t arraysz) |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 { |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
115 (void)tileset; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 (void)array; |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
118 struct mlk_tileset_loader_file *file = THIS(self); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
119 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
120 return expand((void **)&file->tileanimations, arraysz, sizeof (struct mlk_tileset_animation)); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
121 } |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
122 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
123 static void |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
124 clear(struct mlk_tileset_loader *self, struct mlk_tileset *tileset) |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
125 { |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
126 (void)tileset; |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
127 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
128 struct mlk_tileset_loader_file *file = THIS(self); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
130 trash(file); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
131 } |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
132 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
133 static void |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
134 finish(struct mlk_tileset_loader *self) |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
135 { |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
136 struct mlk_tileset_loader_file *file = THIS(self); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
137 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
138 trash(file); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
139 mlk__loader_file_free(file->lf); |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
140 |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
141 file->lf = NULL; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 } |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
144 int |
629
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
145 mlk_tileset_loader_file_init(struct mlk_tileset_loader_file *file, const char *filename) |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 { |
629
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
147 assert(file); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 assert(filename); |
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 |
629
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
150 memset(file, 0, sizeof (*file)); |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 |
629
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
152 if (!(file->lf = mlk__loader_file_new(filename))) |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
153 return -1; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 |
629
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
155 file->iface.new_texture = new_texture; |
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
156 file->iface.new_sprite = new_sprite; |
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
157 file->iface.new_animation = new_animation; |
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
158 file->iface.expand_collisions = expand_collisions; |
fee7bd30725c
rpg: cleanup tileset-loader-file
David Demelier <markand@malikania.fr>
parents:
594
diff
changeset
|
159 file->iface.expand_animations = expand_animations; |
631
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
160 file->iface.clear = clear; |
bb67f935a93f
rpg: rework a little tileset/map loaders
David Demelier <markand@malikania.fr>
parents:
629
diff
changeset
|
161 file->iface.finish = finish; |
593
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
162 |
f9e85d0aca74
rpg: introduce private loader_file to help allocating map/tileset
David Demelier <markand@malikania.fr>
parents:
552
diff
changeset
|
163 return 0; |
552
ffd972a3d084
rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 } |