Switch movement modes with F1-F3

This commit is contained in:
Joscha 2017-04-17 17:27:25 +00:00
parent 8b8a1da6f3
commit 6e231f429f

View file

@ -14,8 +14,13 @@ from utils import Position
from clientchunkpool import ClientChunkPool from clientchunkpool import ClientChunkPool
class Client(): class Client():
MOVE_NORMAL = 0
MOVE_FAST = 1
MOVE_MAP = 2
def __init__(self, address, port=None, logfile=None): def __init__(self, address, port=None, logfile=None):
self.stopping = False self.stopping = False
self.movement = self.MOVE_NORMAL
self.map_ = None self.map_ = None
self.chunkmap = None self.chunkmap = None
@ -95,38 +100,51 @@ class Client():
for msg in self.log_messages: for msg in self.log_messages:
f.write(msg + "\n") f.write(msg + "\n")
def move(self, x, y, mode):
if mode == self.MOVE_NORMAL:
self.map_.move_cursor(x, y)
elif mode == self.MOVE_FAST:
self.map_.move_cursor(x*10, y*5)
elif mode == self.MOVE_MAP:
self.map_.scroll(x*20, y*10)
def input_thread(self, scr): def input_thread(self, scr):
while True: while True:
i = scr.get_wch() i = scr.get_wch()
if i == "\x1b": self.stop() if i == "\x1b": self.stop()
elif i == curses.KEY_F2: elif i == curses.KEY_F1: self.movement = self.MOVE_NORMAL
self.chunkmap_active = not self.chunkmap_active elif i == curses.KEY_F2: self.movement = self.MOVE_FAST
self.redraw() elif i == curses.KEY_F3: self.movement = self.MOVE_MAP
elif i == curses.KEY_F3:
self.map_.alternating_colors = not self.map_.alternating_colors
self.redraw()
elif i == curses.KEY_F5: elif i == curses.KEY_F5:
self.map_.redraw() self.map_.redraw()
elif i == curses.KEY_F6 or i == curses.KEY_F4: # real map will later toggle on F4
self.chunkmap_active = not self.chunkmap_active
self.redraw()
elif i == curses.KEY_F7:
self.map_.alternating_colors = not self.map_.alternating_colors
self.redraw()
# scrolling the map (10 vertical, 20 horizontal) # scrolling the map (10 vertical, 20 horizontal)
elif i in [569,566]: self.map_.scroll(0, -10) # ctrl + up elif i in [569,566]: self.move( 0, -1, self.MOVE_MAP) # ctrl + up
elif i in [528,525]: self.map_.scroll(0, 10) # ctrl + down elif i in [528,525]: self.move( 0, 1, self.MOVE_MAP) # ctrl + down
elif i in [548,545]: self.map_.scroll(-20, 0) # ctrl + left elif i in [548,545]: self.move(-1, 0, self.MOVE_MAP) # ctrl + left
elif i in [563,560]: self.map_.scroll(20, 0) # ctrl + right elif i in [563,560]: self.move( 1, 0, self.MOVE_MAP) # ctrl + right
# break here if chunkmap is shown: Don't allow for cursor movement or input # break here if chunkmap is shown: Don't allow for cursor movement or input
elif self.chunkmap_active: pass elif self.chunkmap_active and self.movement != self.MOVE_MAP: pass
# quick cursor movement (5 vertical, 10 horizontal) # quick cursor movement (5 vertical, 10 horizontal)
elif i == curses.KEY_SR: self.map_.move_cursor(0, -5) # shift + up, 337 elif i == curses.KEY_SR: self.move( 0, -1, self.MOVE_FAST) # shift + up, 337
elif i == curses.KEY_SF: self.map_.move_cursor(0, 5) # shift + down, 336 elif i == curses.KEY_SF: self.move( 0, 1, self.MOVE_FAST) # shift + down, 336
elif i == curses.KEY_SLEFT : self.map_.move_cursor(-10, 0) # shift + left, 393 elif i == curses.KEY_SLEFT: self.move(-1, 0, self.MOVE_FAST) # shift + left, 393
elif i == curses.KEY_SRIGHT: self.map_.move_cursor(10, 0) # shift + right, 402 elif i == curses.KEY_SRIGHT: self.move( 1, 0, self.MOVE_FAST) # shift + right, 402
# normal cursor movement # normal cursor movement
elif i == curses.KEY_UP : self.map_.move_cursor(0, -1) elif i == curses.KEY_UP: self.move( 0, -1, self.movement)
elif i == curses.KEY_DOWN : self.map_.move_cursor(0, 1) elif i == curses.KEY_DOWN: self.move( 0, 1, self.movement)
elif i == curses.KEY_LEFT : self.map_.move_cursor(-1, 0) elif i == curses.KEY_LEFT: self.move(-1, 0, self.movement)
elif i == curses.KEY_RIGHT: self.map_.move_cursor(1, 0) elif i == curses.KEY_RIGHT: self.move( 1, 0, self.movement)
# edit world # edit world
elif i == "\x7f": self.map_.delete() elif i == "\x7f": self.map_.delete()
elif i == "\n": self.map_.newline() elif i == "\n": self.map_.newline()