home · contact · privacy
Refactor.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 12 Dec 2018 02:00:25 +0000 (03:00 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 12 Dec 2018 02:00:25 +0000 (03:00 +0100)
client.py
game_common.py
server.py

index fa5d9c42a82d08f10b98a22f198f0d382fa79b3d..0a25e4513bd0687b5731651b40de51bb585ec125 100755 (executable)
--- a/client.py
+++ b/client.py
@@ -4,10 +4,10 @@ import plom_socket_io
 import socket
 import threading
 from parser import ArgError, Parser
-from game_common import World
+from game_common import World, Commander
 
 
-class Game:
+class Game(Commander):
     world = World()
     log_text = ''
 
@@ -23,25 +23,6 @@ class Game:
             symbol = 'm'
         return symbol
 
-    def cmd_MAP_SIZE(self, yx):
-        """Set self.map_size to yx, redraw self.terrain_map as '?' cells."""
-        self.world.set_map_size(yx)
-    cmd_MAP_SIZE.argtypes = 'yx_tuple:nonneg'
-
-    def cmd_TERRAIN_LINE(self, y, terrain_line):
-        self.world.set_map_line(y, terrain_line)
-    cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'
-
-    def cmd_THING_TYPE(self, i, type_):
-        t = self.world.get_thing(i)
-        t.type_ = type_
-    cmd_THING_TYPE.argtypes = 'int:nonneg string'
-
-    def cmd_THING_POS(self, i, yx):
-        t = self.world.get_thing(i)
-        t.position = list(yx)
-    cmd_THING_POS.argtypes = 'int:nonneg yx_tuple:nonneg'
-
     def cmd_TURN_FINISHED(self, n):
         """Do nothing. (This may be extended later.)"""
         pass
index c6fb220ee04cfa7ba90ee512e4239e24fd45b69e..0598dfa77e61f715c224a84f7cedaaedb158664b 100644 (file)
@@ -43,3 +43,25 @@ class Thing:
         self.id_ = id_
         self.type_ = '?'
         self.position = [0,0]
+
+
+class Commander:
+
+    def cmd_MAP_SIZE(self, yx):
+        """Set self.map_size to yx, redraw self.terrain_map as '?' cells."""
+        self.world.set_map_size(yx)
+    cmd_MAP_SIZE.argtypes = 'yx_tuple:nonneg'
+
+    def cmd_TERRAIN_LINE(self, y, terrain_line):
+        self.world.set_map_line(y, terrain_line)
+    cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'
+
+    def cmd_THING_TYPE(self, i, type_):
+        t = self.world.get_thing(i)
+        t.type_ = type_
+    cmd_THING_TYPE.argtypes = 'int:nonneg string'
+
+    def cmd_THING_POS(self, i, yx):
+        t = self.world.get_thing(i)
+        t.position = list(yx)
+    cmd_THING_POS.argtypes = 'int:nonneg yx_tuple:nonneg'
index dd76594ded193fe732d18e4c0ff778f159958af3..e289e0a73a03ea123aa4ab1524cef8ea792a2616 100755 (executable)
--- a/server.py
+++ b/server.py
@@ -7,6 +7,7 @@ import sys
 import os
 from parser import ArgError, Parser
 from server_.game import World, GameError
+from game_common import Commander
 
 
 # Avoid "Address already in use" errors.
@@ -92,7 +93,7 @@ def fib(n):
         return fib(n-1) + fib(n-2)
 
 
-class CommandHandler:
+class CommandHandler(Commander):
 
     def __init__(self):
         from multiprocessing import Pool
@@ -190,24 +191,6 @@ class CommandHandler:
         self.world.get_player().set_task('wait')
         self.proceed()
 
-    def cmd_MAP_SIZE(self, yx):
-        self.world.set_map_size(yx)
-    cmd_MAP_SIZE.argtypes = 'yx_tuple:nonneg'
-
-    def cmd_TERRAIN_LINE(self, y, line):
-        self.world.set_map_line(y, line)
-    cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'
-
-    def cmd_THING_TYPE(self, i, type_):
-        t = self.world.get_thing(i)
-        t.type_ = type_
-    cmd_THING_TYPE.argtypes = 'int:nonneg string'
-
-    def cmd_THING_POS(self, i, yx):
-        t = self.world.get_thing(i)
-        t.position = list(yx)
-    cmd_THING_POS.argtypes = 'int:nonneg yx_tuple:nonneg'
-
     def cmd_GET_TURN(self, connection_id):
         """Send world.turn to caller."""
         self.send_to(connection_id, str(self.world.turn))