annotate src/map.h @ 49:a8c7db56ccb0

core: backed out changeset 55869b5e4761 We don't need properties because we will generate them in the map.
author David Demelier <markand@malikania.fr>
date Fri, 17 Jan 2020 12:09:30 +0100
parents b815621df3e3
children 402aa7dcffe1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * map.h -- game map
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #ifndef MOLKO_MAP_H
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define MOLKO_MAP_H
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 /**
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 * \file map.h
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 * \brief Game map.
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 */
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <stdbool.h>
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #include "sprite.h"
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
31 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
32 * \brief Max title length for a map.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
33 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #define MAP_TITLE_MAX 32
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 struct texture;
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
38 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
39 * \brief Map layer.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
40 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 struct map_layer {
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 42
diff changeset
42 unsigned short *tiles; /*!< (RO) Array of tiles, depending on the map size. */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 };
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
45 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
46 * \brief Map object.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
47 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 struct map {
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
49 char title[MAP_TITLE_MAX]; /*!< (RW) The map title */
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
50 struct texture *tileset; /*!< (RW) Tileset to use */
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
51 struct texture *picture; /*!< (RO) Map drawn into a picture */
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
52 struct sprite sprite; /*!< (RO) Sprite to render */
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 42
diff changeset
53 unsigned int width; /*!< (RO) Map width in cells */
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 42
diff changeset
54 unsigned int height; /*!< (RO) Map height in cells */
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 42
diff changeset
55 unsigned short tilewidth; /*!< (RO) Pixels per cell (width) */
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 42
diff changeset
56 unsigned short tileheight; /*!< (RO) Pixels per cell (height) */
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
57 struct map_layer layers[2]; /*!< (RO) Layers (background, foreground) */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 };
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
60 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
61 * Open a map.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
62 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
63 * \pre map != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
64 * \pre path != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
65 * \param map the map to fill
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
66 * \param path the path to the map
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
67 * \return true if successfully loaded
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
68 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 bool
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 map_open(struct map *map, const char *path);
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
72 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
73 * Render a map.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
74 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
75 * \pre map != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
76 * \param map the map to render
42
22a09a5ee476 core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
77 * \param srcx the x coordinate region
22a09a5ee476 core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
78 * \param srcy the y coordinate region
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
79 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 void
42
22a09a5ee476 core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
81 map_draw(struct map *map, int srcx, int srcy);
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
82
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
83 /**
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
84 * Force map repaint on its texture.
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
85 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
86 * \pre map != NULL
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
87 * \param map the map to repaint
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
88 * \warning This function does not render anything on the screen
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
89 */
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
90 void
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
91 map_repaint(struct map *map);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
92
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
93 /**
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
94 * Close the map and its resources.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
95 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
96 * \pre map != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
97 * \param map the map to render
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
98 */
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
99 void
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 map_close(struct map *map);
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 #endif /* !MOLKO_MAP_H */