annotate libmlk-rpg/mlk/rpg/map.h @ 599:cb8ca73f1aa4

rpg: walksprite -> mlk_walksprite
author David Demelier <markand@malikania.fr>
date Fri, 31 Mar 2023 20:01:00 +0200
parents cdbc13ceff85
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 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 442
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
27
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
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
19 #ifndef MLK_RPG_MAP_H
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
20 #define MLK_RPG_MAP_H
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
210
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
22 #include <stddef.h>
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
23
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
24 #include "walksprite.h"
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
26 struct mlk_map;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
27 struct mlk_tileset;
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
28
450
b26dd49f69ff core: event -> mlk_event (and friends)
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
29 union mlk_event;
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
31 enum mlk_map_layer_type {
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
32 MLK_MAP_LAYER_TYPE_BG,
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
33 MLK_MAP_LAYER_TYPE_FG,
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
34 MLK_MAP_LAYER_TYPE_ABOVE,
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
35 MLK_MAP_LAYER_TYPE_LAST
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
36 };
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
37
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
38 struct mlk_map_layer {
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
39 unsigned int *tiles;
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 };
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
42 enum mlk_map_flags {
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
43 MLK_MAP_FLAGS_NONE = 0,
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
44 MLK_MAP_FLAGS_SHOW_GRID = (1 << 0),
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
45 MLK_MAP_FLAGS_SHOW_COLLIDE = (1 << 2)
210
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
46 };
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
47
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
48 struct mlk_map_block {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
49 int x;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
50 int y;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
51 unsigned int w;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
52 unsigned int h;
250
8ef7fb7f14ad rpg: add support for collisions with actions
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
53 };
8ef7fb7f14ad rpg: add support for collisions with actions
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
54
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
55 struct mlk_map_style {
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
56 unsigned long grid_color;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
57 unsigned long collision_color;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
58 };
215
64f24b482722 rpg: implement tilesets separately, closes #2515 @4h
David Demelier <markand@malikania.fr>
parents: 212
diff changeset
59
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
60 struct mlk_map_delegate {
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
61 void *data;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
62 void (*update)(struct mlk_map_delegate *self, struct mlk_map *map, unsigned int ticks);
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
63 void (*draw)(struct mlk_map_delegate *self, const struct mlk_map *map);
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
64 };
210
70e6ed74940d rpg: attempt of collide detection in map
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
65
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
66 struct mlk_map {
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
67 unsigned int columns;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
68 unsigned int rows;
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
69
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
70 struct mlk_tileset *tileset;
250
8ef7fb7f14ad rpg: add support for collisions with actions
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
71
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
72 enum mlk_map_flags flags;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
73
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
74 const struct mlk_map_block *blocks;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
75 size_t blocksz;
212
ddfe0a211169 rpg: experiment with map teleport
David Demelier <markand@malikania.fr>
parents: 211
diff changeset
76
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
77 struct mlk_sprite *player_sprite;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
78 int player_x;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
79 int player_y;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
80 int player_a;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
81 unsigned int player_movement;
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 554
diff changeset
82 struct mlk_walksprite player_ws;
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
83
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
84 int view_x;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
85 int view_y;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
86 unsigned int view_w;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
87 unsigned int view_h;
98
c7e993455985 map: split the map structure into two definitions
David Demelier <markand@malikania.fr>
parents: 94
diff changeset
88
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
89 int margin_x;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
90 int margin_y;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
91 unsigned int margin_w;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
92 unsigned int margin_h;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
93
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
94 struct mlk_map_layer layers[MLK_MAP_LAYER_TYPE_LAST];
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
95
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
96 struct mlk_button_style *style;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
97 struct mlk_button_delegate *delegate;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
98 };
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
99
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
100 extern struct mlk_map_style mlk_map_style;
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
101 extern struct mlk_map_delegate mlk_map_delegate;
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
103 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
104 extern "C" {
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
105 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
106
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
107 int
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
108 mlk_map_init(struct mlk_map *map);
124
7b84764741b6 core: allows loading maps from memory, closes #2489
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
109
197
852d0b7817ce rpg: map, extreme cleanup, closes #2508 @4h
David Demelier <markand@malikania.fr>
parents: 148
diff changeset
110 void
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
111 mlk_map_handle(struct mlk_map *map, const union mlk_event *ev);
197
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 void
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
114 mlk_map_update(struct mlk_map *map, unsigned int ticks);
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 void
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
117 mlk_map_draw(const struct mlk_map *map);
28
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
118
783841af4033 core: implement painter API, closes #2451 @1h
David Demelier <markand@malikania.fr>
parents: 27
diff changeset
119 void
554
cdbc13ceff85 rpg: do the same for map
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
120 mlk_map_finish(struct mlk_map *map);
27
607bd90aba63 core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
122 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
123 }
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
124 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
125
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
126 #endif /* !MLK_RPG_MAP_H */