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
|
using SDL;
using SDLGraphics;
namespace invadersGame{
class GameObjectPlayer : GameObject{
private bool exists;
private MovementDelta my_movement_delta;
public GameObjectPlayer () {
base((int16)SCREEN_WIDTH / 2 - 16, (int16)SCREEN_HEIGHT / 2, 0, 0, 200, 200);
}
public override void draw(SDL.Screen screen) {
ResourceHandler.player.blit(null,screen,my_rect);
}
public void set_movment_delta(MovementDelta d) {
my_movement_delta = d;
stdout.printf(d.to_string() + "\n");
}
public override void move () {
float de_t = (float)(SDL.Timer.get_ticks() - last_frame);
if(my_movement_delta.y > 0 && my_movement_delta.x > 0) {
pos_y = pos_y + (float)((speed/1.5) * de_t)/1000.0f;
pos_x = pos_x + (float)((speed/1.5) * de_t)/1000.0f;
} else if(my_movement_delta.y < 0 && my_movement_delta.x < 0) {
pos_y = pos_y - (float)((speed/1.5) * de_t)/1000.0f;
pos_x = pos_x - (float)((speed/1.5) * de_t)/1000.0f;
} else if(my_movement_delta.y > 0 && my_movement_delta.x < 0) {
pos_y = pos_y + (float)((speed/1.5) * de_t)/1000.0f;
pos_x = pos_x - (float)((speed/1.5) * de_t)/1000.0f;
} else if(my_movement_delta.y < 0 && my_movement_delta.x > 0) {
pos_y = pos_y - (float)((speed/1.5) * de_t)/1000.0f;
pos_x = pos_x + (float)((speed/1.5) * de_t)/1000.0f;
} else if(my_movement_delta.x > 0 ) {
pos_x = pos_x + (float)(speed * de_t)/1000.0f;
} else if(my_movement_delta.x < 0 ) {
pos_x = pos_x - (float)(speed * de_t)/1000.0f;
} else if(my_movement_delta.y > 0 ) {
pos_y = pos_y + (float)(speed * de_t)/1000.0f;
} else if(my_movement_delta.y < 0 ) {
pos_y = pos_y - (float)(speed * de_t)/1000.0f;
} else {
// nothing
}
my_rect.x = (int16)pos_x;
my_rect.y = (int16)pos_y;
last_frame = SDL.Timer.get_ticks();
}
}
}
|