Example #1
0
 def prints(self,x,y,char,color,flush):
     libtcod.console_put_char(self.console, x, y, char,
                  libtcod.BKGND_DEFAULT)
     if color:
         libtcod.console_set_char_foreground(self.console, x, y, color)
     if flush:
         self.flush()
Example #2
0
def item_selector(items, default=None, equipped=[], title="INVENTORY"):
  libtcod.console_clear(cons.menu_console)
  libtcod.console_set_default_background(cons.menu_console, libtcod.black)
  libtcod.console_set_default_foreground(cons.menu_console, libtcod.white)
  libtcod.console_rect(cons.menu_console, 0, 0, M.MAP_WIDTH, M.MAP_HEIGHT, True)
  libtcod.console_print_ex(cons.menu_console,
      40, 0, libtcod.BKGND_NONE, libtcod.CENTER, title)
  libtcod.console_print_ex(cons.menu_console,
      1, M.SCREEN_HEIGHT-1, libtcod.LEFT,
    libtcod.BKGND_NONE,
    "[j / k]: Highlight item     [SPACEBAR]: Select     [q]: quit")
  count = 0
  for item in items:
    libtcod.console_print_ex(cons.menu_console,
        1, count+3, libtcod.BKGND_NONE, libtcod.LEFT, item.name)
    if item in equipped:
      libtcod.console_print_ex(cons.menu_console,
          libtcod.console_get_width(cons.menu_console)-1,
          count+3,
          libtcod.BKGND_NONE,
          libtcod.RIGHT,
          "(EQUIPPED)")
    count = count + 1
  if default:
    count = items.index(default)
  else:
    count = count -1
  key = libtcod.console_check_for_keypress(True)
  while not key.vk == libtcod.KEY_SPACE and not ord('q') == key.c:

    for i in range(len(items[count].name)):
      libtcod.console_set_char_background(cons.menu_console,
          i+1,
          count+3,
          libtcod.white)
      libtcod.console_set_char_foreground(cons.menu_console,
          i+1,
          count+3,
          libtcod.black)
    if key.pressed and key.c == ord('k') and count > 0:
      for i in range(len(items[count].name)):
        libtcod.console_set_char_background(cons.menu_console,
            i+1,
            count+3,
            libtcod.black)
        libtcod.console_set_char_foreground(cons.menu_console,
            i+1,
            count+3,
            libtcod.white)
      count = count -1
    elif key.pressed and key.c == ord('j') and count < len(items)-1:
      for i in range(len(items[count].name)):
        libtcod.console_set_char_background(cons.menu_console,
            i+1,
            count+3,
            libtcod.black)
        libtcod.console_set_char_foreground(cons.menu_console,
            i+1,
            count+3,
            libtcod.white)
      count = count +1
    key = libtcod.console_check_for_keypress(True)
    libtcod.console_blit(cons.menu_console,0,0,M.SCREEN_WIDTH,M.SCREEN_HEIGHT,0,0,0,1)
    libtcod.console_flush()

  if ord('q') == key.c:
    count=-1

  return count
Example #3
0
    def mainloop(self):
        while 1:
            self.cons.clear()
            for x in range(self.player.x - SW,self.player.x + SW):
                for y in range(self.player.y - SH,self.player.y + SH):
                    char = self.world.char(x, y)
                    color = self.world.get(x,y).color
                    color2 = libtcod.dark_gray
                    color3 = libtcod.color_lerp(color,color2,
                        (((x - self.player.x)**2) + ((y-self.player.y)**2)) / 2500.0)
                    color = libtcod.color_lerp(color3,libtcod.white,0.1)
                    libtcod.console_put_char(self.cons.console,
                                 (W/2 - self.player.x) + x,
                                 (H/2 - self.player.y) + y,
                                 char,
                                 libtcod.BKGND_DEFAULT)
                    libtcod.console_set_char_foreground(self.cons.console,
                                (W/2 - self.player.x) + x,
                                (H/2 - self.player.y) + y,
                                color)

            self.cons.prints(W/2,H/2,"@",self.player.color,False)

            x = W/2 - (len(self.colors) * 2)
            for i in range(len(self.colors)):
                color = self.colors[i]
                if i == 9:
                    if i == self.player.ccolor:
                        self.cons.printex(x, H - 4, ("%c+%c" % (libtcod.COLCTRL_1,libtcod.COLCTRL_STOP)) * 2, color, False)
                    else:
                        self.cons.printex(x, H - 2, ("%c+%c" % (libtcod.COLCTRL_1,libtcod.COLCTRL_STOP)) * 2, color, False)
                    self.cons.printex(x, H - 3, ("%c+%c" % (libtcod.COLCTRL_1,libtcod.COLCTRL_STOP)) * 2, color, False)
                else:
                    if i == self.player.ccolor:
                        self.cons.printex(x, H - 4, ("%c#%c" % (libtcod.COLCTRL_1,libtcod.COLCTRL_STOP)) * 2, color, False)
                    else:
                        self.cons.printex(x, H - 2, ("%c#%c" % (libtcod.COLCTRL_1,libtcod.COLCTRL_STOP)) * 2, color, False)
                    self.cons.printex(x, H - 3, ("%c#%c" % (libtcod.COLCTRL_1,libtcod.COLCTRL_STOP)) * 2, color, False)
                x += 4
            
            self.cons.printex(0, H - 1, "%c%s%c" % (libtcod.COLCTRL_1,TITLE +
                    " (" + DAY + ")",libtcod.COLCTRL_STOP),libtcod.flame, True)
            
            key = self.cons.key()
        
            if key.c == ord('q'):
                break
            elif self.keyparse(key):
                self.player.move(self.keyparse(key),self.movecheck)
            elif key.c == ord('x'):
                key = libtcod.console_wait_for_keypress(True)
                if self.keyparse(key):
                    yx2 = self.keyparse(key)[0] + self.player.x
                    yy2 = self.keyparse(key)[1] + self.player.y
                    if self.world.get(yx2,yy2).walkable and self.world.get(yx2,yy2).chr != "~":
                        if self.player.ccolor == 9:
                            self.world.setCell(yx2,yy2,Door())
                        else:
                            self.world.setCell(yx2,yy2,Block(self.colors[self.player.ccolor]))
                        self.world.updateC(yx2, yy2)
                    continue

            elif key.c == ord('z'):
                key = libtcod.console_wait_for_keypress(True)
                if self.keyparse(key):
                    yx2 = self.keyparse(key)[0] + self.player.x
                    yy2 = self.keyparse(key)[1] + self.player.y
                    if self.world.get(yx2,yy2).diggable and not self.world.get(yx2,yy2).walkable:
                        self.world.setCell(yx2,yy2,Dirt())
                        self.world.updateC(yx2, yy2)
                    continue

            elif key.c == ord('c'):
                key = libtcod.console_wait_for_keypress(True)
                if self.keyparse(key):
                    yx2 = self.keyparse(key)[0] + self.player.x
                    yy2 = self.keyparse(key)[1] + self.player.y
                    if self.world.get(yx2,yy2).chr == "+" or           \
                     self.world.get(yx2,yy2).chr == "-":
                        self.world.get(yx2,yy2).toggle()
                        self.world.updateC(yx2, yy2)
                    continue