From 9fcccb498da954155c5df6d43fe601a1144ed3ea Mon Sep 17 00:00:00 2001 From: devZoGok Date: Sat, 7 Oct 2023 17:29:27 +0300 Subject: [PATCH] placeable resource deposits in the map editor --- Assets/Scripts/resourceData.lua | 12 ++++++++++++ gameObject.h | 1 + gameObjectFactory.cpp | 6 +++--- gameObjectFactory.h | 2 +- mapEditorAppState.cpp | 15 +++++++++++++-- resourceDeposit.cpp | 14 ++++++++++++++ resourceDeposit.h | 15 +++++++++++++++ 7 files changed, 59 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/resourceData.lua b/Assets/Scripts/resourceData.lua index d32b225..c129964 100644 --- a/Assets/Scripts/resourceData.lua +++ b/Assets/Scripts/resourceData.lua @@ -9,5 +9,17 @@ resources = { }, basePath = { PATH .. 'Models/Resources/' + }, + unitCornerPoints = { + { + {x = .9, y = -1, z = -6}, + {x = -.9, y = -1, z = -6}, + {x = -.9, y = -1, z = 5.8}, + {x = .9, y = -1, z = 5.8}, + {x = .9, y = 3.5, z = -6}, + {x = -.9, y = 3.5, z = -6}, + {x = -.9, y = 3.5, z = 5.8}, + {x = .9, y = 3.5, z = 5.8} + } } } diff --git a/gameObject.h b/gameObject.h index 598921d..668baa1 100644 --- a/gameObject.h +++ b/gameObject.h @@ -35,6 +35,7 @@ namespace battleship{ inline vb01::Vector3 getLeftVec() {return leftVec;} inline vb01::Vector3 getUpVec() {return upVec;} inline int getId() {return id;} + inline Type getType(){return type;} private: protected: virtual void initProperties(); diff --git a/gameObjectFactory.cpp b/gameObjectFactory.cpp index 74c2fb5..ccbf7a2 100644 --- a/gameObjectFactory.cpp +++ b/gameObjectFactory.cpp @@ -27,11 +27,11 @@ namespace battleship{ } } - Projectile* createProjectile(Unit*, int, vb01::Vector3, vb01::Quaternion){ + Projectile* GameObjectFactory::createProjectile(Unit *unti, int id, Vector3 pos, Quaternion rot){ return nullptr; } - ResourceDeposit* createResourceDeposit(int, vb01::Vector3, vb01::Quaternion){ - return nullptr; + ResourceDeposit* GameObjectFactory::createResourceDeposit(int id, Vector3 pos, Quaternion rot){ + return new ResourceDeposit(id, pos, rot); } } diff --git a/gameObjectFactory.h b/gameObjectFactory.h index e5183ee..d4ba61a 100644 --- a/gameObjectFactory.h +++ b/gameObjectFactory.h @@ -14,7 +14,7 @@ namespace battleship{ 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 Projectile* createProjectile(Unit*, int, vb01::Vector3, vb01::Quaternion); static ResourceDeposit* createResourceDeposit(int, vb01::Vector3, vb01::Quaternion); private: }; diff --git a/mapEditorAppState.cpp b/mapEditorAppState.cpp index a46e5fe..b1712a1 100644 --- a/mapEditorAppState.cpp +++ b/mapEditorAppState.cpp @@ -2,6 +2,7 @@ #include "gameManager.h" #include "defConfigs.h" #include "cameraController.h" +#include "gameObjectFactory.h" #include "gameObjectFrameController.h" #include "player.h" #include "map.h" @@ -56,6 +57,7 @@ namespace battleship{ AssetManager *assetManager = AssetManager::getSingleton(); assetManager->load(basePath + "Models/Units/", true); + assetManager->load(basePath + "Models/Resources/", true); assetManager->load(basePath + DEFAULT_TEXTURE); } @@ -583,9 +585,18 @@ namespace battleship{ switch((Bind)bind){ case Bind::LOOK_AROUND: if(ufCtr->isPlacingFrames()){ - Player *player = Map::getSingleton()->getPlayer(0); + Map *map = Map::getSingleton(); + Player *player = map->getPlayer(0); GameObjectFrame &frame = ufCtr->getGameObjectFrame(0); - player->addUnit(new Unit(player, frame.getId(), frame.getModel()->getPosition(), frame.getModel()->getOrientation())); + Model *model = frame.getModel(); + Vector3 pos = model->getPosition(); + Quaternion rot = model->getOrientation(); + + if(frame.getType() == GameObject::Type::RESOURCE_DEPOSIT){ + ResourceDeposit *dep = GameObjectFactory::createResourceDeposit(frame.getId(), pos, rot); + } + else + player->addUnit(GameObjectFactory::createUnit(player, frame.getId(), pos, rot)); } else CameraController::getSingleton()->setLookingAround(isPressed); diff --git a/resourceDeposit.cpp b/resourceDeposit.cpp index e69de29..563e6af 100644 --- a/resourceDeposit.cpp +++ b/resourceDeposit.cpp @@ -0,0 +1,14 @@ +#include "resourceDeposit.h" + +namespace battleship{ + using namespace vb01; + + ResourceDeposit::ResourceDeposit(int id, Vector3 pos, Quaternion rot) : GameObject(GameObject::Type::RESOURCE_DEPOSIT, id, nullptr, pos, rot){ + initModel(); + placeAt(pos); + orientAt(rot); + } + + void ResourceDeposit::update(){ + } +} diff --git a/resourceDeposit.h b/resourceDeposit.h index e69de29..5881834 100644 --- a/resourceDeposit.h +++ b/resourceDeposit.h @@ -0,0 +1,15 @@ +#ifndef RESOURCE_DEPOSIT_H +#define RESOURCE_DEPOSIT_H + +#include "gameObject.h" + +namespace battleship{ + class ResourceDeposit : public GameObject{ + public: + ResourceDeposit(int, vb01::Vector3, vb01::Quaternion); + void update(); + private: + }; +} + +#endif