laneya

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

commit
5f29ef03fd8fea8544e984c6316e7922ebec88a9
parent
b26cca8e2b9521ae7b8cc9d418fbbc0b8c4661a7
Author
radow <masteroftheriddles@googlemail.com>
Date
2014-10-05 19:42
Implement move on individual Users

Diffstat

M laneya/server.py 45 ++++++++++++++++++++++++---------------------

1 files changed, 24 insertions, 21 deletions


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

@@ -8,16 +8,23 @@ from twisted.internet import task
    8     8 import protocol
    9     9 
   10    10 
   -1    11 class User(object):
   -1    12     def __init__(self, position_x=0, position_y=0, direction='stop'):
   -1    13         self.position_x = position_x
   -1    14         self.position_y = position_y
   -1    15         self.direction = direction
   -1    16 
   -1    17 
   11    18 class ServerProtocol(protocol.ServerProtocol):
   12    19     def requestReceived(self, user, action, **kwargs):  # TODO
   13    20         if user not in self.factory.users:
   14    -1             self.factory.users[user] = {}
   -1    21             self.factory.users[user] = User()
   15    22             print("login %s" % user)
   16    23 
   17    24         if action == 'echo':
   18    25             return kwargs
   19    26         elif action == 'move':
   20    -1             self.factory.direction = kwargs['direction']
   -1    27             self.factory.users[user].direction = kwargs['direction']
   21    28             return {}
   22    29         elif action == 'logout':
   23    30             del self.factory.users[user]
@@ -34,26 +41,22 @@ class Server(protocol.ServerProtocolFactory):
   34    41         protocol.ServerProtocolFactory.__init__(self, ServerProtocol)
   35    42         self.users = {}
   36    43 
   37    -1         # TODO: should be set per user
   38    -1         self.direction = 'stop'
   39    -1         self.position_x = 0
   40    -1         self.position_y = 0
   41    -1 
   42    44     def mainloop(self):
   43    -1         if self.direction == 'north':
   44    -1             self.position_y -= 1
   45    -1         elif self.direction == 'east':
   46    -1             self.position_x += 1
   47    -1         elif self.direction == 'south':
   48    -1             self.position_y += 1
   49    -1         elif self.direction == 'west':
   50    -1             self.position_x -= 1
   51    -1         if self.direction != 'stop':
   52    -1             self.broadcastUpdate(
   53    -1                 'position',
   54    -1                 x=self.position_x,
   55    -1                 y=self.position_y,
   56    -1                 entity='example')
   -1    45         for key, user in self.users.iteritems():
   -1    46             if user.direction == 'north':
   -1    47                 user.position_y -= 1
   -1    48             elif user.direction == 'east':
   -1    49                 user.position_x += 1
   -1    50             elif user.direction == 'south':
   -1    51                 user.position_y += 1
   -1    52             elif user.direction == 'west':
   -1    53                 user.position_x -= 1
   -1    54             if user.direction != 'stop':
   -1    55                 self.broadcastUpdate(
   -1    56                     'position',
   -1    57                     x=user.position_x,
   -1    58                     y=user.position_y,
   -1    59                     entity=key)
   57    60 
   58    61 
   59    62 def main():