- commit
- 558447f7bbe7d637433f92adddc57fd2452278f0
- parent
- b69ed0f47a7bc0bf88544bde98b2e262b8703558
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2014-10-12 15:46
Merge pull request #1 from xi/feature-curses First Draft for a Client User Interface
Diffstat
| M | laneya/client.py | 47 | ++++++++++++++++++++++++++++++++++++----------- |
| M | setup.py | 1 | + |
2 files changed, 37 insertions, 11 deletions
diff --git a/laneya/client.py b/laneya/client.py
@@ -3,35 +3,60 @@ import sys 3 3 from twisted.python import log 4 4 from twisted.internet.endpoints import TCP4ClientEndpoint 5 5 from twisted.internet import reactor -1 6 from twisted.internet import task -1 7 -1 8 from dirtywords import Screen 6 9 7 10 import protocol 8 11 import deferred as q 9 12 -1 13 screen = Screen(40, 60) -1 14 screen.border() -1 15 10 16 11 17 class Client(protocol.ClientProtocolFactory): -1 18 def __init__(self): -1 19 protocol.ClientProtocolFactory.__init__(self) -1 20 self.position_x = 0 -1 21 self.position_y = 0 -1 22 12 23 def updateReceived(self, action, **kwargs): # TODO13 -1 print(action, kwargs)-1 24 if action == 'position': -1 25 screen.delch(self.position_y, self.position_x) -1 26 self.position_x = kwargs['x'] -1 27 self.position_y = kwargs['y'] -1 28 screen.putstr(self.position_y, self.position_x, 'X') -1 29 screen.refresh() 14 30 15 31 def move(self, direction): 16 32 return self.sendRequest('move', direction=direction) 17 3318 -1 def connected(self, protocol): # TODO19 -1 self.move('south')20 -1 reactor.callLater(2, lambda: self.move('west'))21 -1 reactor.callLater(4, lambda: self.move('north'))22 -1 reactor.callLater(6, lambda: self.move('east'))23 -1 reactor.callLater(8, lambda: self.move('stop'))24 -125 -1 reactor.callLater(10, lambda: self.sendRequest('logout'))-1 34 def mainloop(self): # TODO -1 35 for event in screen.get_key_events(): -1 36 if event['key'] == ord('j'): -1 37 self.move('south' if event['type'] == 'keydown' else 'stop') -1 38 elif event['key'] == ord('k'): -1 39 self.move('north' if event['type'] == 'keydown' else 'stop') -1 40 elif event['key'] == ord('l'): -1 41 self.move('east' if event['type'] == 'keydown' else 'stop') -1 42 elif event['key'] == ord('h'): -1 43 self.move('west' if event['type'] == 'keydown' else 'stop') -1 44 elif event['key'] == ord('q'): -1 45 self.sendRequest('logout') -1 46 screen.cleanup() -1 47 reactor.stop() 26 48 27 49 28 50 def main():29 -1 log.startLogging(sys.stdout)-1 51 # log.startLogging(sys.stdout) 30 52 client = Client() 31 53 client.setup('testuser') 32 54 endpoint = TCP4ClientEndpoint(reactor, 'localhost', 5001) 33 55 d = endpoint.connect(client)34 -1 q.fromTwisted(d).then(client.connected, log.err)-1 56 -1 57 mainloop = task.LoopingCall(client.mainloop) -1 58 mainloop.start(0.02) -1 59 35 60 reactor.run() 36 61 37 62
diff --git a/setup.py b/setup.py
@@ -12,6 +12,7 @@ setup( 12 12 packages=['laneya'], 13 13 install_requires=[ 14 14 'twisted', -1 15 'dirtywords', 15 16 ], 16 17 entry_points={'console_scripts': [ 17 18 'laneya=laneya.client:main',