#include "character.hpp" Character::Character(int player){ playerNum = player; ASSERT(texture.loadFromFile(spriteFile)); height = texture.getSize().y/6; width = texture.getSize().x/4; timestamp = indexX = idleFrame = 0; indexY = magicNumber; setTexture(texture); sf::IntRect rect = sf::IntRect(indexX*width, indexY*height, width, height); setTextureRect(rect); actualState = PlayerState::idle; if (playerNum == 0){ setPosition(posX1, posY1); magicNumber = 0; } else{ setPosition(posX2, posY2); magicNumber = 3; } } void Character::update(float deltaTime){ timestamp += deltaTime; if (timestamp >= frameTime){ timestamp = 0; std::cout << "PLAYER" << playerNum << ": indexX: " << indexX << ", idleFrame: " << idleFrame << std::endl; sf::IntRect rect = sf::IntRect(indexX*width, indexY*height, width, height); setTextureRect(rect); indexX = (indexX+1)%4; //Acabar automaticament la animacio de attack if (actualState == PlayerState::attacking and indexX%4 == 3){ setState(PlayerState::idle); } idleFrame = (idleFrame+1)%4; } } void Character::setState(PlayerState::playerState state){ actualState = state; if (state == PlayerState::idle){ indexX = idleFrame; indexY = 0 + magicNumber; } else if (state == PlayerState::attacking){ indexX = 0; indexY = 1 + magicNumber; std::string sample = "atk"+std::to_string(rand()%20+1); SoundManager::playSound(sample); std::cout << "playing sample " << sample << std::endl; } else if (false /*state == PlayerState::damaged*/){ indexX = 0; indexY = 2 + magicNumber; } } bool Character::isLastFrame(){ return indexX == 3; }