TazGraph Project v0.1.0
Loading...
Searching...
No Matches
GECSUtil.h
1#pragma once
2
3#include "./GECSManager.h"
4#include <unordered_map>
5
6// Map of component names to functions for adding components
7static const std::unordered_map<std::string, std::function<void(Entity*)>> addComponentMap = {
8 //{"TransformComponent", [](Entity* entity) { entity->addComponent<TransformComponent>(); }},
9 {"SpriteComponent", [](Entity* entity) {entity->addGroup(Manager::groupRenderSprites);entity->addComponent<SpriteComponent>(); }},
10 {"ColliderComponent", [](Entity* entity) { entity->addComponent<ColliderComponent>(); }},
11 {"Triangle_w_Color", [](Entity* entity) { entity->addComponent<Triangle_w_Color>(); }},
12 {"Rectangle_w_Color", [](Entity* entity) { entity->addComponent<Rectangle_w_Color>(); }},
13 {"Line_w_Color", [](Entity* entity) { entity->addComponent<Line_w_Color>(); }},
14 {"SpringComponent", [](Entity* entity) { entity->addComponent<SpringComponent>(); }},
15 //{"BoxComponent", [](Entity* entity) { entity->addComponent<BoxComponent>(); }},
16 {"AnimatorComponent", [](Entity* entity) { entity->addComponent<AnimatorComponent>(); }},
17 {"MovingAnimatorComponent", [](Entity* entity) { entity->addComponent<MovingAnimatorComponent>(); }},
18 {"FlashAnimatorComponent", [](Entity* entity) { entity->addComponent<FlashAnimatorComponent>(); }},
19 {"LineFlashAnimatorComponent", [](Entity* entity) { entity->addComponent<LineFlashAnimatorComponent>(); }},
20 {"RectangleFlashAnimatorComponent", [](Entity* entity) { entity->addComponent<RectangleFlashAnimatorComponent>(); }},
21 {"UILabel", [](Entity* entity) { entity->addComponent<UILabel>(); }},
22 {"ButtonComponent", [](Entity* entity) { entity->addComponent<ButtonComponent>(); }},
23 {"RigidBodyComponent", [](Entity* entity) { entity->addComponent<RigidBodyComponent>(); }},
24 {"KeyboardControllerComponent", [](Entity* entity) { entity->addComponent<KeyboardControllerComponent>(); }},
25 {"GridComponent", [](Entity* entity) { entity->addComponent<GridComponent>(); }},
26 {"PollingComponent", [](Entity* entity) { entity->addComponent<PollingComponent>(); }},
27};
28
29// Map of component names to functions for removing components
30static const std::unordered_map<std::string, std::function<void(Entity*)>> removeComponentMap = {
31 //{"TransformComponent", [](Entity* entity) { entity->removeComponent<TransformComponent>(); }},
32 {"SpriteComponent", [](Entity* entity) { entity->removeGroup(Manager::groupRenderSprites); entity->removeComponent<SpriteComponent>(); }},
33 {"ColliderComponent", [](Entity* entity) { entity->removeComponent<ColliderComponent>(); }},
34 {"Triangle_w_Color", [](Entity* entity) { entity->removeComponent<Triangle_w_Color>(); }},
35 {"Rectangle_w_Color", [](Entity* entity) { entity->removeComponent<Rectangle_w_Color>(); }},
36 {"Line_w_Color", [](Entity* entity) { entity->removeComponent<Line_w_Color>(); }},
37 {"SpringComponent", [](Entity* entity) { entity->removeComponent<SpringComponent>(); }},
38 {"AnimatorComponent", [](Entity* entity) { entity->removeComponent<AnimatorComponent>(); }},
39 {"MovingAnimatorComponent", [](Entity* entity) { entity->removeComponent<MovingAnimatorComponent>(); }},
40 {"FlashAnimatorComponent", [](Entity* entity) { entity->removeComponent<FlashAnimatorComponent>(); }},
41 {"LineFlashAnimatorComponent", [](Entity* entity) { entity->removeComponent<LineFlashAnimatorComponent>(); }},
42 {"RectangleFlashAnimatorComponent", [](Entity* entity) { entity->removeComponent<RectangleFlashAnimatorComponent>(); }},
43 {"UILabel", [](Entity* entity) { entity->removeComponent<UILabel>(); }},
44 {"ButtonComponent", [](Entity* entity) { entity->removeComponent<ButtonComponent>(); }},
45 {"RigidBodyComponent", [](Entity* entity) { entity->removeComponent<RigidBodyComponent>(); }},
46 {"KeyboardControllerComponent", [](Entity* entity) { entity->removeComponent<KeyboardControllerComponent>(); }},
47 {"GridComponent", [](Entity* entity) { entity->removeComponent<GridComponent>(); }},
48 {"PollingComponent", [](Entity* entity) { entity->removeComponent<PollingComponent>(); }},
49};
50
51// Map of component names to functions for getting components
52static const std::unordered_map<std::string, std::function<BaseComponent* (Entity*)>> getComponentMap = {
53 {"TransformComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<TransformComponent>(); }},
54 {"SpriteComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<SpriteComponent>(); }},
55 {"ColliderComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<ColliderComponent>(); }},
56 {"Triangle_w_Color", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<Triangle_w_Color>(); }},
57 {"Rectangle_w_Color", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<Rectangle_w_Color>(); }},
58 {"Line_w_Color", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<Line_w_Color>(); }},
59 {"SpringComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<SpringComponent>(); }},
60 {"AnimatorComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<AnimatorComponent>(); }},
61 {"MovingAnimatorComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<MovingAnimatorComponent>(); }},
62 {"FlashAnimatorComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<FlashAnimatorComponent>(); }},
63 {"LineFlashAnimatorComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<LineFlashAnimatorComponent>(); }},
64 {"RectangleFlashAnimatorComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<RectangleFlashAnimatorComponent>(); }},
65 {"UILabel", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<UILabel>(); }},
66 {"ButtonComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<ButtonComponent>(); }},
67 {"RigidBodyComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<RigidBodyComponent>(); }},
68 {"KeyboardControllerComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<KeyboardControllerComponent>(); }},
69 {"GridComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<GridComponent>(); }},
70 {"PollingComponent", [](Entity* entity) -> BaseComponent* { return &entity->GetComponent<PollingComponent>(); }},
71};
72
73
74// Function to add a component by name
75void AddComponentByName(const std::string& componentName, Entity* entity) {
76 auto it = addComponentMap.find(componentName);
77 if (it != addComponentMap.end()) {
78 it->second(entity);
79 }
80
81 entity->getManager()->aboutTo_updateActiveEntities();
82}
83
84// Function to remove a component by name
85void RemoveComponentByName(const std::string& componentName, Entity* entity) {
86 auto it = removeComponentMap.find(componentName);
87 if (it != removeComponentMap.end()) {
88 it->second(entity);
89 }
90
91 entity->getManager()->aboutTo_updateActiveEntities();
92}
93
94// Function to get a component by name
95BaseComponent* getComponentByName(const std::string& componentName, Entity* entity) {
96 auto it = getComponentMap.find(componentName);
97 if (it != getComponentMap.end()) {
98 return it->second(entity);
99 }
100 return nullptr;
101}
Definition AnimatorComponent.h:13
Definition GECS.h:102
Definition ButtonComponent.h:7
Definition ColliderComponent.h:12
Definition GECS.h:140
Definition FlashAnimatorComponent.h:10
Definition GridComponent.h:20
moving animation
Definition KeyboardControllerComponent.h:20
Definition LineFlashAnimatorComponent.h:14
Definition Line_w_Color.h:6
Definition MovingAnimatorComponent.h:11
Definition PollingComponent.h:4
Definition RectangleFlashAnimatorComponent.h:14
Definition Rectangle_w_Color.h:6
Definition RigidBodyComponent.h:5
Definition SpringComponent.h:6
Definition SpriteComponent.h:17
Definition TransformComponent.h:6
Definition Triangle_w_Color.h:6
Definition UILabel.h:10