From 01dcd14236f9492e7d95e07c7882d677fd90ca9a Mon Sep 17 00:00:00 2001 From: serk Date: Sat, 21 Jan 2017 23:44:22 +0100 Subject: [PATCH] minor fixes --- VaporWaveWars/actor.hpp | 2 +- VaporWaveWars/character.hpp | 4 +-- VaporWaveWars/combat.cpp | 70 +++++++++++++++++++++++++++++++------ VaporWaveWars/combat.hpp | 1 + VaporWaveWars/iaenemy.cpp | 2 +- VaporWaveWars/iaenemy.hpp | 2 +- VaporWaveWars/player.cpp | 9 ++--- VaporWaveWars/player.hpp | 2 +- 8 files changed, 71 insertions(+), 21 deletions(-) diff --git a/VaporWaveWars/actor.hpp b/VaporWaveWars/actor.hpp index 8d9da42..df3a059 100644 --- a/VaporWaveWars/actor.hpp +++ b/VaporWaveWars/actor.hpp @@ -14,7 +14,7 @@ public: void draw(sf::RenderWindow *window); bool hitBy(Compas enemy); Compas getAttack() const; - virtual bool event(sf::Event e, bool def) = 0; + virtual bool event(sf::Event e) = 0; protected: Compas compas; diff --git a/VaporWaveWars/character.hpp b/VaporWaveWars/character.hpp index 9e78419..b32ece5 100644 --- a/VaporWaveWars/character.hpp +++ b/VaporWaveWars/character.hpp @@ -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.5f; + float posX1 = W_WIDTH*0.05f, posY1 = W_HEIGHT*0.5f - 15; //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 int magicNumber; diff --git a/VaporWaveWars/combat.cpp b/VaporWaveWars/combat.cpp index 1ed76c9..1f0a8a1 100644 --- a/VaporWaveWars/combat.cpp +++ b/VaporWaveWars/combat.cpp @@ -32,11 +32,17 @@ void Combat::initShader() { _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); + ASSERT(_haloT.loadFromFile(WORK_DIR+"Resources/platform-halo.png")); + _halo.setTexture(_haloT); + _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.setParameter("blue", attacking); + _shaderHalo.setParameter("type", 0.0f); _shaderHalo.setParameter("time", time); } @@ -49,10 +55,36 @@ void Combat::update(float deltaTime, sf::RenderWindow *window) { time += deltaTime; _shader.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) { + window->draw(_background, &_shader); + window->draw(_plataform); player->draw(window); enemy->draw(window); window->draw(_halo, &_shaderHalo); @@ -62,23 +94,20 @@ void Combat::draw(sf::RenderWindow *window) { void Combat::updateEvents(sf::Event e) { if (playerOneTurn) { - _halo.setPosition(W_WIDTH*0.05f, W_HEIGHT*0.5f); - bool aux = player->event(e, !attacking); + bool aux = player->event(e); if (!aux) { //end of player one ritm - if (!attacking) { + if (!attacking && !ia) { if(!player->hitBy(enemy->getAttack())) { scoreEnemy->incrisScore(); } } else playerOneTurn = aux; attacking = !attacking; - _shaderHalo.setParameter("blue", attacking); } } else if (!ia) { - _halo.setPosition(W_WIDTH*0.65f, W_HEIGHT*0.5f); - bool aux = !enemy->event(e, !attacking); + bool aux = !enemy->event(e); enemyManager(aux); //end of player two not ia ritm } } @@ -92,6 +121,25 @@ void Combat::enemyManager(bool aux) { } else playerOneTurn = aux; 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); + } + } +} diff --git a/VaporWaveWars/combat.hpp b/VaporWaveWars/combat.hpp index 6439cfe..0ddb82f 100644 --- a/VaporWaveWars/combat.hpp +++ b/VaporWaveWars/combat.hpp @@ -33,6 +33,7 @@ private: Score *scoreEnemy, *scorePlayer; void initShader(); void enemyManager(bool aux); + void animationTo(bool toEnemy, float deltaTime); }; #endif // COMBAT_H diff --git a/VaporWaveWars/iaenemy.cpp b/VaporWaveWars/iaenemy.cpp index d227be4..36944f3 100644 --- a/VaporWaveWars/iaenemy.cpp +++ b/VaporWaveWars/iaenemy.cpp @@ -7,4 +7,4 @@ bool IaEnemy::updateLogic(float deltaTime, sf::RenderWindow *window) { return true; } -bool IaEnemy::event(sf::Event e, bool def) {return false;} +bool IaEnemy::event(sf::Event e) {return false;} diff --git a/VaporWaveWars/iaenemy.hpp b/VaporWaveWars/iaenemy.hpp index 8ffff11..8b40f3e 100644 --- a/VaporWaveWars/iaenemy.hpp +++ b/VaporWaveWars/iaenemy.hpp @@ -7,7 +7,7 @@ class IaEnemy : public Actor { public: IaEnemy(); IaEnemy(int player); - bool event(sf::Event e, bool def) final override; + bool event(sf::Event e) final override; protected: bool updateLogic(float deltaTime, sf::RenderWindow *window); diff --git a/VaporWaveWars/player.cpp b/VaporWaveWars/player.cpp index 866ec03..666ca3c 100644 --- a/VaporWaveWars/player.cpp +++ b/VaporWaveWars/player.cpp @@ -21,7 +21,7 @@ bool Player::updateLogic(float deltaTime, sf::RenderWindow *window) { return false; } -bool Player::event(sf::Event e, bool def) { +bool Player::event(sf::Event e) { switch(e.type) { case (sf::Event::KeyPressed): 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; } else { - compas.end(); - if (!error || (error && animate == PlayerState::idle)) + if (!error) { + compas.end(); animate = PlayerState::hurt; - error = true; + error = true; + } } } break; diff --git a/VaporWaveWars/player.hpp b/VaporWaveWars/player.hpp index 487efa7..3286532 100644 --- a/VaporWaveWars/player.hpp +++ b/VaporWaveWars/player.hpp @@ -8,7 +8,7 @@ class Player : public Actor { public: Player(); Player(int num); - bool event(sf::Event e, bool def) final override; + bool event(sf::Event e) final override; protected: bool updateLogic(float deltaTime, sf::RenderWindow *window);