X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=rogue_chat_curses.py;h=efddaf68eb5f38bb8b80d56baf44a872708d6685;hb=9bf1355e17e7903212d439fe718ae18939466962;hp=70060275893245d4e63ba5e2838f53dbd1e53fd6;hpb=5f77cabba400be428d6d402d9642836e449bd332;p=plomrogue2
diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py
index 7006027..efddaf6 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 18 characters long, and will be divided on display into 3 lines of 6 characters each, from top to bottom..'
+ },
'write': {
'short': 'change terrain',
'intro': '',
@@ -207,15 +212,23 @@ 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_HAT(game, thing_id, hat):
+ t = game.get_thing(thing_id)
+ t.hat = hat
+cmd_THING_HAT.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 +347,8 @@ 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_HAT)
self.register_command(cmd_THING_CARRYING)
self.register_command(cmd_THING_INSTALLED)
self.register_command(cmd_TERRAIN)
@@ -429,6 +444,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
@@ -439,7 +455,7 @@ class TUI:
"command_thing", "take_thing"]
self.mode_play.available_actions = ["move", "drop_thing",
"teleport", "door", "consume",
- "install"]
+ "install", "wear"]
self.mode_study.available_modes = ["chat", "play", "admin_enter", "edit"]
self.mode_study.available_actions = ["toggle_map_mode", "move_explorer"]
self.mode_admin.available_modes = ["admin_thing_protect", "control_pw_type",
@@ -451,7 +467,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,12 +497,14 @@ 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',
'consume': 'C',
'door': 'D',
'install': 'I',
+ 'wear': 'W',
'help': 'h',
'toggle_map_mode': 'L',
'toggle_tile_draw': 'm',
@@ -690,6 +708,21 @@ 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, 'hat'):
+ info_to_cache += t.hat[0:6] + '\n'
+ info_to_cache += t.hat[6:12] + '\n'
+ info_to_cache += t.hat[12:18] + '\n'
+ if hasattr(t, 'face'):
+ info_to_cache += t.face[0:6] + '\n'
+ info_to_cache += t.face[6:12] + '\n'
+ info_to_cache += t.face[12:18] + '\n'
terrain_char = self.game.map_content[pos_i]
terrain_desc = '?'
if terrain_char in self.game.terrains:
@@ -700,13 +733,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'
@@ -960,6 +986,7 @@ class TUI:
'toggle_map_mode': 'toggle map view',
'toggle_tile_draw': 'toggle protection character drawing',
'install': '(un-)install',
+ 'wear': '(un-)wear',
'door': 'open/close',
'consume': 'consume',
}
@@ -970,6 +997,7 @@ class TUI:
'drop_thing': 'DROP',
'door': 'DOOR',
'install': 'INSTALL',
+ 'wear': 'WEAR',
'move': 'MOVE',
'command': 'COMMAND',
'consume': 'INTOXICATE',
@@ -1040,6 +1068,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_) != 18:
+ 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_)
@@ -1144,6 +1179,8 @@ class TUI:
self.send('TASK:INTOXICATE')
elif key == self.keys['install'] and task_action_on('install'):
self.send('TASK:INSTALL')
+ elif key == self.keys['wear'] and task_action_on('wear'):
+ self.send('TASK:WEAR')
elif key == self.keys['teleport']:
player = self.game.get_thing(self.game.player_id)
if player.position in self.game.portals: