Skip to content

Commit f18d43f

Browse files
authored
Add files via upload
Powerup class, not fully implemented/functioning
1 parent 5871156 commit f18d43f

File tree

8 files changed

+136
-26
lines changed

8 files changed

+136
-26
lines changed

TextureDemo/TextureDemo/Board.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ void Board::update(double deltaTime)
104104
}
105105
}
106106
#pragma endregion
107+
108+
107109
}
108110

109111
//renders all board entities

TextureDemo/TextureDemo/Board.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "Castle.h"
33
#include "Unit.h"
44
#include "Tower.h"
5+
#include "Powerup.h"
56
#include "Camera.h"
67
#include "Graph.h"
78
#include "ParticleSystem.h"
@@ -43,4 +44,3 @@ class Board
4344
createTimer = 0,
4445
createDelay = 0.5;
4546
};
46-

TextureDemo/TextureDemo/Castle.cpp

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ Castle::~Castle()
3636
units.clear();
3737
}
3838

39+
extern GLuint tex[];
40+
Powerup P = Powerup((int)rand() % 1, glm::vec3(1, 1, 1), glm::vec3((int)rand() % 1, (int)rand() % 1, (int)rand() % 1), tex[(int)rand() % 1 + 28], 0);
3941
static auto t1 = Clock::now();
4042
static auto t2 = Clock::now();
43+
static auto t3 = Clock::now();
44+
4145
//update function
4246
void Castle::update(double deltaTime, glm::vec2 mousePosition, Castle* otherCastles)
4347
{
@@ -58,7 +62,6 @@ void Castle::update(double deltaTime, glm::vec2 mousePosition, Castle* otherCast
5862
static int oldMouseStateleft = GLFW_RELEASE;
5963
int newMouseStateleft = glfwGetMouseButton(Window::getWindow(), GLFW_MOUSE_BUTTON_LEFT);
6064

61-
6265
for (int i = 0; i < towers.size(); i++) {
6366
if ((towers[i]->getPosition().x - mousePosition.x) < 0.2 && (towers[i]->getPosition().x - mousePosition.x) > -0.2 && (towers[i]->getPosition().y + mousePosition.y) < 0.4 && (towers[i]->getPosition().y + mousePosition.y) > -0.4) {
6467

@@ -73,9 +76,6 @@ void Castle::update(double deltaTime, glm::vec2 mousePosition, Castle* otherCast
7376
else if (towers[i]->getPosition().x == -2.5) { k = ktwo; }
7477

7578
if (towers[i]->getType() == 3) {
76-
77-
78-
7979
lastchanged = i;
8080

8181
switch (k) {
@@ -101,11 +101,8 @@ void Castle::update(double deltaTime, glm::vec2 mousePosition, Castle* otherCast
101101

102102
break;
103103
}
104-
105-
106104
}
107105

108-
109106
if (towers[i]->getPosition().x == -4.0) {
110107
kone = k;
111108
}
@@ -148,7 +145,7 @@ void Castle::update(double deltaTime, glm::vec2 mousePosition, Castle* otherCast
148145
if (spendFunds(t3Cost))
149146
towers[i] = new Tower(this, k, playerControlled, glm::vec3(-0.4, 0.7, 1), towers[i]->getPosition(), this->getTowerTextures().at(k), this->getProjectileTextures().at(k), this->getNumElem());
150147
break;
151-
}
148+
}
152149
}
153150
}
154151

@@ -164,6 +161,34 @@ void Castle::update(double deltaTime, glm::vec2 mousePosition, Castle* otherCast
164161
#pragma endregion
165162
}
166163

164+
165+
if ((t2-t3).count() > 10000000000) {
166+
167+
t3 = Clock::now();
168+
169+
P = new Powerup((int)rand() % 1, glm::vec3(1,1,1), glm::vec3((int)rand() % 1, (int)rand() % 1, (int)rand() % 1), tex[(int)rand() % 1 + 28], 0);
170+
171+
172+
173+
174+
175+
176+
}
177+
178+
179+
180+
181+
182+
183+
184+
185+
186+
187+
188+
189+
190+
191+
167192
//update towers
168193
for (int i = 0; i < towers.size(); i++)
169194
{
@@ -200,6 +225,7 @@ void Castle::update(double deltaTime, glm::vec2 mousePosition, Castle* otherCast
200225
void Castle::render(Shader& shader)
201226
{
202227
GameObject::render(shader);
228+
//P->render(shader);
203229
}
204230

205231
//if possible, decrements available funds

TextureDemo/TextureDemo/Castle.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "Unit.h"
44
#include "Tower.h"
55
#include "Graph.h"
6+
#include "Powerup.h"
67

78
class Castle :
89
public GameObject
@@ -17,6 +18,7 @@ class Castle :
1718
std::vector<GLuint> unitTextures,
1819
std::vector<GLuint> towerTextures);
1920
~Castle();
21+
Powerup* P;
2022
//render entities
2123
void render(Shader &shader);
2224
//updates entities

TextureDemo/TextureDemo/Powerup.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include "Powerup.h"
2+
#include "Castle.h"
3+
4+
Powerup::Powerup( int type, glm::vec3 towerScale, glm::vec3 &entityPosition, GLuint entityTexture, GLint entityNumElements)
5+
: GameObject(entityPosition, entityTexture, entityNumElements), parent(parent), type(type), size(entityNumElements)
6+
{
7+
8+
}
9+
10+
Powerup::~Powerup()
11+
{
12+
13+
}
14+
15+
//update tower logic
16+
void Powerup::update(double deltaTime)
17+
{
18+
19+
}
20+
21+
//renders tower and projectiles
22+
void Powerup::render(Shader& shader)
23+
{
24+
25+
26+
/*{
27+
ps.enable();
28+
ps.setAttributes();
29+
ps.drawParticles(position, 6, orientation - 80, projectileTexture, 250);
30+
}*/
31+
32+
shader.enable();
33+
shader.setAttributes();
34+
35+
GameObject::render(shader);
36+
}
37+
38+
39+
void Powerup::use() {
40+
41+
switch (type) {
42+
case 0:
43+
((Castle*)parent)->addFunds(50);
44+
break;
45+
46+
case 1:
47+
((Castle*)parent)->takeDamage(-20);
48+
break;
49+
}
50+
}

TextureDemo/TextureDemo/Powerup.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#pragma once
2+
#include "GameObject.h"
3+
#include "Graph.h"
4+
5+
class Powerup :
6+
public GameObject
7+
{
8+
public:
9+
Powerup(
10+
int type,
11+
glm::vec3 towerScale,
12+
glm::vec3 &entityPosition,
13+
GLuint entityTexture,
14+
GLint entityNumElements);
15+
~Powerup();
16+
void update(double deltaTime);
17+
void render(Shader &shader);
18+
inline int getType() { return type; }
19+
void setType(int i) { type = i; }
20+
void use();
21+
private:
22+
GameObject* parent;
23+
int type = 0;
24+
glm::vec3 targetPosition;
25+
GLuint size;
26+
};
27+
28+

TextureDemo/TextureDemo/Tower.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,29 @@ void Tower::update(double deltaTime, std::vector<Unit*> enemies)
2626
for (int i = 0; i < enemies.size(); i++) {
2727
if (glm::abs(enemies.at(i)->getPosition().x - position.x) <= shootingRange) {
2828
if ((glfwGetTime() - projectileTimer) > projectileDelay) {
29-
shoot(enemies.at(i)->getPosition(), 50);
29+
shoot(enemies.at(i)->getPosition(), 25);
3030
projectileTimer = glfwGetTime();
3131
}
3232
}
3333
}
3434
break;
3535
case 1:
3636
for (int i = 0; i < enemies.size(); i++) {
37-
flame = (glm::abs(enemies.at(i)->getPosition().x - position.x) <= shootingRange);
38-
if (flame) {
39-
targetPosition = enemies.at(i)->getPosition();
40-
enemies.at(i)->takeDamage(0.1);
41-
break;
37+
if (glm::abs(enemies.at(i)->getPosition().x - position.x) <= shootingRange) {
38+
if ((glfwGetTime() - projectileTimer) > projectileDelay) {
39+
shoot(enemies.at(i)->getPosition(), 50);
40+
projectileTimer = glfwGetTime();
41+
}
4242
}
4343
}
4444
break;
4545
case 2:
4646
for (int i = 0; i < enemies.size(); i++) {
47-
if (glm::abs(enemies.at(i)->getPosition().x - position.x) <= shootingRange) {
48-
if ((glfwGetTime() - projectileTimer) > projectileDelay) {
49-
shoot(enemies.at(i)->getPosition(), 25);
50-
projectileTimer = glfwGetTime();
51-
}
47+
flame = (glm::abs(enemies.at(i)->getPosition().x - position.x) <= shootingRange);
48+
if (flame) {
49+
targetPosition = enemies.at(i)->getPosition();
50+
enemies.at(i)->takeDamage(0.1);
51+
break;
5252
}
5353
}
5454
break;
@@ -98,7 +98,7 @@ void Tower::update(double deltaTime, std::vector<Unit*> enemies)
9898
}
9999
enem->takeDamage(proj->getDamage());
100100
switch (type) {
101-
case 2:
101+
case 0:
102102
enemies.at(i)->freeze();
103103
break;
104104
}

TextureDemo/TextureDemo/main.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const unsigned int window_height_g = 600;
3737
const glm::vec3 viewport_background_color_g(0.3, 0.5, 0.0);
3838

3939
// Global texture info
40-
GLuint tex[28];
40+
GLuint tex[30];
4141

4242
// Create the geometry for a square (with two triangles)
4343
// Return the number of array elements that form the square
@@ -101,7 +101,7 @@ void setthisTexture(GLuint w, char *fname)
101101
void setallTexture(void)
102102
{
103103
// tex = new GLuint[4];
104-
glGenTextures(28, tex);
104+
glGenTextures(30, tex);
105105
setthisTexture(tex[0], "castle1.png");
106106
setthisTexture(tex[1], "castle2.png");
107107
setthisTexture(tex[2], "knight1.png");
@@ -130,6 +130,8 @@ void setallTexture(void)
130130
setthisTexture(tex[25], "tower3.png");
131131
setthisTexture(tex[26], "magma3.png");
132132
setthisTexture(tex[27], "ice3.png");
133+
setthisTexture(tex[28], "orb.png");
134+
setthisTexture(tex[29], "proj.png");
133135

134136
glBindTexture(GL_TEXTURE_2D, tex[0]);
135137
}
@@ -209,10 +211,10 @@ int main(void){
209211
vector<GLuint> castleOneUnitTextures = { tex[2], tex[6], tex[8], tex[4] };
210212
vector<GLuint> castleTwoUnitTextures = { tex[3], tex[7], tex[9], tex[5] };
211213

212-
vector<GLuint> projectileTextures = { tex[17], tex[18], tex[19], tex[24], tex[24], tex[24], tex[24] };
214+
vector<GLuint> projectileTextures = { tex[19], tex[17], tex[18], tex[24], tex[24], tex[24], tex[24] };
213215

214-
vector<GLuint> castleOneTowerTextures = { tex[10], tex[12], tex[14], tex[24], tex[25], tex[26], tex[27] };
215-
vector<GLuint> castleTwoTowerTextures = { tex[11], tex[13], tex[15], tex[24], tex[25], tex[26], tex[27] };
216+
vector<GLuint> castleOneTowerTextures = { tex[14], tex[10], tex[12], tex[24], tex[27], tex[25], tex[26] };
217+
vector<GLuint> castleTwoTowerTextures = { tex[15], tex[11], tex[13], tex[24], tex[27], tex[25], tex[26] };
216218

217219
Graph* graph = new Graph(68, 5, GameObject(glm::vec3(0.0f), tex[7], size));
218220

0 commit comments

Comments
 (0)