From d9a7c51d4da21976ce3a8d41cde23fc9a4b6eb9d Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Wed, 23 Dec 2020 22:39:53 +0000 Subject: ViewDistance: unsigned -> signed --- src/ClientHandle.cpp | 10 ++++------ src/ClientHandle.h | 20 ++++++++++---------- src/Defines.h | 12 +----------- src/Protocol/Protocol_1_14.cpp | 2 +- src/Server.cpp | 8 ++++---- src/Server.h | 2 +- src/World.cpp | 5 ++--- src/World.h | 6 +++--- 8 files changed, 26 insertions(+), 39 deletions(-) diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp index cee35203e..f9b4fd327 100644 --- a/src/ClientHandle.cpp +++ b/src/ClientHandle.cpp @@ -67,7 +67,7 @@ float cClientHandle::FASTBREAK_PERCENTAGE; //////////////////////////////////////////////////////////////////////////////// // cClientHandle: -cClientHandle::cClientHandle(const AString & a_IPString, unsigned a_ViewDistance) : +cClientHandle::cClientHandle(const AString & a_IPString, int a_ViewDistance) : m_LastSentDimension(dimNotSet), m_ForgeHandshake(this), m_CurrentViewDistance(a_ViewDistance), @@ -473,7 +473,7 @@ bool cClientHandle::StreamNextChunk(void) cCSLock Lock(m_CSChunkLists); // High priority: Load the chunks that are in the view-direction of the player (with a radius of 3) - for (unsigned Range = 0; Range < m_CurrentViewDistance; Range++) + for (int Range = 0; Range < m_CurrentViewDistance; Range++) { Vector3d Vector = Position + LookVector * cChunkDef::Width * Range; @@ -513,10 +513,8 @@ bool cClientHandle::StreamNextChunk(void) } // Low priority: Add all chunks that are in range. (From the center out to the edge) - for (unsigned Range = 0; Range <= m_CurrentViewDistance; ++Range) // cycle through (square) distance, from nearest to furthest + for (int d = 0; d <= m_CurrentViewDistance; ++d) // cycle through (square) distance, from nearest to furthest { - const int d = static_cast(Range); - // For each distance add chunks in a hollow square centered around current position: cChunkCoordsList CurcleChunks; for (int i = -d; i <= d; ++i) @@ -3271,7 +3269,7 @@ void cClientHandle::SetUsername(const AString & a_Username) -void cClientHandle::SetViewDistance(unsigned a_ViewDistance) +void cClientHandle::SetViewDistance(int a_ViewDistance) { m_RequestedViewDistance = a_ViewDistance; LOGD("%s is requesting ViewDistance of %d!", GetUsername().c_str(), m_RequestedViewDistance); diff --git a/src/ClientHandle.h b/src/ClientHandle.h index fcad949f4..93864b002 100644 --- a/src/ClientHandle.h +++ b/src/ClientHandle.h @@ -50,12 +50,12 @@ class cClientHandle // tolua_export public: // tolua_export #if defined(ANDROID) - static const unsigned DEFAULT_VIEW_DISTANCE = 4; // The default ViewDistance (used when no value is set in Settings.ini) + static const int DEFAULT_VIEW_DISTANCE = 4; // The default ViewDistance (used when no value is set in Settings.ini) #else - static const unsigned DEFAULT_VIEW_DISTANCE = 10; + static const int DEFAULT_VIEW_DISTANCE = 10; #endif - static const unsigned MAX_VIEW_DISTANCE = 32; - static const unsigned MIN_VIEW_DISTANCE = 1; + static const int MAX_VIEW_DISTANCE = 32; + static const int MIN_VIEW_DISTANCE = 1; /** The percentage how much a block has to be broken. Should be a value between 0.7 (70% broken) and 1 (100% broken) depending on lag. @@ -63,7 +63,7 @@ public: // tolua_export static float FASTBREAK_PERCENTAGE; /** Creates a new client with the specified IP address in its description and the specified initial view distance. */ - cClientHandle(const AString & a_IPString, unsigned a_ViewDistance); + cClientHandle(const AString & a_IPString, int a_ViewDistance); virtual ~cClientHandle() override; @@ -242,13 +242,13 @@ public: // tolua_export inline short GetPing(void) const { return static_cast(std::chrono::duration_cast(m_Ping).count()); } /** Sets the maximal view distance. */ - void SetViewDistance(unsigned a_ViewDistance); + void SetViewDistance(int a_ViewDistance); /** Returns the view distance that the player currently have. */ - unsigned GetViewDistance(void) const { return m_CurrentViewDistance; } + int GetViewDistance(void) const { return m_CurrentViewDistance; } /** Returns the view distance that the player request, not the used view distance. */ - unsigned GetRequestedViewDistance(void) const { return m_RequestedViewDistance; } + int GetRequestedViewDistance(void) const { return m_RequestedViewDistance; } void SetLocale(const AString & a_Locale) { m_Locale = a_Locale; } AString GetLocale(void) const { return m_Locale; } @@ -422,10 +422,10 @@ private: AStringMap m_ForgeMods; /** The actual view distance used, the minimum of client's requested view distance and world's max view distance. */ - unsigned m_CurrentViewDistance; + int m_CurrentViewDistance; /** The requested view distance from the player. It isn't clamped with 1 and the max view distance of the world. */ - unsigned m_RequestedViewDistance; + int m_RequestedViewDistance; AString m_IPString; diff --git a/src/Defines.h b/src/Defines.h index fd0d595ae..6c6eea323 100644 --- a/src/Defines.h +++ b/src/Defines.h @@ -489,7 +489,7 @@ inline void VectorToEuler(double a_X, double a_Y, double a_Z, double & a_Pan, do -template >> +template inline T Diff(T a_Val1, T a_Val2) { return std::abs(a_Val1 - a_Val2); @@ -499,16 +499,6 @@ inline T Diff(T a_Val1, T a_Val2) -template >> -inline auto Diff(T a_Val1, T a_Val2) -{ - return static_cast>(std::abs(a_Val1 - a_Val2)); -} - - - - - // tolua_begin /** Normalizes an angle in degrees to the [-180, +180) range: */ diff --git a/src/Protocol/Protocol_1_14.cpp b/src/Protocol/Protocol_1_14.cpp index 47d2162c2..e015c6cd1 100644 --- a/src/Protocol/Protocol_1_14.cpp +++ b/src/Protocol/Protocol_1_14.cpp @@ -59,7 +59,7 @@ void cProtocol_1_14::SendLogin(const cPlayer & a_Player, const cWorld & a_World) Pkt.WriteBEInt32(static_cast(a_World.GetDimension())); Pkt.WriteBEUInt8(static_cast(Clamp(Server->GetMaxPlayers(), 0, 255))); Pkt.WriteString("default"); - Pkt.WriteVarInt32(a_World.GetMaxViewDistance()); + Pkt.WriteVarInt32(ToUnsigned(a_World.GetMaxViewDistance())); Pkt.WriteBool(false); } diff --git a/src/Server.cpp b/src/Server.cpp index 4cb28d6ea..114c38946 100644 --- a/src/Server.cpp +++ b/src/Server.cpp @@ -214,20 +214,20 @@ bool cServer::InitServer(cSettingsRepositoryInterface & a_Settings, bool a_Shoul m_ShouldLoadOfflinePlayerData = a_Settings.GetValueSetB("PlayerData", "LoadOfflinePlayerData", false); m_ShouldLoadNamedPlayerData = a_Settings.GetValueSetB("PlayerData", "LoadNamedPlayerData", true); - const auto ClientViewDistance = a_Settings.GetValueSetI("Server", "DefaultViewDistance", static_cast(cClientHandle::DEFAULT_VIEW_DISTANCE)); - if (ClientViewDistance < static_cast(cClientHandle::MIN_VIEW_DISTANCE)) + const auto ClientViewDistance = a_Settings.GetValueSetI("Server", "DefaultViewDistance", cClientHandle::DEFAULT_VIEW_DISTANCE); + if (ClientViewDistance < cClientHandle::MIN_VIEW_DISTANCE) { m_ClientViewDistance = cClientHandle::MIN_VIEW_DISTANCE; LOGINFO("Setting default view distance to the minimum of %d", m_ClientViewDistance); } - else if (ClientViewDistance > static_cast(cClientHandle::MAX_VIEW_DISTANCE)) + else if (ClientViewDistance > cClientHandle::MAX_VIEW_DISTANCE) { m_ClientViewDistance = cClientHandle::MAX_VIEW_DISTANCE; LOGINFO("Setting default view distance to the maximum of %d", m_ClientViewDistance); } else { - m_ClientViewDistance = static_cast(ClientViewDistance); + m_ClientViewDistance = ClientViewDistance; } PrepareKeys(); diff --git a/src/Server.h b/src/Server.h index 290423af5..5ac7fc998 100644 --- a/src/Server.h +++ b/src/Server.h @@ -206,7 +206,7 @@ private: cCriticalSection m_CSPendingCommands; std::vector> m_PendingCommands; - unsigned m_ClientViewDistance; // The default view distance for clients; settable in Settings.ini + int m_ClientViewDistance; // The default view distance for clients; settable in Settings.ini bool m_bIsConnected; // true - connected false - not connected diff --git a/src/World.cpp b/src/World.cpp index 9aa31a14d..02de985c6 100644 --- a/src/World.cpp +++ b/src/World.cpp @@ -262,8 +262,7 @@ cWorld::cWorld( m_BroadcastDeathMessages = IniFile.GetValueSetB("Broadcasting", "BroadcastDeathMessages", true); m_BroadcastAchievementMessages = IniFile.GetValueSetB("Broadcasting", "BroadcastAchievementMessages", true); - const auto ClientViewDistance = IniFile.GetValueSetI("SpawnPosition", "MaxViewDistance", static_cast(cClientHandle::DEFAULT_VIEW_DISTANCE)); - m_MaxViewDistance = static_cast(std::clamp(ClientViewDistance, static_cast(cClientHandle::MIN_VIEW_DISTANCE), static_cast(cClientHandle::MAX_VIEW_DISTANCE))); + SetMaxViewDistance(IniFile.GetValueSetI("SpawnPosition", "MaxViewDistance", cClientHandle::DEFAULT_VIEW_DISTANCE)); // Try to find the "SpawnPosition" key and coord values in the world configuration, set the flag if found int KeyNum = IniFile.FindKey("SpawnPosition"); @@ -1840,7 +1839,7 @@ bool cWorld::SetAreaBiome(const cCuboid & a_Area, EMCSBiome a_Biome) -void cWorld::SetMaxViewDistance(unsigned a_MaxViewDistance) +void cWorld::SetMaxViewDistance(int a_MaxViewDistance) { m_MaxViewDistance = Clamp(a_MaxViewDistance, cClientHandle::MIN_VIEW_DISTANCE, cClientHandle::MAX_VIEW_DISTANCE); } diff --git a/src/World.h b/src/World.h index b2d996870..b0ffc2b07 100644 --- a/src/World.h +++ b/src/World.h @@ -896,8 +896,8 @@ public: eShrapnelLevel GetTNTShrapnelLevel(void) const { return m_TNTShrapnelLevel; } void SetTNTShrapnelLevel(eShrapnelLevel a_Flag) { m_TNTShrapnelLevel = a_Flag; } - unsigned GetMaxViewDistance(void) const { return m_MaxViewDistance; } - void SetMaxViewDistance(unsigned a_MaxViewDistance); + int GetMaxViewDistance(void) const { return m_MaxViewDistance; } + void SetMaxViewDistance(int a_MaxViewDistance); bool ShouldUseChatPrefixes(void) const { return m_bUseChatPrefixes; } void SetShouldUseChatPrefixes(bool a_Flag) { m_bUseChatPrefixes = a_Flag; } @@ -1249,7 +1249,7 @@ private: eShrapnelLevel m_TNTShrapnelLevel; /** The maximum view distance that a player can have in this world. */ - unsigned m_MaxViewDistance; + int m_MaxViewDistance; /** Name of the nether world - where Nether portals should teleport. Only used when this world is an Overworld. */ -- cgit v1.2.3