home · contact · privacy
Add player-identifying meta characters next to @ symbols.
[plomrogue2] / plomrogue / game.py
index 1ffbf1acfa186f900d96a8252bd5db58dd5fa0a8..29e2de15fe605f92f11cebc967815927ea9b7fd8 100755 (executable)
@@ -4,6 +4,7 @@ from plomrogue.errors import GameError, PlayError
 from plomrogue.io import GameIO
 from plomrogue.misc import quote
 from plomrogue.mapping import YX, MapGeometrySquare, Map
+import string
 
 
 
@@ -48,6 +49,8 @@ class Game(GameBase):
         self.map_control_passwords = {}
         self.annotations = {}
         self.portals = {}
+        self.player_chars = string.digits + string.ascii_letters
+        self.player_char_i = -1
         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')
@@ -76,7 +79,6 @@ class Game(GameBase):
         return True
 
     def get_string_options(self, string_option_type):
-        import string
         if string_option_type == 'direction':
             return self.map_geometry.get_directions()
         elif string_option_type == 'char':
@@ -110,6 +112,9 @@ class Game(GameBase):
                 if hasattr(t, 'nickname'):
                     self.io.send('THING_NAME %s %s' % (t.id_,
                                                        quote(t.nickname)), c_id)
+                if hasattr(t, 'player_char'):
+                    self.io.send('THING_CHAR %s %s' % (t.id_,
+                                                       quote(t.player_char)), c_id)
             for yx in [yx for yx in self.portals
                        if player.fov_stencil[yx] == '.']:
                 self.io.send('PORTAL %s %s' % (yx, quote(self.portals[yx])), c_id)
@@ -187,6 +192,12 @@ class Game(GameBase):
             return 1
         return max([t.id_ for t in self.things]) + 1
 
+    def get_next_player_char(self):
+        self.player_char_i += 1
+        if self.player_char_i >= len(self.player_chars):
+            self.player_char_i = 0
+        return self.player_chars[self.player_char_i]
+
     def save(self):
 
       def write(f, msg):