laneya

multiplayer roguelike game
git clone https://git.ce9e.org/laneya.git

commit
b520d7659ddabc4966c418ec03c62b68523ebf24
parent
349ec97a851996249927ca70e95f5fa639000cdf
Author
Tobias Bengfort <tobias.bengfort@gmx.net>
Date
2014-10-07 21:04
first client UI draft

Diffstat

M laneya/client.py 43 ++++++++++++++++++++++++++++++-------------

1 files changed, 30 insertions, 13 deletions


diff --git a/laneya/client.py b/laneya/client.py

@@ -5,37 +5,54 @@ from twisted.internet.endpoints import TCP4ClientEndpoint
    5     5 from twisted.internet import reactor
    6     6 from twisted.internet import task
    7     7 
   -1     8 from dirtywords.pygame_core import Screen
   -1     9 
    8    10 import protocol
    9    11 import deferred as q
   10    12 
   -1    13 screen = Screen(40, 60)
   -1    14 screen.border()
   -1    15 
   11    16 
   12    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 
   13    23     def updateReceived(self, action, **kwargs):  # TODO
   14    -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()
   15    30 
   16    31     def move(self, direction):
   17    32         return self.sendRequest('move', direction=direction)
   18    33 
   19    -1     def connected(self, protocol):  # TODO
   20    -1         self.move('south')
   21    -1         reactor.callLater(2, lambda: self.move('west'))
   22    -1         reactor.callLater(4, lambda: self.move('north'))
   23    -1         reactor.callLater(6, lambda: self.move('east'))
   24    -1         reactor.callLater(8, lambda: self.move('stop'))
   25    -1 
   26    -1         reactor.callLater(10, lambda: self.sendRequest('logout'))
   27    -1 
   28    34     def mainloop(self):  # TODO
   29    -1         pass
   -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()
   30    48 
   31    49 
   32    50 def main():
   33    -1     log.startLogging(sys.stdout)
   -1    51     # log.startLogging(sys.stdout)
   34    52     client = Client()
   35    53     client.setup('testuser')
   36    54     endpoint = TCP4ClientEndpoint(reactor, 'localhost', 5001)
   37    55     d = endpoint.connect(client)
   38    -1     q.fromTwisted(d).then(client.connected, log.err)
   39    56 
   40    57     mainloop = task.LoopingCall(client.mainloop)
   41    58     mainloop.start(0.1)