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")
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
    )
Exemplo n.º 5
0
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"
Exemplo n.º 6
0
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)
Exemplo n.º 8
0
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"])
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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()
Exemplo n.º 12
0
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
Exemplo n.º 14
0
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)
Exemplo n.º 15
0
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
Exemplo n.º 16
0
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}
Exemplo n.º 17
0
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"])
Exemplo n.º 18
0
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,
    )
Exemplo n.º 19
0
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"
Exemplo n.º 20
0
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
Exemplo n.º 21
0
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
Exemplo n.º 22
0
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)
Exemplo n.º 23
0
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
Exemplo n.º 24
0
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
Exemplo n.º 25
0
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