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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }