This repository has been archived on 2022-12-14. You can view files and clone it, but cannot push or open issues or pull requests.
WaveGGJ17/VaporWaveWars/character.cpp

68 lines
1.8 KiB
C++

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