Entity update + components
This commit is contained in:
@@ -15,6 +15,7 @@ namespace Game::AGame {
|
||||
setText("Hello, World!");
|
||||
|
||||
mIsActive = false;
|
||||
mIsVisible = false;
|
||||
}
|
||||
void update(float deltaTime) override {
|
||||
// Call the base class update to handle input and text refreshing
|
||||
|
||||
12
include/game/agame/trash.hpp
Normal file
12
include/game/agame/trash.hpp
Normal file
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
#include <game/gamemanager.hpp>
|
||||
#include <object/entity.hpp>
|
||||
#include <renderer/texture.hpp>
|
||||
#include <renderer/font.hpp>
|
||||
#include <object/sound.hpp>
|
||||
|
||||
namespace Game::AGame {
|
||||
GAME_ENTITY(Trash)
|
||||
END_GAME_ENTITY()
|
||||
}
|
||||
@@ -50,6 +50,13 @@ namespace Game {
|
||||
static GameStateEnum getCurrentGameState() { return mCurrentGameState; }
|
||||
static void setCurrentGameState(GameStateEnum newState) { mCurrentGameState = newState; }
|
||||
|
||||
template<typename T>
|
||||
static bool instantiateEntity(std::unique_ptr<T> entity);
|
||||
template<typename T>
|
||||
static T* getEntityByName(const std::string& name);
|
||||
template<typename T>
|
||||
static void destroyEntity(T* entity);
|
||||
|
||||
private:
|
||||
int mTargetUpdatesPerSecond = TARGET_UPDATE_RATE;
|
||||
clock::time_point mLastUpdate;
|
||||
@@ -114,4 +121,26 @@ namespace Game {
|
||||
|
||||
return T{};
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
bool GameManager::instantiateEntity(std::unique_ptr<T> entity) {
|
||||
static_assert(std::is_base_of_v<Object::Entity, T>, "T must derive from Object::Entity");
|
||||
State::GameState::getInstance().addEntity(std::move(entity));
|
||||
return true;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
T* GameManager::getEntityByName(const std::string& name) {
|
||||
static_assert(std::is_base_of_v<Object::Entity, T>, "T must derive from Object::Entity");
|
||||
Object::Entity* entity = State::GameState::getInstance().getEntityByName(name);
|
||||
return dynamic_cast<T*>(entity);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void GameManager::destroyEntity(T* entity) {
|
||||
static_assert(std::is_base_of_v<Object::Entity, T>, "T must derive from Object::Entity");
|
||||
if (entity) {
|
||||
State::GameState::getInstance().removeEntity(entity->getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user