home · contact · privacy
Enforce C11 via Makefile, explicate POSIX dependencies in source files.
[plomrogue] / src / server / yx_uint8.c
1 /* src/server/yx_uint8.c */
2
3 #include "yx_uint8.h"
4 #include <stdint.h> /* uint8_t, UINT8_MAX */
5 #include "../common/yx_uint8.h" /* yx_uint8 struct */
6
7
8
9 extern uint8_t yx_uint8_cmp(struct yx_uint8 * a, struct yx_uint8 * b)
10 {
11     if (a->y == b->y && a->x == b->x)
12     {
13         return 1;
14     }
15     return 0;
16 }
17
18
19
20 extern struct yx_uint8 mv_yx_in_dir(char d, struct yx_uint8 yx)
21 {
22     if      (d == '8' && yx.y > 0)
23     {
24         yx.y--;
25     }
26     else if (d == '9' && yx.y > 0 && yx.x < UINT8_MAX)
27     {
28         yx.y--;
29         yx.x++;
30     }
31     else if (d == '6' && yx.x < UINT8_MAX)
32     {
33         yx.x++;
34     }
35     else if (d == '3' && yx.x < UINT8_MAX && yx.y < UINT8_MAX)
36     {
37         yx.y++;
38         yx.x++;
39     }
40     else if (d == '2' && yx.y < UINT8_MAX)
41     {
42         yx.y++;
43     }
44     else if (d == '1' && yx.y < UINT8_MAX && yx.x > 0)
45     {
46         yx.y++;
47         yx.x--;
48     }
49     else if (d == '4' && yx.x > 0)
50     {
51         yx.x--;
52     }
53     else if (d == '7' && yx.x > 0 && yx.y > 0)
54     {
55         yx.y--;
56         yx.x--;
57     }
58     return yx;
59 }