From ee814eede9b65fb469c12a3effc432e38a33442d Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Sun, 10 Dec 2017 14:35:25 +0500 Subject: Removed previous implementation of event-system --- src/Event.hpp | 241 ---------------------------------------------------------- 1 file changed, 241 deletions(-) (limited to 'src/Event.hpp') diff --git a/src/Event.hpp b/src/Event.hpp index 4962ee9..3f59c93 100644 --- a/src/Event.hpp +++ b/src/Event.hpp @@ -1,243 +1,2 @@ #pragma once -#include -#include -#include -#include -#include -#include - -#include - -#include "Vector.hpp" -#include "Chat.hpp" - -class Packet; - -enum class EventType { - Echo, - ChunkChanged, - ConnectToServer, - ConnectionSuccessfull, - Disconnect, - RequestNetworkClient, - RegisterNetworkClient, - PlayerConnected, - RemoveLoadingScreen, - ConnectionFailed, - Exit, - Disconnected, - Connecting, - NetworkClientException, - MouseMoved, - KeyPressed, - KeyReleased, - InitalizeSectionRender, - UpdateSectionsRender, - CreateSectionRender, - CreatedSectionRender, - PlayerPosChanged, - DeleteSectionRender, - EntityChanged, - NewRenderDataAvailable, - BlockChange, - RendererWorkerTask, - ChunkDeleted, - ChatMessageReceived, - SendChatMessage, - StateUpdated, -}; - -struct EchoData { - std::chrono::time_point time; -}; - -struct ChunkChangedData { - Vector chunkPosition; -}; - -struct ConnectToServerData { - std::string username; - std::string address; - unsigned short port; -}; - -struct ConnectionSuccessfullData { -}; - -struct DisconnectData { - std::string reason; -}; - -struct SendPacketData { - std::shared_ptr packet; -}; - -struct ReceivePacketData { - std::shared_ptr packet; -}; - -struct RequestNetworkClientData { - -}; - -struct RegisterNetworkClientData { -}; - -struct PlayerConnectedData { -}; - -struct RemoveLoadingScreenData { - -}; - -struct ConnectionFailedData { - std::string reason; -}; - -struct ExitData { - -}; - -struct DisconnectedData { - std::string reason; -}; - -struct ConnectingData { - -}; - -struct NetworkClientExceptionData { - std::string what; -}; - -struct MouseMovedData { - double x, y; -}; - -struct KeyPressedData { - SDL_Scancode key; -}; - -struct KeyReleasedData { - SDL_Scancode key; -}; - -struct InitalizeSectionRenderData { - Vector pos; -}; - -struct CreateSectionRenderData { - Vector pos; -}; - -struct CreatedSectionRenderData { - Vector pos; -}; - -struct PlayerPosChangedData { - VectorF newPos; -}; - -struct UpdateSectionsRenderData { - -}; - -struct DeleteSectionRenderData { - Vector pos; -}; - -struct EntityChangedData { - unsigned int EntityId; -}; - -struct NewRenderDataAvailableData { - -}; - -struct BlockChangeData { - Vector SectionPos; -}; - -struct RendererWorkerTaskData { - size_t WorkerId; - Vector Task; -}; - -struct ChunkDeletedData { - Vector pos; -}; - -struct ChatMessageReceivedData { - Chat message; - unsigned char position; -}; - -struct SendChatMessageData { - std::string message; -}; - -struct StateUpdatedData { - -}; - -using EventData = std::variant; - -struct Event { - EventType type; - EventData data; -}; - -class EventListener { - friend class EventAgregator; - - using HandlerFunc = std::function; - - std::map handlers; //TODO: There must be more elegant solution than std::variant of all data - - std::mutex handlersMutex; - - std::queue events; - - std::mutex eventsMutex; - - void PushEvent(Event event); - - void DirectCall(Event event); - -public: - EventListener(); - ~EventListener(); - bool IsEventsQueueIsNotEmpty(); - - void RegisterHandler(EventType type, HandlerFunc handler); - - void HandleEvent(); -}; - -class EventAgregator { - friend EventListener; - - EventAgregator() = default; - static std::queue eventsToHandle; - static std::mutex queueMutex; - static bool isStarted; - static std::vector listeners; - static std::mutex listenersMutex; - - static void EventHandlingLoop(); - - static void RegisterListener(EventListener &listener); - static void UnregisterListener(EventListener &listener); - -public: - static void PushEvent(EventType type, EventData data); - static void DirectEventCall(EventType, EventData data); -}; \ No newline at end of file -- cgit v1.2.3