-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtransmission.c
59 lines (47 loc) · 1.5 KB
/
transmission.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
struct Transmission {
unsigned char active;
unsigned char animation;
struct Vector position;
struct Vector velocity;
} transmission;
void move_transmission() {
move_sprite(2, transmission.position.x, transmission.position.y);
move_sprite(3, transmission.position.x+8, transmission.position.y);
}
void disable_transmission() {
transmission.active = 0;
move_sprite(2, 0, 0);
move_sprite(3, 0, 0);
}
void init_transmission(unsigned char dir, struct Vector *pos) {
pewpew();
transmission.active = 1;
transmission.position.x = pos->x;
transmission.position.y = pos->y;
set_velocity(dir, &transmission.velocity);
transmission.velocity.x *= 2;
transmission.velocity.y *= 2;
set_sprite_tile(2, 64);
set_sprite_tile(3, 66);
move_transmission();
}
void update_transmission() {
if(transmission.animation < 1) {
// Our transmission reached an objective
if(tile_at(&transmission.position) == tile_objective_inactive) {
toggle_objective(&transmission.position);
disable_transmission();
return;
}
// Or transmission hit a wall
if(tile_at_next(&transmission.position, &transmission.velocity, 8) > tile_objective_inactive) {
disable_transmission();
return;
}
transmission.animation = 8;
}
transmission.position.x = transmission.position.x + transmission.velocity.x;
transmission.position.y = transmission.position.y + transmission.velocity.y;
move_transmission();
transmission.animation--;
}