annotate librpg/rpg/map.h @ 210:70e6ed74940d

rpg: attempt of collide detection in map
author David Demelier <markand@malikania.fr>
date Sat, 14 Nov 2020 16:59:11 +0100
parents 852d0b7817ce
children adcbb7ccfdee
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
210
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
27 #include <stddef.h>
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
28
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
29 #include <core/texture.h>
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
30
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
31 #include "walksprite.h"
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
33 struct sprite;
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
34 struct state;
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
35
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
36 union event;
27
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 /**
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
39 * \brief Map layer type.
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
40 */
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
41 enum map_layer_type {
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
42 MAP_LAYER_TYPE_BACKGROUND, /*!< Background layer. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
43 MAP_LAYER_TYPE_FOREGROUND, /*!< Foreground layer. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
44 MAP_LAYER_TYPE_ABOVE, /*!< Above foreground layer. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
45 MAP_LAYER_TYPE_NUM /*!< Number of layers. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
46 };
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
47
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
48 /**
210
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
49 * \brief Describe a tile in a tileset.
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
50 */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
51 struct map_tile {
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
52 short id; /*!< (*) Tile index. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
53 short x; /*!< (*) Collision region starts in y. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
54 short y; /*!< (*) Collision region starts in y. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
55 unsigned short w; /*!< (*) Collision width. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
56 unsigned short h; /*!< (*) Collision height. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
57 };
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
58
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
59 /**
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
60 * \brief Map layer.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
61 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 struct map_layer {
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
63 unsigned short *tiles; /*!< (+&) 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
64 };
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
210
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
66 enum map_flags {
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
67 MAP_FLAGS_NONE = 0, /*!< No flags. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
68 MAP_FLAGS_SHOW_GRID = (1 << 0), /*!< Show grid pattern. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
69 MAP_FLAGS_SHOW_COLLIDE = (1 << 2) /*!< Show collision layer. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
70 };
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
71
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
72 /**
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
73 * \brief Map object.
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
74 *
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
75 * The map object is used to move a player within the map according to the
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
76 * tilesets and collisions masks.
50
402aa7dcffe1 core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
77 *
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
78 * By itself, a map does not know how to be loaded from a file and must be done
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
79 * from an helper like \ref map_file.
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
80 */
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
81 struct map {
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
82 const char *title; /*!< (+) Map title name. */
147
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
83 int origin_x; /*!< (+) Where the player starts in X. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
84 int origin_y; /*!< (+) Where the player starts in Y. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
85 unsigned int real_w; /*!< (-) Real width in pixels. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
86 unsigned int real_h; /*!< (-) Real height in pixels. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
87 unsigned int w; /*!< (-) Map width in cells. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
88 unsigned int h; /*!< (-) Map height in cells. */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
89 unsigned short tile_w; /*!< (-) Pixels per cell (width). */
b386d25832c8 doc: use new nomenclature, closes #2497
David Demelier <markand@malikania.fr>
parents: 131
diff changeset
90 unsigned short tile_h; /*!< (-) Pixels per cell (height). */
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
91 struct sprite *tileset; /*!< (+&) Tileset to use. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
92 struct texture picture; /*!< (-) Map drawn into a texture. */
210
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
93 struct map_tile *tiles; /*!< (+&?) Per tile properties (must be sorted). */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
94 size_t tilesz; /*!< (+) Number of tile properties. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
95
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
96 /* View options. */
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
97 enum map_flags flags; /*!< (+) View options. */
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
98
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
99 /* Player. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
100 struct sprite *player_sprite; /*!< (+) The sprite to use */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
101 struct walksprite player_ws; /*!< (-) Walking sprite for moving the player. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
102 int player_x; /*!< (+) Player position in x */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
103 int player_y; /*!< (+) Player position in y */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
104 int player_angle; /*!< (+) Player angle (see walksprite) */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
105 unsigned int player_movement; /*!< (*) Current player movements. */
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
106
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
107 /* View to zoom/locate. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
108 int view_x; /*!< (+) Position in x */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
109 int view_y; /*!< (+) Position in y */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
110 unsigned int view_w; /*!< (+) View width */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
111 unsigned int view_h; /*!< (+) View height */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
112
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
113 /* View margin. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
114 int margin_x; /*!< (+) View margin in x. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
115 int margin_y; /*!< (+) View margin in y. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
116 unsigned int margin_w; /*!< (+) Margin width. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
117 unsigned int margin_h; /*!< (+) Margin height. */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
118
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
119 /**
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
120 * Different tile layers.
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
121 */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
122 struct map_layer layers[MAP_LAYER_TYPE_NUM];
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 };
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
125 /**
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
126 * Initialize the map.
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
127 *
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
128 * This function will re-generate the terrain and center the view to the player
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
129 * position.
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
130 *
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
131 * \pre map != NULL
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
132 * \param map the map to initialize
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
133 */
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
134 bool
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
135 map_init(struct map *map);
124
7b84764741b6 core: allows loading maps from memory, closes #2489
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
136
7b84764741b6 core: allows loading maps from memory, closes #2489
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
137 /**
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
138 * Handle an event.
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
139 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
140 * \pre map != NULL
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
141 * \pre ev != NULL
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
142 * \param map the map
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
143 * \param ev the event to handle
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
144 */
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
145 void
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
146 map_handle(struct map *map, const union event *ev);
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
147
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
148 /**
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
149 * Update the map.
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
150 *
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
151 * \pre map != NULL
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
152 * \param map the map
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
153 * \param ticks ellapsed milliseconds since last frame
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
154 */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
155 void
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
156 map_update(struct map *map, unsigned int ticks);
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
157
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
158 /**
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
159 * Render a map.
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
160 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
161 * \pre map != NULL
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
162 * \param map the map to render
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
163 */
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 void
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
165 map_draw(const struct map *map);
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
166
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
167 /**
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
168 * Force map repaint on its texture.
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
169 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
170 * \pre map != NULL
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
171 * \param map the map to repaint
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
172 * \warning This function does not render anything on the screen.
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
173 */
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
174 void
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
175 map_repaint(struct map *map);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
176
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
177 /**
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
178 * Convert the map into a game state.
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
179 *
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
180 * Both objects must exist until the state is no longer used.
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
181 *
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
182 * \pre map != NULL
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
183 * \pre state != NULL
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
184 * \param map the map to use
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
185 * \param state the state to fill
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
186 * \post state->data is set to map
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
187 * \post state->handle is set
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
188 * \post state->update is set
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
189 * \post state->draw is set
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
190 */
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
191 void
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
192 map_state(struct map *map, struct state *state);
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
193
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
194 /**
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
195 * Dispose map resources.
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
196 *
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
197 * \pre map != NULL
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
198 * \param map the map to close
33
7035c1eb44fb core: document map.h
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
199 */
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
200 void
94
ed72843a7194 core: simplify font/texture interfaces
David Demelier <markand@malikania.fr>
parents: 59
diff changeset
201 map_finish(struct map *map);
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
202
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 #endif /* !MOLKO_MAP_H */