add players no full game
This commit is contained in:
commit
bee83068a4
11 changed files with 67 additions and 38 deletions
|
@ -1,15 +1,18 @@
|
|||
#include "actor.hpp"
|
||||
|
||||
Actor::Actor() {}
|
||||
|
||||
Actor::Actor(int num) {
|
||||
this->character = new Character(num);
|
||||
}
|
||||
|
||||
void Actor::draw(sf::RenderWindow *window) {
|
||||
window->draw(character);
|
||||
window->draw(*character);
|
||||
}
|
||||
|
||||
bool Actor::update(float deltaTime, sf::RenderWindow *window) {
|
||||
character.update(deltaTime);
|
||||
character->update(deltaTime);
|
||||
if (animate) {
|
||||
character.setState(PlayerState::attacking);
|
||||
character->setState(PlayerState::attacking);
|
||||
animate = false;
|
||||
}
|
||||
return this->updateLogic(deltaTime, window);
|
||||
|
|
|
@ -7,6 +7,7 @@ class Actor
|
|||
{
|
||||
public:
|
||||
Actor();
|
||||
Actor(int num);
|
||||
bool update(float deltaTime, sf::RenderWindow *window);
|
||||
void draw(sf::RenderWindow *window) ;
|
||||
virtual bool event(sf::Event e) = 0;
|
||||
|
@ -14,7 +15,7 @@ protected:
|
|||
bool animate;
|
||||
virtual bool updateLogic(float deltaTime, sf::RenderWindow *window) = 0;
|
||||
private:
|
||||
Character character;
|
||||
Character *character;
|
||||
};
|
||||
|
||||
#endif // ENEMY_H
|
||||
|
|
|
@ -1,36 +1,34 @@
|
|||
#include "character.hpp"
|
||||
|
||||
Character::Character(){
|
||||
sf::Texture texture;
|
||||
Character::Character(int player){
|
||||
playerNum = player;
|
||||
ASSERT(texture.loadFromFile(spriteFile));
|
||||
height = texture.getSize().y;
|
||||
width = texture.getSize().x;
|
||||
next = 0;
|
||||
height = texture.getSize().y/5;
|
||||
width = texture.getSize().x/5;
|
||||
next = timestamp = indexX = indexY = 0;
|
||||
setTexture(texture);
|
||||
sf::IntRect rect = sf::IntRect(indexX*width, indexY*height, width, height);
|
||||
setTextureRect(rect);
|
||||
actualState = previousState = PlayerState::idle;
|
||||
|
||||
if (playerNum == 0){
|
||||
setPosition(posX1, posY1);
|
||||
}
|
||||
else{
|
||||
setPosition(posX2, posY2);
|
||||
}
|
||||
}
|
||||
|
||||
void Character::update(float deltaTime){
|
||||
timestamp += deltaTime;
|
||||
if (timestamp >= frameTime){
|
||||
timestamp = 0;
|
||||
if (actualState == previousState){
|
||||
if (actualState == PlayerState::idle){
|
||||
indexX = (indexX+1)%numFrames;
|
||||
}
|
||||
else if (actualState == PlayerState::attacking){
|
||||
if (indexX == width){
|
||||
indexX = 0;
|
||||
actualState = PlayerState::idle;
|
||||
}
|
||||
}
|
||||
|
||||
if (actualState == PlayerState::attacking and indexX >= 3){
|
||||
setState(PlayerState::idle);
|
||||
}
|
||||
else {
|
||||
indexX = 0;
|
||||
if (actualState == PlayerState::idle)
|
||||
actualState = PlayerState::attacking;
|
||||
|
||||
else if (actualState == PlayerState::attacking)
|
||||
actualState = PlayerState::idle;
|
||||
indexX = (indexX+1)%4;
|
||||
}
|
||||
|
||||
sf::IntRect rect = sf::IntRect(indexX*width, indexY*height, width, height);
|
||||
|
@ -38,3 +36,16 @@ void Character::update(float deltaTime){
|
|||
}
|
||||
}
|
||||
|
||||
void Character::setState(PlayerState::playerState state){
|
||||
previousState = actualState;
|
||||
actualState = state;
|
||||
if (state == PlayerState::idle){
|
||||
indexX = 0;
|
||||
indexY = 0;
|
||||
}
|
||||
else{
|
||||
indexX = 0;
|
||||
indexY = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,16 +8,21 @@ private:
|
|||
const double frameTime = 0.2;
|
||||
const int numFrames = 4;
|
||||
const std::string spriteFile = "./Resources/spreadsheet.png";
|
||||
//POSICIO PLAYER 1
|
||||
float posX1 = 0, posY1 = 0;
|
||||
//POSICIO PLAYER 2
|
||||
float posX2 = 300, posY2 = 0;
|
||||
//END CONFIG
|
||||
|
||||
sf::Texture texture;
|
||||
int indexX, indexY, width, height;
|
||||
int posX, posY;
|
||||
int playerNum;
|
||||
PlayerState::playerState actualState, previousState;
|
||||
float timestamp, next;
|
||||
|
||||
public:
|
||||
Character();
|
||||
Character(int player);
|
||||
void update(float deltaTime);
|
||||
void setState(PlayerState::playerState state);
|
||||
|
||||
|
|
|
@ -2,15 +2,17 @@
|
|||
|
||||
Combat::Combat() {
|
||||
ia = playerOneTurn = true;
|
||||
enemy = new IaEnemy();
|
||||
player = new Player(0);
|
||||
enemy = new IaEnemy(1);
|
||||
initShader();
|
||||
}
|
||||
|
||||
Combat::Combat(bool ia) {
|
||||
this->ia = ia;
|
||||
player = new Player(0);
|
||||
playerOneTurn = true;
|
||||
if (ia) enemy = new IaEnemy();
|
||||
else enemy = new Player();
|
||||
if (ia) enemy = new IaEnemy(1);
|
||||
else enemy = new Player(1);
|
||||
}
|
||||
|
||||
void Combat::initShader() {
|
||||
|
@ -22,19 +24,19 @@ void Combat::initShader() {
|
|||
}
|
||||
|
||||
void Combat::update(float deltaTime, sf::RenderWindow *window) {
|
||||
if (playerOneTurn) player.update(deltaTime, window);
|
||||
else if (ia) playerOneTurn = enemy->update(deltaTime, window);
|
||||
player->update(deltaTime, window);
|
||||
enemy->update(deltaTime, window);
|
||||
time += deltaTime;
|
||||
_shader.setParameter("time", time);
|
||||
}
|
||||
|
||||
void Combat::draw(sf::RenderWindow *window) {
|
||||
player.draw(window);
|
||||
player->draw(window);
|
||||
enemy->draw(window);
|
||||
window->draw(_background, &_shader);
|
||||
}
|
||||
|
||||
void Combat::updateEvents(sf::Event e) {
|
||||
if (playerOneTurn) playerOneTurn = player.event(e);
|
||||
if (playerOneTurn) playerOneTurn = player->event(e);
|
||||
else if (!ia) playerOneTurn = !enemy->event(e);
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ public:
|
|||
void updateEvents(sf::Event e) final override;
|
||||
private:
|
||||
bool playerOneTurn, ia;
|
||||
Player player;
|
||||
Actor *player;
|
||||
Actor *enemy;
|
||||
float time;
|
||||
sf::Texture _text;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#include "iaenemy.hpp"
|
||||
|
||||
IaEnemy::IaEnemy() {}
|
||||
|
||||
IaEnemy::IaEnemy() : Actor(1) {}
|
||||
IaEnemy::IaEnemy(int numplayer): Actor(numplayer) {}
|
||||
bool IaEnemy::updateLogic(float deltaTime, sf::RenderWindow *window) {
|
||||
//some playe return true
|
||||
return true;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
class IaEnemy : public Actor {
|
||||
public:
|
||||
IaEnemy();
|
||||
IaEnemy(int player);
|
||||
bool event(sf::Event e) final override;
|
||||
protected:
|
||||
bool updateLogic(float deltaTime, sf::RenderWindow *window);
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
#include "player.hpp"
|
||||
|
||||
Player::Player() {
|
||||
Player::Player(int num) : Actor(num) {
|
||||
animate = false;
|
||||
compas = Compas();
|
||||
}
|
||||
|
||||
Player::Player() : Actor(1) {
|
||||
animate = false;
|
||||
compas = Compas();
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
class Player : public Actor {
|
||||
public:
|
||||
Player();
|
||||
Player(int num);
|
||||
bool event(sf::Event e) final override;
|
||||
private:
|
||||
Compas compas;
|
||||
|
|
Binary file not shown.
Reference in a new issue