annotate src/walksprite.c @ 49:a8c7db56ccb0

core: backed out changeset 55869b5e4761 We don't need properties because we will generate them in the map.
author David Demelier <markand@malikania.fr>
date Fri, 17 Jan 2020 12:09:30 +0100
parents b815621df3e3
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 *
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
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 #include <string.h>
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 #include "walksprite.h"
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include "sprite.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
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
26 walksprite_init(struct walksprite *ws, struct sprite *sprite, unsigned int delay)
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 assert(sprite);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 memset(ws, 0, sizeof (struct walksprite));
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 ws->sprite = sprite;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 ws->delay = delay;
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
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 void
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
37 walksprite_update(struct walksprite *ws, unsigned int ticks)
41
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 assert(ws);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 ws->elapsed += ticks;
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 if (ws->elapsed >= ws->delay) {
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 ws->index += 1;
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 if (ws->index >= ws->sprite->ncols)
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 ws->index = 0;
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 ws->elapsed = 0;
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 }
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
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 void
46
b815621df3e3 core: remove all fixed width integers, closes #2460
David Demelier <markand@malikania.fr>
parents: 41
diff changeset
54 walksprite_draw(struct walksprite *ws, unsigned int orientation, int x, int y)
41
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 {
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 assert(ws);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 assert(orientation < 8);
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 sprite_draw(ws->sprite, orientation, ws->index, x, y);
3996f873a54b core: implement walksprite, closes #2455
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 }