]> git.lizzy.rs Git - nothing.git/blob - src/game/level/solid.c
Remove platforms_apply_force
[nothing.git] / src / game / level / solid.c
1 #include "boxes.h"
2 #include "platforms.h"
3 #include "player.h"
4 #include "player/rigid_rect.h"
5 #include "solid.h"
6
7 void solid_touches_rect_sides(solid_ref_t solid,
8                               rect_t object,
9                               int sides[RECT_SIDE_N])
10 {
11     switch (solid.tag) {
12     case SOLID_PLATFORMS:
13         platforms_touches_rect_sides((platforms_t *) solid.ptr, object, sides);
14         break;
15
16     case SOLID_BOXES:
17         boxes_touches_rect_sides((boxes_t *) solid.ptr, object, sides);
18         break;
19
20     case SOLID_RIGID_RECT:
21         rigid_rect_touches_rect_sides((rigid_rect_t *) solid.ptr, object, sides);
22         break;
23
24     case SOLID_PLAYER:
25         player_touches_rect_sides((player_t *) solid.ptr, object, sides);
26         break;
27     }
28 }
29
30 void solid_apply_force(solid_ref_t solid,
31                        vec_t force)
32 {
33     switch (solid.tag) {
34     case SOLID_PLATFORMS:
35         /* no implementation */
36         break;
37
38     case SOLID_RIGID_RECT:
39         rigid_rect_apply_force((rigid_rect_t *) solid.ptr, force);
40         break;
41
42     case SOLID_PLAYER:
43         player_apply_force((player_t *) solid.ptr, force);
44         break;
45
46     case SOLID_BOXES:
47         boxes_apply_force((boxes_t *) solid.ptr, force);
48         break;
49
50     default: {}
51     }
52 }
53
54 void solid_collide_with_solid(solid_ref_t solid,
55                               solid_ref_t other_solid)
56 {
57     switch (solid.tag) {
58     case SOLID_PLATFORMS:
59         /* no implementation */
60         break;
61
62     case SOLID_RIGID_RECT:
63         rigid_rect_collide_with_solid((rigid_rect_t *) solid.ptr, other_solid);
64         break;
65
66     case SOLID_PLAYER:
67         player_collide_with_solid((player_t *) solid.ptr, other_solid);
68         break;
69
70     case SOLID_BOXES:
71         boxes_collide_with_solid((boxes_t *) solid.ptr, other_solid);
72         break;
73
74     default: {}
75     }
76 }