def __init__(self, text: int, width: int, is_button: bool, num_button: bool, button_id: int): """ 初始化绘制对象 """ self.draw_text = "" """ 场景路径绘制文本 """ self.width: int = width """ 最大宽度 """ self.is_button: bool = is_button """ 绘制按钮 """ self.num_button: bool = num_button """ 绘制数字按钮 """ self.button_id: int = button_id """ 数字按钮的id """ self.button_return: str = str(button_id) """ 按钮返回值 """ self.draw_list: List[draw.NormalDraw] = [] """ 绘制的对象列表 """ character_data: game_type.Character = cache.character_data[text] self.scene_path: List[str] = character_data.position """ 角色所在场景 """ path_text = attr_text.get_scene_path_text(self.scene_path) button_text = f"{character_data.name}:[{path_text}]" button_text = text_handle.align(button_text, text_width=width) name_draw = draw.Button(button_text, character_data.name, cmd_func=self.move_now) name_draw.width = width self.now_draw = name_draw """ 绘制的对象 """ self.button_return = character_data.name
def __init__(self, text: List[str], width: int, is_button: bool, num_button: bool, button_id: int): """ 初始化绘制对象 """ self.draw_text = "" """ 场景路径绘制的文本 """ self.width: int = width """ 最大宽度 """ self.is_button: bool = is_button """ 绘制按钮 """ self.num_button: bool = num_button """ 绘制数字按钮 """ self.button_id: int = button_id """ 数字按钮的id """ self.button_return: str = str(button_id) """ 按钮返回值 """ self.draw_list: List[draw.NormalDraw] = [] """ 绘制的对象列表 """ self.scene_path: List[str] = text """ 对应场景路径 """ path_text = attr_text.get_scene_path_text(text) button_text = f"[{path_text}]" button_text = text_handle.align(button_text, text_width=width) name_draw = draw.Button(button_text, path_text, cmd_func=self.move_now) self.draw_text = button_text name_draw.width = width self.now_draw = name_draw """ 绘制的对象 """ self.button_return = path_text
def draw_save_handle(self): """ 处理读写存档 """ py_cmd.clr_cmd() line_feed.draw() if self.save_exist_judge: now_ask_list = [] now_id = 0 load_save_button = draw.Button(text_handle.id_index(now_id) + _("读取"), str(now_id), cmd_func=self.load_save) load_save_button.width = self.width load_save_button.draw() line_feed.draw() now_ask_list.append(str(now_id)) now_id += 1 if self.write_save: re_write_save_button = draw.Button( text_handle.id_index(now_id) + _("覆盖"), str(now_id), cmd_func=save_handle.establish_save, args=(self.text, ), ) re_write_save_button.width = self.width re_write_save_button.draw() now_ask_list.append(str(now_id)) line_feed.draw() now_id += 1 delete_save_button = draw.Button(text_handle.id_index(now_id) + _("删除"), str(now_id), cmd_func=self.delete_save) delete_save_button.width = self.width delete_save_button.draw() now_ask_list.append(str(now_id)) now_id += 1 line_feed.draw() back_button = draw.Button( text_handle.id_index(now_id) + _("返回"), str(now_id)) back_button.width = self.width back_button.draw() line_feed.draw() now_ask_list.append(str(now_id)) flow_handle.askfor_all(now_ask_list) py_cmd.clr_cmd() else: save_handle.establish_save(self.text)
def __init__(self, text: str, width: int, is_button: bool, num_button: bool, button_id: int): """ 初始化绘制对象 """ self.language_id: int = text[0] """ 语言id """ self.language_exp: int = text[1] """ 语言经验 """ self.draw_text: str = "" """ 语言名绘制文本 """ self.width: int = width """ 最大宽度 """ self.is_button: bool = is_button """ 绘制按钮 """ self.num_button: bool = num_button """ 绘制数字按钮 """ self.button_id: int = button_id """ 数字按钮的id """ self.button_return: str = str(button_id) """ 按钮返回值 """ self.draw_list: List[draw.NormalDraw] = [] """ 绘制的对象列表 """ language_config = game_config.config_language[self.language_id] language_name = language_config.name name_draw = draw.NormalDraw() name_draw.width = self.width if is_button: button_text = "" if num_button: index_text = text_handle.id_index(button_id) button_text = f"{index_text} {language_name}:" name_draw = draw.Button(button_text, self.button_return, cmd_func=self.see_language_info) else: button_text = f"{language_name}:" name_draw = draw.Button(button_text, language_name, cmd_func=self.see_language_info) self.button_return = language_name else: name_draw.text = f"{language_name}:" level_draw = draw.ExpLevelDraw(self.language_exp) name_draw.width = self.width - len(level_draw) self.draw_list = [name_draw, level_draw]
def draw(self): """ 绘制对象 """ if self.is_button and (self.save_exist_judge or self.write_save): now_draw = draw.Button(self.draw_text, self.button_return, cmd_func=self.draw_save_handle) else: now_draw = draw.NormalDraw() now_draw.text = self.draw_text now_draw.width = self.width now_draw.draw()
def draw(self): """ 绘制道具 """ if self.is_button: now_draw = draw.Button(self.draw_text, self.button_return, cmd_func=self.draw_item_info) else: now_draw = draw.NormalDraw() now_draw.text = self.draw_text now_draw.width = self.width now_draw.draw()
def draw(self): """ 绘制面板 """ character_data = cache.character_data[self.character_id] title_draw = draw.TitleLineDraw(_("人物服装"), self.width) title_draw.draw() draw_list = [] self.return_list = [] id_width = 0 for clothing_type in game_config.config_clothing_type: type_data = game_config.config_clothing_type[clothing_type] type_draw = draw.LittleTitleLineDraw(type_data.name, self.width, ":") draw_list.append(type_draw) if clothing_type in character_data.put_on and isinstance( character_data.put_on[clothing_type], UUID): now_draw = ClothingInfoDrawPanel( self.character_id, clothing_type, character_data.put_on[clothing_type], self.width, 1, len(self.return_list), ) self.return_list.append(str(len(self.return_list))) now_id_width = text_handle.get_text_index( now_draw.text_list[0]) if now_id_width > id_width: id_width = now_id_width else: now_text = _("未穿戴") if not self.character_id: now_id = len(self.return_list) now_id_text = text_handle.id_index(now_id) now_width = self.width - len(now_id_text) now_text = text_handle.align(now_text, "center", text_width=now_width) now_text = f"{now_id_text}{now_text}" now_draw = draw.Button(now_text, str(now_id), cmd_func=self.see_clothing_list, args=(clothing_type, )) self.return_list.append(str(now_id)) else: now_draw = draw.CenterDraw() now_draw.text = now_text now_draw.width = self.width draw_list.append(now_draw) draw_list.append(line_feed) for value in draw_list: if "id_width" in value.__dict__: value.id_width = id_width value.draw()
def draw(self): """ 绘制对象 """ self.text_list[1] = text_handle.align( self.text_list[1], "center", text_width=self.width - self.id_width ) text_width = text_handle.get_text_index(self.text_list[0]) self.text_list[0] += " " * (self.id_width - text_width) now_text = f"{self.text_list[0]}{self.text_list[1]}" now_text = now_text.rstrip() now_text = text_handle.align(now_text, "center", text_width=self.width) now_draw = draw.Button(now_text, str(self.button_id), cmd_func=self.change_clothing) now_draw.width = self.width now_draw.draw()
def draw(self): self.text_list[1] = text_handle.align(self.text_list[1], "center", 0, 1, self.width - self.id_width) text_width = text_handle.get_text_index(self.text_list[0]) if text_width < self.id_width: self.text_list[0] += " " * (self.id_width - text_width) now_text = f"{self.text_list[0]}{self.text_list[1]}" if self.draw_button: now_draw = draw.Button(now_text, str(self.button_id), cmd_func=self.see_clothing_info) else: now_draw = draw.NormalDraw() now_draw.text = now_text now_draw.width = self.width now_draw.draw()
def set( self, button_list: List[str], return_list: List[str], normal_style="standard", onbutton_style="onbutton", ): """ 设置按钮和返回列表 Keyword arguments: button_list -- 按钮列表 return_list -- 返回列表 normal_style -- 按钮通常样式 onbutton_style -- 鼠标悬停时样式 """ for i in range(len(button_list)): if i <= self.max_height: draw_button = draw.Button(button_list[i], return_list[i], normal_style, onbutton_style) draw_button.width = self.width self.button_list.append(draw_button) self.return_list[return_list[i]] = button_list[i]
def draw(self): """ 绘制对象 """ move_menu_panel_data = { 0: MapSceneNameDraw(self.now_map, self.width), 1: GlobalSceneNamePanel(self.now_map, self.width), 2: SocialSceneNamePanel(self.now_map, self.width), 3: CollectionSceneNamePanel(self.now_map, self.width), } move_menu_panel = MoveMenuPanel(self.width) while 1: line_feed.draw() if cache.now_panel_id != constant.Panel.SEE_MAP: break map_path_str = map_handle.get_map_system_path_str_for_list( self.now_map) map_data: game_type.Map = cache.map_data[map_path_str] map_name = attr_text.get_map_path_text(self.now_map) title_draw = draw.TitleLineDraw(_("移动:") + map_name, self.width) title_draw.draw() now_draw_list: game_type.MapDraw = map_data.map_draw character_data: game_type.Character = cache.character_data[0] character_scene_id = map_handle.get_map_scene_id_for_scene_path( self.now_map, character_data.position) return_list = [] index = 0 for now_draw_line in now_draw_list.draw_text: fix_width = int((self.width - now_draw_line.width) / 2) fix_text = " " * fix_width fix_draw = draw.NormalDraw() fix_draw.text = fix_text fix_draw.width = fix_width fix_draw.draw() for draw_text in now_draw_line.draw_list: if draw_text.is_button and draw_text.text != character_scene_id: scene_path = map_handle.get_scene_path_for_map_scene_id( self.now_map, draw_text.text) now_draw = draw.Button(draw_text.text, draw_text.text, cmd_func=self.move_now, args=(scene_path, )) now_draw.width = self.width now_draw.draw() return_list.append(now_draw.return_text) else: now_draw = draw.NormalDraw() now_draw.text = draw_text.text now_draw.width = self.width if draw_text.is_button and draw_text.text == character_scene_id: now_draw.style = "nowmap" now_draw.draw() line_feed.draw() path_edge = map_data.path_edge scene_path = path_edge[character_scene_id].copy() if character_scene_id in scene_path: del scene_path[character_scene_id] scene_path_list = list(scene_path.keys()) if len(scene_path_list): line = draw.LineDraw(".", self.width) line.draw() message_draw = draw.NormalDraw() message_draw.text = _("你可以从这里前往:\n") message_draw.width = self.width message_draw.draw() draw_list = [] for scene in scene_path_list: load_scene_data = map_handle.get_scene_data_for_map( map_path_str, scene) now_scene_path = map_handle.get_map_system_path_for_str( load_scene_data.scene_path) now_draw = draw.CenterButton( f"[{load_scene_data.scene_name}]", load_scene_data.scene_name, self.width / 4, cmd_func=self.move_now, args=(now_scene_path, ), ) return_list.append(now_draw.return_text) draw_list.append(now_draw) draw_group = value_handle.list_of_groups(draw_list, 4) for now_draw_list in draw_group: for now_draw in now_draw_list: now_draw.draw() line_feed.draw() scene_id_list = list(path_edge.keys()) now_index = len(scene_id_list) index = now_index move_menu_panel.update() move_menu_panel.draw() return_list.extend(move_menu_panel.return_list) if move_menu_panel.now_type in move_menu_panel_data: now_move_menu = move_menu_panel_data[move_menu_panel.now_type] now_move_menu.update(self.now_map, index) now_move_menu.draw() now_index = now_move_menu.end_index + 1 return_list.extend(now_move_menu.return_list) line = draw.LineDraw("=", self.width) line.draw() if self.now_map != []: now_id = text_handle.id_index(now_index) now_text = now_id + _("查看上级地图") up_button = draw.CenterButton(now_text, str(now_index), self.width / 3, cmd_func=self.up_map) up_button.draw() return_list.append(up_button.return_text) now_index += 1 else: now_draw = draw.NormalDraw() now_draw.text = " " * int(self.width / 3) now_draw.width = self.width / 3 now_draw.draw() back_id = text_handle.id_index(now_index) now_text = back_id + _("返回") back_button = draw.CenterButton(now_text, str(now_index), self.width / 3) back_button.draw() return_list.append(back_button.return_text) now_index += 1 character_map = map_handle.get_map_for_path( character_data.position) if character_map != self.now_map: now_id = text_handle.id_index(now_index) now_text = now_id + _("查看下级地图") down_button = draw.CenterButton(now_text, str(now_index), self.width / 3, cmd_func=self.down_map) down_button.draw() return_list.append(down_button.return_text) line_feed.draw() yrn = flow_handle.askfor_all(return_list) py_cmd.clr_cmd() if yrn == back_button.return_text: cache.now_panel_id = constant.Panel.IN_SCENE break