add players no full game

This commit is contained in:
serk 2017-01-21 05:33:17 +01:00
commit bee83068a4
11 changed files with 67 additions and 38 deletions

View file

@ -1,15 +1,18 @@
#include "actor.hpp" #include "actor.hpp"
Actor::Actor() {} Actor::Actor() {}
Actor::Actor(int num) {
this->character = new Character(num);
}
void Actor::draw(sf::RenderWindow *window) { void Actor::draw(sf::RenderWindow *window) {
window->draw(character); window->draw(*character);
} }
bool Actor::update(float deltaTime, sf::RenderWindow *window) { bool Actor::update(float deltaTime, sf::RenderWindow *window) {
character.update(deltaTime); character->update(deltaTime);
if (animate) { if (animate) {
character.setState(PlayerState::attacking); character->setState(PlayerState::attacking);
animate = false; animate = false;
} }
return this->updateLogic(deltaTime, window); return this->updateLogic(deltaTime, window);

View file

@ -7,6 +7,7 @@ class Actor
{ {
public: public:
Actor(); Actor();
Actor(int num);
bool update(float deltaTime, sf::RenderWindow *window); bool update(float deltaTime, sf::RenderWindow *window);
void draw(sf::RenderWindow *window) ; void draw(sf::RenderWindow *window) ;
virtual bool event(sf::Event e) = 0; virtual bool event(sf::Event e) = 0;
@ -14,7 +15,7 @@ protected:
bool animate; bool animate;
virtual bool updateLogic(float deltaTime, sf::RenderWindow *window) = 0; virtual bool updateLogic(float deltaTime, sf::RenderWindow *window) = 0;
private: private:
Character character; Character *character;
}; };
#endif // ENEMY_H #endif // ENEMY_H

View file

@ -1,36 +1,34 @@
#include "character.hpp" #include "character.hpp"
Character::Character(){ Character::Character(int player){
sf::Texture texture; playerNum = player;
ASSERT(texture.loadFromFile(spriteFile)); ASSERT(texture.loadFromFile(spriteFile));
height = texture.getSize().y; height = texture.getSize().y/5;
width = texture.getSize().x; width = texture.getSize().x/5;
next = 0; next = timestamp = indexX = indexY = 0;
setTexture(texture); 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){ void Character::update(float deltaTime){
timestamp += deltaTime; timestamp += deltaTime;
if (timestamp >= frameTime){ if (timestamp >= frameTime){
timestamp = 0; timestamp = 0;
if (actualState == previousState){
if (actualState == PlayerState::idle){ if (actualState == PlayerState::attacking and indexX >= 3){
indexX = (indexX+1)%numFrames; setState(PlayerState::idle);
}
else if (actualState == PlayerState::attacking){
if (indexX == width){
indexX = 0;
actualState = PlayerState::idle;
}
}
} }
else { else {
indexX = 0; indexX = (indexX+1)%4;
if (actualState == PlayerState::idle)
actualState = PlayerState::attacking;
else if (actualState == PlayerState::attacking)
actualState = PlayerState::idle;
} }
sf::IntRect rect = sf::IntRect(indexX*width, indexY*height, width, height); 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;
}
}

View file

@ -8,16 +8,21 @@ private:
const double frameTime = 0.2; const double frameTime = 0.2;
const int numFrames = 4; const int numFrames = 4;
const std::string spriteFile = "./Resources/spreadsheet.png"; 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 //END CONFIG
sf::Texture texture; sf::Texture texture;
int indexX, indexY, width, height; int indexX, indexY, width, height;
int posX, posY; int playerNum;
PlayerState::playerState actualState, previousState; PlayerState::playerState actualState, previousState;
float timestamp, next; float timestamp, next;
public: public:
Character(); Character();
Character(int player);
void update(float deltaTime); void update(float deltaTime);
void setState(PlayerState::playerState state); void setState(PlayerState::playerState state);

View file

@ -2,15 +2,17 @@
Combat::Combat() { Combat::Combat() {
ia = playerOneTurn = true; ia = playerOneTurn = true;
enemy = new IaEnemy(); player = new Player(0);
enemy = new IaEnemy(1);
initShader(); initShader();
} }
Combat::Combat(bool ia) { Combat::Combat(bool ia) {
this->ia = ia; this->ia = ia;
player = new Player(0);
playerOneTurn = true; playerOneTurn = true;
if (ia) enemy = new IaEnemy(); if (ia) enemy = new IaEnemy(1);
else enemy = new Player(); else enemy = new Player(1);
} }
void Combat::initShader() { void Combat::initShader() {
@ -22,19 +24,19 @@ void Combat::initShader() {
} }
void Combat::update(float deltaTime, sf::RenderWindow *window) { void Combat::update(float deltaTime, sf::RenderWindow *window) {
if (playerOneTurn) player.update(deltaTime, window); player->update(deltaTime, window);
else if (ia) playerOneTurn = enemy->update(deltaTime, window); enemy->update(deltaTime, window);
time += deltaTime; time += deltaTime;
_shader.setParameter("time", time); _shader.setParameter("time", time);
} }
void Combat::draw(sf::RenderWindow *window) { void Combat::draw(sf::RenderWindow *window) {
player.draw(window); player->draw(window);
enemy->draw(window); enemy->draw(window);
window->draw(_background, &_shader); window->draw(_background, &_shader);
} }
void Combat::updateEvents(sf::Event e) { 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); else if (!ia) playerOneTurn = !enemy->event(e);
} }

View file

@ -21,7 +21,7 @@ public:
void updateEvents(sf::Event e) final override; void updateEvents(sf::Event e) final override;
private: private:
bool playerOneTurn, ia; bool playerOneTurn, ia;
Player player; Actor *player;
Actor *enemy; Actor *enemy;
float time; float time;
sf::Texture _text; sf::Texture _text;

View file

@ -1,7 +1,7 @@
#include "iaenemy.hpp" #include "iaenemy.hpp"
IaEnemy::IaEnemy() {} IaEnemy::IaEnemy() : Actor(1) {}
IaEnemy::IaEnemy(int numplayer): Actor(numplayer) {}
bool IaEnemy::updateLogic(float deltaTime, sf::RenderWindow *window) { bool IaEnemy::updateLogic(float deltaTime, sf::RenderWindow *window) {
//some playe return true //some playe return true
return true; return true;

View file

@ -6,6 +6,7 @@
class IaEnemy : public Actor { class IaEnemy : public Actor {
public: public:
IaEnemy(); IaEnemy();
IaEnemy(int player);
bool event(sf::Event e) final override; bool event(sf::Event e) final override;
protected: protected:
bool updateLogic(float deltaTime, sf::RenderWindow *window); bool updateLogic(float deltaTime, sf::RenderWindow *window);

View file

@ -1,6 +1,11 @@
#include "player.hpp" #include "player.hpp"
Player::Player() { Player::Player(int num) : Actor(num) {
animate = false;
compas = Compas();
}
Player::Player() : Actor(1) {
animate = false; animate = false;
compas = Compas(); compas = Compas();
} }

View file

@ -7,6 +7,7 @@
class Player : public Actor { class Player : public Actor {
public: public:
Player(); Player();
Player(int num);
bool event(sf::Event e) final override; bool event(sf::Event e) final override;
private: private:
Compas compas; Compas compas;