From: Christian Heller Date: Wed, 12 Dec 2018 02:00:25 +0000 (+0100) Subject: Refactor. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7B%20web_path%20%7D%7D/day_todos?a=commitdiff_plain;h=7a02f223961c532d9423433427c0e1b3e1cdb871;p=plomrogue2-experiments Refactor. --- diff --git a/client.py b/client.py index fa5d9c4..0a25e45 100755 --- 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 diff --git a/game_common.py b/game_common.py index c6fb220..0598dfa 100644 --- a/game_common.py +++ b/game_common.py @@ -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' diff --git a/server.py b/server.py index dd76594..e289e0a 100755 --- 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))