annotate libmlk-rpg/mlk/rpg/walksprite.c @ 629:fee7bd30725c

rpg: cleanup tileset-loader-file
author David Demelier <markand@malikania.fr>
date Sat, 26 Aug 2023 16:09:35 +0200
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.c -- 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
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <assert.h>
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
431
8f59201dc76b core: cleanup hierarchy
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
21 #include <mlk/core/sprite.h>
148
c577c15df07f misc: split libraries, closes #2496
David Demelier <markand@malikania.fr>
parents: 121
diff changeset
22
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include "walksprite.h"
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
26 mlk_walksprite_init(struct mlk_walksprite *ws)
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 {
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 assert(ws);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
30 mlk_walksprite_reset(ws);
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 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
34 mlk_walksprite_reset(struct mlk_walksprite *ws)
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
35 {
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
36 assert(ws);
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
37
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
38 ws->index = 0;
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
39 ws->elapsed = 0;
230
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
40 }
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
41
86b71e1f9dd5 rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents: 197
diff changeset
42 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
43 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
44 {
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 assert(ws);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 ws->elapsed += ticks;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 if (ws->elapsed >= ws->delay) {
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 ws->index += 1;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 if (ws->index >= ws->sprite->ncols)
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 ws->index = 0;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 ws->elapsed = 0;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 }
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 }
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 void
599
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
60 mlk_walksprite_draw(const struct mlk_walksprite *ws,
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
61 unsigned int orientation,
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
62 int x,
cb8ca73f1aa4 rpg: walksprite -> mlk_walksprite
David Demelier <markand@malikania.fr>
parents: 468
diff changeset
63 int y)
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 {
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 assert(ws);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 assert(orientation < 8);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
468
91ce23a36143 core: sprite -> mlk_sprite
David Demelier <markand@malikania.fr>
parents: 445
diff changeset
68 mlk_sprite_draw(ws->sprite, orientation, ws->index, x, y);
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 }