Example #1
0
File: hud.py Project: non/ld21
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)
Example #2
0
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()
Example #3
0
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)
Example #4
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
Example #5
0
    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