// // Created by Neirokan on 30.04.2020 // #ifndef ENGINE_SERVERUDP_H #define ENGINE_SERVERUDP_H #include "../World.h" #include "../Camera.h" #include "ReliableMsg.h" #include "UDPSocket.h" #include #include class ServerUDP { protected: UDPSocket _socket; double _lastBroadcast = -std::numeric_limits::max(); bool _working = false; bool process(); bool timeout(sf::Uint16 id); std::set _clients{}; public: explicit ServerUDP(); [[nodiscard]] bool isWorking() const; bool start(sf::Uint16 port); void stop(); void update(); virtual void updateInfo(){}; // virtual functions virtual void broadcast(){}; // here you have to send Init message _back to 'targetId' and send NewClient message to all '_clients' virtual void processConnect(sf::Uint16 senderId){}; virtual void processClientUpdate(sf::Uint16 senderId, sf::Packet& packet){}; virtual void processDisconnect(sf::Uint16 senderId){}; virtual void processCustomPacket(sf::Packet& packet, sf::Uint16 senderId){}; virtual void processStop(){}; virtual ~ServerUDP(); }; #endif //INC_3DZAVR_SERVERUDP_H