X-Git-Url: https://plomlompom.com/repos/todo?a=blobdiff_plain;f=rogue_chat_curses.py;h=fd28049072a3fc62e9a310872ef242b935f91e68;hb=c3ada0bf213337ff2c97e2f33bbf6e6dbedaea38;hp=ff0c46c579559e0faacbb8bee6ff07ac19b01ffc;hpb=3b86e8effe9aa77fa87f86a1057d12d4c8019324;p=plomrogue2 diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index ff0c46c..fd28049 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -786,13 +786,16 @@ class TUI: 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': @@ -1156,19 +1159,43 @@ class TUI: 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))) @@ -1292,9 +1319,15 @@ class TUI: 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':