/
Star.cpp
137 lines (107 loc) · 4.18 KB
/
Star.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include "Star.h"
Star::Star(GLfloat width, GLfloat height, GLfloat length):PhysicsObject(1.0)
{
this->length = length;
this->width = width;
this->height = height;
this->speed = 2;
fallSpeed=1;
fallSpeed = 1;
road = NULL;
}
Star::~Star(void)
{
}
void Star::DrawObject()
{
glBindTexture(GL_TEXTURE_2D, Textures::GetInstance()->GetTextures()[13]);
for(double i = -0.05; i <= 0.05; i += 0.1)
{
glBegin(GL_TRIANGLE_FAN);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.5, 0.876);glVertex3f(0, 0.876, 0);
glTexCoord2f(0.632, 0.643);glVertex3f(0.132, 0.643, i);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.632, 0.643);glVertex3f(0.132, 0.643, i);
glTexCoord2f(0.893, 0.589);glVertex3f(0.393, 0.589, 0);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.893, 0.589);glVertex3f(0.393, 0.589, 0);
glTexCoord2f(0.712, 0.39);glVertex3f(0.212, 0.39, i);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.712, 0.39);glVertex3f(0.212, 0.39, i);
glTexCoord2f(0.742, 0.13);glVertex3f(0.242, 0.13, 0);
glTexCoord2f(0.742, 0.13);glVertex3f(0, 0.557, i);
glTexCoord2f(0.742, 0.13);glVertex3f(0.242, 0.13, 0);
glTexCoord2f(0.5, 0.238);glVertex3f(0, 0.238, i);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.5, 0.238);glVertex3f(0, 0.238, i);
glTexCoord2f(0.256, 0.127);glVertex3f(-0.244, 0.127, 0);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.256, 0.127);glVertex3f(-0.244, 0.127, 0);
glTexCoord2f(0.286, 0.395);glVertex3f(-0.214, 0.395, i);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.286, 0.395);glVertex3f(-0.214, 0.395, i);
glTexCoord2f(0.105, 0.588);glVertex3f(-0.395, 0.588, 0);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.105, 0.588);glVertex3f(-0.395, 0.588, 0);
glTexCoord2f(0.368, 0.648);glVertex3f(-0.132, 0.648, i);
glTexCoord2f(0.5, 0.557);glVertex3f(0, 0.557, i);
glTexCoord2f(0.368, 0.648);glVertex3f(-0.132, 0.648, i);
glTexCoord2f(0.5, 0.876);glVertex3f(0, 0.876, 0);
glEnd();
}
glBegin(GL_TRIANGLES);
glTexCoord2f(0.5, 0.6);glVertex3f(0, 0.876, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(0.132, 0.643, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.132, 0.643, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.132, 0.643, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.132, 0.643, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.393, 0.589, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(0.393, 0.589, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(0.212, 0.39, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.212, 0.39, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.212, 0.39, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.212, 0.39, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0.242, 0.13, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(0.242, 0.13, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(0, 0.238, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0, 0.238, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0, 0.238, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0, 0.238, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.244, 0.127, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.244, 0.127, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.214, 0.395, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.214, 0.395, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.214, 0.395, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.214, 0.395, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.395, 0.588, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.395, 0.588, 0);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.132, 0.648, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.132, 0.648, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.132, 0.648, 0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(-0.132, 0.648, -0.05);
glTexCoord2f(0.5, 0.6);glVertex3f(0, 0.876, 0);
glEnd();
}
void Star::Update()
{
PhysicsObject::Update();
this->Translate(GetForward()*speed);
if(speed > 0.3)
this->speed -= 0.01;
}
bool Star::Function(Mario *mario)
{
scene->RemoveObject(this);
mario->SetInvulnerable();
GlobalScore::GetInstance()->UpdateScore(300);
return true;
}
void Star::Translate(Point3D translation)
{
WorldObject::Translate(translation);
if(road != NULL)
{
road->OffRoad(this);
}
}