diff --git a/VaporWaveWars/VaporWaveWars.pro b/VaporWaveWars/VaporWaveWars.pro index 8515d27..f34d67f 100644 --- a/VaporWaveWars/VaporWaveWars.pro +++ b/VaporWaveWars/VaporWaveWars.pro @@ -11,7 +11,11 @@ SOURCES += main.cpp \ character.cpp \ compas.cpp \ scene.cpp \ - menu.cpp + menu.cpp \ + combat.cpp \ + player.cpp \ + iaenemy.cpp \ + actor.cpp HEADERS += \ game.hpp \ @@ -21,4 +25,8 @@ HEADERS += \ character.hpp \ compas.hpp \ scene.hpp \ - menu.hpp + menu.hpp \ + combat.hpp \ + player.hpp \ + iaenemy.hpp \ + actor.hpp diff --git a/VaporWaveWars/actor.cpp b/VaporWaveWars/actor.cpp new file mode 100644 index 0000000..7b66709 --- /dev/null +++ b/VaporWaveWars/actor.cpp @@ -0,0 +1,7 @@ +#include "actor.hpp" + +Actor::Actor() {} + +void Actor::draw(sf::RenderWindow *window) { + +} diff --git a/VaporWaveWars/actor.hpp b/VaporWaveWars/actor.hpp new file mode 100644 index 0000000..a045b04 --- /dev/null +++ b/VaporWaveWars/actor.hpp @@ -0,0 +1,17 @@ +#ifndef ENEMY_H +#define ENEMY_H + +#include "commons.hpp" + +class Actor +{ +public: + Actor(); + virtual bool update(float deltaTime, sf::RenderWindow *window) = 0; + void draw(sf::RenderWindow *window) ; + virtual bool event(sf::Event e) = 0; +protected: + bool animate; +}; + +#endif // ENEMY_H diff --git a/VaporWaveWars/button.cpp b/VaporWaveWars/button.cpp index 9acc450..076ec51 100644 --- a/VaporWaveWars/button.cpp +++ b/VaporWaveWars/button.cpp @@ -71,7 +71,7 @@ void Button::handleMouseEvent(sf::Event& event){ void Button::initTexture(std::string path){ _clicks = 0; _state = ButtonState::off; - if(!_texture.loadFromFile(path)) std::cout << "failed to load button texture!!" << std::endl; + ASSERT(_texture.loadFromFile(path)); setTexture(_texture); _xSize = _texture.getSize().x; _ySize = _texture.getSize().y/4; diff --git a/VaporWaveWars/combat.cpp b/VaporWaveWars/combat.cpp new file mode 100644 index 0000000..76e4e53 --- /dev/null +++ b/VaporWaveWars/combat.cpp @@ -0,0 +1,29 @@ +#include "combat.hpp" + +Combat::Combat() { + ia = playerOneTurn = true; + enemy = new IaEnemy(); +} + +Combat::Combat(bool ia) { + this->ia = ia; + playerOneTurn = true; + if (ia) enemy = new IaEnemy(); + else enemy = new Player(); +} + +void Combat::update(float deltaTime, sf::RenderWindow *window) { + if (playerOneTurn) player.update(deltaTime, window); + else if (ia) playerOneTurn = enemy->update(deltaTime, window); +} + +void Combat::draw(sf::RenderWindow *window) { + player.draw(window); + enemy->draw(window); + +} + +void Combat::updateEvents(sf::Event e) { + if (playerOneTurn) playerOneTurn = player.event(e); + else if (!ia) playerOneTurn = !enemy->event(e); +} diff --git a/VaporWaveWars/combat.hpp b/VaporWaveWars/combat.hpp new file mode 100644 index 0000000..cafcf2b --- /dev/null +++ b/VaporWaveWars/combat.hpp @@ -0,0 +1,28 @@ +#ifndef COMBAT_H +#define COMBAT_H + +#include "commons.hpp" +#include "compas.hpp" +#include "scene.hpp" +#include "player.hpp" +#include "iaenemy.hpp" +#include "actor.hpp" + +class Combat : public Scene { +public: + Combat(); + Combat(bool ia); + Combat(const Combat& m) = delete; + Combat(const Combat&& m) = delete; + Combat& operator=(Combat& m) = delete; + Combat& operator=(Combat&& m) = delete; + void update(float deltaTime, sf::RenderWindow *window) final override; + void draw(sf::RenderWindow *window) final override; + void updateEvents(sf::Event e) final override; +private: + bool playerOneTurn, ia; + Player player; + Actor *enemy; +}; + +#endif // COMBAT_H diff --git a/VaporWaveWars/game.cpp b/VaporWaveWars/game.cpp index 97a80c7..075c49e 100644 --- a/VaporWaveWars/game.cpp +++ b/VaporWaveWars/game.cpp @@ -26,6 +26,7 @@ void Game::run() { float time = c.getElapsedTime().asSeconds(); float deltaTime = time-oldTime; oldTime = time; + //std::cout << deltaTime << std::endl; update(deltaTime, &window); draw( &window); } diff --git a/VaporWaveWars/iaenemy.cpp b/VaporWaveWars/iaenemy.cpp new file mode 100644 index 0000000..2b00d8a --- /dev/null +++ b/VaporWaveWars/iaenemy.cpp @@ -0,0 +1,10 @@ +#include "iaenemy.hpp" + +IaEnemy::IaEnemy() {} + +bool IaEnemy::update(float deltaTime, sf::RenderWindow *window) { + //some playe return true + return true; +} + +bool IaEnemy::event(sf::Event e) {return false;} diff --git a/VaporWaveWars/iaenemy.hpp b/VaporWaveWars/iaenemy.hpp new file mode 100644 index 0000000..c2c050c --- /dev/null +++ b/VaporWaveWars/iaenemy.hpp @@ -0,0 +1,13 @@ +#ifndef IAENEMY_H +#define IAENEMY_H + +#include "actor.hpp" + +class IaEnemy : public Actor { +public: + IaEnemy(); + bool update(float deltaTime, sf::RenderWindow *window) final override; + bool event(sf::Event e) final override; +}; + +#endif // IAENEMY_H diff --git a/VaporWaveWars/menu.cpp b/VaporWaveWars/menu.cpp index e41b0c2..09fb668 100644 --- a/VaporWaveWars/menu.cpp +++ b/VaporWaveWars/menu.cpp @@ -32,7 +32,7 @@ void Menu::updateEvents(sf::Event e){ } MyGame* g = static_cast(Game::i()); if (_start.getClicks() > 0){ -// g->changeScene(GameScene::inGame); + g->changeScene(GameScene::inGame); std::cout << "Game not ready to be played. Please Wait." << std::endl; } else if(_exit.getClicks() > 0) g->isRunning = false; diff --git a/VaporWaveWars/mygame.cpp b/VaporWaveWars/mygame.cpp index 40319a0..dae896c 100644 --- a/VaporWaveWars/mygame.cpp +++ b/VaporWaveWars/mygame.cpp @@ -4,6 +4,9 @@ MyGame::MyGame() { _scene = GameScene::menu; _scenes = std::vector(SCENE_NUM); _scenes[GameScene::menu] = &_menu; + _scenes[GameScene::inGame] = &_combat; + _scenes[GameScene::help] = &_menu; + _scenes[GameScene::credits] = &_menu; std::cout << "in menu" << std::endl; } @@ -11,7 +14,6 @@ MyGame::~MyGame() { } MyGame* i(){ - return static_cast(Game::i()); } void MyGame::changeScene(GameScene::gameScene n){ @@ -20,7 +22,7 @@ void MyGame::changeScene(GameScene::gameScene n){ // Main game loop void MyGame::update(float deltaTime, sf::RenderWindow*window) { -// std::cout << deltaTime << std::endl; + // std::cout << deltaTime << std::endl; sf::Event event; while(window->pollEvent(event)){ switch (event.type) { @@ -36,7 +38,7 @@ void MyGame::update(float deltaTime, sf::RenderWindow*window) { case (sf::Event::MouseButtonPressed): case (sf::Event::MouseButtonReleased): - _scenes[_scene]->updateEvents(event); + _scenes[_scene]->updateEvents(event); switch(_scene){ case(GameScene::menu): //std::cout << "still in menu" << std::endl; @@ -52,7 +54,7 @@ void MyGame::update(float deltaTime, sf::RenderWindow*window) { } // do shit - _scenes[_scene]->update(deltaTime,window); + _scenes[_scene]->update(deltaTime,window); } void MyGame::draw(sf::RenderWindow*window) { diff --git a/VaporWaveWars/mygame.hpp b/VaporWaveWars/mygame.hpp index 9562e48..469e30f 100644 --- a/VaporWaveWars/mygame.hpp +++ b/VaporWaveWars/mygame.hpp @@ -3,7 +3,7 @@ #include "game.hpp" #include "menu.hpp" - +#include "combat.hpp" class MyGame : public Game{ public: MyGame(); @@ -14,6 +14,7 @@ private: GameScene::gameScene _scene; std::vector _scenes; Menu _menu; + Combat _combat; virtual void update(float deltaTime, sf::RenderWindow *window) final override; virtual void draw(sf::RenderWindow *window) final override; }; diff --git a/VaporWaveWars/player.cpp b/VaporWaveWars/player.cpp new file mode 100644 index 0000000..3a940f8 --- /dev/null +++ b/VaporWaveWars/player.cpp @@ -0,0 +1,31 @@ +#include "player.hpp" + +Player::Player() { + animate = false; +} + +bool Player::update(float deltaTime, sf::RenderWindow *window) { + if (deltaTime > BLACKVALUE) compas.incraeseTime(); + return false; +} + +bool Player::event(sf::Event e) { + switch(e.type) { + case (sf::Event::KeyPressed): + if(e.key.code == sf::Keyboard::C) compas.start(); + if(e.key.code == sf::Keyboard::Space) { + compas.add(); + animate = true; + } + break; + case (sf::Event::KeyReleased): + if (e.key.code == sf::Keyboard::C) { + compas.end(); + return false; + } + break; + default: + break; + } + return true; +} diff --git a/VaporWaveWars/player.hpp b/VaporWaveWars/player.hpp new file mode 100644 index 0000000..ebbbfcd --- /dev/null +++ b/VaporWaveWars/player.hpp @@ -0,0 +1,16 @@ +#ifndef PLAYER_H +#define PLAYER_H + +#include "commons.hpp" +#include "compas.hpp" +#include "actor.hpp" +class Player : public Actor { +public: + Player(); + bool update(float deltaTime, sf::RenderWindow *window) final override; + bool event(sf::Event e) final override; +private: + Compas compas; +}; + +#endif // PLAYER_H diff --git a/VaporWaveWars/playscene.cpp b/VaporWaveWars/playscene.cpp new file mode 100644 index 0000000..a73ae9d --- /dev/null +++ b/VaporWaveWars/playscene.cpp @@ -0,0 +1,34 @@ +#include "playscene.hpp" + +PlayScene::PlayScene(){ + +} + +void PlayScene::update(float deltaTime, sf::RenderWindow*window){ + //float dx = InputManager::action(InputAction::moveX0); + //_buttons[0]->move(dx,0); + //std::cout << dx << std::endl; + for(unsigned int i = 0; i < _buttons.size(); ++i){ + _buttons[i]->update(window->mapPixelToCoords(sf::Vector2i(sf::Mouse::getPosition(*window)))); + } +} + +void PlayScene::draw(sf::RenderWindow* window){ + for(unsigned int i = 0; i < _buttons.size(); ++i){ + window->draw(*_buttons[i]); + } +} + +void PlayScene::updateEvents(sf::Event e){ +// std::cout << "update menu buttons" << std::endl; + for(unsigned int i = 0; i < _buttons.size(); ++i){ + _buttons[i]->handleMouseEvent(e); + } + MyGame* g = static_cast(Game::i()); + if (_start.getClicks() > 0){ +// g->changeScene(GameScene::inGame); + std::cout << "Game not ready to be played. Please Wait." << std::endl; + } + else if(_exit.getClicks() > 0) g->isRunning = false; + +} diff --git a/VaporWaveWars/playscene.hpp b/VaporWaveWars/playscene.hpp new file mode 100644 index 0000000..892c4bd --- /dev/null +++ b/VaporWaveWars/playscene.hpp @@ -0,0 +1,22 @@ +#ifndef PLAYSCENE_HPP +#define PLAYSCENE_HPP + +#include "scene.hpp" +class PlayScene : public Scene{ +public: + PlayScene(); + PlayScene(const Menu& m) = delete; + PlayScene(const Menu&& m) = delete; + PlayScene& operator=(Menu& m) = delete; + PlayScene& operator=(Menu&& m) = delete; + void update(float deltaTime, sf::RenderWindow *window) final override; + void draw(sf::RenderWindow *window) final override; + void updateEvents(sf::Event e) final override; + +private: + sf::Texture _backgroundTexture; + sf::Sprite background; + +}; + +#endif // PLAYSCENE_HPP diff --git a/VaporWaveWars/scene.hpp b/VaporWaveWars/scene.hpp index 2e4de31..ac945a2 100644 --- a/VaporWaveWars/scene.hpp +++ b/VaporWaveWars/scene.hpp @@ -10,7 +10,7 @@ class Scene virtual ~Scene(); virtual void update(float deltaTime, sf::RenderWindow *window) = 0; virtual void draw(sf::RenderWindow *window) = 0; - virtual void updateEvents(sf::Event) = 0; + virtual void updateEvents(sf::Event e) = 0; protected: Game* parent; };