minor fixes

This commit is contained in:
serk 2017-01-21 23:44:22 +01:00
parent 6038a5ab6f
commit 01dcd14236
8 changed files with 71 additions and 21 deletions

View file

@ -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;

View file

@ -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;

View file

@ -35,8 +35,14 @@ void Combat::initShader() {
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);
}
}
}

View file

@ -33,6 +33,7 @@ private:
Score *scoreEnemy, *scorePlayer;
void initShader();
void enemyManager(bool aux);
void animationTo(bool toEnemy, float deltaTime);
};
#endif // COMBAT_H

View file

@ -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;}

View file

@ -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);

View file

@ -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,12 +34,13 @@ bool Player::event(sf::Event e, bool def) {
if (compas.isPressed()) animate = PlayerState::attacking;
}
else {
if (!error) {
compas.end();
if (!error || (error && animate == PlayerState::idle))
animate = PlayerState::hurt;
error = true;
}
}
}
break;
case (sf::Event::KeyReleased):
if (e.key.code == sf::Keyboard::C) {

View file

@ -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);