// // Created by Иван Ильин on 25.05.2021. // #ifndef SHOOTER_CLIENT_H #define SHOOTER_CLIENT_H #include "engine/network/ClientUDP.h" #include "Player.h" class Client final : public ClientUDP { private: std::string _lastEvent; std::map> _players{}; std::shared_ptr _player; std::function _spawnPlayerCallBack; std::function _removePlayerCallBack; std::function _addFireTraceCallBack; std::function _addBonusCallBack; std::function _removeBonusCallBack; std::function _changeEnemyWeaponCallBack; public: explicit Client(std::shared_ptr player) : _player(player){}; void updatePacket() override; void setSpawnPlayerCallBack(std::function spawn); void setRemovePlayerCallBack(std::function remove); void setAddFireTraceCallBack(std::function addTrace); void setAddBonusCallBack(std::function addBonus); void setRemoveBonusCallBack(std::function removeBonus); void setChangeEnemyWeaponCallBack(std::function changeEnemyWeapon); void processInit(sf::Packet& packet) override; void processUpdate(sf::Packet& packet) override; void processNewClient(sf::Packet& packet) override; void processDisconnect(sf::Uint16 targetId) override; void processCustomPacket(sf::Packet& packet) override; void processDisconnected() override; void damagePlayer(sf::Uint16 targetId, double damage); void takeBonus(const std::string& bonusName); void addTrace(const Vec3D& from, const Vec3D& to); void changeWeapon(const std::string& weaponName); void addPlayer(sf::Uint16 id, std::shared_ptr player); [[nodiscard]] std::map>const & players() const { return _players; } [[nodiscard]] std::string lastEvent() const { return _lastEvent; } }; #endif //MINECRAFT_3DZAVR_CLIENT_H