mirror of
https://github.com/norohind/EDMC_SpanshRouter.git
synced 2026-10-22 18:02:08 +03:00
Enabled ability to navigate waypoints with "next" and "previous" arrows even before plugin registers arriving in the starting system. Ensured we don't end up in negative waypoint scenario, and other edge cases like that.
This commit is contained in:
1 parent
945a602050
commit
31d4fe9fa7
2 files changed
+59
-21
No files matched your search
@@ -352,29 +352,72 @@ class SpanshRouter():
|
||||
self.parent.update()
|
||||
|
||||
def goto_next_waypoint(self):
|
||||
if self.offset < self.route.__len__()-1:
|
||||
# allow manual navigation even if offset wasn't set by journal events yet
|
||||
if self.route.__len__() == 0:
|
||||
return
|
||||
|
||||
if not hasattr(self, "offset") or self.offset is None:
|
||||
self.offset = 0
|
||||
|
||||
if self.offset < self.route.__len__() - 1:
|
||||
self.update_route(1)
|
||||
|
||||
def goto_prev_waypoint(self):
|
||||
# allow manual navigation even if offset wasn't set by journal events yet
|
||||
if self.route.__len__() == 0:
|
||||
return
|
||||
|
||||
if not hasattr(self, "offset") or self.offset is None:
|
||||
self.offset = 0
|
||||
|
||||
if self.offset > 0:
|
||||
self.update_route(-1)
|
||||
|
||||
def update_route(self, direction=1):
|
||||
if direction > 0:
|
||||
if self.route[self.offset][1] not in [None, "", []]:
|
||||
if not self.galaxy:
|
||||
self.jumps_left -= int(self.route[self.offset][1])
|
||||
else:
|
||||
self.jumps_left -= 1
|
||||
self.offset += 1
|
||||
else:
|
||||
self.offset -= 1
|
||||
if self.route[self.offset][1] not in [None, "", []]:
|
||||
if not self.galaxy:
|
||||
self.jumps_left += int(self.route[self.offset][1])
|
||||
else:
|
||||
self.jumps_left += 1
|
||||
# Guard: no route -> nothing to do
|
||||
if self.route.__len__() == 0:
|
||||
self.next_stop = "No route planned"
|
||||
self.update_gui()
|
||||
return
|
||||
|
||||
# Ensure offset exists and is within bounds
|
||||
if not hasattr(self, "offset") or self.offset is None:
|
||||
self.offset = 0
|
||||
|
||||
# clamp offset into valid range before operating
|
||||
if self.offset < 0:
|
||||
self.offset = 0
|
||||
if self.offset >= self.route.__len__():
|
||||
self.offset = self.route.__len__() - 1
|
||||
|
||||
try:
|
||||
if direction > 0:
|
||||
# subtract jumps for current offset (if present) then advance
|
||||
if self.route[self.offset][1] not in [None, "", []]:
|
||||
if not self.galaxy:
|
||||
self.jumps_left -= int(self.route[self.offset][1])
|
||||
else:
|
||||
self.jumps_left -= 1
|
||||
# advance but clamp
|
||||
if self.offset < self.route.__len__() - 1:
|
||||
self.offset += 1
|
||||
else:
|
||||
# move back, but avoid negative indexes
|
||||
if self.offset > 0:
|
||||
self.offset -= 1
|
||||
if self.route[self.offset][1] not in [None, "", []]:
|
||||
if not self.galaxy:
|
||||
self.jumps_left += int(self.route[self.offset][1])
|
||||
else:
|
||||
self.jumps_left += 1
|
||||
except Exception:
|
||||
# If something odd in route contents, try to recover by resetting offset to 0
|
||||
exc_type, exc_value, exc_traceback = sys.exc_info()
|
||||
lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
|
||||
logger.warning(''.join('!! ' + line for line in lines))
|
||||
self.offset = max(0, min(self.offset, self.route.__len__()-1))
|
||||
|
||||
# Now update next_stop and GUI according to new offset
|
||||
if self.offset >= self.route.__len__():
|
||||
self.next_stop = "End of the road!"
|
||||
self.update_gui()
|
||||
@@ -387,6 +430,7 @@ class SpanshRouter():
|
||||
|
||||
self.update_gui()
|
||||
self.copy_waypoint()
|
||||
|
||||
self.save_offset()
|
||||
|
||||
def goto_changelog_page(self):
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
import sys
|
||||
import traceback
|
||||
from SpanshRouter.updater import SpanshUpdater
|
||||
from SpanshRouter.AutoCompleter import AutoCompleter
|
||||
from SpanshRouter.PlaceHolder import PlaceHolder
|
||||
from SpanshRouter import SpanshRouter
|
||||
Reference in new issue
Block a user