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"
|
#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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Binary file not shown.
Reference in a new issue