merged waves and halos
This commit is contained in:
commit
e6fd8a2b1d
7 changed files with 66 additions and 28 deletions
12
Resources/halo.frag
Normal file
12
Resources/halo.frag
Normal 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;
|
||||||
|
}
|
9
Resources/shaderHalo.frag
Normal file
9
Resources/shaderHalo.frag
Normal 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 |
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Reference in a new issue