minor fixes

This commit is contained in:
serk 2017-01-21 23:44:22 +01:00
parent 6038a5ab6f
commit 01dcd14236
8 changed files with 71 additions and 21 deletions

View file

@ -14,7 +14,7 @@ public:
void draw(sf::RenderWindow *window); void draw(sf::RenderWindow *window);
bool hitBy(Compas enemy); bool hitBy(Compas enemy);
Compas getAttack() const; Compas getAttack() const;
virtual bool event(sf::Event e, bool def) = 0; virtual bool event(sf::Event e) = 0;
protected: protected:
Compas compas; Compas compas;

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.5f; float posX1 = W_WIDTH*0.05f, posY1 = W_HEIGHT*0.5f - 15;
//POSICIO PLAYER 2 //POSICIO PLAYER 2
float posX2 = W_WIDTH*0.65f, posY2 = W_HEIGHT*0.5f; float posX2 = W_WIDTH*0.65f, posY2 = W_HEIGHT*0.5f - 15;
//END CONFIG //END CONFIG
int magicNumber; int magicNumber;

View file

@ -32,11 +32,17 @@ void Combat::initShader() {
_shader.setParameter("resolution", sf::Vector2f(W_WIDTH, W_HEIGHT)); _shader.setParameter("resolution", sf::Vector2f(W_WIDTH, W_HEIGHT));
_shader.setParameter("time", time); _shader.setParameter("time", time);
ASSERT(_haloT.loadFromFile(WORK_DIR+"Resources/platform-halo.png")); ASSERT(_haloT.loadFromFile(WORK_DIR+"Resources/platform-halo.png"));
_halo.setTexture(_haloT); _halo.setTexture(_haloT);
_halo.setPosition(W_WIDTH*0.05f, W_HEIGHT*0.5f); _halo.setPosition(W_WIDTH*0.05f, W_HEIGHT*0.5f);
ASSERT(_plataformT.loadFromFile(WORK_DIR+"Resources/platforms-spreadsheet.png"));
_plataform.setTexture(_plataformT);
_plataform.setPosition(W_WIDTH*0.05f, W_HEIGHT*0.5f);
sf::IntRect rect = sf::IntRect(0, 0, _plataformT.getSize().x/2, _plataformT.getSize().y);
_plataform.setTextureRect(rect);
_shaderHalo.loadFromFile(WORK_DIR+"Resources/halo.frag", sf::Shader::Fragment); _shaderHalo.loadFromFile(WORK_DIR+"Resources/halo.frag", sf::Shader::Fragment);
_shaderHalo.setParameter("blue", attacking); _shaderHalo.setParameter("type", 0.0f);
_shaderHalo.setParameter("time", time); _shaderHalo.setParameter("time", time);
} }
@ -49,10 +55,36 @@ void Combat::update(float deltaTime, sf::RenderWindow *window) {
time += deltaTime; time += deltaTime;
_shader.setParameter("time", time); _shader.setParameter("time", time);
_shaderHalo.setParameter("time", time); _shaderHalo.setParameter("time", time);
if (playerOneTurn) {
if(_halo.getPosition().x != W_WIDTH*0.05f)
animationTo(false, deltaTime);
}
else {
if(_halo.getPosition().x != W_WIDTH*0.65f)
animationTo(true, deltaTime);
}
if (!attacking) _shaderHalo.setParameter("type", 0.0f);
else {
if (playerOneTurn)_shaderHalo.setParameter("type", 2.0f);
else _shaderHalo.setParameter("type", 1.0f);
}
sf::IntRect rect;
if (playerOneTurn)
rect = sf::IntRect(0, 0, _plataformT.getSize().x/2, _plataformT.getSize().y);
else
rect = sf::IntRect(_plataformT.getSize().x/2, 0, _plataformT.getSize().x/2, _plataformT.getSize().y);
_plataform.setTextureRect(rect);
} }
void Combat::draw(sf::RenderWindow *window) { void Combat::draw(sf::RenderWindow *window) {
window->draw(_background, &_shader); window->draw(_background, &_shader);
window->draw(_plataform);
player->draw(window); player->draw(window);
enemy->draw(window); enemy->draw(window);
window->draw(_halo, &_shaderHalo); window->draw(_halo, &_shaderHalo);
@ -62,23 +94,20 @@ void Combat::draw(sf::RenderWindow *window) {
void Combat::updateEvents(sf::Event e) { void Combat::updateEvents(sf::Event e) {
if (playerOneTurn) { if (playerOneTurn) {
_halo.setPosition(W_WIDTH*0.05f, W_HEIGHT*0.5f); bool aux = player->event(e);
bool aux = player->event(e, !attacking);
if (!aux) { //end of player one ritm if (!aux) { //end of player one ritm
if (!attacking) { if (!attacking && !ia) {
if(!player->hitBy(enemy->getAttack())) { if(!player->hitBy(enemy->getAttack())) {
scoreEnemy->incrisScore(); scoreEnemy->incrisScore();
} }
} }
else playerOneTurn = aux; else playerOneTurn = aux;
attacking = !attacking; attacking = !attacking;
_shaderHalo.setParameter("blue", attacking);
} }
} }
else if (!ia) { else if (!ia) {
_halo.setPosition(W_WIDTH*0.65f, W_HEIGHT*0.5f); bool aux = !enemy->event(e);
bool aux = !enemy->event(e, !attacking);
enemyManager(aux); //end of player two not ia ritm enemyManager(aux); //end of player two not ia ritm
} }
} }
@ -92,6 +121,25 @@ void Combat::enemyManager(bool aux) {
} }
else playerOneTurn = aux; else playerOneTurn = aux;
attacking = !attacking; attacking = !attacking;
_shaderHalo.setParameter("blue", attacking);
} }
} }
void Combat::animationTo(bool toEnemy, float deltaTime) {
if (toEnemy) {
_halo.move(deltaTime*2000, 0.0f);
_plataform.move(deltaTime*2000, 0.0f);
if (_halo.getPosition().x > W_WIDTH*0.65f) {
_halo.setPosition(W_WIDTH*0.65f, _halo.getPosition().y);
_plataform.setPosition(W_WIDTH*0.65f, _plataform.getPosition().y);
}
}
else {
_halo.move(deltaTime*-2000, 0.0f);
_plataform.move(deltaTime*-2000, 0.0f);
if (_halo.getPosition().x < W_WIDTH*0.05f) {
_halo.setPosition(W_WIDTH*0.05f, _halo.getPosition().y);
_plataform.setPosition(W_WIDTH*0.05f, _plataform.getPosition().y);
}
}
}

