def draw_condition_bar(base): x, y = base.x + len(base.text), base.y hp, max_hp = game.player.hp, game.player.max_hp buf = [] for i in range(1, max_hp + 1): if hp >= i: color = draw.color_char(W.GREEN) else: color = draw.color_char(W.RED) buf.extend([C.Characters.half_box, color]) buf = "".join(buf) W.puttext(x, y, x + max_hp - 1, y, buf)
def update_scrollbar(): Scrollbar.arr[Scrollbar.pos] = [C.Characters.scrollbar.vert,draw.color_char(W.DARKGREY)] scroll_pct = Terminal.scroll_offset / float(len(Terminal.buffer)-1) new_pos = int(math.ceil(scroll_pct * Terminal.height)) new_pos = min(Terminal.height-1, max(0, new_pos)) char = C.Characters.scrollbar.cross if new_pos == 0: char = C.Characters.scrollbar.top if new_pos == Terminal.height-1: char = C.Characters.scrollbar.bottom Scrollbar.arr[new_pos] = [char, draw.color_char(W.WHITE)] Scrollbar.pos = new_pos draw_scrollbar()
def setup_terminal(): Terminal.buffer = [] Terminal.clear_buffer = ''.join([' %s' % draw.color_char(W.BLACK)]*Terminal.height*Terminal.width) Scrollbar.arr = [[C.Characters.scrollbar.vert, draw.color_char(W.DARKGREY)]] * Terminal.height initial = C.initial_msg.splitlines() for line in initial: if line: #this is kinda terrible line_width = Line.parse(line)[0].width space = Terminal.width - line_width pad = space / 2 #log.debug("cw %i lw %i s %i p %i", C.width, line_width, space, pad) add_line(' '*pad + line) else: add_line(line) help = C.help_msg.splitlines() for line in help: add_line(line)
def process(item, tmp_buf=None): if tmp_buf is None: tmp_buf = [] #log.debug('item: %s', item) if hasattr(W, item): #it's a color color[0] = draw.color_char(getattr(W, item)) else: #it's text, process it tmp_buf += [[c, color[0]] for c in item] xpos[0] += len(item) return tmp_buf
def parse(self, raw_msg): try: raw_msg = raw_msg.rstrip('\n') items = filter(None, self.colorRE.split(raw_msg)) except TypeError: print raw_msg raise lines = [] color = [draw.color_char(W.LIGHTGREY)] xpos = [0] def make_line(item): if not item: #colors give None, for example return #make the new line #log.debug('making line %s', repr(item)) buf = ''.join(['%s%s' % (a,b) for a,b in item]) lines.append(Line(buf, len(item))) #clear our pos xpos[0] = 0 def process(item, tmp_buf=None): if tmp_buf is None: tmp_buf = [] #log.debug('item: %s', item) if hasattr(W, item): #it's a color color[0] = draw.color_char(getattr(W, item)) else: #it's text, process it tmp_buf += [[c, color[0]] for c in item] xpos[0] += len(item) return tmp_buf p = None for i in items: p = process(i, p) make_line(p) return lines