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
00024
00025
00026
00027
00028
00031
00032 #pragma once
00033
00034 #include "../api_network.h"
00035 #include "event.h"
00036 #include <map>
00037 #include "../../Core/Signals/callback_v2.h"
00038
00039 template<typename ContextParam>
00043 class CL_API_NETWORK CL_NetGameEventDispatcher_v1
00044 {
00045 public:
00046 typedef CL_Callback_v2<const CL_NetGameEvent &, ContextParam> CallbackClass;
00047
00048 CallbackClass &func_event(const CL_String &name) { return event_handlers[name]; }
00049
00056 bool dispatch(const CL_NetGameEvent &game_event, ContextParam context);
00057
00058 private:
00059 std::map<CL_String, CallbackClass> event_handlers;
00060 };
00061
00062 template<typename ContextParam>
00063 bool CL_NetGameEventDispatcher_v1<ContextParam>::dispatch(const CL_NetGameEvent &game_event, ContextParam context)
00064 {
00065 typename std::map<CL_String, CallbackClass>::iterator it;
00066 it = event_handlers.find(game_event.get_name());
00067 if (it != event_handlers.end() && !it->second.is_null())
00068 {
00069 it->second.invoke(game_event, context);
00070 return true;
00071 }
00072 else
00073 {
00074 return false;
00075 }
00076 }
00077
00079