X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fclient.h;h=8bffbd1db9e1c0ada2ab5bb040c6dc95b90da706;hb=58e6d25e033c76dc91aaac18fdeda92ac23fe0e1;hp=33d806f9f6ffb8eedcd13fd92f63c122d05bcb9c;hpb=86a6cca3cf641fc2c88184ad26d2be3d7e7460f7;p=oweals%2Fminetest.git diff --git a/src/client.h b/src/client.h index 33d806f9f..8bffbd1db 100644 --- a/src/client.h +++ b/src/client.h @@ -57,6 +57,12 @@ struct QueuedMeshUpdate ~QueuedMeshUpdate(); }; +enum LocalClientState { + LC_Created, + LC_Init, + LC_Ready +}; + /* A thread-safe queue of mesh update tasks */ @@ -119,6 +125,8 @@ public: MutexedQueue m_queue_out; IGameDef *m_gamedef; + + v3s16 m_camera_offset; }; enum ClientEventType @@ -135,6 +143,7 @@ enum ClientEventType CE_HUDRM, CE_HUDCHANGE, CE_SET_SKY, + CE_OVERRIDE_DAY_NIGHT_RATIO, }; struct ClientEvent @@ -206,6 +215,7 @@ struct ClientEvent v2f *align; v2f *offset; v3f *world_pos; + v2s32 * size; } hudadd; struct{ u32 id; @@ -217,12 +227,17 @@ struct ClientEvent std::string *sdata; u32 data; v3f *v3fdata; + v2s32 * v2s32data; } hudchange; struct{ video::SColor *bgcolor; std::string *type; std::vector *params; } set_sky; + struct{ + bool do_override; + float ratio_f; + } override_day_night_ratio; }; }; @@ -312,14 +327,7 @@ public: calling this, as it is sent in the initialization. */ void connect(Address address); - /* - returns true when - m_con.Connected() == true - AND m_server_ser_ver != SER_FMT_VER_INVALID - throws con::PeerNotFoundException if connection has been deleted, - eg. timed out. - */ - bool connectedAndInitialized(); + /* Stuff that references the environment is valid only as long as this is not called. (eg. Players) @@ -342,11 +350,12 @@ public: const std::map &fields); void sendInventoryAction(InventoryAction *a); void sendChatMessage(const std::wstring &message); - void sendChangePassword(const std::wstring oldpassword, - const std::wstring newpassword); + void sendChangePassword(const std::wstring &oldpassword, + const std::wstring &newpassword); void sendDamage(u8 damage); void sendBreath(u16 breath); void sendRespawn(); + void sendReady(); ClientEnvironment& getEnv() { return m_env; } @@ -379,9 +388,6 @@ public: core::line3d shootline_on_map ); - // Prints a line or two of info - void printDebugInfo(std::ostream &os); - std::list getConnectedPlayerNames(); float getAnimationTime(); @@ -389,6 +395,9 @@ public: int getCrackLevel(); void setCrack(int level, v3s16 pos); + void setHighlighted(v3s16 pos, bool show_hud); + v3s16 getHighlighted(){ return m_highlighted_pos; } + u16 getHP(); u16 getBreath(); @@ -404,6 +413,9 @@ public: // 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 updateCameraOffset(v3s16 camera_offset) + { m_mesh_update_thread.m_camera_offset = camera_offset; } // Get event from queue. CE_NONE is returned if queue is empty. ClientEvent getClientEvent(); @@ -426,6 +438,8 @@ public: void afterContentReceived(IrrlichtDevice *device, gui::IGUIFont* font); float getRTT(void); + float getCurRate(void); + float getAvgRate(void); // IGameDef interface virtual IItemDefManager* getItemDefManager(); @@ -448,6 +462,8 @@ public: // Send a notification that no conventional media transfer is needed void received_media(); + LocalClientState getState() { return m_state; } + private: // Virtual methods from con::PeerHandler @@ -487,10 +503,12 @@ private: float m_inventory_from_server_age; std::set m_active_blocks; PacketCounter m_packetcounter; + bool m_show_hud; // Block mesh animation parameters float m_animation_time; int m_crack_level; v3s16 m_crack_pos; + v3s16 m_highlighted_pos; // 0 <= m_daynight_i < DAYNIGHT_CACHE_COUNT //s32 m_daynight_i; //u32 m_daynight_ratio; @@ -531,6 +549,9 @@ private: // Storage for mesh data for creating multiple instances of the same mesh std::map m_mesh_data; + + // own state + LocalClientState m_state; }; #endif // !CLIENT_HEADER