annotate libmlk-rpg/mlk/rpg/walksprite.h @ 646:7e1eb7f6c049 default tip @

misc: remove .clang
author David Demelier <markand@malikania.fr>
date Sun, 04 Feb 2024 15:24:37 +0100
parents cb8ca73f1aa4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * walksprite.h -- sprite designed for walking entities
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
445
773a082f0b91 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 434
diff changeset
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr>
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
3996f873a54b core: implement walksprite, closes #2455
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_WALKSPRITE_H
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
20 #define MLK_RPG_WALKSPRITE_H
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 /**
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
23 * \file mlk/rpg/walksprite.h
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
24 * \brief Sprite designed for walking entities
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 *
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
26 * This module provides a convenient animation for walking entities using a
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
27 * specific sprite texture.
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
28 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
29 * The entity can have up to 8 orientation including diagonals which are defined
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
30 * as following:
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 * ```
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 * 7 0 1
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 * ↖ ↑ ↗
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 * 6 ← → 2
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 * ↙ ↓ ↘
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 * 5 4 3
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 * ```
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * Where numbers define row in the sprite according to the character
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 * orientation. In other terms, your image sprite should look like this:
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 * ```
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 * row columns in your image
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 * ---|---------------------
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 * 0 | ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 * 1 | ↗↗↗↗↗↗↗↗↗↗↗↗↗↗↗↗↗↗↗↗
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 * 2 | →→→→→→→→→→→→→→→→→→→→
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 * 3 | ↘↘↘↘↘↘↘↘↘↘↘↘↘↘↘↘↘↘↘↘
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 * 4 | ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 * 5 | ↙↙↙↙↙↙↙↙↙↙↙↙↙↙↙↙↙↙↙↙
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 * 6 | ←←←←←←←←←←←←←←←←←←←←
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 * 7 | ↖↖↖↖↖↖↖↖↖↖↖↖↖↖↖↖↖↖↖↖
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 * ```
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
55 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
56 * The first column in each row should be static position which means that the
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
57 * entity is not moving. Using ::mlk_walksprite_reset resets the column index to
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
58 * this position so that you can use this module even on non-moving entities.
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 */
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
60
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
61 struct mlk_sprite;
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
62
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
63 /**
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
64 * \struct mlk_walksprite
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
65 * \brief Walking sprite structure
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
66 */
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
67 struct mlk_walksprite {
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
68 /**
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
69 * (read-write, borrowed)
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
70 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
71 * Sprite file to use for animation.
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
72 */
468
91ce23a36143 core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents: 462
diff changeset
73 struct mlk_sprite *sprite;
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
74
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
75 /**
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
76 * (read-write)
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
77 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
78 * Delay between each frame.
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
79 */
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
80 unsigned int delay;
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
81
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
82 /** \cond MLK_PRIVATE_DECLS */
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
83 unsigned int index;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 292
diff changeset
84 unsigned int elapsed;
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
85 /** \endcond MLK_PRIVATE_DECLS */
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 };
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
88 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
89 extern "C" {
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
90 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
91
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
92 /**
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
93 * Initialize the walking sprite.
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
94 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
95 * \pre ws != NULL
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
96 * \param ws walking sprite to initialize
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
97 */
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
99 mlk_walksprite_init(struct mlk_walksprite *ws);
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
100
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
101 /**
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
102 * Reset the walking sprite to first column.
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
103 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
104 * \pre ws != NULL
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
105 * \param ws walking sprite to reset
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
106 */
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
107 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
108 mlk_walksprite_reset(struct mlk_walksprite *ws);
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
109
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
110 /**
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
111 * Update the walking sprite, moving to the next animation if needed.
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
112 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
113 * \pre ws != NULL
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
114 * \param ws walking sprite to update
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
115 * \param ticks frame ticks
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
116 */
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
118 mlk_walksprite_update(struct mlk_walksprite *ws, unsigned int ticks);
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
119
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
120 /**
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
121 * Draw the current image frame at the given position.
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
122 *
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
123 * \pre ws != NULL
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
124 * \param ws walking sprite to draw
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
125 * \param orientation the orientation [0..7]
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
126 * \param x the x coordinate
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
127 * \param y the y coordinate
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
128 */
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
130 mlk_walksprite_draw(const struct mlk_walksprite *ws,
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
131 unsigned int orientation,
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
132 int x,
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 517
diff changeset
133 int y);
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
517
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
135 #if defined(__cplusplus)
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
136 }
6e8f6640e05b misc: use extern C manually
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
137 #endif
292
08ab73b32832 misc: add extern "C" {} blocks for C++ friends
David Demelier <markand@malikania.fr>
parents: 243
diff changeset
138
366
19782ea1cf4a misc: start rebranding
David Demelier <markand@malikania.fr>
parents: 320
diff changeset
139 #endif /* !MLK_RPG_WALKSPRITE_H */