Prevent fastForward from happening too soon / too often
This commit is contained in:
parent
85bd6266f8
commit
18784bfccc
@ -103,6 +103,7 @@ class SyncplayClient(object):
|
|||||||
self._globalPaused = 0.0
|
self._globalPaused = 0.0
|
||||||
self._userOffset = 0.0
|
self._userOffset = 0.0
|
||||||
self._speedChanged = False
|
self._speedChanged = False
|
||||||
|
self.behindFirstDetected = None
|
||||||
|
|
||||||
self._warnings = self._WarningManager(self._player, self.userlist, self.ui)
|
self._warnings = self._WarningManager(self._player, self.userlist, self.ui)
|
||||||
if constants.LIST_RELATIVE_CONFIGS and self._config.has_key('loadedRelativePaths') and self._config['loadedRelativePaths']:
|
if constants.LIST_RELATIVE_CONFIGS and self._config.has_key('loadedRelativePaths') and self._config['loadedRelativePaths']:
|
||||||
@ -254,9 +255,17 @@ class SyncplayClient(object):
|
|||||||
madeChangeOnPlayer = self._serverSeeked(position, setBy)
|
madeChangeOnPlayer = self._serverSeeked(position, setBy)
|
||||||
if diff > self._config['rewindThreshold'] and not doSeek and not self._config['rewindOnDesync'] == False:
|
if diff > self._config['rewindThreshold'] and not doSeek and not self._config['rewindOnDesync'] == False:
|
||||||
madeChangeOnPlayer = self._rewindPlayerDueToTimeDifference(position, setBy)
|
madeChangeOnPlayer = self._rewindPlayerDueToTimeDifference(position, setBy)
|
||||||
if diff < (self._config['fastforwardThreshold'] * -1) and not doSeek and not self._config['fastforwardOnDesync'] == False:
|
if self._config['fastforwardOnDesync'] and (self.userlist.currentUser.canControl() == False or self._config['dontSlowDownWithMe'] == True):
|
||||||
if self.userlist.currentUser.canControl() == False or self._config['dontSlowDownWithMe'] == True:
|
if diff < constants.FASTFORWARD_BEHIND_THRESHOLD and not doSeek:
|
||||||
madeChangeOnPlayer = self._fastforwardPlayerDueToTimeDifference(position, setBy)
|
if self.behindFirstDetected is None:
|
||||||
|
self.behindFirstDetected = time.time()
|
||||||
|
else:
|
||||||
|
durationBehind = time.time() - self.behindFirstDetected
|
||||||
|
if (durationBehind > self._config['fastforwardThreshold']) and (diff < (self._config['fastforwardThreshold'] * -1)):
|
||||||
|
madeChangeOnPlayer = self._fastforwardPlayerDueToTimeDifference(position, setBy)
|
||||||
|
self.behindFirstDetected = time.time() + constants.FASTFORWARD_RESET_THRESHOLD
|
||||||
|
else:
|
||||||
|
self.behindFirstDetected = None
|
||||||
if self._player.speedSupported and not doSeek and not paused and not self._config['slowOnDesync'] == False:
|
if self._player.speedSupported and not doSeek and not paused and not self._config['slowOnDesync'] == False:
|
||||||
madeChangeOnPlayer = self._slowDownToCoverTimeDifference(diff, setBy)
|
madeChangeOnPlayer = self._slowDownToCoverTimeDifference(diff, setBy)
|
||||||
if paused == False and pauseChanged:
|
if paused == False and pauseChanged:
|
||||||
@ -599,6 +608,8 @@ class SyncplayUser(object):
|
|||||||
def canControl(self):
|
def canControl(self):
|
||||||
if self.isController() or not utils.RoomPasswordProvider.isControlledRoom(self.room):
|
if self.isController() or not utils.RoomPasswordProvider.isControlledRoom(self.room):
|
||||||
return True
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
class SyncplayUserlist(object):
|
class SyncplayUserlist(object):
|
||||||
def __init__(self, ui, client):
|
def __init__(self, ui, client):
|
||||||
|
|||||||
@ -33,6 +33,8 @@ MINIMUM_REWIND_THRESHOLD = 3
|
|||||||
DEFAULT_FASTFORWARD_THRESHOLD = 5
|
DEFAULT_FASTFORWARD_THRESHOLD = 5
|
||||||
MINIMUM_FASTFORWARD_THRESHOLD = 2
|
MINIMUM_FASTFORWARD_THRESHOLD = 2
|
||||||
FASTFORWARD_EXTRA_TIME = 0.25
|
FASTFORWARD_EXTRA_TIME = 0.25
|
||||||
|
FASTFORWARD_RESET_THRESHOLD = 3
|
||||||
|
FASTFORWARD_BEHIND_THRESHOLD = 1
|
||||||
SEEK_THRESHOLD = 1
|
SEEK_THRESHOLD = 1
|
||||||
SLOWDOWN_RATE = 0.95
|
SLOWDOWN_RATE = 0.95
|
||||||
DEFAULT_SLOWDOWN_KICKIN_THRESHOLD = 1.5
|
DEFAULT_SLOWDOWN_KICKIN_THRESHOLD = 1.5
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user