mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-01-08 22:07:10 +00:00
conceptualizing
This commit is contained in:
parent
85eb5a7261
commit
a36b611367
@ -5,6 +5,7 @@ add_library(dECS STATIC
|
|||||||
"Core.h"
|
"Core.h"
|
||||||
"Iter.h"
|
"Iter.h"
|
||||||
"Core.cpp"
|
"Core.cpp"
|
||||||
|
"System.cpp"
|
||||||
)
|
)
|
||||||
target_include_directories(dECS PUBLIC .)
|
target_include_directories(dECS PUBLIC .)
|
||||||
target_link_libraries(dECS PRIVATE dCommon magic_enum::magic_enum)
|
target_link_libraries(dECS PRIVATE dCommon magic_enum::magic_enum)
|
||||||
|
52
dECS/System.cpp
Normal file
52
dECS/System.cpp
Normal 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);
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user