From: Christian Heller Date: Wed, 30 Jan 2019 22:23:54 +0000 (+0100) Subject: Fix MAP command geometries returning invalid classes. X-Git-Url: https://plomlompom.com/repos/index.html?a=commitdiff_plain;h=b62222032f8fae375b7631832c59e811ac51dbda;p=plomrogue2-experiments Fix MAP command geometries returning invalid classes. --- diff --git a/client-curses.py b/client-curses.py index ea5dcf3..a8add97 100755 --- a/client-curses.py +++ b/client-curses.py @@ -77,7 +77,7 @@ class MapHex(Map): return map_lines -map_manager = game_common.MapManager(globals()) +map_manager = game_common.MapManager((MapHex, MapSquare)) class World(game_common.World): diff --git a/game_common.py b/game_common.py index c0fb98b..7731c61 100644 --- a/game_common.py +++ b/game_common.py @@ -3,12 +3,9 @@ from parser import ArgError class MapManager: - def __init__(self, globs): - """With globs a globals() call, collect caller's Map classes.""" - self.map_classes = [] - for name in globs: - if name[:3] == 'Map': - self.map_classes += [globs[name]] + def __init__(self, map_classes): + """Collects tuple of basic Map[Geometry] classes.""" + self.map_classes = map_classes def get_map_geometries(self): geometries = [] diff --git a/server_/map_.py b/server_/map_.py index 2e87fc5..b59ecee 100644 --- a/server_/map_.py +++ b/server_/map_.py @@ -33,9 +33,9 @@ class Map(game_common.Map): yield (y, self.terrain[y * width:(y + 1) * width]) def get_fov_map(self, yx): - # TODO: Currently only have MapFovHex. Provide MapFovSquare. - fov_map_class = map_manager.get_map_class('Fov' + self.geometry) - return fov_map_class(self, yx) + fov_class_name = 'Fov' + self.__class__.__name__ + fov_class = globals()[fov_class_name] + return fov_class(self, yx) # The following is used nowhere, so not implemented. #def items(self): @@ -139,7 +139,7 @@ class MapHex(Map): return neighbors -class MapFovHex(MapHex): +class FovMapHex(MapHex): def __init__(self, source_map, yx): self.source_map = source_map @@ -276,7 +276,7 @@ class MapSquare(Map): return neighbors -class MapFovSquare(MapSquare): +class FovMapSquare(MapSquare): """Just a marginally and unsatisfyingly adapted variant of MapFovHex.""" def __init__(self, source_map, yx): @@ -376,4 +376,4 @@ class MapFovSquare(MapSquare): distance += 1 -map_manager = game_common.MapManager(globals()) +map_manager = game_common.MapManager((MapHex, MapSquare))