annotate libmlk-rpg/mlk/rpg/tileset-loader-file.h @ 564:e91f37da2992

core: doxygenize window
author David Demelier <markand@malikania.fr>
date Wed, 08 Mar 2023 20:09:21 +0100
parents cdbc13ceff85
children f9e85d0aca74
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 /*
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * tileset-loader-file.h -- tileset file loader implementation
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 #ifndef MLK_RPG_TILESET_LOADER_FILE_H
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define MLK_RPG_TILESET_LOADER_FILE_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 /**
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * \file mlk/rpg/tileset-loader-file.h
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 * \brief Tileset file loader implementation
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 *
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 * This convenient tileset loader loads tilesets from file and its associative
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 * resources relative to the tileset file directory.
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 *
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 * It also allocate memory for individual element and as such must be kept
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 * valid until the tileset is no longer used. If this behavior is not wanted,
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 * the allocator functions can be changed.
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 */
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #include <mlk/util/util.h>
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 struct mlk_animation;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 struct mlk_sprite;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 struct mlk_texture;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 struct mlk_tileset_animation;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 struct mlk_tileset_collision;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 struct mlk_tileset_loader;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 /**
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 * \struct mlk_tileset_loader_file
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 * \brief Tileset file loader structure
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 */
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 struct mlk_tileset_loader_file {
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 /**
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 * (read-only)
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 *
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 * Computed tileset file directory.
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 */
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 char directory[MLK_PATH_MAX];
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 /** \cond MLK_PRIVATE_DECLS */
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 struct mlk_texture **textures;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 struct mlk_sprite **sprites;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 struct mlk_animation **animations;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 struct mlk_tileset_collision *tilecollisions;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 struct mlk_tileset_animation *tileanimations;
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 /** \endcond MLK_PRIVATE_DECLS */
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 };
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
63
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
64 #if defined(__cplusplus)
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
65 extern "C" {
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
66 #endif
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
67
552
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 /**
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 * Fill the abstract loader with appropriate implementation.
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 *
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 * All loader member functions will be set and ::mlk_tileset_loader::data will
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 * be set to file loader.
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 * The file and loader structure are zero'ed before being initialized.
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 *
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 * \pre file != NULL
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 * \pre loader != NULL
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 * \pre filename != NULL
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 * \param file the file loader
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 * \param loader the abstract loader interface
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * \param filename path to the tileset file
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 */
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 void
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 mlk_tileset_loader_file_init(struct mlk_tileset_loader_file *file,
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 struct mlk_tileset_loader *loader,
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 const char *filename);
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 /**
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 * Cleanup allocated resources by this file loader.
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 *
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 * \pre file != NULL
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 * \param file the file loader
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 void
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 mlk_tileset_loader_file_finish(struct mlk_tileset_loader_file *file);
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
97 #if defined(__cplusplus)
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
98 }
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
99 #endif
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 552
diff changeset
100
552
ffd972a3d084 rpg: major rewrite of tilesets
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 #endif /* !MLK_RPG_TILESET_LOADER_FILE_H */