minor fixes
This commit is contained in:
parent
6038a5ab6f
commit
01dcd14236
8 changed files with 71 additions and 21 deletions
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Reference in a new issue