X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/static/git-favicon.png?a=blobdiff_plain;f=rogue_chat_curses.py;h=89c841140edc871c4108d91c6bb3b5f389599e0a;hb=c7a3af00680ba0449310bbb7336a187dd4ed6bcf;hp=70060275893245d4e63ba5e2838f53dbd1e53fd6;hpb=d13e2f639316c1dba7a62d84f3c850bc937c2b1e;p=plomrogue2 diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index 7006027..89c8411 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -46,6 +46,11 @@ mode_helps = { 'intro': '@ enter thing protection character:', 'long': 'Change protection character for thing here.' }, + 'enter_face': { + 'short': 'enter your face', + 'intro': '@ enter face line (enter nothing to abort):', + 'long': 'Draw your face as ASCII art. The string you enter must be 9 characters long, and will be divided on display into three lines of three characters each, from top to bottom..' + }, 'write': { 'short': 'change terrain', 'intro': '', @@ -207,15 +212,18 @@ cmd_THING.argtypes = 'yx_tuple:nonneg string:thing_type char int:nonneg bool' def cmd_THING_NAME(game, thing_id, name): t = game.get_thing(thing_id) - if t: - t.name = name -cmd_THING_NAME.argtypes = 'int:nonneg string' + t.name = name +cmd_THING_NAME.argtypes = 'int:pos string' + +def cmd_THING_FACE(game, thing_id, face): + t = game.get_thing(thing_id) + t.face = face +cmd_THING_FACE.argtypes = 'int:pos string' def cmd_THING_CHAR(game, thing_id, c): t = game.get_thing(thing_id) - if t: - t.thing_char = c -cmd_THING_CHAR.argtypes = 'int:nonneg char' + t.thing_char = c +cmd_THING_CHAR.argtypes = 'int:pos char' def cmd_MAP(game, geometry, size, content): map_geometry_class = globals()['MapGeometry' + geometry] @@ -334,6 +342,7 @@ class Game(GameBase): self.register_command(cmd_THING_TYPE) self.register_command(cmd_THING_NAME) self.register_command(cmd_THING_CHAR) + self.register_command(cmd_THING_FACE) self.register_command(cmd_THING_CARRYING) self.register_command(cmd_THING_INSTALLED) self.register_command(cmd_TERRAIN) @@ -429,6 +438,7 @@ class TUI: mode_name_thing = Mode('name_thing', has_input_prompt=True, shows_info=True) mode_command_thing = Mode('command_thing', has_input_prompt=True) mode_take_thing = Mode('take_thing', has_input_prompt=True) + mode_enter_face = Mode('enter_face', has_input_prompt=True) is_admin = False tile_draw = False @@ -451,7 +461,7 @@ class TUI: "toggle_tile_draw"] self.mode_edit.available_modes = ["write", "annotate", "portal", "name_thing", "password", "chat", "study", "play", - "admin_enter"] + "admin_enter", "enter_face"] self.mode_edit.available_actions = ["move", "flatten", "toggle_map_mode"] self.mode = None self.host = host @@ -481,6 +491,7 @@ class TUI: 'switch_to_control_tile_type': 'Q', 'switch_to_admin_thing_protect': 'T', 'flatten': 'F', + 'switch_to_enter_face': 'f', 'switch_to_take_thing': 'z', 'drop_thing': 'u', 'teleport': 'p', @@ -690,6 +701,17 @@ class TUI: if len(self.game.fov) > pos_i and self.game.fov[pos_i] != '.': info_to_cache += 'outside field of view' else: + for t in self.game.things: + if t.position == self.explorer: + info_to_cache += 'THING: %s' % self.get_thing_info(t) + protection = t.protection + if protection == '.': + protection = 'none' + info_to_cache += ' / protection: %s\n' % protection + if hasattr(t, 'face'): + info_to_cache += t.face[0:3] + '\n' + info_to_cache += t.face[3:6] + '\n' + info_to_cache += t.face[6:9] + '\n' terrain_char = self.game.map_content[pos_i] terrain_desc = '?' if terrain_char in self.game.terrains: @@ -700,13 +722,6 @@ class TUI: if protection == '.': protection = 'unprotected' info_to_cache += 'PROTECTION: %s\n' % protection - for t in self.game.things: - if t.position == self.explorer: - info_to_cache += 'THING: %s' % self.get_thing_info(t) - protection = t.protection - if protection == '.': - protection = 'none' - info_to_cache += ' / protection: %s\n' % protection if self.explorer in self.game.portals: info_to_cache += 'PORTAL: ' +\ self.game.portals[self.explorer] + '\n' @@ -1040,6 +1055,13 @@ class TUI: self.login_name = self.input_ self.send('LOGIN ' + quote(self.input_)) self.input_ = "" + elif self.mode.name == 'enter_face' and key == '\n': + if len(self.input_) != 9: + self.log_msg('? wrong input length, aborting') + else: + self.send('PLAYER_FACE %s' % quote(self.input_)) + self.input_ = "" + self.switch_mode('edit') elif self.mode.name == 'take_thing' and key == '\n': try: i = int(self.input_)