def see_character_list(self): """ 绘制角色列表 """ py_cmd.clr_cmd() line_feed.draw() title_draw = draw.TitleLineDraw(_("角色列表"), self.width) handle_panel = panel.PageHandlePanel( list(cache.character_data.keys()), see_character_info_panel.GetUpCharacterInfoDraw, 10, 1, self.width, 1, 1, 0, "-", ) while 1: title_draw.draw() self.return_list = [] handle_panel.update() handle_panel.draw() self.return_list.extend(handle_panel.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), self.width) back_draw.draw() self.return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(self.return_list) py_cmd.clr_cmd() if yrn == back_draw.return_text: break
def __init__(self, character_id: int, width: int): """ 初始化绘制对象 """ self.character_id: int = character_id """ 要绘制的角色id """ self.width: int = width """ 面板最大宽度 """ self.draw_list: List[draw.NormalDraw] = [] """ 绘制的文本列表 """ self.return_list: List[str] = [] """ 当前面板监听的按钮列表 """ character_data = cache.character_data[self.character_id] for social_type in game_config.config_social_type: type_config = game_config.config_social_type[social_type] type_draw = draw.LittleTitleLineDraw(type_config.name, self.width, ":") self.draw_list.append(type_draw) now_draw = draw.CenterDraw() if social_type in character_data.social_contact and len( character_data.social_contact[social_type]): character_list = list( character_data.social_contact[social_type]) now_draw = panel.PageHandlePanel(character_list, SeeCharacterInfoByNameDraw, 10, 5, self.width, 1, 1, 0) else: now_draw.text = _("空无一人") now_draw.width = self.width self.draw_list.append(now_draw)
def draw(self): """ 绘制对象 """ character_data: game_type.Character = cache.character_data[0] scene_position = character_data.position scene_position_str = map_handle.get_map_system_path_str_for_list( scene_position) scene_name = cache.scene_data[scene_position_str].scene_name title_draw = draw.TitleLineDraw(scene_name, self.width) handle_panel = panel.PageHandlePanel([], BuyItemByItemNameDraw, 10, 5, self.width, 1, 1, 0) while 1: return_list = [] title_draw.draw() item_list = [ i for i in game_config.config_item if i not in character_data.item ] handle_panel.text_list = item_list handle_panel.update() handle_panel.draw() return_list.extend(handle_panel.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width) back_draw.draw() return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(return_list) if yrn == back_draw.return_text: cache.now_panel_id = constant.Panel.IN_SCENE break
def __init__(self, width: int, write_save: bool): """ 初始化绘制对象 """ self.width: int = width """ 最大绘制宽度 """ self.return_list: List[str] = [] """ 当前面板监听的按钮列表 """ now_list = [(i, write_save) for i in range(normal_config.config_normal.max_save)] self.handle_panel = panel.PageHandlePanel( now_list, SaveInfoDraw, normal_config.config_normal.save_page, 1, width, 1, 1, 0, "=-=") """ 页面控制对象 """
def __init__(self, now_map: List[str], width: int): self.width: int = width """ 绘制的最大宽度 """ self.now_map: List[str] = now_map """ 当前查看的地图坐标 """ self.return_list: List[str] = [] """ 当前面板的按钮返回 """ self.end_index: int = 0 """ 结束按钮id """ self.handle_panel = panel.PageHandlePanel(self.get_path_list(), ScenePathNameMoveDraw, 20, 3, self.width, 1) self.end_index = self.handle_panel.end_index
def change_panel(self, food_type: str): """ 切换当前面板显示的食物类型 Keyword arguments: food_type -- 要切换的食物类型 """ self.now_panel = food_type food_name_list = list( cooking.get_restaurant_food_type_list_buy_food_type( self.now_panel).items()) self.handle_panel = panel.PageHandlePanel(food_name_list, SeeFoodListByFoodNameDraw, 10, 5, self.width, 1, 1, 0)
def change_panel(self, food_type: str): """ 切换当前面板显示的食物类型 Keyword arguments: food_type -- 要切换的食物类型 """ self.now_panel = food_type food_id_list = list( cooking.get_character_food_bag_type_list_buy_food_type( 0, self.now_panel).items()) self.handle_panel = panel.PageHandlePanel(food_id_list, SeeFoodListByFoodNameDraw, 10, 5, window_width, 1, 1, 0)
def draw(self): """ 绘制对象 """ scene_position = cache.character_data[0].position scene_position_str = map_handle.get_map_system_path_str_for_list( scene_position) scene_name = cache.scene_data[scene_position_str].scene_name title_draw = draw.TitleLineDraw(scene_name, self.width) food_type_list = [_("主食"), _("零食"), _("饮品"), _("水果"), _("食材"), _("调料")] self.handle_panel = panel.PageHandlePanel([], SeeFoodListByFoodNameDraw, 10, 5, self.width, 1, 1, 0) while 1: py_cmd.clr_cmd() food_name_list = list( cooking.get_restaurant_food_type_list_buy_food_type( self.now_panel).items()) self.handle_panel.text_list = food_name_list self.handle_panel.update() title_draw.draw() return_list = [] for food_type in food_type_list: if food_type == self.now_panel: now_draw = draw.CenterDraw() now_draw.text = f"{food_type}]" now_draw.style = "onbutton" now_draw.width = self.width / len(food_type_list) now_draw.draw() else: now_draw = draw.CenterButton( f"[{food_type}]", food_type, self.width / len(food_type_list), cmd_func=self.change_panel, args=(food_type, ), ) now_draw.draw() return_list.append(now_draw.return_text) line_feed.draw() line = draw.LineDraw("+", self.width) line.draw() self.handle_panel.draw() return_list.extend(self.handle_panel.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width) back_draw.draw() line_feed.draw() return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(return_list) if yrn == back_draw.return_text: cache.now_panel_id = constant.Panel.IN_SCENE break
def __init__(self, character_id: int, width: int): """ 初始化绘制对象 """ self.character_id: int = character_id """ 绘制的角色id """ self.width: int = width """ 最大绘制宽度 """ self.return_list: List[str] = [] """ 当前面板监听的按钮列表 """ character_data = cache.character_data[character_id] item_list = list(character_data.item) item_panel = panel.PageHandlePanel(item_list, ItemNameDraw, 20, 7, width, 1, 1, 0, "", "|") self.handle_panel = item_panel """ 页面控制对象 """
def draw(self): """ 绘制对象 """ title_draw = draw.TitleLineDraw(_("食物背包"), self.width) food_type_list = [_("主食"), _("零食"), _("饮品"), _("水果"), _("食材"), _("调料")] food_id_list = list( cooking.get_character_food_bag_type_list_buy_food_type( 0, self.now_panel).items()) self.handle_panel = panel.PageHandlePanel(food_id_list, SeeFoodListByFoodNameDraw, 10, 1, window_width, 1, 1, 0) while 1: if cache.now_panel_id != constant.Panel.FOOD_BAG: break self.handle_panel.update() title_draw.draw() line_feed.draw() return_list = [] for food_type in food_type_list: if food_type == self.now_panel: now_draw = draw.CenterDraw() now_draw.text = f"[{food_type}]" now_draw.style = "onbutton" now_draw.width = self.width / len(food_type_list) now_draw.draw() else: now_draw = draw.CenterButton( f"[{food_type}]", food_type, self.width / len(food_type_list), cmd_func=self.change_panel, args=(food_type, ), ) now_draw.draw() return_list.append(now_draw.return_text) line = draw.LineDraw("+", self.width) line.draw() self.handle_panel.draw() return_list.extend(self.handle_panel.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width) back_draw.draw() return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(return_list) if yrn == back_draw.return_text: cache.now_panel_id = constant.Panel.IN_SCENE break
def __init__(self, now_map: List[str], width: int): self.width: int = width """ 绘制的最大宽度 """ self.now_map: List[str] = now_map """ 当前查看的地图坐标 """ self.return_list: List[str] = [] """ 当前面板的按钮返回 """ character_data: game_type.Character = cache.character_data[0] self.handle_panel = panel.PageHandlePanel( list(character_data.collection_character), SocialSceneNameDraw, 10, 2, self.width, 1, ) self.end_index = self.handle_panel.end_index """ 结束按钮id """
def see_food_shop_food_list(self): """ 按食物名字显示食物商店的食物列表 """ title_draw = draw.TitleLineDraw(self.text, window_width) page_handle = panel.PageHandlePanel(self.uid_list, EatFoodByFoodNameDraw, 10, 1, window_width, 1, 1, 0) while 1: if cache.now_panel_id != constant.Panel.FOOD_BAG: break return_list = [] title_draw.draw() page_handle.update() page_handle.draw() return_list.extend(page_handle.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width) back_draw.draw() return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(return_list) if yrn == back_draw.return_text: break
def __init__(self, character_id: int, width: int): """ 初始化绘制对象 """ self.character_id: int = character_id """ 要绘制的角色id """ self.width: int = width """ 面板最大宽度 """ self.return_list: List[str] = [] """ 当前面板监听的按钮列表 """ character_data = cache.character_data[character_id] language_list = list(game_config.config_language.keys()) language_text_list = [] for language in language_list: now_exp = 0 if language in character_data.language: now_exp = character_data.language[language] language_text_list.append((language, now_exp)) self.handle_panel = panel.PageHandlePanel(language_text_list, LanguageNameDraw, 20, 6, width, 1, 1, 0, "") """ 页面控制对象 """
def __init__(self, now_map: List[str], width: int): self.width: int = width """ 绘制的最大宽度 """ self.now_map: List[str] = now_map """ 当前查看的地图坐标 """ self.return_list: List[str] = [] """ 当前面板的按钮返回 """ self.end_index: int = 0 """ 结束按钮id """ character_data: game_type.Character = cache.character_data[0] class_room_path = map_handle.get_map_system_path_for_str( character_data.classroom) office_room_path = character_data.officeroom square_path = ["2"] swim_path = ["14", "0"] big_restaurant_path = ["10", "0", "0"] small_restaurant_path = ["16", "0", "0"] multi_media_class_room_a_path = ["1", "3", "1"] multi_media_class_room_b_path = ["1", "3", "2"] music_class_room_path = ["1", "4", "1"] shop_path = ["11"] dormitory_path = map_handle.get_map_system_path_for_str( character_data.dormitory) path_list = [ dormitory_path, class_room_path, office_room_path, square_path, swim_path, big_restaurant_path, small_restaurant_path, multi_media_class_room_a_path, multi_media_class_room_b_path, music_class_room_path, shop_path, ] path_list = [i for i in path_list if len(i)] self.handle_panel = panel.PageHandlePanel(path_list, ScenePathNameMoveDraw, 20, 3, self.width, 1) self.end_index = self.handle_panel.end_index
def __init__(self, now_map: List[str], width: int): self.width: int = width """ 绘制的最大宽度 """ self.now_map: List[str] = now_map """ 当前查看的地图坐标 """ self.return_list: List[str] = [] """ 当前面板的按钮返回 """ character_data: game_type.Character = cache.character_data[0] self.handle_panel = panel.PageHandlePanel( [ k for k in character_data.social_contact_data if character_data.social_contact_data[k] ], SocialSceneNameDraw, 20, 3, self.width, 1, ) self.end_index = self.handle_panel.end_index """ 结束按钮id """
def see_food_shop_food_list(self): """ 按食物名字显示食物商店的食物列表 """ title_draw = draw.TitleLineDraw(self.text, window_width) now_food_list = [(self.cid, x) for x in cache.restaurant_data[self.cid]] page_handle = panel.PageHandlePanel(now_food_list, BuyFoodByFoodNameDraw, 10, 1, window_width, 1, 1, 0) while 1: return_list = [] title_draw.draw() page_handle.update() page_handle.draw() return_list.extend(page_handle.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width) back_draw.draw() return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(return_list) if yrn == back_draw.return_text: break page_handle.text_list = [(self.cid, x) for x in cache.restaurant_data[self.cid]]
def draw(self): """ 绘制对象 """ title_draw = draw.TitleLineDraw(_("场景"), self.width) character_data: game_type.Character = cache.character_data[0] scene_path_str = map_handle.get_map_system_path_str_for_list(character_data.position) scene_data: game_type.Scene = cache.scene_data[scene_path_str] character_list = list(scene_data.character_list) character_list.remove(0) if not character_data.target_character_id and len(character_list): character_data.target_character_id = character_list[0] while 1: game_time_draw = game_info_panel.GameTimeInfoPanel(self.width / 2) game_time_draw.now_draw.width = len(game_time_draw) position_text = attr_text.get_scene_path_text(character_data.position) now_position_text = _("当前位置:") + position_text now_position_draw = draw.NormalDraw() now_position_draw.text = now_position_text now_position_draw.width = self.width - len(game_time_draw) meet_draw = draw.NormalDraw() meet_draw.text = _("你在这里遇到了:") meet_draw.width = self.width character_list = list(scene_data.character_list) character_list.remove(0) character_handle_panel = panel.PageHandlePanel( character_list, see_character_info_panel.SeeCharacterInfoByNameDrawInScene, 10, 5, self.width, 1, 0, null_button_text=character_data.target_character_id, ) see_instruct_panel = SeeInstructPanel(self.width) cache.wframe_mouse.w_frame_skip_wait_mouse = 0 if cache.now_panel_id != constant.Panel.IN_SCENE: break character_handle_panel.null_button_text = character_data.target_character_id line_feed.draw() title_draw.draw() game_time_draw.draw() now_position_draw.draw() line_feed.draw() ask_list = [] if len(scene_data.character_list) > 1: meet_draw.draw() line_feed.draw() character_handle_panel.update() character_handle_panel.draw() ask_list.extend(character_handle_panel.return_list) line_draw = draw.LineDraw("-.-", self.width) line_draw.draw() character_info_draw_list = [] if character_data.target_character_id: character_head_draw = see_character_info_panel.CharacterInfoHead( character_data.cid, self.width ) target_head_draw = see_character_info_panel.CharacterInfoHead( character_data.target_character_id, self.width ) character_head_draw_list = [y for x in character_head_draw.draw_list for y in x] character_head_draw_list[0].text += " " + character_head_draw_list[2].text del character_head_draw_list[2] target_head_draw_list = [y for x in target_head_draw.draw_list for y in x] target_head_draw_list[0].text += " " + target_head_draw_list[2].text del target_head_draw_list[2] character_info_draw_list = list(zip(character_head_draw_list, target_head_draw_list)) else: character_head_draw = see_character_info_panel.CharacterInfoHead( character_data.cid, self.width ) character_info_draw_list = character_head_draw.draw_list for value_tuple in character_info_draw_list: for value in value_tuple: value.draw() line_feed.draw() character_status_draw_list = [] if character_data.target_character_id: character_status_draw = see_character_info_panel.SeeCharacterStatusPanel( character_data.cid, self.width / 2, 3, 0 ) target_status_draw = see_character_info_panel.SeeCharacterStatusPanel( character_data.target_character_id, self.width / 2 - 1, 3, 0 ) character_status_draw_list = list( zip(character_status_draw.draw_list, target_status_draw.draw_list) ) else: character_status_draw = see_character_info_panel.SeeCharacterStatusPanel( character_data.cid, self.width, 5 ) character_status_draw_list = character_status_draw.draw_list for label in character_status_draw_list: if isinstance(label, tuple): index = 0 for value in label: if isinstance(value, list): for value_draw in value: value_draw.draw() else: value.line_feed = 0 value.draw() if not index: fix_draw = draw.NormalDraw() fix_draw.width = 1 fix_draw.text = "|" fix_draw.draw() index = 1 line_feed.draw() elif isinstance(label, list): for value in label: value.draw() line_feed.draw() else: label.draw() see_instruct_panel.draw() ask_list.extend(see_instruct_panel.return_list) target_id = character_data.target_character_id flow_handle.askfor_all(ask_list) py_cmd.clr_cmd()
def draw(self): """ 绘制对象 """ character_data: game_type.Character = cache.character_data[0] title_draw = draw.TitleLineDraw(_("场景"), self.width) scene_path_str = map_handle.get_map_system_path_str_for_list(character_data.position) scene_data: game_type.Scene = cache.scene_data[scene_path_str] character_handle_panel = panel.PageHandlePanel( [], see_character_info_panel.SeeCharacterInfoByNameDrawInScene, 10, 5, self.width, 1, 0, len(constant.handle_instruct_name_data), null_button_text=character_data.target_character_id, ) while 1: if character_data.dead: cache.wframe_mouse.w_frame_skip_wait_mouse = 0 now_draw = draw.LineFeedWaitDraw() now_draw.text = _("已死亡!") now_draw.width = self.width now_draw.draw() continue character_set = scene_data.character_list.copy() character_set.remove(0) if cache.is_collection: character_list = [i for i in character_set if i in character_data.collection_character] else: character_list = list(character_set) character_handle_panel.text_list = character_list if character_data.target_character_id not in scene_data.character_list: character_data.target_character_id = 0 if not character_data.target_character_id and len(character_list): character_data.target_character_id = character_list[0] game_time_draw = game_info_panel.GameTimeInfoPanel(self.width / 2) game_time_draw.now_draw.width = len(game_time_draw) position_text = attr_text.get_scene_path_text(character_data.position) now_position_text = _("当前位置:") + position_text now_position_draw = draw.NormalDraw() now_position_draw.text = now_position_text now_position_draw.width = self.width - len(game_time_draw) meet_draw = draw.NormalDraw() meet_draw.text = _("你在这里遇到了:") meet_draw.width = self.width see_instruct_panel = SeeInstructPanel(self.width) cache.wframe_mouse.w_frame_skip_wait_mouse = 0 if cache.now_panel_id != constant.Panel.IN_SCENE: break character_handle_panel.null_button_text = character_data.target_character_id line_feed.draw() title_draw.draw() game_time_draw.draw() now_position_draw.draw() line_feed.draw() ask_list = [] if len(character_list) and character_data.target_character_id not in character_list: character_data.target_character_id = character_list[0] if not len(character_list): character_data.target_character_id = 0 if len(character_list): meet_draw.draw() line_feed.draw() character_handle_panel.update() character_handle_panel.draw() ask_list.extend(character_handle_panel.return_list) line_draw = draw.LineDraw("-.-", self.width) line_draw.draw() character_info_draw_list = [] if character_data.target_character_id: character_head_draw = see_character_info_panel.CharacterInfoHead( character_data.cid, self.width ) target_head_draw = see_character_info_panel.CharacterInfoHead( character_data.target_character_id, self.width ) character_head_draw_list = [y for x in character_head_draw.draw_list for y in x] character_head_draw_list[0].text += " " + character_head_draw_list[2].text del character_head_draw_list[2] target_head_draw_list = [y for x in target_head_draw.draw_list for y in x] target_head_draw_list[0].text += " " + target_head_draw_list[2].text del target_head_draw_list[2] character_info_draw_list = list(zip(character_head_draw_list, target_head_draw_list)) else: character_head_draw = see_character_info_panel.CharacterInfoHead( character_data.cid, self.width ) character_info_draw_list = character_head_draw.draw_list for value_tuple in character_info_draw_list: for value in value_tuple: value.draw() line_feed.draw() character_clothing_draw_list = [] if character_data.target_character_id: character_clothing_draw = see_character_info_panel.CharacterWearClothingList( 0, self.width / 2, 2 ) target_clothing_draw = see_character_info_panel.CharacterWearClothingList( character_data.target_character_id, self.width / 2 - 1, 2 ) now_line = len(character_clothing_draw.draw_list) if len(target_clothing_draw.draw_list) > now_line: now_line = len(target_clothing_draw.draw_list) for i in range(now_line): c_draw = None if i in range(len(character_clothing_draw.draw_list)): c_draw = character_clothing_draw.draw_list[i] else: c_draw = draw.NormalDraw() c_draw.text = " " * int(self.width / 2) c_draw.width = self.width / 2 t_draw = None if i in range(len(target_clothing_draw.draw_list)): t_draw = target_clothing_draw.draw_list[i] else: t_draw = draw.NormalDraw() t_draw.text = " " * int(self.width / 2 - 1) t_draw.width = self.width / 2 - 1 character_clothing_draw_list.append((c_draw, t_draw)) else: character_clothing_draw_list = see_character_info_panel.CharacterWearClothingList( 0, self.width, 5 ).draw_list for label in character_clothing_draw_list: if isinstance(label, tuple): index = 0 for value in label: if isinstance(value, list): for value_draw in value: value_draw.draw() else: value.line_feed = 0 value.draw() if not index: fix_draw = draw.NormalDraw() fix_draw.width = 1 fix_draw.text = "|" fix_draw.draw() index = 1 line_feed.draw() elif isinstance(label, list): for value in label: value.draw() line_feed.draw() else: label.draw() character_status_draw_list = [] if character_data.target_character_id: character_status_draw = see_character_info_panel.SeeCharacterStatusPanel( character_data.cid, self.width / 2, 3, 0 ) target_status_draw = see_character_info_panel.SeeCharacterStatusPanel( character_data.target_character_id, self.width / 2 - 1, 3, 0 ) now_line = len(character_status_draw.draw_list) if len(target_status_draw.draw_list) > now_line: now_line = len(target_status_draw.draw_list) for i in range(now_line): c_draw = None if i in range(len(character_status_draw.draw_list)): c_draw = character_status_draw.draw_list[i] else: c_draw = draw.NormalDraw() c_draw.text = " " * int(self.width / 2) c_draw.width = self.width / 2 t_draw = None if i in range(len(target_status_draw.draw_list)): t_draw = target_status_draw.draw_list[i] else: t_draw = draw.NormalDraw() t_draw.text = " " * int(self.width / 2 - 1) t_draw.width = self.width / 2 - 1 character_status_draw_list.append((c_draw, t_draw)) else: character_status_draw = see_character_info_panel.SeeCharacterStatusPanel( character_data.cid, self.width, 6 ) character_status_draw_list = character_status_draw.draw_list for label in character_status_draw_list: if isinstance(label, tuple): index = 0 for value in label: if isinstance(value, list): for value_draw in value: value_draw.draw() else: value.line_feed = 0 value.draw() if not index: fix_draw = draw.NormalDraw() fix_draw.width = 1 fix_draw.text = "|" fix_draw.draw() index = 1 line_feed.draw() elif isinstance(label, list): for value in label: value.draw() line_feed.draw() else: label.draw() see_instruct_panel.draw() ask_list.extend(see_instruct_panel.return_list) target_id = character_data.target_character_id flow_handle.askfor_all(ask_list) py_cmd.clr_cmd()