laneya

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

commit
b69ed0f47a7bc0bf88544bde98b2e262b8703558
parent
0da161497db53cfc5d89d2744c1df4ec01df2032
Author
Tobias Bengfort <tobias.bengfort@gmx.net>
Date
2014-10-12 15:08
Merge branch 'collision-feature'

Diffstat

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

1 files changed, 17 insertions, 4 deletions


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

@@ -19,6 +19,7 @@ class Server(protocol.ServerProtocolFactory):
   19    19     def __init__(self):
   20    20         protocol.ServerProtocolFactory.__init__(self)
   21    21         self.users = {}
   -1    22         self.movable_layer = [[None for i in xrange(100)] for i in xrange(100)]
   22    23 
   23    24     def requestReceived(self, user, action, **kwargs):  # TODO
   24    25         if user not in self.users:
@@ -36,13 +37,13 @@ class Server(protocol.ServerProtocolFactory):
   36    37     def mainloop(self):
   37    38         for key, user in self.users.iteritems():
   38    39             if user.direction == 'north':
   39    -1                 user.position_y -= 1
   -1    40                 self.move_user(user, 0, -1)
   40    41             elif user.direction == 'east':
   41    -1                 user.position_x += 1
   -1    42                 self.move_user(user, 1, 0)
   42    43             elif user.direction == 'south':
   43    -1                 user.position_y += 1
   -1    44                 self.move_user(user, 0, 1)
   44    45             elif user.direction == 'west':
   45    -1                 user.position_x -= 1
   -1    46                 self.move_user(user, -1, 0)
   46    47             if user.direction != 'stop':
   47    48                 self.broadcastUpdate(
   48    49                     'position',
@@ -50,6 +51,18 @@ class Server(protocol.ServerProtocolFactory):
   50    51                     y=user.position_y,
   51    52                     entity=key)
   52    53 
   -1    54     def collision_check(self, new_x, new_y):
   -1    55         return self.movable_layer[new_x][new_y] is None
   -1    56 
   -1    57     def move_user(self, user, dx, dy):
   -1    58         if self.collision_check(user.position_x, user.position_y - 1):
   -1    59             self.movable_layer[user.position_x][user.position_y] = None
   -1    60             user.position_x += dx
   -1    61             user.position_y += dy
   -1    62             self.movable_layer[user.position_x][user.position_y] = user
   -1    63         else:
   -1    64             raise protocol.IllegalError
   -1    65 
   53    66 
   54    67 def main():
   55    68     log.startLogging(sys.stdout)