aboutsummaryrefslogtreecommitdiff
path: root/main/puzzle/fsm
diff options
context:
space:
mode:
authorThomasAvans <tv.intanker@student.avans.nl>2024-04-22 10:40:59 +0200
committerThomasAvans <tv.intanker@student.avans.nl>2024-04-22 10:40:59 +0200
commit1640a4fb4bb0c831dd3f2a28bf99a49f3f41e829 (patch)
tree5889fbd9a70ed926a64a6c3cd0183ae25fc18be5 /main/puzzle/fsm
parent4354adcf0ae2eabbf419a76fc97746cb71962826 (diff)
Processed review
Diffstat (limited to 'main/puzzle/fsm')
-rw-r--r--main/puzzle/fsm/FSM.cpp3
-rw-r--r--main/puzzle/fsm/FSM.h50
-rw-r--r--main/puzzle/fsm/FSM.hpp68
-rw-r--r--main/puzzle/fsm/IBehaviouralState.hpp25
4 files changed, 0 insertions, 146 deletions
diff --git a/main/puzzle/fsm/FSM.cpp b/main/puzzle/fsm/FSM.cpp
deleted file mode 100644
index fad7fb3..0000000
--- a/main/puzzle/fsm/FSM.cpp
+++ /dev/null
@@ -1,3 +0,0 @@
-#include "FSM.h"
-
-#include "IBehaviouralState.hpp" \ No newline at end of file
diff --git a/main/puzzle/fsm/FSM.h b/main/puzzle/fsm/FSM.h
deleted file mode 100644
index 792a44f..0000000
--- a/main/puzzle/fsm/FSM.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef _FSM_H_
-#define _FSM_H_
-
-#include <map>
-#include <memory>
-
-#include "IBehaviouralState.hpp"
-
-/// <summary>
-///
-/// </summary>
-/// <typeparam name="TState">IBehaviouralState is the only accepted
-/// class.</typeparam>
-template <class TState> class FSM {
-public:
- template <class... TPState> FSM(TPState &...args) {
- int i = 0;
-
- ((void)_states.emplace(i++, args), ...);
- }
-
- /// <summary>
- /// Implement with FSM::act()
- /// </summary>
- void act();
-
- /// <summary>
- /// Used to check current state.
- /// </summary>
- /// <returns>Current state.</returns>
- std::shared_ptr<TState> &get_state() { return _currentState; }
-
- /// <summary>
- /// Used to get all states.
- /// </summary>
- /// <returns>Current states.</returns>
- std::map<int, std::shared_ptr<TState>> get_states();
-
- /// <summary>
- /// Sets current state, calls appropiate functions.
- /// </summary>
- /// <param name="">State to transition into.</param>
- void set_state(std::shared_ptr<TState>);
-
-private:
- std::map<int, std::shared_ptr<TState>> _states;
- std::shared_ptr<TState> _currentState;
-};
-
-#endif // _FSM_H_ \ No newline at end of file
diff --git a/main/puzzle/fsm/FSM.hpp b/main/puzzle/fsm/FSM.hpp
deleted file mode 100644
index c86ed80..0000000
--- a/main/puzzle/fsm/FSM.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef _FSM_HPP_
-#define _FSM_HPP_
-
-#include "FSM.h"
-
-#include <iostream>
-
-/// <summary>
-/// This is a generic update method, unknown classes are not supported.
-/// </summary>
-/// <typeparam name="TState">IBehaviouralState is the only accepted
-/// class.</typeparam>
-template <class TState> void FSM<TState>::act() {
- // No implementation for unknown class.
- std::cout << "No implementation for unknown class" << std::endl;
-}
-//
-///// <summary>
-///// Calls the IBehaviouralState act method.
-///// </summary>
-///// <typeparam name="TState">IBehaviouralState is the only accepted
-/// class.</typeparam>
-template <> inline void FSM<IBehaviouralState>::act() { _currentState->act(); }
-
-/// <summary>
-/// This is a generic return of the type.
-/// </summary>
-/// <typeparam name="TState">Any class type works with this return.</typeparam>
-/// <returns>The current IBehaviouralState map.</returns>
-template <class TState>
-std::map<int, std::shared_ptr<TState>> FSM<TState>::get_states() {
- return _states;
-}
-
-///// <summary>
-///// State transitioning from current state to newState.
-///// Calls Exit on the current state and Enter on the new state.
-///// </summary>
-///// <typeparam name="TState">IBehaviouralState is the only accepted
-/// class.</typeparam>
-///// <param name="newState">New state to transition into.</param>
-template <>
-inline void
-FSM<IBehaviouralState>::set_state(std::shared_ptr<IBehaviouralState> newState) {
- // We can guarantee all statemachines are based on IBehaviouralState
- if (_currentState != nullptr)
- _currentState->exit();
-
- _currentState = nullptr;
- _currentState = newState;
- _currentState->enter();
-}
-
-/// <summary>
-/// State transitioning from current state to newState.
-/// Calls Exit on the current state and Enter on the new state.
-/// </summary>
-/// <typeparam name="TState">IBehaviouralState is the only accepted
-/// class.</typeparam> <param name="newState">New state to transition
-/// into.</param>
-template <class TState>
-void FSM<TState>::set_state(std::shared_ptr<TState> newState) {
- // We can guarantee all statemachines are based on IBehaviouralState
- // No implementation for an unknown state change class.
- std::cout << "No implementation for unknown state change class" << std::endl;
-}
-
-#endif // _FSM_HPP_ \ No newline at end of file
diff --git a/main/puzzle/fsm/IBehaviouralState.hpp b/main/puzzle/fsm/IBehaviouralState.hpp
deleted file mode 100644
index c41fef3..0000000
--- a/main/puzzle/fsm/IBehaviouralState.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _FSM_IBEHAVIOURALSTATE_HPP_
-#define _FSM_IBEHAVIOURALSTATE_HPP_
-
-/// <summary>
-/// Sub class used to define methods implemented by behavioural specific states.
-/// </summary>
-class IBehaviouralState {
-public:
- /// <summary>
- /// Enters the current state. Used for setup.
- /// </summary>
- virtual void enter() = 0;
-
- /// <summary>
- /// Updates the current state, used for physics, etc.
- /// </summary>
- virtual void act() = 0;
-
- /// <summary>
- /// Exits the state, used for cleanup.
- /// </summary>
- virtual void exit() = 0;
-};
-
-#endif // _FSM_IBEHAVIOURALSTATE_HPP_ \ No newline at end of file