View file

@ -33,6 +33,7 @@ private:
Score *scoreEnemy, *scorePlayer; Score *scoreEnemy, *scorePlayer;
void initShader(); void initShader();
void enemyManager(bool aux); void enemyManager(bool aux);
void animationTo(bool toEnemy, float deltaTime);
}; };
#endif // COMBAT_H #endif // COMBAT_H

View file

@ -7,4 +7,4 @@ bool IaEnemy::updateLogic(float deltaTime, sf::RenderWindow *window) {
return true; return true;
} }
bool IaEnemy::event(sf::Event e, bool def) {return false;} bool IaEnemy::event(sf::Event e) {return false;}

View file

@ -7,7 +7,7 @@ class IaEnemy : public Actor {
public: public:
IaEnemy(); IaEnemy();
IaEnemy(int player); IaEnemy(int player);
bool event(sf::Event e, bool def) final override; bool event(sf::Event e) final override;
protected: protected:
bool updateLogic(float deltaTime, sf::RenderWindow *window); bool updateLogic(float deltaTime, sf::RenderWindow *window);

View file

@ -21,7 +21,7 @@ bool Player::updateLogic(float deltaTime, sf::RenderWindow *window) {
return false; return false;
} }
bool Player::event(sf::Event e, bool def) { bool Player::event(sf::Event e) {
switch(e.type) { switch(e.type) {
case (sf::Event::KeyPressed): case (sf::Event::KeyPressed):
if(e.key.code == sf::Keyboard::C) { if(e.key.code == sf::Keyboard::C) {
@ -34,10 +34,11 @@ bool Player::event(sf::Event e, bool def) {
if (compas.isPressed()) animate = PlayerState::attacking; if (compas.isPressed()) animate = PlayerState::attacking;
} }
else { else {
compas.end(); if (!error) {
if (!error || (error && animate == PlayerState::idle)) compas.end();
animate = PlayerState::hurt; animate = PlayerState::hurt;
error = true; error = true;
}
} }
} }
break; break;

View file

@ -8,7 +8,7 @@ class Player : public Actor {
public: public:
Player(); Player();
Player(int num); Player(int num);
bool event(sf::Event e, bool def) final override; bool event(sf::Event e) final override;
protected: protected:
bool updateLogic(float deltaTime, sf::RenderWindow *window); bool updateLogic(float deltaTime, sf::RenderWindow *window);