conceptualizing

This commit is contained in:
jadebenn 2024-12-24 00:41:37 -06:00
parent 85eb5a7261
commit a36b611367
2 changed files with 53 additions and 0 deletions

View File

@ -5,6 +5,7 @@ add_library(dECS STATIC
"Core.h"
"Iter.h"
"Core.cpp"
"System.cpp"
)
target_include_directories(dECS PUBLIC .)
target_link_libraries(dECS PRIVATE dCommon magic_enum::magic_enum)

52
dECS/System.cpp Normal file
View File

@ -0,0 +1,52 @@
#include "PetComponent.h"
#include "MovementAIComponent.h"
#include "MissionComponent.h"
#include "eMissionState.h"
using Pet = PetComponent;
using Mission = MissionComponent;
using MovementAI = MovementAIComponent;
struct Position : NiPoint3 {};
struct Treasure {};
namespace decs {
template <typename... Cs>
class System {
public:
template <typename Fn>
void each(Fn&& fn) {
fn();
}
};
class Scene {
public:
template <typename... Cs>
System<Cs...> system() {
return System<Cs...>{};
}
};
}
void run() {
auto scene = decs::Scene{};
scene.system<Pet>()
.each([](Pet& pet) {
});
scene.system<Pet, MovementAI>()
.each([](Pet& pet, MovementAI& move) {
});
scene.system<Pet, const Mission, const Position>()
.each([](Pet& pet, Mission const& mission, Position const& pos) {
auto const digUnlocked = mission.GetMissionState(842) == eMissionState::COMPLETE;
auto const treasurePos = PetDigServer::GetClosestTreasure(pos);
});
}