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()
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
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