pseudo two player implemented
This commit is contained in:
parent
c9255d854d
commit
992568fe07
10 changed files with 86 additions and 30 deletions
39
Resources/shader.frag
Normal file
39
Resources/shader.frag
Normal file
|
@ -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;
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
Actor::Actor() {}
|
Actor::Actor() {}
|
||||||
|
|
||||||
Actor::Actor(int num) {
|
Actor::Actor(int num) {
|
||||||
|
animate = true;
|
||||||
this->character = new Character(num);
|
this->character = new Character(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,3 +18,12 @@ bool Actor::update(float deltaTime, sf::RenderWindow *window) {
|
||||||
}
|
}
|
||||||
return this->updateLogic(deltaTime, 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;
|
||||||
|
}
|
||||||
|
|
|
@ -3,15 +3,20 @@
|
||||||
|
|
||||||
#include "commons.hpp"
|
#include "commons.hpp"
|
||||||
#include "character.hpp"
|
#include "character.hpp"
|
||||||
|
#include "compas.hpp"
|
||||||
|
|
||||||
class Actor
|
class Actor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Actor();
|
Actor();
|
||||||
Actor(int num);
|
Actor(int num);
|
||||||
bool update(float deltaTime, sf::RenderWindow *window);
|
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;
|
virtual bool event(sf::Event e) = 0;
|
||||||
protected:
|
protected:
|
||||||
|
Compas compas;
|
||||||
bool animate;
|
bool animate;
|
||||||
virtual bool updateLogic(float deltaTime, sf::RenderWindow *window) = 0;
|
virtual bool updateLogic(float deltaTime, sf::RenderWindow *window) = 0;
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -9,9 +9,9 @@ private:
|
||||||
const int numFrames = 4;
|
const int numFrames = 4;
|
||||||
const std::string spriteFile = "./Resources/spreadsheet.png";
|
const std::string spriteFile = "./Resources/spreadsheet.png";
|
||||||
//POSICIO PLAYER 1
|
//POSICIO PLAYER 1
|
||||||
float posX1 = 0, posY1 = 0;
|
float posX1 = 0, posY1 = 250;
|
||||||
//POSICIO PLAYER 2
|
//POSICIO PLAYER 2
|
||||||
float posX2 = 300, posY2 = 0;
|
float posX2 = 500, posY2 = 250;
|
||||||
//END CONFIG
|
//END CONFIG
|
||||||
|
|
||||||
int magicNumber;
|
int magicNumber;
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
#include "combat.hpp"
|
#include "combat.hpp"
|
||||||
|
|
||||||
Combat::Combat() {
|
Combat::Combat() {
|
||||||
ia = playerOneTurn = true;
|
ia = true;
|
||||||
|
attacking = playerOneTurn = true;
|
||||||
player = new Player(0);
|
player = new Player(0);
|
||||||
enemy = new IaEnemy(1);
|
enemy = new IaEnemy(1);
|
||||||
initShader();
|
initShader();
|
||||||
|
@ -10,9 +11,10 @@ Combat::Combat() {
|
||||||
Combat::Combat(bool ia) {
|
Combat::Combat(bool ia) {
|
||||||
this->ia = ia;
|
this->ia = ia;
|
||||||
player = new Player(0);
|
player = new Player(0);
|
||||||
playerOneTurn = true;
|
attacking = playerOneTurn = true;
|
||||||
if (ia) enemy = new IaEnemy(1);
|
if (ia) enemy = new IaEnemy(1);
|
||||||
else enemy = new Player(1);
|
else enemy = new Player(1);
|
||||||
|
initShader();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::initShader() {
|
void Combat::initShader() {
|
||||||
|
@ -25,7 +27,8 @@ void Combat::initShader() {
|
||||||
|
|
||||||
void Combat::update(float deltaTime, sf::RenderWindow *window) {
|
void Combat::update(float deltaTime, sf::RenderWindow *window) {
|
||||||
player->update(deltaTime, 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;
|
time += deltaTime;
|
||||||
_shader.setParameter("time", time);
|
_shader.setParameter("time", time);
|
||||||
}
|
}
|
||||||
|
@ -37,6 +40,24 @@ void Combat::draw(sf::RenderWindow *window) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Combat::updateEvents(sf::Event e) {
|
void Combat::updateEvents(sf::Event e) {
|
||||||
if (playerOneTurn) playerOneTurn = player->event(e);
|
if (playerOneTurn) {
|
||||||
else if (!ia) playerOneTurn = !enemy->event(e);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ public:
|
||||||
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;
|
bool playerOneTurn, ia, attacking;
|
||||||
Actor *player;
|
Actor *player;
|
||||||
Actor *enemy;
|
Actor *enemy;
|
||||||
float time;
|
float time;
|
||||||
|
@ -29,7 +29,7 @@ private:
|
||||||
sf::Shader _shader;
|
sf::Shader _shader;
|
||||||
|
|
||||||
void initShader();
|
void initShader();
|
||||||
|
void enemyManager(bool aux);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // COMBAT_H
|
#endif // COMBAT_H
|
||||||
|
|
|
@ -14,7 +14,7 @@ class Menu : public Scene{
|
||||||
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:
|
||||||
Button _start = Button("./Resources/exit-spreadsheet.png");
|
Button _start = Button("./Resources/play-spreadsheet.png");
|
||||||
Button _exit = Button("./Resources/exit-spreadsheet.png");
|
Button _exit = Button("./Resources/exit-spreadsheet.png");
|
||||||
std::vector<Button*> _buttons;
|
std::vector<Button*> _buttons;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
#include "player.hpp"
|
#include "player.hpp"
|
||||||
|
|
||||||
Player::Player(int num) : Actor(num) {
|
Player::Player(int num) : Actor(num) {
|
||||||
animate = false;
|
|
||||||
compas = Compas();
|
compas = Compas();
|
||||||
}
|
}
|
||||||
|
|
||||||
Player::Player() : Actor(1) {
|
Player::Player() : Actor(1) {
|
||||||
animate = false;
|
|
||||||
compas = Compas();
|
compas = Compas();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,6 @@ public:
|
||||||
Player();
|
Player();
|
||||||
Player(int num);
|
Player(int num);
|
||||||
bool event(sf::Event e) final override;
|
bool event(sf::Event e) final override;
|
||||||
private:
|
|
||||||
Compas compas;
|
|
||||||
protected:
|
protected:
|
||||||
bool updateLogic(float deltaTime, sf::RenderWindow *window);
|
bool updateLogic(float deltaTime, sf::RenderWindow *window);
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
Reference in a new issue