From cf9ac6199e50e09d3873a5bb849a52d5b447bd13 Mon Sep 17 00:00:00 2001 From: devZoGok Date: Sat, 7 Oct 2023 12:43:08 +0300 Subject: [PATCH] factored out GameObjectFrame refactored GameObject/Unit- Factory class --- CMakeLists.txt | 4 ++-- activeGameState.cpp | 2 +- addUnitCommand.cpp | 4 ++-- buildButton.cpp | 2 +- gameObjectFactory.cpp | 37 +++++++++++++++++++++++++++++++++++ gameObjectFactory.h | 23 ++++++++++++++++++++++ gameObjectFrame.cpp | 5 +++++ gameObjectFrame.h | 24 +++++++++++++++++++++++ gameObjectFrameController.cpp | 8 ++------ gameObjectFrameController.h | 16 +++------------ map.cpp | 4 ++-- mapEditorAppState.cpp | 2 +- unitFactory.cpp | 32 ------------------------------ unitFactory.h | 18 ----------------- unitListbox.cpp | 3 +-- 15 files changed, 104 insertions(+), 80 deletions(-) create mode 100644 gameObjectFactory.cpp create mode 100644 gameObjectFactory.h create mode 100644 gameObjectFrame.cpp create mode 100644 gameObjectFrame.h delete mode 100644 unitFactory.cpp delete mode 100644 unitFactory.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 701f2bf..a2f6e14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,8 +24,8 @@ set(CORE gameManager.cpp defConfigs.cpp ${CONSOLE} ${CONTROLLERS}) set(PROJECTILES projectile.cpp) set(FX explosion.cpp) set(VEHICLES vehicle.cpp engineer.cpp) -set(UNITS unitFactory.cpp unit.cpp structure.cpp ${VEHICLES}) -set(CONTENT player.cpp pathfinder.cpp map.cpp gameObject.cpp resourceDeposit.cpp ${UNITS} ${PROJECTILES} ${FX}) +set(UNITS gameObjectFactory.cpp unit.cpp structure.cpp ${VEHICLES}) +set(CONTENT player.cpp pathfinder.cpp map.cpp gameObject.cpp gameObjectFrame.h resourceDeposit.cpp ${UNITS} ${PROJECTILES} ${FX}) set(GAME_SRC ${STATES} ${GUI} ${CORE} ${CONTENT} ${UTIL}) set(SFML_DIR external/SFML) diff --git a/activeGameState.cpp b/activeGameState.cpp index c0943cf..1c0ad9e 100755 --- a/activeGameState.cpp +++ b/activeGameState.cpp @@ -291,7 +291,7 @@ namespace battleship{ GameObjectFrameController *ufCtr = GameObjectFrameController::getSingleton(); if(ufCtr->isPlacingFrames()){ - GameObjectFrameController::GameObjectFrame goFr= ufCtr->getGameObjectFrame(0); + GameObjectFrame goFr = ufCtr->getGameObjectFrame(0); unit = new Structure(mainPlayer, goFr.getId(), goFr.getModel()->getPosition(), goFr.getModel()->getOrientation()); mainPlayer->addUnit(unit); } diff --git a/addUnitCommand.cpp b/addUnitCommand.cpp index 7bc87c3..4095f51 100644 --- a/addUnitCommand.cpp +++ b/addUnitCommand.cpp @@ -6,7 +6,7 @@ #include "addUnitCommand.h" #include "inGameAppState.h" #include "player.h" -#include "unitFactory.h" +#include "gameObjectFactory.h" namespace battleship{ using namespace gameBase; @@ -48,7 +48,7 @@ namespace battleship{ void AddUnitCommand::addUnit(){ Player* player = Map::getSingleton()->getPlayer(playerId); - player->addUnit(UnitFactory::createUnit(player, unitId, pos, rot)); + player->addUnit(GameObjectFactory::createUnit(player, unitId, pos, rot)); } void AddUnitCommand::execute(){ diff --git a/buildButton.cpp b/buildButton.cpp index c0cf149..6be65e7 100644 --- a/buildButton.cpp +++ b/buildButton.cpp @@ -18,7 +18,7 @@ namespace battleship{ void BuildButton::onClick(){ GameObjectFrameController *ufCtr = GameObjectFrameController::getSingleton(); - ufCtr->addGameObjectFrame(GameObjectFrameController::GameObjectFrame(structureId, (int)UnitType::LAND)); + ufCtr->addGameObjectFrame(GameObjectFrame(structureId, GameObjectFrame::UNIT)); ufCtr->setPlacingFrames(true); } } diff --git a/gameObjectFactory.cpp b/gameObjectFactory.cpp new file mode 100644 index 0000000..36e3f6f --- /dev/null +++ b/gameObjectFactory.cpp @@ -0,0 +1,37 @@ +#include "gameObjectFactory.h" +#include "player.h" +#include "vehicle.h" +#include "engineer.h" +#include "projectile.h" +#include "resourceDeposit.h" +#include "defConfigs.h" + +#include + +#include + +namespace battleship{ + using namespace std; + using namespace vb01; + using namespace gameBase; + + Unit* GameObjectFactory::createUnit(Player *player, int id, Vector3 pos, Quaternion rot){ + sol::state_view SOL_LUA_STATE = generateView(); + int unitClass = SOL_LUA_STATE["unitClass"][id + 1]; + + switch((UnitClass)unitClass){ + case UnitClass::ENGINEER: + return new Engineer(player, id, pos, rot); + default: + return new Vehicle(player, id, pos, rot); + } + } + + Projectile* createProjectile(Unit*, int, vb01::Vector3, vb01::Quaternion){ + return nullptr; + } + + ResourceDeposit* createResourceDeposit(int, vb01::Vector3, vb01::Quaternion){ + return nullptr; + } +} diff --git a/gameObjectFactory.h b/gameObjectFactory.h new file mode 100644 index 0000000..e5183ee --- /dev/null +++ b/gameObjectFactory.h @@ -0,0 +1,23 @@ +#ifndef GAME_OBJECT_FACTORY_H +#define GAME_OBJECT_FACTORY_H + +#include +#include + +namespace battleship{ + class Unit; + class Projectile; + class ResourceDeposit; + class Player; + + class GameObjectFactory{ + public: + enum GameObjectType{UNIT, PROJECTILE, RESOURCE_DEPOSIT}; + static Unit* createUnit(Player*, int, vb01::Vector3, vb01::Quaternion); + static Projectile* createProjectile(Player*, Unit*, int, vb01::Vector3, vb01::Quaternion); + static ResourceDeposit* createResourceDeposit(int, vb01::Vector3, vb01::Quaternion); + private: + }; +} + +#endif diff --git a/gameObjectFrame.cpp b/gameObjectFrame.cpp new file mode 100644 index 0000000..4a9efa5 --- /dev/null +++ b/gameObjectFrame.cpp @@ -0,0 +1,5 @@ +#include "gameObjectFrame.h" + +namespace battleship{ + +} diff --git a/gameObjectFrame.h b/gameObjectFrame.h new file mode 100644 index 0000000..ba0f866 --- /dev/null +++ b/gameObjectFrame.h @@ -0,0 +1,24 @@ +#ifndef GAME_OBJECT_FRAME_H +#define GAME_OBJECT_FRAME_H + +#include "gameObject.h" + +#include +#include + +namespace battleship{ + struct GameObjectFrame : public GameObject{ + enum Status{PLACEABLE, NOT_PLACEABLE, PLACED}; + enum Type {UNIT, RESOURCE_DEPOSIT}; + + GameObjectFrame(int i, Type t, vb01::Vector3 pos = vb01::Vector3::VEC_ZERO, vb01::Quaternion rot = vb01::Quaternion::QUAT_W) : GameObject(i, nullptr, pos, rot), type(t) { + initModel(false); + } + ~GameObjectFrame(){} + + Type type; + Status status; + }; +} + +#endif diff --git a/gameObjectFrameController.cpp b/gameObjectFrameController.cpp index ffc3002..8100cf0 100644 --- a/gameObjectFrameController.cpp +++ b/gameObjectFrameController.cpp @@ -1,6 +1,6 @@ #include -#include "unitFrameController.h" +#include "gameObjectFrameController.h" #include "unit.h" #include "util.h" #include "map.h" @@ -21,10 +21,6 @@ namespace battleship{ static GameObjectFrameController *gameObjectFrameController = nullptr; - GameObjectFrameController::GameObjectFrame::GameObjectFrame(int i, int t, Vector3 pos, Quaternion rot) : GameObject(i, nullptr, pos, rot), type(t) { - initModel(false); - } - GameObjectFrameController* GameObjectFrameController::getSingleton(){ if(!gameObjectFrameController) gameObjectFrameController = new GameObjectFrameController(); @@ -49,7 +45,7 @@ namespace battleship{ buildDir = gameObjectFrames[1].getModel()->getPosition() - gameObjectFrames[0].getModel()->getPosition(); Vector3 pos = paintSelectRowStart + buildDir.norm() * hypothenuse * gameObjectFrames.size(); - addGameObjectFrame(GameObjectFrame(structureId, (int)UnitType::LAND, pos)); + addGameObjectFrame(GameObjectFrame(structureId, GameObjectFrame::UNIT, pos)); } } diff --git a/gameObjectFrameController.h b/gameObjectFrameController.h index ae1cad1..799d692 100644 --- a/gameObjectFrameController.h +++ b/gameObjectFrameController.h @@ -1,5 +1,5 @@ -#ifndef UNIT_FRAME_CONTROLLER_H -#define UNIT_FRAME_CONTROLLER_H +#ifndef GAME_OBJECT_FRAME_CONTROLLER_H +#define GAME_OBJECT_FRAME_CONTROLLER_H #include #include @@ -7,7 +7,7 @@ #include #include -#include "gameObject.h" +#include "gameObjectFrame.h" namespace vb01{ class Model; @@ -16,16 +16,6 @@ namespace vb01{ namespace battleship{ class GameObjectFrameController{ public: - struct GameObjectFrame : public GameObject{ - enum Status{PLACEABLE, NOT_PLACEABLE, PLACED}; - - GameObjectFrame(int, int, vb01::Vector3 = vb01::Vector3::VEC_ZERO, vb01::Quaternion = vb01::Quaternion::QUAT_W); - ~GameObjectFrame(){} - - int type; - Status status; - }; - static GameObjectFrameController* getSingleton(); void update(); void removeGameObjectFrame(int); diff --git a/map.cpp b/map.cpp index 7b30da2..8ed0c58 100755 --- a/map.cpp +++ b/map.cpp @@ -8,7 +8,7 @@ #include "map.h" #include "player.h" -#include "unitFactory.h" +#include "gameObjectFactory.h" #include "pathfinder.h" #include "gameManager.h" #include "defConfigs.h" @@ -149,7 +149,7 @@ namespace battleship{ int id = unitTable["id"]; - players[i]->addUnit(UnitFactory::createUnit(players[i], id, pos, rot)); + players[i]->addUnit(GameObjectFactory::createUnit(players[i], id, pos, rot)); } } } diff --git a/mapEditorAppState.cpp b/mapEditorAppState.cpp index cbb1aa7..a46e5fe 100644 --- a/mapEditorAppState.cpp +++ b/mapEditorAppState.cpp @@ -584,7 +584,7 @@ namespace battleship{ case Bind::LOOK_AROUND: if(ufCtr->isPlacingFrames()){ Player *player = Map::getSingleton()->getPlayer(0); - GameObjectFrameController::GameObjectFrame &frame = ufCtr->getGameObjectFrame(0); + GameObjectFrame &frame = ufCtr->getGameObjectFrame(0); player->addUnit(new Unit(player, frame.getId(), frame.getModel()->getPosition(), frame.getModel()->getOrientation())); } else diff --git a/unitFactory.cpp b/unitFactory.cpp deleted file mode 100644 index 57facaf..0000000 --- a/unitFactory.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "unitFactory.h" -#include "player.h" -#include "vehicle.h" -#include "engineer.h" -#include "defConfigs.h" - -#include - -#include - -namespace battleship{ - using namespace std; - using namespace vb01; - using namespace gameBase; - - Unit* UnitFactory::createUnit(Player *player, int id, Vector3 pos, Quaternion rot){ - sol::state_view SOL_LUA_STATE = generateView(); - int unitClass = SOL_LUA_STATE["unitClass"][id + 1]; - Unit *unit = nullptr; - - switch((UnitClass)unitClass){ - case UnitClass::ENGINEER: - unit = new Engineer(player, id, pos, rot); - break; - default: - unit = new Vehicle(player, id, pos, rot); - break; - } - - return unit; - } -} diff --git a/unitFactory.h b/unitFactory.h deleted file mode 100644 index 79b3524..0000000 --- a/unitFactory.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef UNIT_FACTORY_H -#define UNIT_FACTORY_H - -#include -#include - -namespace battleship{ - class Unit; - class Player; - - class UnitFactory{ - public: - static Unit* createUnit(Player*, int, vb01::Vector3, vb01::Quaternion); - private: - }; -} - -#endif diff --git a/unitListbox.cpp b/unitListbox.cpp index 80d31d2..cc3abcc 100644 --- a/unitListbox.cpp +++ b/unitListbox.cpp @@ -14,9 +14,8 @@ namespace battleship{ } void UnitListbox::onClose(){ - int id = selectedOption; GameObjectFrameController *ufCtr = GameObjectFrameController::getSingleton(); - ufCtr->addGameObjectFrame(GameObjectFrameController::GameObjectFrame(id, (int)UnitType::LAND)); + ufCtr->addGameObjectFrame(GameObjectFrame(selectedOption, GameObjectFrame::UNIT)); ufCtr->setPlacingFrames(true); } }