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/Events/Action.hpp>
00033 #include <Thor/Events/ActionContext.hpp>
00034 #include <Thor/Tools/NonCopyable.hpp>
00035 #include <Thor/Tools/ForEach.hpp>
00036 #include <Thor/Detail/ActionOperations.hpp>
00037
00038 #include <map>
00039
00040
00041 namespace thor
00042 {
00043
00044 template <typename Event, typename EventIdentifier>
00045 class EventSystem;
00046
00047
00050
00058 template <typename ActionIdentifier>
00059 class ActionMap : private NonCopyable
00060 {
00061
00062
00063 public:
00066 typedef EventSystem< ActionContext<ActionIdentifier>, ActionIdentifier > CallbackSystem;
00067
00068
00069
00070
00071 public:
00074 explicit ActionMap(sf::Window& window);
00075
00090 void Update();
00091
00095 void PushEvent(const sf::Event& event);
00096
00100 void ClearEvents();
00101
00109 Action& operator[] (const ActionIdentifier& id);
00110
00113 void RemoveAction(const ActionIdentifier& id);
00114
00117 void ClearActions();
00118
00127 bool IsActive(const ActionIdentifier& id) const;
00128
00148 void InvokeCallbacks(CallbackSystem& system) const;
00149
00150
00151
00152
00153 private:
00154 typedef std::map<ActionIdentifier, Action> Map;
00155
00156
00157
00158
00159 private:
00160 Map mActionMap;
00161 detail::EventBuffer mEventBuffer;
00162 };
00163
00165
00166 }
00167
00168 #include <Thor/Detail/ActionMap.inl>
00169 #endif // THOR_ACTIONMAP_HPP