Brunot
Loading...
Searching...
No Matches
AddActionToEntityAction.h
Go to the documentation of this file.
1
10// ____ __ __ __
11// /\__ _\/\ \ /\ \/\ \
12// \/_/\ \/\ \ \___ __ \ \ \_\ \ ___ __ __ ____ __
13// \ \ \ \ \ _ `\ /'__`\ \ \ _ \ / __`\/\ \/\ \ /',__\ /'__`\
14// \ \ \ \ \ \ \ \/\ __/ \ \ \ \ \/\ \L\ \ \ \_\ \/\__, `\/\ __/
15// \ \_\ \ \_\ \_\ \____\ \ \_\ \_\ \____/\ \____/\/\____/\ \____\
16// \/_/ \/_/\/_/\/____/ \/_/\/_/\/___/ \/___/ \/___/ \/____/
17
18
19#pragma once
20#include "Actions/Action.h"
22#include "Framework/Entity.h"
23#include "Framework/Factory.h"
24
28template<std::derived_from<Action> a>
30{
31public:
32
33#pragma region static_functions
34
35#pragma endregion
36
40 ~AddActionToEntityAction() override = default;
42 auto operator=(AddActionToEntityAction&& other) noexcept -> AddActionToEntityAction& = default;
43
47 AddActionToEntityAction(Entity* intendedTargets, a intendedAction)
48 : Action("AddActionToEntityAction")
49 , target(intendedTargets)
50 , actionToAdd(intendedAction)
51 {
52 }
53
57 AddActionToEntityAction(Entity* intendedTargets, a intendedAction, float duration)
58 : Action("AddActionToEntityAction", duration)
59 , target(intendedTargets)
60 , actionToAdd(intendedAction)
61 {
62 }
63
67 AddActionToEntityAction(Entity* intendedTargets, a intendedAction,
68 float duration, const th::Bezier& easingFunction,
69 float initialDelay, float endingDelay)
70 : Action("AddActionToEntityAction", duration, easingFunction, initialDelay, endingDelay)
71 , target(intendedTargets)
72 , actionToAdd(intendedAction)
73 {
74 }
75
76#pragma region overridden_functions
77
78 auto init() -> void override
79 {
80 // if the entity doesn't have an action list, it will add one
81 if (!target->GetComponent<ActionList>(Component::cActionList))
82 {
83 auto success = target->addChild(th::Factory::make<GameObject>("Default/ActionList"));
84 assert(success && "Adding an action list to an entity during AddActionToEntityAction failed.");
85 }
86
87 target->GetComponent<ActionList>(Component::cActionList)->pushBack(actionToAdd);
88 }
89
90 auto execute() -> void override
91 {
92 }
93
94 auto end() -> void override
95 {
96 }
97
98 auto ActionShowMenu() -> void override
99 {
101 }
102
103 auto render() const -> void override
104 {
106 }
107
108#pragma endregion
109
110#pragma region PlaceActionOnEntityAction_functions
111
112#pragma endregion
113
114private:
115
116#pragma region member_variables
117
118 Entity* target = nullptr;
120
121#pragma endregion
122
123#pragma region helper_functions
124
125 #pragma endregion
126
127#pragma region static_variables
128
129#pragma endregion
130
131};
Component that stores all actions currently affecting the parent entity.
A class that changes a variable over a set duration.
The class containing all entity elements.
Component that stores all actions currently affecting the parent entity.
Definition ActionList.h:30
virtual auto ActionShowMenu() -> void
Displays a window in imgui.
Definition Action.cpp:116
float initialDelay
Delay that acts between the action being created and the action initializing.
Definition Action.h:262
virtual auto render() const -> void
Function used to draw things to screen, useful for things such as debug drawing.
Definition Action.cpp:110
float endingDelay
Delay that acts after the action has finished updating but before it has ended.
Definition Action.h:264
Action()=default
auto operator=(const AddActionToEntityAction &) -> AddActionToEntityAction &=default
AddActionToEntityAction(Entity *intendedTargets, a intendedAction)
Definition AddActionToEntityAction.h:47
a actionToAdd
Definition AddActionToEntityAction.h:119
AddActionToEntityAction(const AddActionToEntityAction &)=default
auto end() -> void override
Virtual function that is called once, when an Action is finished executing.
Definition AddActionToEntityAction.h:94
~AddActionToEntityAction() override=default
AddActionToEntityAction(Entity *intendedTargets, a intendedAction, float duration)
Definition AddActionToEntityAction.h:57
auto operator=(AddActionToEntityAction &&other) noexcept -> AddActionToEntityAction &=default
auto ActionShowMenu() -> void override
Displays a window in imgui.
Definition AddActionToEntityAction.h:98
AddActionToEntityAction()=default
auto init() -> void override
Virtual function that is called once, when the Action is first starting up.
Definition AddActionToEntityAction.h:78
AddActionToEntityAction(AddActionToEntityAction &&other) noexcept=default
AddActionToEntityAction(Entity *intendedTargets, a intendedAction, float duration, const th::Bezier &easingFunction, float initialDelay, float endingDelay)
Definition AddActionToEntityAction.h:67
auto render() const -> void override
Function used to draw things to screen, useful for things such as debug drawing.
Definition AddActionToEntityAction.h:103
auto execute() -> void override
Virtual function that is called every frame to change a game object.
Definition AddActionToEntityAction.h:90
Entity * target
Definition AddActionToEntityAction.h:118
Definition Entity.h:41
static auto make(const std::string &name) -> std::unique_ptr< T >
create an object and heap allocate it.
Definition Factory.h:45
Definition Bezier.h:30