-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathship.cpp
81 lines (66 loc) · 1.27 KB
/
ship.cpp
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "ship.h"
GLfloat* Ship::get_vertices()
{
return vertices;
}
void Ship::accelerate()
{
GLfloat radians = glm::radians(angle);
if(speed.x < 3.0f && speed.x > -3.0f)
speed.x += .1*cos(radians);
if(speed.x >= 3.0f && cos(radians) < 0.0f)
speed.x += .1*cos(radians);
else if(speed.x <= -3.0f && cos(radians) > 0.0f)
speed.x += .1*cos(radians);
if(speed.y < 3.0f && speed.y > -3.0f)
speed.y += .1*sin(radians);
if(speed.y >= 3.0f && sin(radians) < 0.0f)
speed.y += .1*sin(radians);
else if(speed.y <= -3.0f && sin(radians) > 0.0f)
speed.y += .1*sin(radians);
}
void Ship::move(GLfloat delta)
{
position.x += speed.x*delta;
position.y += speed.y*delta;
}
void Ship::rotate(Direction dir)
{
if(dir == Direction::left)
angle += 2.0f;
else
angle -= 2.0f;
if(angle > 360)
angle = 0.0f;
else if(angle < 0)
angle = 360.0f;
}
void Ship::reset()
{
angle = 90.0f;
position.x = 0.0f;
position.y = 0.0f;
speed.x = 0.0f;
speed.y = 0.0f;
}
void Ship::teleport(GLfloat x, GLfloat y)
{
position.x = x;
position.y = y;
}
GLfloat Ship::get_angle() const
{
return angle;
}
GLubyte* Ship::get_sideA()
{
return sideA;
}
GLubyte* Ship::get_sideB()
{
return sideB;
}
GLubyte* Ship::get_sideC()
{
return sideC;
}