merged waves and halos

This commit is contained in:
Ralusama19 2017-01-21 20:57:41 +01:00
commit e6fd8a2b1d
7 changed files with 66 additions and 28 deletions

12
Resources/halo.frag Normal file
View file

@ -0,0 +1,12 @@
uniform float time;
uniform bool blue;
uniform sampler2D texture;
void main(void) {
float transpa = max (sin(time*5.)*100., 50.);
vec4 color = vec4 (246.,111.,231.,transpa)/255.;
if (blue) color = vec4(0.,153.,253.,transpa)/255.;
vec4 pixel = texture2D(texture, gl_TexCoord[0].xy);
gl_FragColor = pixel * color;
}

View file

@ -0,0 +1,9 @@
// uniform float time2;
uniform bool blue;
void main(void) {
// float transpa = sin(time2)*255.;
vec4 color = (246,111,231, 255);
if (blue) color = (0,153,253, 255);
gl_FragColor = color;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View file

@ -9,9 +9,9 @@ private:
const int numFrames = 4; const int numFrames = 4;
const std::string spriteFile = WORK_DIR+"Resources/spreadsheet.png"; const std::string spriteFile = WORK_DIR+"Resources/spreadsheet.png";
//POSICIO PLAYER 1 //POSICIO PLAYER 1
float posX1 = W_WIDTH*0.05f, posY1 = W_HEIGHT*0.6f; float posX1 = W_WIDTH*0.05f, posY1 = W_HEIGHT*0.5f;
//POSICIO PLAYER 2 //POSICIO PLAYER 2
float posX2 = W_WIDTH*0.65f, posY2 = W_HEIGHT*0.6f; float posX2 = W_WIDTH*0.65f, posY2 = W_HEIGHT*0.5f;
//END CONFIG //END CONFIG
int magicNumber; int magicNumber;

View file

@ -37,14 +37,23 @@ void Combat::initShader() {
_background.setTexture(_text); _background.setTexture(_text);
_shader.loadFromFile(WORK_DIR+"Resources/shader.frag", sf::Shader::Fragment); _shader.loadFromFile(WORK_DIR+"Resources/shader.frag", sf::Shader::Fragment);
_shader.setParameter("resolution", sf::Vector2f(W_WIDTH, W_HEIGHT)); _shader.setParameter("resolution", sf::Vector2f(W_WIDTH, W_HEIGHT));
_shader.setParameter("time", time);
ASSERT(_haloT.loadFromFile(WORK_DIR+"Resources/platform-halo.png"));
_halo.setTexture(_haloT);
_halo.setPosition(W_WIDTH*0.05f, W_HEIGHT*0.5f);
_shaderHalo.loadFromFile(WORK_DIR+"Resources/halo.frag", sf::Shader::Fragment);
_shaderHalo.setParameter("blue", attacking);
_shaderHalo.setParameter("time", time);
} }
void Combat::update(float deltaTime, sf::RenderWindow *window) { void Combat::update(float deltaTime, sf::RenderWindow *window) {
player->update(deltaTime, window); player->update(deltaTime, window);
bool aux = enemy->update(deltaTime, window); bool aux = enemy->update(deltaTime, window);
if (ia) enemyManager(aux); //end of player two ia rythm if (ia) enemyManager(aux); //end of player two ia rythm
time += deltaTime;
time += deltaTime;
_shader.setParameter("time", time); _shader.setParameter("time", time);
for(std::vector<Wave*>::iterator w = waves.begin(); w != waves.end();){ for(std::vector<Wave*>::iterator w = waves.begin(); w != waves.end();){
if ((*w)->getDirection() && (*w)->getPosition().x >= 1024) w=waves.erase(w); if ((*w)->getDirection() && (*w)->getPosition().x >= 1024) w=waves.erase(w);
@ -55,12 +64,14 @@ void Combat::update(float deltaTime, sf::RenderWindow *window) {
++w; ++w;
} }
} }
_shaderHalo.setParameter("time", time);
} }
void Combat::draw(sf::RenderWindow *window) { void Combat::draw(sf::RenderWindow *window) {
window->draw(_background, &_shader); window->draw(_background, &_shader);
player->draw(window); player->draw(window);
enemy->draw(window); enemy->draw(window);
window->draw(_halo, &_shaderHalo);
scorePlayer->draw(window); scorePlayer->draw(window);
scoreEnemy->draw(window); scoreEnemy->draw(window);
for(std::vector<Wave*>::iterator w = waves.begin(); w != waves.end(); ++w){ for(std::vector<Wave*>::iterator w = waves.begin(); w != waves.end(); ++w){
@ -71,6 +82,7 @@ void Combat::draw(sf::RenderWindow *window) {
void Combat::updateEvents(sf::Event e) { void Combat::updateEvents(sf::Event e) {
if (playerOneTurn) { if (playerOneTurn) {
if(e.type == sf::Event::KeyPressed && e.key.code == sf::Keyboard::C && !attacking) doMahWaves(!playerOneTurn); if(e.type == sf::Event::KeyPressed && e.key.code == sf::Keyboard::C && !attacking) doMahWaves(!playerOneTurn);
_halo.setPosition(W_WIDTH*0.05f, W_HEIGHT*0.5f);
bool aux = player->event(e, !attacking); bool aux = player->event(e, !attacking);
if (!aux) { //end of player one ritm if (!aux) { //end of player one ritm
@ -83,11 +95,13 @@ void Combat::updateEvents(sf::Event e) {
} }
else playerOneTurn = aux; else playerOneTurn = aux;
attacking = !attacking; attacking = !attacking;
_shaderHalo.setParameter("blue", attacking);
} }
} }
else if (!ia) { else if (!ia) {
if(e.type == sf::Event::KeyPressed && e.key.code == sf::Keyboard::C && !attacking) doMahWaves(!playerOneTurn); if(e.type == sf::Event::KeyPressed && e.key.code == sf::Keyboard::C && !attacking) doMahWaves(!playerOneTurn);
_halo.setPosition(W_WIDTH*0.65f, W_HEIGHT*0.5f);
bool aux = !enemy->event(e, !attacking); bool aux = !enemy->event(e, !attacking);
enemyManager(aux); //end of player two not ia ritm enemyManager(aux); //end of player two not ia ritm
} }
@ -102,6 +116,7 @@ void Combat::enemyManager(bool aux) {
} }
else playerOneTurn = aux; else playerOneTurn = aux;
attacking = !attacking; attacking = !attacking;
_shaderHalo.setParameter("blue", attacking);
} }
} }

