summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-05-09 18:29:27 +0300
committerAndrei Karas <akaras@inbox.ru>2016-05-09 20:27:19 +0300
commit91ed82c45df05bc333bb63fbd92e330f9b9701c7 (patch)
tree4bac4711522e83355dbd83b4ddf2855adff73192
parent5d2846414b73ebc9a3288622b03493b59fa26be9 (diff)
downloadmv-91ed82c45df05bc333bb63fbd92e330f9b9701c7.tar.gz
mv-91ed82c45df05bc333bb63fbd92e330f9b9701c7.tar.bz2
mv-91ed82c45df05bc333bb63fbd92e330f9b9701c7.tar.xz
mv-91ed82c45df05bc333bb63fbd92e330f9b9701c7.zip
Add settings for set distance for start syncyng player.
Default distance is 2 and it good for ping < 500. But for bigger ping probably need other values.
-rw-r--r--src/being/localplayer.cpp6
-rw-r--r--src/being/localplayer.h1
-rw-r--r--src/defaults.cpp3
-rw-r--r--src/gui/widgets/tabs/setup_other.cpp5
4 files changed, 13 insertions, 2 deletions
diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp
index a021184c0..cb4426319 100644
--- a/src/being/localplayer.cpp
+++ b/src/being/localplayer.cpp
@@ -157,6 +157,7 @@ LocalPlayer::LocalPlayer(const BeingId id,
mTestParticleName(),
mTestParticleTime(0),
mTestParticleHash(0L),
+ mSyncPlayerMoveDistance(config.getBoolValue("syncPlayerMoveDistance")),
mWalkingDir(0),
mUpdateName(true),
mBlockAdvert(false),
@@ -201,6 +202,7 @@ LocalPlayer::LocalPlayer(const BeingId id,
config.addListener("targetDeadPlayers", this);
serverConfig.addListener("enableBuggyServers", this);
config.addListener("syncPlayerMove", this);
+ config.addListener("syncPlayerMoveDistance", this);
config.addListener("drawPath", this);
config.addListener("serverAttack", this);
config.addListener("attackMoving", this);
@@ -1068,6 +1070,8 @@ void LocalPlayer::optionChanged(const std::string &value)
mIsServerBuggy = serverConfig.getBoolValue("enableBuggyServers");
else if (value == "syncPlayerMove")
mSyncPlayerMove = config.getBoolValue("syncPlayerMove");
+ else if (value == "syncPlayerMoveDistance")
+ mSyncPlayerMoveDistance = config.getIntValue("syncPlayerMoveDistance");
else if (value == "drawPath")
mDrawPath = config.getBoolValue("drawPath");
else if (value == "serverAttack")
@@ -2468,7 +2472,7 @@ void LocalPlayer::fixPos()
const int dy = abs(mY - mCrossY);
const int dist = dx > dy ? dx : dy;
const int time = cur_time;
- const int maxDist = mSyncPlayerMove ? 2 : 7;
+ const int maxDist = mSyncPlayerMove ? mSyncPlayerMoveDistance : 7;
if (dist > maxDist)
{
diff --git a/src/being/localplayer.h b/src/being/localplayer.h
index ccecb18fb..14d731b74 100644
--- a/src/being/localplayer.h
+++ b/src/being/localplayer.h
@@ -491,6 +491,7 @@ class LocalPlayer final : public Being,
std::string mTestParticleName;
int mTestParticleTime;
unsigned long mTestParticleHash;
+ int mSyncPlayerMoveDistance;
unsigned char mWalkingDir; // The direction the player is walking in.
/** Whether or not the name settings have changed */
bool mUpdateName;
diff --git a/src/defaults.cpp b/src/defaults.cpp
index f4c7763f1..0719f3ac3 100644
--- a/src/defaults.cpp
+++ b/src/defaults.cpp
@@ -102,7 +102,8 @@ DefaultsData* getConfigDefaults()
AddDEF("targetingType", 0);
AddDEF("followMode", 0);
AddDEF("imitationMode", 0);
- AddDEF("syncPlayerMove", false);
+ AddDEF("syncPlayerMove", true);
+ AddDEF("syncPlayerMoveDistance", 2);
AddDEF("drawPath", false);
AddDEF("moveToTargetType", 10);
AddDEF("crazyMoveProgram", "mumrsonmdmlon");
diff --git a/src/gui/widgets/tabs/setup_other.cpp b/src/gui/widgets/tabs/setup_other.cpp
index 6b9137dad..186e76fc2 100644
--- a/src/gui/widgets/tabs/setup_other.cpp
+++ b/src/gui/widgets/tabs/setup_other.cpp
@@ -209,6 +209,11 @@ Setup_Other::Setup_Other(const Widget2 *const widget) :
this, "syncPlayerMoveEvent");
// TRANSLATORS: settings option
+ new SetupItemIntTextField(_("Sync player move distance"), "",
+ "syncPlayerMoveDistance",
+ this, "syncPlayerMoveDistanceEvent", 1, 30);
+
+ // TRANSLATORS: settings option
new SetupItemTextField(_("Crazy move A program"), "",
"crazyMoveProgram", this, "crazyMoveProgramEvent");