annotate src/map.h @ 54:779352498a8a

make: beautify
author David Demelier <markand@malikania.fr>
date Sat, 18 Jan 2020 15:27:40 +0100
parents 402aa7dcffe1
children
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.
50
402aa7dcffe1 core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
47 *
402aa7dcffe1 core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
48 * This structure only defines the map characteristics. It does not have any
402aa7dcffe1 core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
49 * logic and is left for game state.
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
50 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 struct map {
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
52 char title[MAP_TITLE_MAX]; /*!< (RW) The map title */
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
53 struct texture *tileset; /*!< (RW) Tileset to use */
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
54 struct texture *picture; /*!< (RO) Map drawn into a picture */
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
55 struct sprite sprite; /*!< (RO) Sprite to render */
50
402aa7dcffe1 core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
56 int origin_x; /*!< (RO) Where the player starts in X */
402aa7dcffe1 core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
57 int origin_y; /*!< (RO) Where the player starts in Y */
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 42
diff changeset
58 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
59 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
60 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
61 unsigned short tileheight; /*!< (RO) Pixels per cell (height) */
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
62 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
63 };
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
65 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
66 * Open a map.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
67 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
68 * \pre map != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
69 * \pre path != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
70 * \param map the map to fill
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
71 * \param path the path to the map
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
72 * \return true if successfully loaded
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
73 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 bool
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 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
76
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
77 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
78 * Render a map.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
79 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
80 * \pre map != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
81 * \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
82 * \param srcx the x coordinate region
22a09a5ee476 core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
83 * \param srcy the y coordinate region
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
84 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 void
42
22a09a5ee476 core: add better map check and unit tests
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
86 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
87
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
88 /**
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
89 * Force map repaint on its texture.
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
90 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
91 * \pre map != NULL
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
92 * \param map the map to repaint
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
93 * \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
94 */
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
95 void
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
96 map_repaint(struct map *map);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
97
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
98 /**
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
99 * Close the map and its resources.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
100 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
101 * \pre map != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
102 * \param map the map to render
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
103 */
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
104 void
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 map_close(struct map *map);
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 #endif /* !MOLKO_MAP_H */