View file

@ -11,30 +11,31 @@
#include "score.hpp" #include "score.hpp"
#include "wave.hpp" #include "wave.hpp"
class Combat : public Scene { class Combat : public Scene {
public: public:
Combat(); Combat();
~Combat(); ~Combat();
Combat(bool ia); Combat(bool ia);
Combat(const Combat& m) = delete; Combat(const Combat& m) = delete;
Combat(const Combat&& m) = delete; Combat(const Combat&& m) = delete;
Combat& operator=(Combat& m) = delete; Combat& operator=(Combat& m) = delete;
Combat& operator=(Combat&& m) = delete; Combat& operator=(Combat&& m) = delete;
void update(float deltaTime, sf::RenderWindow *window) final override; void update(float deltaTime, sf::RenderWindow *window) final override;
void draw(sf::RenderWindow *window) final override; void draw(sf::RenderWindow *window) final override;
void updateEvents(sf::Event e) final override; void updateEvents(sf::Event e) final override;
private: private:
bool playerOneTurn, ia, attacking; bool playerOneTurn, ia, attacking;
Actor *player; Actor *player, *enemy;
Actor *enemy; float time;
float time;
sf::Texture _text; std::vector<Wave*> waves;
sf::Sprite _background; sf::Texture _text, _haloT, _plataformT;
sf::Shader _shader; sf::Sprite _background, _halo, _plataform;
std::vector<Wave*> waves; sf::Shader _shader, _shaderHalo;
Score *scoreEnemy, *scorePlayer;
void initShader(); Score *scoreEnemy, *scorePlayer;
void enemyManager(bool aux); void initShader();
void doMahWaves(bool p); void enemyManager(bool aux);
void doMahWaves(bool p);
}; };
#endif // COMBAT_H #endif // COMBAT_H

View file

@ -35,8 +35,9 @@ bool Player::event(sf::Event e, bool def) {
} }
else { else {
compas.end(); compas.end();
if (!error || (error && animate == PlayerState::idle))
animate = PlayerState::hurt;
error = true; error = true;
if (animate != PlayerState::inMidle) animate = PlayerState::hurt;
} }
} }
break; break;