From 4178945abe91429431f3f2da9f3165c97f5555c4 Mon Sep 17 00:00:00 2001 From: dongresource Date: Wed, 26 Aug 2020 04:53:27 +0200 Subject: [PATCH] Decoupled player and NPC view distance. --- config.ini | 3 ++- src/NPCManager.cpp | 2 +- src/PlayerManager.cpp | 2 +- src/settings.cpp | 6 ++++-- src/settings.hpp | 3 ++- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/config.ini b/config.ini index fd18276..cdb6bcf 100644 --- a/config.ini +++ b/config.ini @@ -18,7 +18,8 @@ randomcharacters=true port=8002 ip=127.0.0.1 # distance at which other players and NPCs become visible -view=20000 +playerdistance=20000 +npcdistance=16000 # little message players see when they enter the game motd=Welcome to OpenFusion! # NPC json data diff --git a/src/NPCManager.cpp b/src/NPCManager.cpp index 1aa224c..ef4b79e 100644 --- a/src/NPCManager.cpp +++ b/src/NPCManager.cpp @@ -86,7 +86,7 @@ void NPCManager::updatePlayerNPCS(CNSocket* sock, PlayerView& view) { int diffX = abs(view.plr->x - pair.second.appearanceData.iX); int diffY = abs(view.plr->y - pair.second.appearanceData.iY); - if (diffX < settings::VIEWDISTANCE && diffY < settings::VIEWDISTANCE) { + if (diffX < settings::NPCDISTANCE && diffY < settings::NPCDISTANCE) { yesView.push_back(pair.first); } else { noView.push_back(pair.first); diff --git a/src/PlayerManager.cpp b/src/PlayerManager.cpp index 9c0aa40..6277a91 100644 --- a/src/PlayerManager.cpp +++ b/src/PlayerManager.cpp @@ -85,7 +85,7 @@ void PlayerManager::updatePlayerPosition(CNSocket* sock, int X, int Y, int Z) { int diffX = abs(pair.second.plr->x - X); // the map is like a grid, X and Y are your position on the map, Z is the height. very different from other games... int diffY = abs(pair.second.plr->y - Y); - if (diffX < settings::VIEWDISTANCE && diffY < settings::VIEWDISTANCE) { + if (diffX < settings::PLAYERDISTANCE && diffY < settings::PLAYERDISTANCE) { yesView.push_back(pair.first); } else { diff --git a/src/settings.cpp b/src/settings.cpp index fcb4606..976836e 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -10,7 +10,8 @@ bool settings::LOGINRANDCHARACTERS = false; int settings::SHARDPORT = 8002; std::string settings::SHARDSERVERIP = "127.0.0.1"; -int settings::VIEWDISTANCE = 20000; +int settings::PLAYERDISTANCE = 20000; +int settings::NPCDISTANCE = 16000; // default spawn point is city hall int settings::SPAWN_X = 179213; @@ -39,7 +40,8 @@ void settings::init() { LOGINRANDCHARACTERS = reader.GetBoolean("login", "randomcharacters", LOGINRANDCHARACTERS); SHARDPORT = reader.GetInteger("shard", "port", SHARDPORT); SHARDSERVERIP = reader.Get("shard", "ip", "127.0.0.1"); - VIEWDISTANCE = reader.GetInteger("shard", "view", VIEWDISTANCE); + PLAYERDISTANCE = reader.GetInteger("shard", "playerdistance", PLAYERDISTANCE); + NPCDISTANCE = reader.GetInteger("shard", "npcdistance", NPCDISTANCE); SPAWN_X = reader.GetInteger("shard", "spawnx", SPAWN_X); SPAWN_Y = reader.GetInteger("shard", "spawny", SPAWN_Y); SPAWN_Z = reader.GetInteger("shard", "spawnz", SPAWN_Z); diff --git a/src/settings.hpp b/src/settings.hpp index 163939b..e15b70c 100644 --- a/src/settings.hpp +++ b/src/settings.hpp @@ -6,7 +6,8 @@ namespace settings { extern bool LOGINRANDCHARACTERS; extern int SHARDPORT; extern std::string SHARDSERVERIP; - extern int VIEWDISTANCE; + extern int PLAYERDISTANCE; + extern int NPCDISTANCE; extern int SPAWN_X; extern int SPAWN_Y; extern int SPAWN_Z;