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 std::string spriteFile = WORK_DIR+"Resources/spreadsheet.png";
|
||||
//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
|
||||
float posX2 = W_WIDTH*0.65f, posY2 = W_HEIGHT*0.6f;
|
||||
float posX2 = W_WIDTH*0.65f, posY2 = W_HEIGHT*0.5f;
|
||||
//END CONFIG
|
||||
|
||||
int magicNumber;
|
||||
|
|
|
@ -37,14 +37,23 @@ void Combat::initShader() {
|
|||
_background.setTexture(_text);
|
||||
_shader.loadFromFile(WORK_DIR+"Resources/shader.frag", sf::Shader::Fragment);
|
||||
_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) {
|
||||
player->update(deltaTime, window);
|
||||
bool aux = enemy->update(deltaTime, window);
|
||||
if (ia) enemyManager(aux); //end of player two ia rythm
|
||||
time += deltaTime;
|
||||
|
||||
time += deltaTime;
|
||||
_shader.setParameter("time", time);
|
||||
for(std::vector<Wave*>::iterator w = waves.begin(); w != waves.end();){
|
||||
if ((*w)->getDirection() && (*w)->getPosition().x >= 1024) w=waves.erase(w);
|
||||
|
@ -55,12 +64,14 @@ void Combat::update(float deltaTime, sf::RenderWindow *window) {
|
|||
++w;
|
||||
}
|
||||
}
|
||||
_shaderHalo.setParameter("time", time);
|
||||
}
|
||||
|
||||
void Combat::draw(sf::RenderWindow *window) {
|
||||
window->draw(_background, &_shader);
|
||||
player->draw(window);
|
||||
enemy->draw(window);
|
||||
window->draw(_halo, &_shaderHalo);
|
||||
scorePlayer->draw(window);
|
||||
scoreEnemy->draw(window);
|
||||
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) {
|
||||
if (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);
|
||||
|
||||
if (!aux) { //end of player one ritm
|
||||
|
@ -83,11 +95,13 @@ void Combat::updateEvents(sf::Event e) {
|
|||
}
|
||||
else playerOneTurn = aux;
|
||||
attacking = !attacking;
|
||||
_shaderHalo.setParameter("blue", attacking);
|
||||
}
|
||||
}
|
||||
else if (!ia) {
|
||||
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);
|
||||
enemyManager(aux); //end of player two not ia ritm
|
||||
}
|
||||
|
@ -102,6 +116,7 @@ void Combat::enemyManager(bool aux) {
|
|||
}
|
||||
else playerOneTurn = aux;
|
||||
attacking = !attacking;
|
||||
_shaderHalo.setParameter("blue", attacking);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,30 +11,31 @@
|
|||
#include "score.hpp"
|
||||
#include "wave.hpp"
|
||||
class Combat : public Scene {
|
||||
public:
|
||||
Combat();
|
||||
~Combat();
|
||||
Combat(bool ia);
|
||||
Combat(const Combat& m) = delete;
|
||||
Combat(const Combat&& m) = delete;
|
||||
Combat& operator=(Combat& m) = delete;
|
||||
Combat& operator=(Combat&& m) = delete;
|
||||
void update(float deltaTime, sf::RenderWindow *window) final override;
|
||||
void draw(sf::RenderWindow *window) final override;
|
||||
void updateEvents(sf::Event e) final override;
|
||||
private:
|
||||
bool playerOneTurn, ia, attacking;
|
||||
Actor *player;
|
||||
Actor *enemy;
|
||||
float time;
|
||||
sf::Texture _text;
|
||||
sf::Sprite _background;
|
||||
sf::Shader _shader;
|
||||
std::vector<Wave*> waves;
|
||||
Score *scoreEnemy, *scorePlayer;
|
||||
void initShader();
|
||||
void enemyManager(bool aux);
|
||||
void doMahWaves(bool p);
|
||||
public:
|
||||
Combat();
|
||||
~Combat();
|
||||
Combat(bool ia);
|
||||
Combat(const Combat& m) = delete;
|
||||
Combat(const Combat&& m) = delete;
|
||||
Combat& operator=(Combat& m) = delete;
|
||||
Combat& operator=(Combat&& m) = delete;
|
||||
void update(float deltaTime, sf::RenderWindow *window) final override;
|
||||
void draw(sf::RenderWindow *window) final override;
|
||||
void updateEvents(sf::Event e) final override;
|
||||
private:
|
||||
bool playerOneTurn, ia, attacking;
|
||||
Actor *player, *enemy;
|
||||
float time;
|
||||
|
||||
std::vector<Wave*> waves;
|
||||
sf::Texture _text, _haloT, _plataformT;
|
||||
sf::Sprite _background, _halo, _plataform;
|
||||
sf::Shader _shader, _shaderHalo;
|
||||
|
||||
Score *scoreEnemy, *scorePlayer;
|
||||
void initShader();
|
||||
void enemyManager(bool aux);
|
||||
void doMahWaves(bool p);
|
||||
};
|
||||
|
||||
#endif // COMBAT_H
|
||||
|
|
|
@ -35,8 +35,9 @@ bool Player::event(sf::Event e, bool def) {
|
|||
}
|
||||
else {
|
||||
compas.end();
|
||||
if (!error || (error && animate == PlayerState::idle))
|
||||
animate = PlayerState::hurt;
|
||||
error = true;
|
||||
if (animate != PlayerState::inMidle) animate = PlayerState::hurt;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Reference in a new issue