Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00025
00028
00029 #ifndef THOR_ACTIONMAP_HPP
00030 #define THOR_ACTIONMAP_HPP
00031
00032 #include <Thor/Input/Action.hpp>
00033 #include <Thor/Input/ActionContext.hpp>
00034 #include <Thor/Input/Detail/ActionOperations.hpp>
00035
00036 #include <Aurora/Tools/NonCopyable.hpp>
00037 #include <Aurora/Tools/ForEach.hpp>
00038
00039 #include <map>
00040
00041
00042 namespace thor
00043 {
00044
00045 template <typename Event, typename EventId>
00046 class EventSystem;
00047
00048
00051
00059 template <typename ActionId>
00060 class ActionMap : private aurora::NonCopyable
00061 {
00062
00063
00064 public:
00067 typedef EventSystem< ActionContext<ActionId>, ActionId > CallbackSystem;
00068
00069
00070
00071
00072 public:
00075 ActionMap();
00076
00079 ActionMap(ActionMap&& source);
00080
00083 ActionMap& operator= (ActionMap&& source);
00084
00100 void update(sf::Window& window);
00101
00105 void pushEvent(const sf::Event& event);
00106
00110 void clearEvents();
00111
00119 Action& operator[] (const ActionId& id);
00120
00123 void removeAction(const ActionId& id);
00124
00127 void clearActions();
00128
00137 bool isActive(const ActionId& id) const;
00138
00165 void invokeCallbacks(CallbackSystem& system, sf::Window* window) const;
00166
00167
00168
00169
00170 private:
00171 typedef std::map<ActionId, Action> Map;
00172
00173
00174
00175
00176 private:
00177 Map mActionMap;
00178 detail::EventBuffer mEventBuffer;
00179 };
00180
00182
00183 }
00184
00185 #include <Thor/Input/Detail/ActionMap.inl>
00186 #endif // THOR_ACTIONMAP_HPP