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(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;
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<Button*> _buttons;
|
||||
};
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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