def see_character_social_contact_panel(character_id: int): """ 查看角色社交信息面板 Keyword arguments: character_id -- 角色Id """ social_contact_text_data = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "144" ) character_social_contact = cache_contorl.character_data[ character_id ].social_contact for social in social_contact_text_data: era_print.son_title_print(social_contact_text_data[social]) if character_social_contact[social] == {}: era_print.normal_print( text_loading.get_text_data( constant.FilePath.MESSAGE_PATH, "40" ) ) else: size = 10 if len(character_social_contact[social]) < 10: size = len(character_social_contact[social]) name_list = [ cache_contorl.character_data[character_id].name for character_id in character_social_contact[social] ] era_print.list_print(name_list, size, "center")
def see_scene_character_list_panel() -> list: """ 当前场景角色列表面板 """ input_s = [] see_character_text = text_loading.get_text_data( constant.FilePath.MESSAGE_PATH, "26") era_print.normal_print(see_character_text) era_print.line_feed_print() scene_path = cache_contorl.character_data["character"][0].position scene_path_str = map_handle.get_map_system_path_str_for_list(scene_path) name_list = map_handle.get_scene_character_name_list(scene_path_str, True) name_list = get_now_page_name_list(name_list) character_id = cache_contorl.character_data["character_id"] character_data = cache_contorl.character_data["character"][character_id] character_name = character_data.name input_s = cmd_button_queue.option_str( "", cmd_column=10, cmd_size="center", askfor=False, cmd_list_data=name_list, null_cmd=character_name, ) return input_s
def see_food_shop_tail_cmd( start_id: int, max_page: int, type_judge: bool ) -> list: """ 食物商店底部控制面板 Keyword arguments: start_id -- 按钮的id的开始位置 max_page -- 最大页数 type_judge -- 是否是食物类型列表 Return arguments: list -- 监听的按钮列表 """ now_page_id = int(cache_contorl.panel_state["SeeFoodShopListByFoodPanel"]) if type_judge: now_page_id = int( cache_contorl.panel_state["SeeFoodShopListByFoodTypePanel"] ) page_text = f"({now_page_id}/{max_page})" era_print.page_line_print("-", page_text) era_print.normal_print("\n") cmd_list = text_loading.get_text_data( constant.FilePath.CMD_PATH, "changeSavePage" ) yrn = cmd_button_queue.option_int( None, 3, askfor=False, cmd_size="center", start_id=start_id, cmd_list_data=cmd_list, ) return yrn
def see_food_shop_list(type_list: dict) -> list: """ 用于查看餐馆出售食物种类的面板 Keyword arguments: type_list -- 种类列表 Return arguments: list -- 监听的按钮列表 """ era_print.restart_line_print("+") now_page_id = int(cache_contorl.panel_state["SeeFoodShopListByFoodPanel"]) now_page_max = game_config.food_shop_type_max now_page_start_id = now_page_id * now_page_max now_page_end_id = now_page_start_id + now_page_max if not len(type_list): era_print.normal_print( text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "34") ) era_print.line_feed_print() return [] if now_page_end_id > len(type_list): now_page_end_id = len(type_list) text_list = [] tag_text_index = 0 for i in range(now_page_start_id, now_page_end_id): food_name = type_list[list(type_list.keys())[i]] text_list.append(food_name) tag_text_index += 1 return cmd_button_queue.option_int( "", 4, "left", 1, 0, "center", 0, text_list )
def own_charcter_move(target_scene: list): """ 主角寻路至目标场景 Keyword arguments: target_scene -- 寻路目标场景(在地图系统下的绝对坐标) """ ( move_now, now_path_list, now_target_position, now_need_time, ) = character_move(0, target_scene) if move_now == "Null": null_message = text_loading.get_text_data( constant.FilePath.MESSAGE_PATH, "30" ) era_print.normal_print(null_message) else: map_handle.character_move_scene( cache_contorl.character_data[0].position, now_target_position, 0, ) game_time.sub_time_now(now_need_time) if cache_contorl.character_data[0].position != target_scene: own_charcter_move(target_scene) update.game_update_flow() cache_contorl.character_data[0].target_character_id = 0 cache_contorl.now_flow_id = "in_scene"
def see_character_clothes_info(character_id: str): """ 查看角色服装列表顶部面板 Keyword arguments: character_id -- 角色id """ scene_info = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "101") era_print.little_title_print(scene_info) character_info = attr_text.get_character_abbreviations_info(character_id) era_print.normal_print(character_info)
def see_character_equipment_panel(character_id: int): """ 查看角色装备面板 Keyword arguments: character_id -- 角色Id """ era_print.little_title_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "37")) era_print.normal_print( attr_text.get_see_attr_panel_head_character_info(character_id)) change_clothes_panel.see_character_wear_clothes(character_id, False)
def see_clothing_info_panel( character_id: str, clothing_type: str, clothing_id: str, wear_clothing_judge: bool, ): """ 查看服装详细信息面板 Keyword arguments: character_id -- 角色id clothing_type -- 服装类型 clothing_id -- 服装id """ era_print.little_title_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "126") ) clothing_data = cache_contorl.character_data[character_id].clothing[ clothing_type ][clothing_id] info_list = [] clothing_name = clothing_data["Name"] if wear_clothing_judge: clothing_name += " " + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "125" ) info_list.append( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "128") + clothing_name ) clothing_type_text = clothing.clothing_type_text_list[clothing_type] info_list.append( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "129") + clothing_type_text ) evaluation_text = ( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "131") + clothing_data["Evaluation"] ) info_list.append(evaluation_text) era_print.list_print(info_list, 3, "center") era_print.son_title_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "130") ) tag_text_list = [] for tag in clothing.clothing_tag_text_list: tag_text = clothing.clothing_tag_text_list[tag] tag_text += str(clothing_data[tag]) tag_text_list.append(tag_text) era_print.list_print(tag_text_list, 4, "center") era_print.son_title_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "127") ) era_print.normal_print(clothing_data["Describe"])
def print_map(map_path: list) -> list: """ 按地图路径绘制地图 Ketword arguments: map_path -- 地图路径 """ map_path_str = get_map_system_path_str_for_list(map_path) map_draw = get_map_draw_for_map_path(map_path_str) character_position = cache_contorl.character_data["character"][0].position character_now_scene_id = get_scene_id_in_map_for_scene_path_on_map_path( character_position, map_path ) input_s = [] map_y_list = map_draw["Draw"] map_x_cmd_list_data = map_draw["Cmd"] map_x_cmd_id_list_data = map_draw["CmdId"] for map_x_list_id in range(len(map_y_list)): map_x_list = map_y_list[map_x_list_id] now_cmd_list = map_x_cmd_list_data[map_x_list_id] now_cmd_id_list = map_x_cmd_id_list_data[map_x_list_id] cmd_list_str = "".join(now_cmd_list) era_print.normal_print( text_handle.align(map_x_list + cmd_list_str, "center", True), rich_text_judge=False, ) i = 0 while i in range(len(map_x_list)): if now_cmd_id_list != []: while i == now_cmd_id_list[0]: if now_cmd_list[0] == character_now_scene_id: era_print.normal_print( now_cmd_list[0], "nowmap", rich_text_judge=False ) input_s.append(None) else: py_cmd.pcmd(now_cmd_list[0], now_cmd_list[0], None) input_s.append(now_cmd_list[0]) now_cmd_list = now_cmd_list[1:] now_cmd_id_list = now_cmd_id_list[1:] if now_cmd_list == []: break if now_cmd_id_list != []: era_print.normal_print(map_x_list[i : now_cmd_id_list[0]]) i = now_cmd_id_list[0] else: era_print.normal_print(map_x_list[i:]) i = len(map_x_list) else: era_print.normal_print(map_x_list[i:]) i = len(map_x_list) era_print.line_feed_print() return input_s
def jump_character_list_page_panel() -> str: """ 角色列表页面跳转控制面板 """ message_text = text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "32") name_list_max = int(game_config.in_scene_see_player_max) character_max = character_handle.get_character_index_max() page_max = math.floor(character_max / name_list_max) era_print.normal_print("\n" + message_text + "(0-" + str(page_max) + ")") ans = input_queue.wait_input(0, page_max) era_print.normal_print(ans) return ans
def see_scene_panel(): """ 当前场景信息面板 """ title_text = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "75") era_print.little_title_print(title_text) time_text = game_time.get_date_text() era_print.normal_print(time_text) era_print.normal_print(" ") scene_path = cache_contorl.character_data["character"][0].position scene_path_str = map_handle.get_map_system_path_str_for_list(scene_path) map_list = map_handle.get_map_hierarchy_list_for_scene_path(scene_path, []) map_path_text = "" map_list.reverse() for now_map in map_list: now_map_map_system_str = map_handle.get_map_system_path_str_for_list( now_map) map_name = cache_contorl.map_data[now_map_map_system_str]["MapName"] map_path_text += map_name + "-" scene_data = cache_contorl.scene_data[scene_path_str].copy() scene_name = map_path_text + scene_data["SceneName"] scene_info_head = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "76") scene_info = scene_info_head + scene_name era_print.normal_print(scene_info) panel_state = cache_contorl.panel_state["SeeSceneCharacterListPage"] switch = panel_state_on_text if panel_state == "0": switch = panel_state_off_text scene_character_list = scene_data["SceneCharacterData"] if len(scene_character_list) > 1: era_print.normal_print(" ") py_cmd.pcmd(switch, "SeeSceneCharacterListPage") era_print.little_line_print()
def main_frame_panel() -> list: """ 游戏主菜单 """ cmd_list = [] character_id = cache_contorl.character_data[0].target_character_id character_data = cache_contorl.character_data[character_id] title_text = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "64") era_print.little_title_print(title_text) date_text = game_time.get_date_text() era_print.normal_print(date_text) era_print.normal_print(" ") week_date_text = game_time.get_week_day_text() era_print.normal_print(week_date_text) era_print.normal_print(" ") character_name = character_data.name py_cmd.pcmd(character_name, character_name, None) cmd_list.append(character_name) era_print.normal_print(" ") gold_text = attr_text.get_gold_text(character_id) era_print.line_feed_print(gold_text) attr_print.print_hp_and_mp_bar(character_id) main_menu_text = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "68") era_print.son_title_print(main_menu_text) era_print.line_feed_print("\n") ask_for_main_menu = cmd_button_queue.option_int(constant.CmdMenu.MAIN_MENU, 3, "left", askfor=False, cmd_size="center") cmd_list = cmd_list + ask_for_main_menu system_menu_text = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "69") era_print.son_title_print(system_menu_text) era_print.line_feed_print() system_menu_start_id = len(ask_for_main_menu) ask_for_system_menu = cmd_button_queue.option_int( constant.CmdMenu.SYSTEM_MENU, 4, "left", askfor=False, cmd_size="center", start_id=system_menu_start_id, ) cmd_list = cmd_list + ask_for_system_menu return cmd_list
def ask_for_overlay_save_panel() -> list: """ 询问覆盖存档面板 """ era_print.line_feed_print() cmd_list = text_loading.get_text_data(constant.FilePath.CMD_PATH, "overlay_save") message_text = text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "21") era_print.restart_line_print() era_print.normal_print(message_text) era_print.line_feed_print() yrn = cmd_button_queue.option_int(None, askfor=False, cmd_list_data=cmd_list) return yrn
def see_character_wear_item_panel_for_player(character_id: int) -> list: """ 用于场景中查看穿戴道具列表的控制面板 Keyword arguments: character_id -- 角色Id change_button -- 将角色穿戴道具列表绘制成按钮的开关 """ era_print.little_title_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "40") ) era_print.normal_print( attr_text.get_see_attr_panel_head_character_info(character_id) ) era_print.restart_line_print(".") if character_id == 0: return see_character_wear_item_panel(character_id, True) else: return see_character_wear_item_panel(character_id, False)
def see_character_item_panel(character_id: int) -> list: """ 查看角色背包道具列表面板 Keyword arguments: character_id -- 角色Id """ era_print.normal_print( attr_text.get_see_attr_panel_head_character_info(character_id)) era_print.restart_line_print(".") if character_id != 0: era_print.line_feed_print( text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "37")) return [] character_item_data = cache_contorl.character_data["character"][ character_id].item if len(character_item_data) == 0: era_print.line_feed_print( text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "36")) return [] now_page_id = int(cache_contorl.panel_state["SeeCharacterItemListPanel"]) now_page_max = game_config.see_character_item_max now_page_start_id = now_page_id * now_page_max now_page_end_id = now_page_start_id + now_page_max if now_page_end_id > len(character_item_data.keys()): now_page_end_id = len(character_item_data.keys()) input_s = [] index = 0 for i in range(now_page_start_id, now_page_end_id): item_id = list(character_item_data.keys())[i] item_data = character_item_data[item_id] item_text = (item_data["ItemName"] + " " + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "136") + str(item_data["ItemNum"])) if character_id == "0": id_info = cmd_button_queue.id_index(index) cmd_text = id_info + item_text py_cmd.pcmd(cmd_text, index, None) else: era_print.normal_print(item_text) index += 1 input_s.append(str(index)) era_print.line_feed_print() return input_s
def see_move_path_panel() -> dict: """ 当前场景可直接通往的移动路径绘制面板 """ input_s = [] now_scene = cache_contorl.character_data[0].position now_map = cache_contorl.now_map now_map_str = map_handle.get_map_system_path_str_for_list(now_map) map_data = cache_contorl.map_data[now_map_str] move_path_info = text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "27") era_print.normal_print("\n") era_print.line_feed_print(move_path_info) path_edge = map_data["PathEdge"] map_scene_id = map_handle.get_map_scene_id_for_scene_path( now_map, now_scene) scene_path = path_edge[map_scene_id].copy() if map_scene_id in scene_path: del scene_path[map_scene_id] scene_path_list = list(scene_path.keys()) if len(scene_path_list) > 0: scene_cmd = [] for scene in scene_path_list: now_map_str = map_handle.get_map_system_path_str_for_list(now_map) load_scene_data = map_handle.get_scene_data_for_map( now_map_str, scene) scene_name = load_scene_data["SceneName"] scene_cmd.append(scene_name) yrn = cmd_button_queue.option_str( cmd_list=None, cmd_list_data=scene_cmd, cmd_column=4, askfor=False, cmd_size="center", ) input_s = input_s + yrn else: error_move_text = text_loading.get_text_data( constant.FilePath.MESSAGE_PATH, "28") era_print.normal_print(error_move_text) era_print.restart_line_print() return {"input_s": input_s, "scene_path_list": scene_path_list}
def see_character_item_info_panel(character_id: str, item_id: str): """ 用于查看角色道具信息的面板 Keyword arguments: character_id -- 角色Id item_id -- 道具Id """ title_text = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "38") era_print.little_title_print(title_text) era_print.normal_print( attr_text.get_see_attr_panel_head_character_info(character_id)) era_print.restart_line_print(".") item_data = cache_contorl.character_data[character_id].item[item_id] era_print.line_feed_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, 128) + item_data["ItemName"]) era_print.line_feed_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "131") + item_data["ItemInfo"])
def see_instruct_head_panel() -> list: """ 绘制指令面板的头部过滤器面板 Return arguments: list -- 绘制的按钮列表 """ era_print.little_title_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "146")) instruct_data = text_loading.get_text_data( constant.FilePath.CMD_PATH, constant.CmdMenu.INSTRUCT_HEAD_PANEL) if cache_contorl.instruct_filter == {}: cache_contorl.instruct_filter = { instruct: 0 for instruct in instruct_data } cache_contorl.instruct_filter["Dialogue"] = 1 style_data = { instruct_data[instruct]: "selectmenu" for instruct in instruct_data if cache_contorl.instruct_filter[instruct] == 0 } on_style_data = { instruct_data[instruct]: "onselectmenu" for instruct in instruct_data if cache_contorl.instruct_filter[instruct] == 0 } era_print.normal_print( text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "147")) return cmd_button_queue.option_str( None, len(instruct_data), "center", False, False, list(instruct_data.values()), "", list(instruct_data.keys()), style_data, on_style_data, )
def show_scene_name_list_panel() -> str: """ 地图下场景名称绘制面板 """ title_text = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "86") era_print.normal_print(title_text) panel_state = cache_contorl.panel_state["SeeSceneNameListPanel"] if panel_state == "0": py_cmd.pcmd(panel_state_off_text, "SeeSceneNameListPanel") era_print.line_feed_print() now_map = cache_contorl.now_map now_position = cache_contorl.character_data[0].position now_scene = map_handle.get_scene_id_in_map_for_scene_path_on_map_path( now_position, now_map) now_map_map_system_str = map_handle.get_map_system_path_str_for_list( now_map) scene_name_data = map_handle.get_scene_name_list_for_map_path( now_map_map_system_str) scene_name_list = {} null_scene = now_scene for scene in scene_name_data: scene_name_list[scene] = scene + ":" + scene_name_data[scene] cmd_button_queue.option_str( None, 4, "center", False, False, list(scene_name_list.values()), null_scene, list(scene_name_list.keys()), ) else: py_cmd.pcmd(panel_state_on_text, "SeeSceneNameListPanel") era_print.line_feed_print() era_print.little_line_print() return "SeeSceneNameListPanel"
def see_character_list_panel(max_page: int) -> list: """ 查看角色列表面板 Keyword arguments: max_page -- 最大角色列表页数 """ title_text = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "74") era_print.little_title_print(title_text) input_s = [] page_id = int(cache_contorl.panel_state["SeeCharacterListPanel"]) page_show = int(game_config.character_list_show) character_max = len(cache_contorl.character_data["character"]) - 1 if page_id == max_page: show_page_start = page_show * page_id show_page_over = show_page_start + (character_max + 1 - show_page_start) else: show_page_over = page_show * (page_id + 1) show_page_start = show_page_over - page_show for i in range(show_page_start, show_page_over): cmd_id = i - show_page_start cmd_id_text = cmd_button_queue.id_index(cmd_id) cmd_text = attr_text.get_character_abbreviations_info(i) cmd_id_text_index = text_handle.get_text_index(cmd_id_text) window_width = int(game_config.text_width) text_width = window_width - cmd_id_text_index cmd_text = text_handle.align(cmd_text, "center", text_width=text_width) cmd_text = cmd_id_text + " " + cmd_text cmd_id = str(cmd_id) era_print.little_line_print() py_cmd.pcmd(cmd_text, cmd_id, None) input_s.append(cmd_id) era_print.normal_print("\n") page_text = "(" + str(page_id) + "/" + str(max_page) + ")" era_print.page_line_print(sample="-", string=page_text) era_print.line_feed_print() return input_s
def see_character_wear_clothes(character_id: int, change_button: bool): """ 查看角色穿戴服装列表面板 Keyword arguments: character_id -- 角色id change_button -- 将服装列表绘制成按钮的开关 """ character_clothing_data = cache_contorl.character_data[ character_id ].clothing character_put_on_list = cache_contorl.character_data[character_id].put_on clothing_text_data = {} tag_text_index = 0 for i in range(len(clothing.clothing_type_text_list.keys())): clothing_type = list(clothing.clothing_type_text_list.keys())[i] clothing_id = character_put_on_list[clothing_type] if clothing_id == "": clothing_text_data[clothing_type] = "None" else: clothing_data = character_clothing_data[clothing_type][clothing_id] clothing_text = ( clothing.clothing_type_text_list[clothing_type] + ":" + clothing_data["Evaluation"] + clothing_data["Tag"] + clothing_data["Name"] ) clothing_text_data[clothing_text] = {} for tag in clothing.clothing_tag_text_list: tag_text = clothing.clothing_tag_text_list[tag] + str( clothing_data[tag] ) clothing_text_data[clothing_text][tag_text] = 0 now_tag_text_index = text_handle.get_text_index(tag_text) if now_tag_text_index > tag_text_index: tag_text_index = now_tag_text_index long_clothing_text_index = text_handle.get_text_index( max(clothing_text_data.keys(), key=text_handle.get_text_index) ) i = 0 input_s = [] for clothing_text in clothing_text_data: draw_text = "" era_print.little_line_print() if clothing_text_data[clothing_text] == "None": draw_text = ( clothing.clothing_type_text_list[clothing_text] + ":" + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "117" ) ) else: now_clothing_text_index = text_handle.get_text_index(clothing_text) draw_text += clothing_text + " " if now_clothing_text_index < long_clothing_text_index: draw_text += " " * ( long_clothing_text_index - now_clothing_text_index ) for tag_text in clothing_text_data[clothing_text]: now_tag_text_index = text_handle.get_text_index(tag_text) if now_tag_text_index < tag_text_index: draw_text += ( " " + tag_text + " " * (tag_text_index - now_tag_text_index) ) else: draw_text += " " + tag_text if change_button: id_info = cmd_button_queue.id_index(i) cmd_text = id_info + draw_text py_cmd.pcmd(cmd_text, i, None) else: era_print.normal_print(draw_text) input_s.append(f"{i}") i += 1 era_print.normal_print("\n") return input_s
def cmd_size_print( cmd_text, cmd_text_bak, cmd_event=None, text_width=0, cmd_size="left", no_null_cmd=True, normal_style="standard", on_style="onbutton", ): """ 计算命令对齐方式,补全文本并绘制 Keyword arguments: cmd_text -- 命令文本 cmd_text_bak -- 命令被触发时返回的文本 cmd_event -- 命令绑定的事件 (default None) text_width -- 文本对齐时补全空间宽度 cmd_size -- 命令对齐方式(left/center/right) (default 'left') no_null_cmd -- 绘制命令而非null命令样式的文本 (default False) normal_style -- 按钮通常样式 (default 'standard') on_style -- 按钮被按下时样式 (default 'onbutton') """ if not no_null_cmd: cmd_text = "<nullcmd>" + cmd_text + "</nullcmd>" if cmd_size == "left": cmd_width = text_handle.get_text_index(cmd_text) cmd_text_fix = " " * (text_width - cmd_width) if no_null_cmd: py_cmd.pcmd( cmd_text, cmd_text_bak, cmd_event, normal_style=normal_style, on_style=on_style, ) else: era_print.normal_print(cmd_text) era_print.normal_print(cmd_text_fix) elif cmd_size == "center": cmd_width = text_handle.get_text_index(cmd_text) cmd_text_fix = " " * (int(text_width / 2) - int(cmd_width / 2)) era_print.normal_print(cmd_text_fix) if no_null_cmd: py_cmd.pcmd( cmd_text, cmd_text_bak, cmd_event, normal_style=normal_style, on_style=on_style, ) else: era_print.normal_print(cmd_text) era_print.normal_print(cmd_text_fix) elif cmd_size == "right": cmd_width = text_handle.get_text_index(cmd_text) cmd_text_fix = " " * (text_width - cmd_width) if no_null_cmd: py_cmd.pcmd( cmd_text, cmd_text_bak, cmd_event, normal_style=normal_style, on_style=on_style, ) else: era_print.normal_print(cmd_text) era_print.normal_print(cmd_text_fix)
def see_food_shop_list_by_food_type(max_page: int, food_list: list) -> list: """ 用于查看餐馆出售食物列表的面板 Keyword arguments: max_page -- 最大页数 Return arguments: list -- 监听的按钮列表 """ era_print.restart_line_print("+") tag_text_index = 0 now_page_id = int( cache_contorl.panel_state["SeeFoodShopListByFoodTypePanel"] ) now_page_max = game_config.food_shop_item_max now_page_start_id = now_page_id * now_page_max now_page_end_id = now_page_start_id + now_page_max if not len(food_list): era_print.normal_print( text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "34") ) era_print.line_feed_print() return [] if now_page_end_id > len(food_list): now_page_end_id = len(food_list) input_s = [] text_list = [] fix_text = "" for i in range(now_page_start_id, now_page_end_id): now_food = food_list[i] if now_food.recipe == -1: food_config = text_loading.get_text_data( constant.FilePath.FOOD_PATH, now_food.id ) food_name = food_config["Name"] else: food_name = cache_contorl.recipe_data[now_food.recipe].name now_index = cmd_button_queue.id_index(tag_text_index) food_text = now_index + " " + food_name food_text += " " + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "154" ) if "Hunger" in now_food.feel: food_text += str(round(now_food.feel["Hunger"], 2)) else: food_text += "0" food_text += " " + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "153" ) if "Thirsty" in now_food.feel: food_text += str(round(now_food.feel["Thirsty"], 2)) else: food_text += "0" food_text += ( " " + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "155" ) + str(now_food.weight) ) food_text += text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "156" ) food_text += " " + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "152" ) food_text += text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "151" )[now_food.quality] text_list.append(food_text) now_fix_text = text_handle.align(food_text, "center", True) if fix_text == "": fix_text = now_fix_text if len(now_fix_text) < len(fix_text): fix_text = now_fix_text tag_text_index += 1 for i in range(tag_text_index): now_text = fix_text + text_list[i] now_text = text_handle.align(now_text) py_cmd.pcmd(now_text, i) era_print.normal_print("\n") input_s.append(str(i)) if i < tag_text_index - 1: era_print.restart_line_print("*") return input_s
def see_character_clothes_panel( character_id: str, clothing_type: str, max_page: int ) -> list: """ 用于查看角色服装列表的面板 Keyword arguments: character_id -- 角色id clothing_type -- 服装类型 max_page -- 服装列表最大页数 Rerurn arguments: list -- 监听的按钮列表 """ era_print.line_feed_print() character_clothing_data = cache_contorl.character_data[ character_id ].clothing[clothing_type] clothing_text_data = {} tag_text_index = 0 now_page_id = int(cache_contorl.panel_state["SeeCharacterClothesPanel"]) now_page_max = game_config.see_character_clothes_max now_page_start_id = now_page_id * now_page_max now_page_end_id = now_page_start_id + now_page_max if character_clothing_data == {}: era_print.normal_print( text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "34") ) era_print.line_feed_print() return [] if now_page_end_id > len(character_clothing_data.keys()): now_page_end_id = len(character_clothing_data.keys()) pass_id = None for i in range(now_page_start_id, now_page_end_id): clothing_id = list(character_clothing_data.keys())[i] if ( clothing_id == cache_contorl.character_data[character_id].put_on[clothing_type] ): pass_id = i - now_page_start_id clothing_data = character_clothing_data[clothing_id] clothing_text = ( clothing_data["Evaluation"] + clothing_data["Tag"] + clothing_data["Name"] ) clothing_text_data[clothing_text] = {} for tag in clothing.clothing_tag_text_list: tag_text = clothing.clothing_tag_text_list[tag] + str( clothing_data[tag] ) clothing_text_data[clothing_text][tag_text] = 0 now_tag_text_index = text_handle.get_text_index(tag_text) if now_tag_text_index == now_tag_text_index: tag_text_index = now_tag_text_index long_clothing_text_index = text_handle.get_text_index( max(clothing_text_data.keys(), key=text_handle.get_text_index) ) i = 0 input_s = [] for clothing_text in clothing_text_data: draw_text = "" era_print.little_line_print() now_clothing_text_index = text_handle.get_text_index(clothing_text) draw_text += clothing_text + " " if now_clothing_text_index < long_clothing_text_index: draw_text += " " * ( long_clothing_text_index - now_clothing_text_index ) for tag_text in clothing_text_data[clothing_text]: now_tag_text_index = text_handle.get_text_index(tag_text) if now_tag_text_index < tag_text_index: draw_text += ( " " + tag_text + " " * (tag_text_index - now_tag_text_index) ) else: draw_text += " " + tag_text if i == pass_id: draw_text += " " + text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "125" ) id_info = cmd_button_queue.id_index(i) cmd_text = id_info + draw_text input_s.append(f"{i}") py_cmd.pcmd(cmd_text, i, None) era_print.line_feed_print() i += 1 era_print.normal_print("\n") page_text = "(" + str(now_page_id) + "/" + str(max_page) + ")" era_print.page_line_print(sample="-", string=page_text) era_print.line_feed_print() return input_s
def see_character_info_panel(): """ 查看当前互动对象信息面板 """ character_info = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "77") era_print.normal_print(character_info) character_id = cache_contorl.character_data["character_id"] character_data = cache_contorl.character_data["character"][character_id] character_name = character_data.name era_print.normal_print(character_name) era_print.normal_print(" ") sex = character_data.sex sex_text = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "2") + attr_text.get_sex_text(sex) era_print.normal_print(sex_text) era_print.normal_print(" ") intimate_info = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "16") graces_info = text_loading.get_text_data(constant.FilePath.STAGE_WORD_PATH, "17") character_intimate_text = intimate_info + f"{character_data.intimate}" character_graces_text = graces_info + f"{character_data.graces}" era_print.normal_print(character_intimate_text) era_print.normal_print(" ") era_print.normal_print(character_graces_text) state_text = attr_text.get_state_text(character_id) era_print.normal_print(" ") era_print.normal_print(state_text) era_print.little_line_print()
def see_save_list_panel(page_save_value: int, last_save_page_value: int, auto_save=False) -> list: """ 查看存档页面面板 Keyword arguments: page_save_value -- 单页最大存档显示数量 last_save_page_value -- 最后一页存档显示数量 auto_save -- 自动存档显示开关 (default False) """ save_panel_page = int(cache_contorl.panel_state["SeeSaveListPanel"]) + 1 input_s = [] id_text_list = [] id_info_text = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "72") text_width = int(game_config.text_width) save_none_text = text_loading.get_text_data(constant.FilePath.MESSAGE_PATH, "20") if save_panel_page == int(game_config.save_page) + 1: start_save_id = int(page_save_value) * (save_panel_page - 1) over_save_id = start_save_id + last_save_page_value else: over_save_id = int(page_save_value) * save_panel_page start_save_id = over_save_id - int(page_save_value) for i in range(0, over_save_id - start_save_id): id = cmd_button_queue.id_index(i) save_id = start_save_id + i if auto_save and not save_handle.judge_save_file_exist(str(save_id)): id_text = id_info_text + " " + str(save_id) + ":" id_text_list.append(id_text) else: id_text = id + id_info_text + " " + str(save_id) + ":" id_text_list.append(id_text) for i in range(0, over_save_id - start_save_id): id = str(i) id_text = id_text_list[i] era_print.little_line_print() save_id = str(save_handle.get_save_page_save_id(page_save_value, i)) if save_handle.judge_save_file_exist(save_id): save_info_head = save_handle.load_save_info_head(save_id) game_time_data = save_info_head["game_time"] game_time_text = game_time.get_date_text(game_time_data) character_name = save_info_head["character_name"] save_verson = save_info_head["game_verson"] save_text = (character_name + " " + game_time_text + " " + save_verson) id_text_index = int(text_handle.get_text_index(id_text)) fix_id_width = text_width - id_text_index save_align = text_handle.align(save_text, "center", text_width=fix_id_width) id_text = id_text + save_align py_cmd.pcmd(id_text, id, None) input_s.append(id) era_print.normal_print("\n") else: id_text_index = int(text_handle.get_text_index(id_text)) fix_id_width = text_width - id_text_index save_none_align = text_handle.align(save_none_text, "center", text_width=fix_id_width) id_text = id_text + save_none_align if auto_save: era_print.normal_print(id_text) else: py_cmd.pcmd(id_text, id, None) input_s.append(id) era_print.line_feed_print() if auto_save: auto_info_text = text_loading.get_text_data( constant.FilePath.STAGE_WORD_PATH, "73") i = page_save_value id = cmd_button_queue.id_index(i) era_print.little_line_print() if save_handle.judge_save_file_exist("auto"): save_info_head = save_handle.load_save_info_head("auto") game_time_data = save_info_head["game_time"] game_time_text = game_time.get_date_text(game_time_data) character_name = save_info_head["character_name"] save_verson = save_info_head["game_verson"] save_text = (character_name + " " + game_time_text + " " + save_verson) id_text = id + auto_info_text id_text_index = int(text_handle.get_text_index(id_text)) fix_id_width = text_width - id_text_index save_text_align = text_handle.align(save_text, "center", text_width=fix_id_width) id_text = id_text + save_text_align py_cmd.pcmd(id_text, id, None) input_s.append(id) era_print.line_feed_print() else: id_text_index = int(text_handle.get_text_index(auto_info_text)) fix_id_width = text_width - id_text_index save_none_align = text_handle.align(save_none_text, "center", text_width=fix_id_width) id_text = auto_info_text + save_none_align era_print.normal_print(id_text) era_print.line_feed_print() return input_s