// // Created by Neirokan on 30.04.2020 // #ifndef ENGINE_CLIENTUDP_H #define ENGINE_CLIENTUDP_H #include "ReliableMsg.h" #include "UDPSocket.h" #include class ClientUDP { protected: UDPSocket _socket; double _lastBroadcast; bool _working; sf::Uint16 _port; sf::IpAddress _ip; bool process(); bool timeout(sf::Uint16 id); public: // create new ClientUDP() explicit ClientUDP(); [[nodiscard]] bool isWorking() const; [[nodiscard]] bool connected() const; void connect(sf::IpAddress ip, sf::Uint16 port); void disconnect(); void update(); [[nodiscard]] sf::IpAddress ip() const { return _ip; } [[nodiscard]] sf::Uint16 port() const { return _port; } // virtual functions virtual void updatePacket(){}; virtual void processInit(sf::Packet& packet){}; virtual void processUpdate(sf::Packet& packet){}; virtual void processNewClient(sf::Packet& packet){}; virtual void processDisconnect(sf::Uint16 targetId){}; virtual void processCustomPacket(MsgType type, sf::Packet& packet){}; virtual void processDisconnected(){}; virtual ~ClientUDP() = default; }; #endif //INC_3DZAVR_CLIENTUDP_H