mirror of
https://github.com/aclist/dztui.git
synced 2026-10-25 12:12:31 +01:00
fix: local clock drives virtual clock
This commit is contained in:
1 parent
2629fe254e
commit
e8ccdd7cbb
1 file changed
+12
-6
@@ -93,8 +93,8 @@ class ServerClock:
|
|||||||
self.start_time = datetime.combine(datetime.today(), time(hour, minute))
|
self.start_time = datetime.combine(datetime.today(), time(hour, minute))
|
||||||
self.cur_time = datetime.combine(datetime.today(), time(hour, minute))
|
self.cur_time = datetime.combine(datetime.today(), time(hour, minute))
|
||||||
|
|
||||||
# NOTE: highest theoretical accel interval is 24 * 64 at night
|
self._last_elapsed = self.local_clock.get_elapsed_time()
|
||||||
GLib.timeout_add(400, self._increment_with_offset)
|
self.emitter.connect("local_time_incremented", self._on_local_time_incremented)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def split_time(server_time: Time) -> tuple[int, int]:
|
def split_time(server_time: Time) -> tuple[int, int]:
|
||||||
@@ -106,11 +106,17 @@ class ServerClock:
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _increment_with_offset(self) -> Literal[True]:
|
def _on_local_time_incremented(
|
||||||
|
# NOTE: highest theoretical accel interval is 24 * 64 at night
|
||||||
|
self,
|
||||||
|
emitter: Emitter,
|
||||||
|
time: datetime,
|
||||||
|
elapsed: timedelta,
|
||||||
|
) -> Literal[True]:
|
||||||
|
delta = elapsed - self._last_elapsed
|
||||||
|
self._last_elapsed = elapsed
|
||||||
factor = self.get_accel_factor(self.cur_time)
|
factor = self.get_accel_factor(self.cur_time)
|
||||||
elapsed = self.local_clock.get_elapsed_time()
|
self.cur_time += delta * factor
|
||||||
virtual_elapsed = elapsed * factor
|
|
||||||
self.cur_time = self.start_time + virtual_elapsed
|
|
||||||
self.emitter.emit("server_time_incremented", self.cur_time)
|
self.emitter.emit("server_time_incremented", self.cur_time)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user