aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoraleksav013 <aleksav013@gmail.com>2021-06-06 01:45:47 +0200
committeraleksav013 <aleksav013@gmail.com>2021-06-06 01:45:47 +0200
commit060ddd25ef18a6289d01283bc76bc4da90bf2a39 (patch)
tree9b59683089b08a5cacb606be09738c78ed88e493 /src
parentbf4e10748f20572a8b69da99c97bf5cd17f8b250 (diff)
Adding powerup content; Fixing dt bug
Diffstat (limited to 'src')
-rw-r--r--src/Enemy1.cpp1
-rw-r--r--src/Enemy2.cpp1
-rw-r--r--src/Enemy3.cpp1
-rw-r--r--src/Entity.cpp1
-rw-r--r--src/Game.cpp76
-rw-r--r--src/Global.cpp1
-rw-r--r--src/Player.cpp7
-rw-r--r--src/Powerup.cpp10
-rw-r--r--src/State.cpp23
-rw-r--r--src/includes/Enemy1.hpp2
-rw-r--r--src/includes/Enemy2.hpp2
-rw-r--r--src/includes/Enemy3.hpp2
-rw-r--r--src/includes/Game.hpp1
-rw-r--r--src/includes/Player.hpp3
-rw-r--r--src/includes/Powerup.hpp4
-rw-r--r--src/main.cpp1
16 files changed, 107 insertions, 29 deletions
diff --git a/src/Enemy1.cpp b/src/Enemy1.cpp
index fc1e87d..ddcc882 100644
--- a/src/Enemy1.cpp
+++ b/src/Enemy1.cpp
@@ -1,5 +1,6 @@
#include"includes/Global.hpp"
#include"includes/Enemy1.hpp"
+
float Enemy1::time=8;
Enemy1::Enemy1(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja) {}
void Enemy1::izracunajbrzinu(float igracx,float igracy)
diff --git a/src/Enemy2.cpp b/src/Enemy2.cpp
index 98de1a6..e89fbb2 100644
--- a/src/Enemy2.cpp
+++ b/src/Enemy2.cpp
@@ -1,5 +1,6 @@
#include"includes/Global.hpp"
#include"includes/Enemy2.hpp"
+
float Enemy2::time=14;
Enemy2::Enemy2(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja)
{
diff --git a/src/Enemy3.cpp b/src/Enemy3.cpp
index 0ed8726..c9ba26c 100644
--- a/src/Enemy3.cpp
+++ b/src/Enemy3.cpp
@@ -1,5 +1,6 @@
#include"includes/Global.hpp"
#include"includes/Enemy3.hpp"
+
float Enemy3::time=10;
Enemy3::Enemy3(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja)
{
diff --git a/src/Entity.cpp b/src/Entity.cpp
index cc9f418..5759b94 100644
--- a/src/Entity.cpp
+++ b/src/Entity.cpp
@@ -1,5 +1,6 @@
#include"includes/Global.hpp"
#include"includes/Entity.hpp"
+
Entity::Entity(sf::Vector2f pozicija, sf::Vector2f velicina,sf::Color boja)
{
telo.setSize(velicina);
diff --git a/src/Game.cpp b/src/Game.cpp
index 04599e3..2991f88 100644
--- a/src/Game.cpp
+++ b/src/Game.cpp
@@ -36,12 +36,29 @@ void Game::initui()
score.setFillColor(sf::Color::White);
score.setPosition(sirina*5.0/6,50);
}
+void Game::pwptex()
+{
+ for(size_t i=0;i<pow.size();i++) switch(pow.at(i).type)
+ {
+ case 1:
+ pow.at(i).telo.setTexture(tex["health"]);
+ break;
+ case 2:
+ pow.at(i).telo.setTexture(tex["clear"]);
+ break;
+ case 3:
+ pow.at(i).telo.setTexture(tex["vampiric"]);
+ break;
+ default:
+ break;
+ }
+}
void Game::inittex()
{
- for(size_t i=0;i<pow.size();i++) pow.at(i).telo.setTexture(tex["health"]);
for(size_t i=0;i<nep1.size();i++) nep1.at(i).telo.setTexture(tex["neprijatelj"]);
for(size_t i=0;i<nep2.size();i++) nep2.at(i).telo.setTexture(tex["neprijatelj"]);
for(size_t i=0;i<nep3.size();i++) nep3.at(i).telo.setTexture(tex["neprijatelj"]);
+ pwptex();
}
void Game::initent()
{
@@ -49,7 +66,7 @@ void Game::initent()
for(size_t i=0;i<20;i++) nep1.push_back(Enemy1(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Red));
for(size_t i=0;i<7;i++) nep2.push_back(Enemy2(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Cyan));//(253,106,2)));
for(size_t i=0;i<4;i++) nep3.push_back(Enemy3(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::Yellow));
- pow.push_back(Powerup(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::White));
+ pow.push_back(Powerup(sf::Vector2f(Global::rng()%sirina,Global::rng()%visina),sf::Vector2f(50.0f,50.0f),sf::Color::White,Global::rng()%3+1));
}
void Game::updatewin()
{
@@ -85,6 +102,7 @@ bool Game::gameover()
void Game::updatedt()
{
dt=sat.restart().asMicroseconds()/1000000.0;
+ if(dt>1) dt=0;
}
void Game::updateui()
{
@@ -103,6 +121,7 @@ void Game::stompmain()
{
igrac.xp+=5;
nep1.at(i).ziv=0;
+ if(igrac.vampirictime>0) igrac.health+=5;
}
}
for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv)
@@ -111,6 +130,7 @@ void Game::stompmain()
{
igrac.xp+=10;
nep2.at(i).ziv=0;
+ if(igrac.vampirictime>0) igrac.health+=10;
}
}
for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv)
@@ -119,6 +139,7 @@ void Game::stompmain()
{
igrac.xp+=20;
nep3.at(i).ziv=0;
+ if(igrac.vampirictime>0) igrac.health+=20;
}
}
}
@@ -133,7 +154,12 @@ void Game::keyboard()
}
void Game::draw()
{
- if(igrac.stomptime>4.6) prozor->draw(igrac.krug);
+ if(igrac.stomptime>4.6)
+ {
+ if(igrac.vampirictime>0) igrac.krug.setOutlineColor(sf::Color::Red);
+ else igrac.krug.setOutlineColor(sf::Color::White);
+ prozor->draw(igrac.krug);
+ }
prozor->draw(igrac.telo);
for(size_t i=0;i<nep1.size();i++) if(nep1.at(i).ziv) prozor->draw(nep1.at(i).telo);
for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv) prozor->draw(nep2.at(i).telo);
@@ -182,7 +208,7 @@ void Game::checkcollision()
if(seseku(nep1.at(i).telo,igrac.telo))
{
nep1.at(i).ziv=0;
- igrac.health-=Global::rng()%4+1; // 1-4 dmg
+ igrac.health-=Global::rng()%4+1;
}
}
for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv)
@@ -190,7 +216,7 @@ void Game::checkcollision()
if(seseku(nep2.at(i).telo,igrac.telo))
{
nep2.at(i).ziv=0;
- igrac.health-=Global::rng()%8+1; // 1-8 dmg
+ igrac.health-=Global::rng()%8+1;
}
}
for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv)
@@ -198,7 +224,7 @@ void Game::checkcollision()
if(seseku(nep3.at(i).telo,igrac.telo))
{
nep3.at(i).ziv=0;
- igrac.health-=Global::rng()%12+1; // 1-12 dmg
+ igrac.health-=Global::rng()%12+1;
}
}
for(size_t i=0;i<pow.size();i++) if(pow.at(i).ziv)
@@ -206,7 +232,37 @@ void Game::checkcollision()
if(seseku(pow.at(i).telo,igrac.telo))
{
pow.at(i).ziv=0;
- igrac.health+=Global::rng()%20+21; // 20-40 heal
+ switch(pow.at(i).type)
+ {
+ case 1:
+ //health
+ igrac.health+=Global::rng()%20+21;
+ break;
+ case 2:
+ //clear
+ for(size_t i=0;i<nep1.size();i++) if(nep1.at(i).ziv)
+ {
+ nep1.at(i).ziv=0;
+ igrac.xp+=5;
+ }
+ for(size_t i=0;i<nep2.size();i++) if(nep2.at(i).ziv)
+ {
+ nep2.at(i).ziv=0;
+ igrac.xp+=10;
+ }
+ for(size_t i=0;i<nep3.size();i++) if(nep3.at(i).ziv)
+ {
+ nep3.at(i).ziv=0;
+ igrac.xp+=20;
+ }
+ break;
+ case 3:
+ //vampiric
+ igrac.vampirictime=12;
+ break;
+ default:
+ break;
+ }
}
}
}
@@ -235,18 +291,21 @@ void Game::respawn()
if(Powerup::time<0)
{
Powerup::time=20;
- for(size_t i=0;i<pow.size();i++) pow.at(i).respawn(sirina,visina);
+ for(size_t i=0;i<pow.size();i++) pow.at(i).respawn(sirina,visina,Global::rng()%3+1);
+ pwptex();
}
}
void Game::run()
{
igrac.updatest(dt);
+ igrac.updatevt(dt);
respawn();
position();
checkcollision();
}
void Game::loop(bool ischanged,bool pause)
{
+ updatedt();
if(ischanged) updatewin();
if(!pause)
{
@@ -254,5 +313,4 @@ void Game::loop(bool ischanged,bool pause)
run();
}
updateui();
- updatedt();
}
diff --git a/src/Global.cpp b/src/Global.cpp
index e95f785..ee9f2ed 100644
--- a/src/Global.cpp
+++ b/src/Global.cpp
@@ -1,2 +1,3 @@
#include"includes/Global.hpp"
+
std::mt19937 Global::rng = std::mt19937(time(0));
diff --git a/src/Player.cpp b/src/Player.cpp
index 19f6539..d5c4cc3 100644
--- a/src/Player.cpp
+++ b/src/Player.cpp
@@ -1,9 +1,11 @@
#include"includes/Global.hpp"
#include"includes/Player.hpp"
+
Player::Player(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja)
{
health=100;
stomptime=0;
+ vampirictime=0;
xp=0;
krug.setRadius(stomprad);
@@ -17,3 +19,8 @@ void Player::updatest(float dt)
if(stomptime>0) stomptime-=dt;
else stomptime=0;
}
+void Player::updatevt(float dt)
+{
+ if(vampirictime>0) vampirictime-=dt;
+ else vampirictime=0;
+}
diff --git a/src/Powerup.cpp b/src/Powerup.cpp
index 53bbb57..786a02d 100644
--- a/src/Powerup.cpp
+++ b/src/Powerup.cpp
@@ -1,7 +1,13 @@
#include"includes/Global.hpp"
#include"includes/Powerup.hpp"
+
float Powerup::time=20;
-Powerup::Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja):Entity(pozicija,velicina,boja)
+Powerup::Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja,int vrsta):Entity(pozicija,velicina,boja)
{
-
+ type=vrsta;
+}
+void Powerup::respawn(int sirina,int visina,int vrsta)
+{
+ Entity::respawn(sirina,visina);
+ type=vrsta;
}
diff --git a/src/State.cpp b/src/State.cpp
index a8f7aea..8a74331 100644
--- a/src/State.cpp
+++ b/src/State.cpp
@@ -1,7 +1,7 @@
#include"includes/Global.hpp"
#include"includes/State.hpp"
-
#include"includes/Game.hpp"
+
#include<iostream>
State::State()
{
@@ -21,18 +21,15 @@ void State::initassets()
font["default"] = new sf::Font;
tex["neprijatelj"] = new sf::Texture;
tex["health"] = new sf::Texture;
- if(!font["default"]->loadFromFile("assets/fonts/LiberationMono-Regular.ttf"))
- {
- std::cerr<<"Font not found\n";
- }
- if(!tex["health"]->loadFromFile("assets/images/healing.png"))
- {
- std::cerr<<"Texture not found\n";
- }
- if(!tex["neprijatelj"]->loadFromFile("assets/images/nep.png"))
- {
- std::cerr<<"Texture not found\n";
- }
+ tex["clear"] = new sf::Texture;
+ tex["vampiric"] = new sf::Texture;
+ //tex["djule"] = new sf::Texture;
+ font["default"]->loadFromFile("assets/fonts/LiberationMono-Regular.ttf");
+ tex["health"]->loadFromFile("assets/images/healing.png");
+ tex["neprijatelj"]->loadFromFile("assets/images/nep.png");
+ tex["clear"]->loadFromFile("assets/images/clear.png");
+ tex["vampiric"]->loadFromFile("assets/images/vampiric.png");
+ //tex["djule"]->loadFromFile("assets/images/djule.png");
}
void State::events() {
sf::Event evnt;
diff --git a/src/includes/Enemy1.hpp b/src/includes/Enemy1.hpp
index 0405365..9c7f7f3 100644
--- a/src/includes/Enemy1.hpp
+++ b/src/includes/Enemy1.hpp
@@ -5,7 +5,7 @@
class Enemy1:public Entity
{
private:
- float vx,vy;
+ float vx=0,vy=0;
public:
static float time;
Enemy1():Entity() {}
diff --git a/src/includes/Enemy2.hpp b/src/includes/Enemy2.hpp
index 25555a4..c619c54 100644
--- a/src/includes/Enemy2.hpp
+++ b/src/includes/Enemy2.hpp
@@ -5,7 +5,7 @@
class Enemy2:public Entity
{
private:
- float vx,vy;
+ float vx=0,vy=0;
public:
static float time;
Enemy2():Entity() {}
diff --git a/src/includes/Enemy3.hpp b/src/includes/Enemy3.hpp
index e1498bf..c1e1227 100644
--- a/src/includes/Enemy3.hpp
+++ b/src/includes/Enemy3.hpp
@@ -5,7 +5,7 @@
class Enemy3:public Entity
{
private:
- float vx,vy;
+ float vx=0,vy=0;
public:
static float time;
Enemy3():Entity() {}
diff --git a/src/includes/Game.hpp b/src/includes/Game.hpp
index 765fa2c..b04b1c3 100644
--- a/src/includes/Game.hpp
+++ b/src/includes/Game.hpp
@@ -40,6 +40,7 @@ class Game
void initshapes();
void initui();
void inittex();
+ void pwptex();
void initent();
void updatewin();
public:
diff --git a/src/includes/Player.hpp b/src/includes/Player.hpp
index ff094e9..2c6a776 100644
--- a/src/includes/Player.hpp
+++ b/src/includes/Player.hpp
@@ -7,13 +7,14 @@ class Player:public Entity
public:
int health,xp;
int stomprad=270;
- float stomptime;
+ float stomptime,vampirictime;
sf::CircleShape krug;
Player():Entity() {}
Player(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja);
void updatest(float dt);
+ void updatevt(float dt);
};
#endif
diff --git a/src/includes/Powerup.hpp b/src/includes/Powerup.hpp
index 2b6ec72..8a4d7db 100644
--- a/src/includes/Powerup.hpp
+++ b/src/includes/Powerup.hpp
@@ -6,8 +6,10 @@ class Powerup:public Entity
{
public:
static float time;
+ int type;
Powerup():Entity() {}
- Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja);
+ Powerup(sf::Vector2f pozicija,sf::Vector2f velicina,sf::Color boja,int vrsta);
+ void respawn(int sirina,int visina,int vrsta);
};
#endif
diff --git a/src/main.cpp b/src/main.cpp
index dbb1610..0a0856a 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,5 +1,6 @@
#include"includes/Global.hpp"
#include"includes/State.hpp"
+
int main()
{
State program;