From 992568fe0758618ef0a31bc4995f60d7d1a55fb9 Mon Sep 17 00:00:00 2001 From: serk Date: Sat, 21 Jan 2017 09:56:00 +0100 Subject: [PATCH] pseudo two player implemented --- Resources/shader.frag | 39 +++++++++++++++++++ VaporWaveWars/actor.cpp | 10 +++++ VaporWaveWars/actor.hpp | 7 +++- VaporWaveWars/character.hpp | 4 +- VaporWaveWars/combat.cpp | 31 ++++++++++++--- VaporWaveWars/combat.hpp | 4 +- VaporWaveWars/menu.hpp | 2 +- VaporWaveWars/player.cpp | 2 - VaporWaveWars/player.hpp | 2 - .../.qmake.stash | 15 ------- 10 files changed, 86 insertions(+), 30 deletions(-) create mode 100644 Resources/shader.frag delete mode 100644 build-VaporWaveWars-Desktop_Qt_5_7_0_GCC_64bit-Debug/.qmake.stash diff --git a/Resources/shader.frag b/Resources/shader.frag new file mode 100644 index 0000000..7378418 --- /dev/null +++ b/Resources/shader.frag @@ -0,0 +1,39 @@ +uniform vec2 resolution; +uniform float time; + +float rand(vec2 n) { + return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); +} + +float line(float p, float x, float glow) { + return 1. - pow(abs(p - x), glow); +} + +float grid(vec2 uv) { + float glow = 0.05; + float c = line(uv.x, 0.25, glow) + line(uv.x, 0.75, glow) + + line(uv.x, 0.5, glow) + + line(uv.x, 0.25, glow) + line(uv.x, 1.0, glow) + + line(uv.y, 0.25, glow) + line(uv.y, 0.75, glow) + + line(uv.y, 0.5, glow) + + line(uv.y, 0.25, glow) + line(uv.y, 1.0, glow); + + return c; +} + +void main(void) { + vec2 umuv = (gl_FragCoord.xy / resolution.xy - .5) * 2.; + vec2 uv = umuv; + float z = (abs(uv.y ) * .8 + 3.); + + uv.y *= 3.; + uv /= z*0.25; + + float clampfinite = abs(clamp(umuv.y, -1., 0.)) * pow(z, 1. / 10.); + + uv.y += abs(time * 0.1); + + float grain = (0.8 + 0.2 * rand(umuv + time)); + vec4 color = vec4(255, 120, 153, 255) / 255.; + gl_FragColor = (grid(fract(uv))) * grain * color * clampfinite; +} \ No newline at end of file diff --git a/VaporWaveWars/actor.cpp b/VaporWaveWars/actor.cpp index df6ee96..5a3b5bc 100644 --- a/VaporWaveWars/actor.cpp +++ b/VaporWaveWars/actor.cpp @@ -2,6 +2,7 @@ Actor::Actor() {} Actor::Actor(int num) { + animate = true; this->character = new Character(num); } @@ -17,3 +18,12 @@ bool Actor::update(float deltaTime, sf::RenderWindow *window) { } return this->updateLogic(deltaTime, window); } + +void Actor::hitBy(Compas enemy) const { + if (enemy == compas) std::cout << "dodge" << std::endl; + else std::cout << "hit" << std::endl; +} + +Compas Actor::getAttack() const { + return compas; +} diff --git a/VaporWaveWars/actor.hpp b/VaporWaveWars/actor.hpp index 158a763..f876f70 100644 --- a/VaporWaveWars/actor.hpp +++ b/VaporWaveWars/actor.hpp @@ -3,15 +3,20 @@ #include "commons.hpp" #include "character.hpp" +#include "compas.hpp" + class Actor { public: Actor(); Actor(int num); bool update(float deltaTime, sf::RenderWindow *window); - void draw(sf::RenderWindow *window) ; + void draw(sf::RenderWindow *window); + void hitBy(Compas enemy) const; + Compas getAttack() const; virtual bool event(sf::Event e) = 0; protected: + Compas compas; bool animate; virtual bool updateLogic(float deltaTime, sf::RenderWindow *window) = 0; private: diff --git a/VaporWaveWars/character.hpp b/VaporWaveWars/character.hpp index 66fb8d8..299e8b6 100644 --- a/VaporWaveWars/character.hpp +++ b/VaporWaveWars/character.hpp @@ -9,9 +9,9 @@ private: const int numFrames = 4; const std::string spriteFile = "./Resources/spreadsheet.png"; //POSICIO PLAYER 1 - float posX1 = 0, posY1 = 0; + float posX1 = 0, posY1 = 250; //POSICIO PLAYER 2 - float posX2 = 300, posY2 = 0; + float posX2 = 500, posY2 = 250; //END CONFIG int magicNumber; diff --git a/VaporWaveWars/combat.cpp b/VaporWaveWars/combat.cpp index ce56cd3..be305c9 100644 --- a/VaporWaveWars/combat.cpp +++ b/VaporWaveWars/combat.cpp @@ -1,7 +1,8 @@ #include "combat.hpp" Combat::Combat() { - ia = playerOneTurn = true; + ia = true; + attacking = playerOneTurn = true; player = new Player(0); enemy = new IaEnemy(1); initShader(); @@ -10,9 +11,10 @@ Combat::Combat() { Combat::Combat(bool ia) { this->ia = ia; player = new Player(0); - playerOneTurn = true; + attacking = playerOneTurn = true; if (ia) enemy = new IaEnemy(1); else enemy = new Player(1); + initShader(); } void Combat::initShader() { @@ -25,7 +27,8 @@ void Combat::initShader() { void Combat::update(float deltaTime, sf::RenderWindow *window) { player->update(deltaTime, window); - enemy->update(deltaTime, window); + bool aux = enemy->update(deltaTime, window); + if (ia) enemyManager(aux); //end of player two ia ritm time += deltaTime; _shader.setParameter("time", time); } @@ -37,6 +40,24 @@ void Combat::draw(sf::RenderWindow *window) { } void Combat::updateEvents(sf::Event e) { - if (playerOneTurn) playerOneTurn = player->event(e); - else if (!ia) playerOneTurn = !enemy->event(e); + if (playerOneTurn) { + bool aux = player->event(e); + if (!aux) { //end of player one ritm + if (!attacking) player->hitBy(enemy->getAttack()); + else playerOneTurn = aux; + attacking = !attacking; + } + } + else if (!ia) { + bool aux = !enemy->event(e); + enemyManager(aux); //end of player two not ia ritm + } +} + +void Combat::enemyManager(bool aux) { + if (aux) { + if (!attacking) enemy->hitBy(player->getAttack()); + else playerOneTurn = aux; + attacking = !attacking; + } } diff --git a/VaporWaveWars/combat.hpp b/VaporWaveWars/combat.hpp index cb0d9be..557011e 100644 --- a/VaporWaveWars/combat.hpp +++ b/VaporWaveWars/combat.hpp @@ -20,7 +20,7 @@ public: void draw(sf::RenderWindow *window) final override; void updateEvents(sf::Event e) final override; private: - bool playerOneTurn, ia; + bool playerOneTurn, ia, attacking; Actor *player; Actor *enemy; float time; @@ -29,7 +29,7 @@ private: sf::Shader _shader; void initShader(); - + void enemyManager(bool aux); }; #endif // COMBAT_H diff --git a/VaporWaveWars/menu.hpp b/VaporWaveWars/menu.hpp index 1d3d9f9..3360576 100644 --- a/VaporWaveWars/menu.hpp +++ b/VaporWaveWars/menu.hpp @@ -14,7 +14,7 @@ class Menu : public Scene{ void draw(sf::RenderWindow *window) final override; void updateEvents(sf::Event e) final override; private: - Button _start = Button("./Resources/exit-spreadsheet.png"); + Button _start = Button("./Resources/play-spreadsheet.png"); Button _exit = Button("./Resources/exit-spreadsheet.png"); std::vector _buttons; }; diff --git a/VaporWaveWars/player.cpp b/VaporWaveWars/player.cpp index d5e82e9..1a2e693 100644 --- a/VaporWaveWars/player.cpp +++ b/VaporWaveWars/player.cpp @@ -1,12 +1,10 @@ #include "player.hpp" Player::Player(int num) : Actor(num) { - animate = false; compas = Compas(); } Player::Player() : Actor(1) { - animate = false; compas = Compas(); } diff --git a/VaporWaveWars/player.hpp b/VaporWaveWars/player.hpp index 3e9a992..50f3d80 100644 --- a/VaporWaveWars/player.hpp +++ b/VaporWaveWars/player.hpp @@ -9,8 +9,6 @@ public: Player(); Player(int num); bool event(sf::Event e) final override; -private: - Compas compas; protected: bool updateLogic(float deltaTime, sf::RenderWindow *window); diff --git a/build-VaporWaveWars-Desktop_Qt_5_7_0_GCC_64bit-Debug/.qmake.stash b/build-VaporWaveWars-Desktop_Qt_5_7_0_GCC_64bit-Debug/.qmake.stash deleted file mode 100644 index c6486d1..0000000 --- a/build-VaporWaveWars-Desktop_Qt_5_7_0_GCC_64bit-Debug/.qmake.stash +++ /dev/null @@ -1,15 +0,0 @@ -QMAKE_DEFAULT_INCDIRS = \ - /usr/include/c++/6 \ - /usr/include/x86_64-linux-gnu/c++/6 \ - /usr/include/c++/6/backward \ - /usr/lib/gcc/x86_64-linux-gnu/6/include \ - /usr/local/include \ - /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed \ - /usr/include/x86_64-linux-gnu \ - /usr/include -QMAKE_DEFAULT_LIBDIRS = \ - /usr/lib/gcc/x86_64-linux-gnu/6 \ - /usr/lib/x86_64-linux-gnu \ - /usr/lib \ - /lib/x86_64-linux-gnu \ - /lib