for i in range(len(self.selectables)):
self.log_msg(str(i) + ': ' + self.selectables[i])
elif self.mode.name == 'enter_design':
- self.log_msg('@ The design you enter must be %s lines of max %s '
- 'characters width each'
- % (self.game.player.carrying.design[0].y,
- self.game.player.carrying.design[0].x))
if self.game.player.carrying.type_ == 'Hat':
+ self.log_msg('@ The design you enter must be %s lines of max %s '
+ 'characters width each'
+ % (self.game.player.carrying.design[0].y,
+ self.game.player.carrying.design[0].x))
self.log_msg('@ Legal characters: ' + self.game.players_hat_chars)
self.log_msg('@ (Eat cookies to extend the ASCII characters available for drawing.)')
+ else:
+ self.log_msg('@ Width of first line determines maximum width for remaining design')
+ self.log_msg('@ Finish design by entering an empty line (multiple space characters do not count as empty)')
elif self.mode.name == 'command_thing':
self.send('TASK:COMMAND ' + quote('HELP'))
elif self.mode.name == 'control_pw_pw':
self.input_ = ''
self.switch_mode('play')
- def enter_ascii_art(command, height, width, with_pw=False):
- if len(self.input_) > width:
+ def enter_ascii_art(command, height, width,
+ with_pw=False, with_size=False):
+ if with_size and self.ascii_draw_stage == 0:
+ width = len(self.input_)
+ if width > 36:
+ self.log_msg('? input too long, must be max 36; try again')
+ # TODO: move max width mechanism server-side
+ return
+ old_size = self.game.player.carrying.design[0]
+ if width != old_size.x:
+ # TODO: save remaining design?
+ self.game.player.carrying.design[1] = ''
+ self.game.player.carrying.design[0] = YX(old_size.y, width)
+ elif len(self.input_) > width:
self.log_msg('? input too long, '
'must be max %s; try again' % width)
return
- if len(self.input_) < width:
- self.input_ += ' ' * (width - len(self.input_))
self.log_msg(' ' + self.input_)
- self.full_ascii_draw += self.input_
+ if with_size and self.input_ in {'', ' '}\
+ and self.ascii_draw_stage > 0:
+ height = self.ascii_draw_stage
+ else:
+ if with_size:
+ height = self.ascii_draw_stage + 2
+ if len(self.input_) < width:
+ self.input_ += ' ' * (width - len(self.input_))
+ self.full_ascii_draw += self.input_
+ if with_size:
+ old_size = self.game.player.carrying.design[0]
+ self.game.player.carrying.design[0] = YX(height, old_size.x)
self.ascii_draw_stage += 1
if self.ascii_draw_stage < height:
self.restore_input_values()
else:
+ if with_pw and with_size:
+ self.send('%s_SIZE %s %s' % (command, YX(height, width),
+ quote(self.password)))
if with_pw:
self.send('%s %s %s' % (command, quote(self.full_ascii_draw),
quote(self.password)))
elif self.mode.name == 'enter_face' and key == '\n':
enter_ascii_art('PLAYER_FACE', 3, 6)
elif self.mode.name == 'enter_design' and key == '\n':
- enter_ascii_art('THING_DESIGN',
- self.game.player.carrying.design[0].y,
- self.game.player.carrying.design[0].x, True)
+ if self.game.player.carrying.type_ == 'Hat':
+ enter_ascii_art('THING_DESIGN',
+ self.game.player.carrying.design[0].y,
+ self.game.player.carrying.design[0].x, True)
+ else:
+ enter_ascii_art('THING_DESIGN',
+ self.game.player.carrying.design[0].y,
+ self.game.player.carrying.design[0].x,
+ True, True)
elif self.mode.name == 'take_thing' and key == '\n':
pick_selectable('PICK_UP')
elif self.mode.name == 'drop_thing' and key == '\n':