home · contact · privacy
Refactor parser code.
[plomrogue2] / plomrogue / game.py
index b76860aa5ff7954c802c63334d22367a9acb7ffa..cb749cffa939f38c3672945fb240ae3d6e3aef79 100755 (executable)
@@ -2,7 +2,6 @@ from plomrogue.errors import GameError, PlayError
 from plomrogue.io import GameIO
 from plomrogue.misc import quote
 from plomrogue.mapping import YX, MapGeometrySquare, MapGeometryHex, Map
-import string
 import datetime
 
 
@@ -123,6 +122,7 @@ import os
 class Game(GameBase):
 
     def __init__(self, save_file, *args, **kwargs):
+        import string
         from plomrogue.misc import Terrain
         super().__init__(*args, **kwargs)
         self.changed = True
@@ -159,9 +159,11 @@ class Game(GameBase):
         if os.path.exists(self.io.save_file):
             if not os.path.isfile(self.io.save_file):
                 raise GameError('save file path refers to non-file')
+        self.io.train_parser()
 
     def register_thing_type(self, thing_type):
         self._register_object(thing_type, 'thing_type', 'Thing_')
+        self.io.train_parser()
 
     def register_task(self, task):
         self._register_object(task, 'task', 'Task_')
@@ -190,20 +192,6 @@ class Game(GameBase):
                 return False
         return True
 
-    def get_string_options(self, string_option_type):
-        if string_option_type == 'direction':
-            return self.map_geometry.directions
-        elif string_option_type == 'direction+here':
-            return ['HERE'] + self.map_geometry.directions
-        elif string_option_type == 'char':
-            return [c for c in
-                    string.digits + string.ascii_letters + string.punctuation + ' ']
-        elif string_option_type == 'map_geometry':
-            return ['Hex', 'Square']
-        elif string_option_type == 'thing_type':
-            return self.thing_types.keys()
-        return None
-
     def get_default_spawn_point(self):
         import random
         if len(self.spawn_points) == 0:
@@ -646,6 +634,7 @@ class Game(GameBase):
         self.portals = {}
         self.admin_passwords = []
         self.map_geometry = map_geometry
+        self.io.train_parser()
         self.map_control_passwords = {'X': 'secret'}
         self.get_map(YX(0, 0))
         self.get_map(YX(0, 0), 'control')