Mercurial > molko
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 |
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 | 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 | 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 | 60 * \brief Map layer. |
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 | 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 | 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 | 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 | 139 * |
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 | 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 | 158 /** |
159 * Render a map. | |
160 * | |
161 * \pre map != NULL | |
162 * \param map the map to render | |
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 | 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 | 196 * |
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 | 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 */ |