aboutsummaryrefslogtreecommitdiff
path: root/src/client/client.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/client.h')
-rw-r--r--src/client/client.h277
1 files changed, 148 insertions, 129 deletions
diff --git a/src/client/client.h b/src/client/client.h
index f00c331ab..7455d78dc 100644
--- a/src/client/client.h
+++ b/src/client/client.h
@@ -49,7 +49,7 @@ class IWritableTextureSource;
class IWritableShaderSource;
class ISoundManager;
class NodeDefManager;
-// class IWritableCraftDefManager;
+//class IWritableCraftDefManager;
class ClientMediaDownloader;
struct MapDrawControl;
class ModChannelMgr;
@@ -60,13 +60,11 @@ class Minimap;
struct MinimapMapblock;
class Camera;
class NetworkPacket;
-namespace con
-{
+namespace con {
class Connection;
}
-enum LocalClientState
-{
+enum LocalClientState {
LC_Created,
LC_Init,
LC_Ready
@@ -90,7 +88,10 @@ public:
n->second++;
}
- void clear() { m_packets.clear(); }
+ void clear()
+ {
+ m_packets.clear();
+ }
u32 sum() const;
void print(std::ostream &o) const;
@@ -110,21 +111,28 @@ public:
NOTE: Nothing is thread-safe here.
*/
- Client(const char *playername, const std::string &password,
- const std::string &address_name, MapDrawControl &control,
- IWritableTextureSource *tsrc, IWritableShaderSource *shsrc,
- IWritableItemDefManager *itemdef, NodeDefManager *nodedef,
- ISoundManager *sound, MtEventManager *event, bool ipv6,
- GameUI *game_ui);
+ Client(
+ const char *playername,
+ const std::string &password,
+ const std::string &address_name,
+ MapDrawControl &control,
+ IWritableTextureSource *tsrc,
+ IWritableShaderSource *shsrc,
+ IWritableItemDefManager *itemdef,
+ NodeDefManager *nodedef,
+ ISoundManager *sound,
+ MtEventManager *event,
+ bool ipv6,
+ GameUI *game_ui
+ );
~Client();
DISABLE_CLASS_COPY(Client);
// Load local mods into memory
void scanModSubfolder(const std::string &mod_name, const std::string &mod_path,
- std::string mod_subpath);
- inline void scanModIntoMemory(
- const std::string &mod_name, const std::string &mod_path)
+ std::string mod_subpath);
+ inline void scanModIntoMemory(const std::string &mod_name, const std::string &mod_path)
{
scanModSubfolder(mod_name, mod_path, "");
}
@@ -134,6 +142,7 @@ public:
*/
void Stop();
+
bool isShutdown();
/*
@@ -154,58 +163,58 @@ public:
* Command Handlers
*/
- void handleCommand(NetworkPacket *pkt);
-
- void handleCommand_Null(NetworkPacket *pkt){};
- void handleCommand_Deprecated(NetworkPacket *pkt);
- void handleCommand_Hello(NetworkPacket *pkt);
- void handleCommand_AuthAccept(NetworkPacket *pkt);
- void handleCommand_AcceptSudoMode(NetworkPacket *pkt);
- void handleCommand_DenySudoMode(NetworkPacket *pkt);
- void handleCommand_AccessDenied(NetworkPacket *pkt);
- void handleCommand_RemoveNode(NetworkPacket *pkt);
- void handleCommand_AddNode(NetworkPacket *pkt);
+ void handleCommand(NetworkPacket* pkt);
+
+ void handleCommand_Null(NetworkPacket* pkt) {};
+ void handleCommand_Deprecated(NetworkPacket* pkt);
+ void handleCommand_Hello(NetworkPacket* pkt);
+ void handleCommand_AuthAccept(NetworkPacket* pkt);
+ void handleCommand_AcceptSudoMode(NetworkPacket* pkt);
+ void handleCommand_DenySudoMode(NetworkPacket* pkt);
+ void handleCommand_AccessDenied(NetworkPacket* pkt);
+ void handleCommand_RemoveNode(NetworkPacket* pkt);
+ void handleCommand_AddNode(NetworkPacket* pkt);
void handleCommand_NodemetaChanged(NetworkPacket *pkt);
- void handleCommand_BlockData(NetworkPacket *pkt);
- void handleCommand_Inventory(NetworkPacket *pkt);
- void handleCommand_TimeOfDay(NetworkPacket *pkt);
+ void handleCommand_BlockData(NetworkPacket* pkt);
+ void handleCommand_Inventory(NetworkPacket* pkt);
+ void handleCommand_TimeOfDay(NetworkPacket* pkt);
void handleCommand_ChatMessage(NetworkPacket *pkt);
- void handleCommand_ActiveObjectRemoveAdd(NetworkPacket *pkt);
- void handleCommand_ActiveObjectMessages(NetworkPacket *pkt);
- void handleCommand_Movement(NetworkPacket *pkt);
+ void handleCommand_ActiveObjectRemoveAdd(NetworkPacket* pkt);
+ void handleCommand_ActiveObjectMessages(NetworkPacket* pkt);
+ void handleCommand_Movement(NetworkPacket* pkt);
void handleCommand_Fov(NetworkPacket *pkt);
- void handleCommand_HP(NetworkPacket *pkt);
- void handleCommand_Breath(NetworkPacket *pkt);
- void handleCommand_MovePlayer(NetworkPacket *pkt);
- void handleCommand_DeathScreen(NetworkPacket *pkt);
- void handleCommand_AnnounceMedia(NetworkPacket *pkt);
- void handleCommand_Media(NetworkPacket *pkt);
- void handleCommand_NodeDef(NetworkPacket *pkt);
- void handleCommand_ItemDef(NetworkPacket *pkt);
- void handleCommand_PlaySound(NetworkPacket *pkt);
- void handleCommand_StopSound(NetworkPacket *pkt);
+ void handleCommand_HP(NetworkPacket* pkt);
+ void handleCommand_Breath(NetworkPacket* pkt);
+ void handleCommand_MovePlayer(NetworkPacket* pkt);
+ void handleCommand_DeathScreen(NetworkPacket* pkt);
+ void handleCommand_AnnounceMedia(NetworkPacket* pkt);
+ void handleCommand_Media(NetworkPacket* pkt);
+ void handleCommand_NodeDef(NetworkPacket* pkt);
+ void handleCommand_ItemDef(NetworkPacket* pkt);
+ void handleCommand_PlaySound(NetworkPacket* pkt);
+ void handleCommand_StopSound(NetworkPacket* pkt);
void handleCommand_FadeSound(NetworkPacket *pkt);
- void handleCommand_Privileges(NetworkPacket *pkt);
- void handleCommand_InventoryFormSpec(NetworkPacket *pkt);
- void handleCommand_DetachedInventory(NetworkPacket *pkt);
- void handleCommand_ShowFormSpec(NetworkPacket *pkt);
- void handleCommand_SpawnParticle(NetworkPacket *pkt);
- void handleCommand_AddParticleSpawner(NetworkPacket *pkt);
- void handleCommand_DeleteParticleSpawner(NetworkPacket *pkt);
- void handleCommand_HudAdd(NetworkPacket *pkt);
- void handleCommand_HudRemove(NetworkPacket *pkt);
- void handleCommand_HudChange(NetworkPacket *pkt);
- void handleCommand_HudSetFlags(NetworkPacket *pkt);
- void handleCommand_HudSetParam(NetworkPacket *pkt);
- void handleCommand_HudSetSky(NetworkPacket *pkt);
- void handleCommand_HudSetSun(NetworkPacket *pkt);
- void handleCommand_HudSetMoon(NetworkPacket *pkt);
- void handleCommand_HudSetStars(NetworkPacket *pkt);
- void handleCommand_CloudParams(NetworkPacket *pkt);
- void handleCommand_OverrideDayNightRatio(NetworkPacket *pkt);
- void handleCommand_LocalPlayerAnimations(NetworkPacket *pkt);
- void handleCommand_EyeOffset(NetworkPacket *pkt);
- void handleCommand_UpdatePlayerList(NetworkPacket *pkt);
+ void handleCommand_Privileges(NetworkPacket* pkt);
+ void handleCommand_InventoryFormSpec(NetworkPacket* pkt);
+ void handleCommand_DetachedInventory(NetworkPacket* pkt);
+ void handleCommand_ShowFormSpec(NetworkPacket* pkt);
+ void handleCommand_SpawnParticle(NetworkPacket* pkt);
+ void handleCommand_AddParticleSpawner(NetworkPacket* pkt);
+ void handleCommand_DeleteParticleSpawner(NetworkPacket* pkt);
+ void handleCommand_HudAdd(NetworkPacket* pkt);
+ void handleCommand_HudRemove(NetworkPacket* pkt);
+ void handleCommand_HudChange(NetworkPacket* pkt);
+ void handleCommand_HudSetFlags(NetworkPacket* pkt);
+ void handleCommand_HudSetParam(NetworkPacket* pkt);
+ void handleCommand_HudSetSky(NetworkPacket* pkt);
+ void handleCommand_HudSetSun(NetworkPacket* pkt);
+ void handleCommand_HudSetMoon(NetworkPacket* pkt);
+ void handleCommand_HudSetStars(NetworkPacket* pkt);
+ void handleCommand_CloudParams(NetworkPacket* pkt);
+ void handleCommand_OverrideDayNightRatio(NetworkPacket* pkt);
+ void handleCommand_LocalPlayerAnimations(NetworkPacket* pkt);
+ void handleCommand_EyeOffset(NetworkPacket* pkt);
+ void handleCommand_UpdatePlayerList(NetworkPacket* pkt);
void handleCommand_ModChannelMsg(NetworkPacket *pkt);
void handleCommand_ModChannelSignal(NetworkPacket *pkt);
void handleCommand_SrpBytesSandB(NetworkPacket *pkt);
@@ -216,30 +225,31 @@ public:
void ProcessData(NetworkPacket *pkt);
- void Send(NetworkPacket *pkt);
+ void Send(NetworkPacket* pkt);
void interact(InteractAction action, const PointedThing &pointed);
- void sendNodemetaFields(
- v3s16 p, const std::string &formname, const StringMap &fields);
- void sendInventoryFields(const std::string &formname, const StringMap &fields);
+ void sendNodemetaFields(v3s16 p, const std::string &formname,
+ const StringMap &fields);
+ void sendInventoryFields(const std::string &formname,
+ const StringMap &fields);
void sendInventoryAction(InventoryAction *a);
void sendChatMessage(const std::wstring &message);
void clearOutChatQueue();
- void sendChangePassword(
- const std::string &oldpassword, const std::string &newpassword);
+ void sendChangePassword(const std::string &oldpassword,
+ const std::string &newpassword);
void sendDamage(u16 damage);
void sendRespawn();
void sendReady();
- ClientEnvironment &getEnv() { return m_env; }
+ ClientEnvironment& getEnv() { return m_env; }
ITextureSource *tsrc() { return getTextureSource(); }
ISoundManager *sound() { return getSoundManager(); }
static const std::string &getBuiltinLuaPath();
static const std::string &getClientModsLuaPath();
const std::vector<ModSpec> &getMods() const override;
- const ModSpec *getModSpec(const std::string &modname) const override;
+ const ModSpec* getModSpec(const std::string &modname) const override;
// Causes urgent mesh updates (unlike Map::add/removeNodeWithEvent)
void removeNode(v3s16 p);
@@ -258,7 +268,7 @@ public:
bool updateWieldedItem();
/* InventoryManager interface */
- Inventory *getInventory(const InventoryLocation &loc) override;
+ Inventory* getInventory(const InventoryLocation &loc) override;
void inventoryAction(InventoryAction *a) override;
// Send the item number 'item' as player item to the server
@@ -278,40 +288,29 @@ public:
u16 getHP();
bool checkPrivilege(const std::string &priv) const
- {
- return g_settings->getBool("priv_bypass")
- ? true
- : (m_privileges.count(priv) != 0);
- }
+ { return g_settings->getBool("priv_bypass") ? true : (m_privileges.count(priv) != 0); }
const std::unordered_set<std::string> &getPrivilegeList() const
- {
- return m_privileges;
- }
+ { return m_privileges; }
bool getChatMessage(std::wstring &message);
- void typeChatMessage(const std::wstring &message);
+ void typeChatMessage(const std::wstring& message);
- u64 getMapSeed() { return m_map_seed; }
+ u64 getMapSeed(){ return m_map_seed; }
- void addUpdateMeshTask(
- v3s16 blockpos, bool ack_to_server = false, bool urgent = false);
+ void addUpdateMeshTask(v3s16 blockpos, bool ack_to_server=false, bool urgent=false);
// Including blocks at appropriate edges
- void addUpdateMeshTaskWithEdge(
- v3s16 blockpos, bool ack_to_server = false, bool urgent = false);
- void addUpdateMeshTaskForNode(
- v3s16 nodepos, bool ack_to_server = false, bool urgent = false);
+ void addUpdateMeshTaskWithEdge(v3s16 blockpos, bool ack_to_server=false, bool urgent=false);
+ void addUpdateMeshTaskForNode(v3s16 nodepos, bool ack_to_server=false, bool urgent=false);
void updateAllMapBlocks();
void updateCameraOffset(v3s16 camera_offset)
- {
- m_mesh_update_thread.m_camera_offset = camera_offset;
- }
+ { m_mesh_update_thread.m_camera_offset = camera_offset; }
bool hasClientEvents() const { return !m_client_event_queue.empty(); }
// Get event from queue. If queue is empty, it triggers an assertion failure.
- ClientEvent *getClientEvent();
+ ClientEvent * getClientEvent();
bool accessDenied() const { return m_access_denied; }
@@ -327,12 +326,17 @@ public:
// disconnect client when CSM failed.
const std::string &accessDeniedReason() const { return m_access_denied_reason; }
- const bool itemdefReceived() const { return m_itemdef_received; }
- const bool nodedefReceived() const { return m_nodedef_received; }
- const bool mediaReceived() const { return !m_media_downloader; }
- const bool activeObjectsReceived() const { return m_activeobjects_received; }
+ const bool itemdefReceived() const
+ { return m_itemdef_received; }
+ const bool nodedefReceived() const
+ { return m_nodedef_received; }
+ const bool mediaReceived() const
+ { return !m_media_downloader; }
+ const bool activeObjectsReceived() const
+ { return m_activeobjects_received; }
- u16 getProtoVersion() { return m_proto_ver; }
+ u16 getProtoVersion()
+ { return m_proto_ver; }
bool connectedToServer();
void confirmRegistration();
@@ -346,29 +350,28 @@ public:
float getRTT();
float getCurRate();
- Minimap *getMinimap() { return m_minimap; }
- void setCamera(Camera *camera) { m_camera = camera; }
+ Minimap* getMinimap() { return m_minimap; }
+ void setCamera(Camera* camera) { m_camera = camera; }
- Camera *getCamera() { return m_camera; }
+ Camera* getCamera () { return m_camera; }
bool shouldShowMinimap() const;
// IGameDef interface
- IItemDefManager *getItemDefManager() override;
- IWritableItemDefManager *getWritableItemDefManager() override;
- const NodeDefManager *getNodeDefManager() override;
- NodeDefManager *getWritableNodeDefManager() override;
- ICraftDefManager *getCraftDefManager() override;
- ITextureSource *getTextureSource();
- virtual IWritableShaderSource *getShaderSource();
+ IItemDefManager* getItemDefManager() override;
+ IWritableItemDefManager* getWritableItemDefManager() override;
+ const NodeDefManager* getNodeDefManager() override;
+ NodeDefManager* getWritableNodeDefManager() override;
+ ICraftDefManager* getCraftDefManager() override;
+ ITextureSource* getTextureSource();
+ virtual IWritableShaderSource* getShaderSource();
u16 allocateUnknownNodeId(const std::string &name) override;
- virtual ISoundManager *getSoundManager();
- MtEventManager *getEventManager();
- virtual ParticleManager *getParticleManager();
- bool checkLocalPrivilege(const std::string &priv) { return checkPrivilege(priv); }
- virtual scene::IAnimatedMesh *getMesh(
- const std::string &filename, bool cache = false);
- const std::string *getModFile(std::string filename);
+ virtual ISoundManager* getSoundManager();
+ MtEventManager* getEventManager();
+ virtual ParticleManager* getParticleManager();
+ bool checkLocalPrivilege(const std::string &priv){ return checkPrivilege(priv); }
+ virtual scene::IAnimatedMesh* getMesh(const std::string &filename, bool cache = false);
+ const std::string* getModFile(std::string filename);
std::string getModStoragePath() const override;
bool registerModStorage(ModMetadata *meta) override;
@@ -377,7 +380,7 @@ public:
// The following set of functions is used by ClientMediaDownloader
// Insert a media file appropriately into the appropriate manager
bool loadMedia(const std::string &data, const std::string &filename,
- bool from_media_push = false);
+ bool from_media_push = false);
// Send a request for conventional media transfer
void request_media(const std::vector<std::string> &file_requests);
@@ -385,7 +388,10 @@ public:
void makeScreenshot();
- inline void pushToChatQueue(ChatMessage *cec) { m_chat_queue.push(cec); }
+ inline void pushToChatQueue(ChatMessage *cec)
+ {
+ m_chat_queue.push(cec);
+ }
ClientScripting *getScript() { return m_script; }
const bool modsLoaded() const { return m_mods_loaded; }
@@ -396,17 +402,26 @@ public:
const Address getServerAddress();
- const std::string &getAddressName() const { return m_address_name; }
+ const std::string &getAddressName() const
+ {
+ return m_address_name;
+ }
- inline u64 getCSMRestrictionFlags() const { return m_csm_restriction_flags; }
+ inline u64 getCSMRestrictionFlags() const
+ {
+ return m_csm_restriction_flags;
+ }
inline bool checkCSMRestrictionFlag(CSMRestrictionFlags flag) const
{
- // return m_csm_restriction_flags & flag;
+ //return m_csm_restriction_flags & flag;
return false;
}
- u32 getCSMNodeRangeLimit() const { return m_csm_restriction_noderange; }
+ u32 getCSMNodeRangeLimit() const
+ {
+ return m_csm_restriction_noderange;
+ }
inline std::unordered_map<u32, u32> &getHUDTranslationMap()
{
@@ -415,19 +430,19 @@ public:
bool joinModChannel(const std::string &channel) override;
bool leaveModChannel(const std::string &channel) override;
- bool sendModChannelMessage(
- const std::string &channel, const std::string &message) override;
+ bool sendModChannelMessage(const std::string &channel,
+ const std::string &message) override;
ModChannel *getModChannel(const std::string &channel) override;
const std::string &getFormspecPrepend() const
{
return m_env.getLocalPlayer()->formspec_prepend;
}
-
+
void sendPlayerPos(v3f pos);
void sendPlayerPos();
MeshUpdateThread m_mesh_update_thread;
-
+
private:
void loadMods();
bool checkBuiltinIntegrity();
@@ -436,11 +451,13 @@ private:
void peerAdded(con::Peer *peer) override;
void deletingPeer(con::Peer *peer, bool timeout) override;
- void initLocalMapSaving(const Address &address, const std::string &hostname,
+ void initLocalMapSaving(const Address &address,
+ const std::string &hostname,
bool is_local_server);
void ReceiveAll();
+
void deleteAuthData();
// helper method shared with clientpackethandler
static AuthMechanism choseAuthMech(const u32 mechs);
@@ -453,7 +470,8 @@ private:
void sendRemovedSounds(std::vector<s32> &soundList);
// Helper function
- inline std::string getPlayerName() { return m_env.getLocalPlayer()->getName(); }
+ inline std::string getPlayerName()
+ { return m_env.getLocalPlayer()->getName(); }
bool canSendChatMessage() const;
@@ -470,6 +488,7 @@ private:
ISoundManager *m_sound;
MtEventManager *m_event;
+
ClientEnvironment m_env;
ParticleManager m_particle_manager;
std::unique_ptr<con::Connection> m_con;
@@ -497,8 +516,8 @@ private:
int m_crack_level = -1;
v3s16 m_crack_pos;
// 0 <= m_daynight_i < DAYNIGHT_CACHE_COUNT
- // s32 m_daynight_i;
- // u32 m_daynight_ratio;
+ //s32 m_daynight_i;
+ //u32 m_daynight_ratio;
std::queue<std::wstring> m_out_chat_queue;
u32 m_last_chat_message_sent;
float m_chat_message_allowance = 5.0f;
@@ -557,7 +576,7 @@ private:
// Detached inventories
// key = name
- std::unordered_map<std::string, Inventory *> m_detached_inventories;
+ std::unordered_map<std::string, Inventory*> m_detached_inventories;
// Storage for mesh data for creating multiple instances of the same mesh
StringMap m_mesh_data;