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);
|
||||
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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ private:
|
|||
Score *scoreEnemy, *scorePlayer;
|
||||
void initShader();
|
||||
void enemyManager(bool aux);
|
||||
void animationTo(bool toEnemy, float deltaTime);
|
||||
};
|
||||
|
||||
#endif // COMBAT_H
|
||||
|
|
|
@ -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;}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Reference in a new issue