factored out GameObjectFrame

refactored GameObject/Unit- Factory class
This commit is contained in:
devZoGok
2023-10-07 12:43:08 +03:00
parent 1f82b1dfd9
commit cf9ac6199e
15 changed files with 104 additions and 80 deletions
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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);
}
+2 -2
View File
@@ -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(){
+1 -1
View File
@@ -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);
}
}
+37
View File
@@ -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 <solUtil.h>
#include <vector>
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;
}
}
+23
View File
@@ -0,0 +1,23 @@
#ifndef GAME_OBJECT_FACTORY_H
#define GAME_OBJECT_FACTORY_H
#include <vector.h>
#include <quaternion.h>
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
+5
View File
@@ -0,0 +1,5 @@
#include "gameObjectFrame.h"
namespace battleship{
}
+24
View File
@@ -0,0 +1,24 @@
#ifndef GAME_OBJECT_FRAME_H
#define GAME_OBJECT_FRAME_H
#include "gameObject.h"
#include <vector.h>
#include <quaternion.h>
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
+2 -6
View File
@@ -1,6 +1,6 @@
#include <solUtil.h>
#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));
}
}
+3 -13
View File
@@ -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 <vector>
#include <string>
@@ -7,7 +7,7 @@
#include <vector.h>
#include <quaternion.h>
#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);
+2 -2
View File
@@ -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));
}
}
}
+1 -1
View File
@@ -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
-32
View File
@@ -1,32 +0,0 @@
#include "unitFactory.h"
#include "player.h"
#include "vehicle.h"
#include "engineer.h"
#include "defConfigs.h"
#include <solUtil.h>
#include <vector>
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;
}
}
-18
View File
@@ -1,18 +0,0 @@
#ifndef UNIT_FACTORY_H
#define UNIT_FACTORY_H
#include <vector.h>
#include <quaternion.h>
namespace battleship{
class Unit;
class Player;
class UnitFactory{
public:
static Unit* createUnit(Player*, int, vb01::Vector3, vb01::Quaternion);
private:
};
}
#endif
+1 -2
View File
@@ -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);
}
}