Mercurial > molko
annotate libmlk-rpg/rpg/tileset-file.h @ 243:71b3b7036de7
misc: lot of cleanups,
- prefix libraries with libmlk,
- move assets from source directories closes #2520,
- prefix header guards closes #2519
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 28 Nov 2020 22:37:30 +0100 |
parents | librpg/rpg/tileset-file.h@e71039d820a7 |
children | 08ab73b32832 |
rev | line source |
---|---|
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * tileset-file.h -- tileset file loader |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #ifndef MOLKO_RPG_TILESET_FILE_H |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #define MOLKO_RPG_TILESET_FILE_H |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
229
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
22 /** |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
23 * \file tileset-file.h |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
24 * \brief Tileset file loader. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
25 */ |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
26 |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 #include <stdbool.h> |
218
71f989ae8de9
rpg: add support for animated tiles
David Demelier <markand@malikania.fr>
parents:
215
diff
changeset
|
28 #include <stddef.h> |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
226
diff
changeset
|
30 #include <core/alloc.h> |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 #include <core/sprite.h> |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 #include <core/texture.h> |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 struct tileset; |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 struct tileset_tiledef; |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
229
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
37 /** |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
38 * \brief Context for loading tileset from files |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
39 * |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
40 * This structure own animations, tile definitions and sprites that are |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
41 * associated with the tileset. By this mean, the structure must be kept until |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
42 * the tileset is no longer used. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
43 * |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
44 * Structure members should not be modified directly but only one exposed in |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
45 * the final tileset destination. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
46 */ |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 struct tileset_file { |
229
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
48 struct alloc_pool tiledefs; /*!< (*) Tile definitions. */ |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
49 struct alloc_pool anims[2]; /*!< (*) Animations data. */ |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
50 struct texture image; /*!< (*) Image file. */ |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
51 struct sprite sprite; /*!< (*) Sprite. */ |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 }; |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
229
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
54 /** |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
55 * Try to load a tileset from a file. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
56 * |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
57 * This function will load the tileset file along with optional animations in |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
58 * the same directory. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
59 * |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
60 * \pre tf != NULL |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
61 * \pre tileset != NULL |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
62 * \pre path != NULL |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
63 * \param tf the context file |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
64 * \param tileset the destination tileset |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
65 * \param path path to the tileset |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
66 * \return False on errors. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
67 */ |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 bool |
226
dd7c8d4321a3
misc: miscellaneous cleanups
David Demelier <markand@malikania.fr>
parents:
218
diff
changeset
|
69 tileset_file_open(struct tileset_file *tf, struct tileset *tileset, const char *path); |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 |
229
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
71 /** |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
72 * Close all resources allocated from the tileset file context. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
73 * |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
74 * \warning The tileset that was created must not be used anymore. |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
75 * \pre tf != NULL |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
76 * \param tf the tileset to clear |
e71039d820a7
doc: improve documentation
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
77 */ |
215
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 void |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 tileset_file_finish(struct tileset_file *tf); |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 |
64f24b482722
rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 #endif /* !MOLKO_RPG_TILESET_FILE_H */ |