laneya

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

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):  # TODO
   13    -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    33 
   18    -1     def connected(self, protocol):  # TODO
   19    -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    -1 
   25    -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',