Exemplo n.º 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
Exemplo n.º 2
0
def confirmation_load_save_func(save_id: str):
    """
    读取存档询问流程
    玩家输入0:读取指定存档
    Keyword arguments:
    save_id -- 存档id
    """
    cmd_list = save_handle_frame_panel.confirmation_load_save_panel()
    yrn = game_init.askfor_all(cmd_list)
    py_cmd.clr_cmd()
    if yrn == "0":
        save_handle.input_load_save(save_id)
        cache_contorl.now_flow_id = "main"
        return True
    return False
Exemplo n.º 3
0
 def draw(self):
     """ 绘制面板 """
     while 1:
         line_feed.draw()
         self.now_draw.draw()
         back_draw = draw.CenterButton(_("[返回]"), _("返回"), self.width)
         back_draw.draw()
         now_draw_list = self.now_draw.return_list
         ask_list = []
         ask_list.extend(now_draw_list)
         ask_list.append(back_draw.return_text)
         yrn = flow_handle.askfor_all(ask_list)
         py_cmd.clr_cmd()
         if yrn == back_draw.return_text:
             break
Exemplo n.º 4
0
def title_frame_func():
    """
    标题界面绘制流程
    """
    title_frame_panel.load_game_panel()
    cache_contorl.wframe_mouse.w_frame_re_print = 1
    ans = title_frame_panel.game_main_panel()
    py_cmd.clr_cmd()
    if ans == 0:
        cache_contorl.now_flow_id = "creator_character"
    elif ans == 1:
        cache_contorl.old_flow_id = "title_frame"
        cache_contorl.now_flow_id = "load_save"
    elif ans == 2:
        os._exit(0)
Exemplo n.º 5
0
def establish_save_func():
    """
    绘制保存存档界面流程
    """
    while True:
        input_s = []
        save_page = save_page_index()
        show_save_value = save_page[0]
        last_save_page_value = save_page[1]
        save_handle_frame_panel.establish_save_info_head_panel()
        flow_return = save_handle_frame_panel.see_save_list_panel(
            show_save_value, last_save_page_value)
        input_s = input_s + flow_return
        start_id = len(input_s)
        flow_return = save_handle_frame_panel.ask_for_change_save_page_panel(
            start_id)
        input_s = input_s + flow_return
        yrn = game_init.askfor_int(input_s)
        py_cmd.clr_cmd()
        if yrn == str(start_id):
            save_panel_page = int(
                cache_contorl.panel_state["SeeSaveListPanel"])
            if save_panel_page == 0:
                cache_contorl.panel_state[
                    "SeeSaveListPanel"] = cache_contorl.max_save_page
            else:
                cache_contorl.panel_state["SeeSaveListPanel"] = (
                    save_panel_page - 1)
        elif yrn == str(start_id + 1):
            cache_contorl.panel_state["SeeSaveListPanel"] = 0
            cache_contorl.now_flow_id = cache_contorl.old_flow_id
            break
        elif yrn == str(start_id + 2):
            save_panel_page = int(
                cache_contorl.panel_state["SeeSaveListPanel"])
            if save_panel_page == cache_contorl.max_save_page:
                cache_contorl.panel_state["SeeSaveListPanel"] = 0
            else:
                cache_contorl.panel_state["SeeSaveListPanel"] = (
                    save_panel_page + 1)
        else:
            ans_return = int(yrn)
            save_id = str(
                save_handle.get_save_page_save_id(show_save_value, ans_return))
            if save_handle.judge_save_file_exist(save_id):
                ask_for_overlay_save_func(save_id)
            else:
                save_handle.establish_save(save_id)
Exemplo n.º 6
0
def ask_for_load_save_func(save_id: str):
    """
    读档处理询问流程
    玩家输入0:进入读取存档询问流程
    玩家输入1:进入删除存档询问流程
    Keyword arguments:
    save_id -- 存档id
    """
    cmd_list = save_handle_frame_panel.ask_load_save_panel()
    yrn = game_init.askfor_all(cmd_list)
    py_cmd.clr_cmd()
    if yrn == "0":
        return confirmation_load_save_func(save_id)
    elif yrn == "1":
        confirmation_remove_save_func(save_id)
    return False
Exemplo n.º 7
0
def ask_for_overlay_save_func(save_id: str):
    """
    存档处理询问流程
    玩家输入0:进入覆盖存档询问流程
    玩家输入1:进入删除存档询问流程
    Keyword arguments:
    save_id -- 存档id
    """
    cmd_list = save_handle_frame_panel.ask_for_overlay_save_panel()
    yrn = game_init.askfor_all(cmd_list)
    yrn = str(yrn)
    py_cmd.clr_cmd()
    if yrn == "0":
        confirmation_overlay_save_func(save_id)
    elif yrn == "1":
        confirmation_remove_save_func(save_id)
Exemplo n.º 8
0
 def draw_save_handle(self):
     """ 处理读写存档 """
     py_cmd.clr_cmd()
     line_feed.draw()
     if self.save_exist_judge:
         now_ask_list = []
         now_id = 0
         load_save_button = draw.Button(text_handle.id_index(now_id) +
                                        _("读取"),
                                        str(now_id),
                                        cmd_func=self.load_save)
         load_save_button.width = self.width
         load_save_button.draw()
         line_feed.draw()
         now_ask_list.append(str(now_id))
         now_id += 1
         if self.write_save:
             re_write_save_button = draw.Button(
                 text_handle.id_index(now_id) + _("覆盖"),
                 str(now_id),
                 cmd_func=save_handle.establish_save,
                 args=(self.text, ),
             )
             re_write_save_button.width = self.width
             re_write_save_button.draw()
             now_ask_list.append(str(now_id))
             line_feed.draw()
             now_id += 1
         delete_save_button = draw.Button(text_handle.id_index(now_id) +
                                          _("删除"),
                                          str(now_id),
                                          cmd_func=self.delete_save)
         delete_save_button.width = self.width
         delete_save_button.draw()
         now_ask_list.append(str(now_id))
         now_id += 1
         line_feed.draw()
         back_button = draw.Button(
             text_handle.id_index(now_id) + _("返回"), str(now_id))
         back_button.width = self.width
         back_button.draw()
         line_feed.draw()
         now_ask_list.append(str(now_id))
         flow_handle.askfor_all(now_ask_list)
         py_cmd.clr_cmd()
     else:
         save_handle.establish_save(self.text)
Exemplo n.º 9
0
def detailed_setting_func_3():
    """
    询问玩家性经验程度流程
    """
    flow_return = creator_character_panel.detailed_setting_3_panel()
    sex_tem_data_list = list(
        text_loading.get_text_data(
            constant.FilePath.ATTR_TEMPLATE_PATH, "SexExperience"
        ).keys()
    )
    sex_tem_data_list.reverse()
    sex_tem_name = sex_tem_data_list[flow_return]
    cache_contorl.character_data["character"][
        0
    ].sex_experience_tem = sex_tem_name
    py_cmd.clr_cmd()
    detailed_setting_func_8()
Exemplo n.º 10
0
def main_frame_func():
    """
    游戏主页控制流程
    """
    input_s = []
    flow_return = main_frame_panel.main_frame_panel()
    input_s = input_s + flow_return
    character_id = cache_contorl.character_data["character_id"]
    character_data = cache_contorl.character_data["character"][character_id]
    character_name = character_data.name
    ans = game_init.askfor_all(input_s)
    py_cmd.clr_cmd()
    cache_contorl.old_flow_id = "main"
    if ans == character_name:
        cache_contorl.now_flow_id = "see_character_attr"
    else:
        if ans == "0":
            clothing.init_character_clothing_put_on()
        cache_contorl.now_flow_id = main_frame_goto_data[ans]
Exemplo n.º 11
0
def wear_character_item():
    """
    查看并更换角色穿戴道具流程
    """
    character_id = cache_contorl.character_data[0].target_character_id
    while 1:
        input_s = wear_item_panel.see_character_wear_item_panel_for_player(
            character_id)
        start_id = len(input_s)
        input_s += wear_item_panel.see_character_wear_item_cmd_panel(start_id)
        yrn = flow_handle.askfor_all(input_s)
        py_cmd.clr_cmd()
        if yrn == str(len(input_s) - 1):
            cache_contorl.now_flow_id = "main"
            break
        else:
            wear_item_info_text_data = text_loading.get_text_data(
                constant.FilePath.STAGE_WORD_PATH, "49")
            change_wear_item(list(wear_item_info_text_data.keys())[int(yrn)])
Exemplo n.º 12
0
def change_character_clothes():
    """
    更换角色服装流程
    """
    character_id = cache_contorl.character_data[0].target_character_id
    character_clothing_data = cache_contorl.character_data[
        character_id].clothing
    change_clothes_panel.see_character_wear_clothes_info(character_id)
    cmd_list_1 = change_clothes_panel.see_character_wear_clothes(
        character_id, True)
    start_id = len(character_clothing_data.keys())
    input_s = change_clothes_panel.see_character_wear_clothes_cmd(start_id)
    input_s = cmd_list_1 + input_s
    yrn = flow_handle.askfor_all(input_s)
    py_cmd.clr_cmd()
    if yrn == str(start_id):
        cache_contorl.now_flow_id = "main"
    else:
        clothing_type = list(clothing.clothing_type_text_list.keys())[int(yrn)]
        see_character_clothes_list(clothing_type)
Exemplo n.º 13
0
 def draw(self):
     """ 绘制对象 """
     while 1:
         if cache.back_save_panel:
             cache.back_save_panel = 0
             break
         line_feed.draw()
         title_draw = draw.TitleLineDraw(_("存档列表"), self.width)
         title_draw.draw()
         self.return_list = []
         self.handle_panel.update()
         self.handle_panel.draw()
         self.return_list.extend(self.handle_panel.return_list)
         back_draw = draw.CenterButton(_("[返回]"), _("返回"), self.width)
         back_draw.draw()
         line_feed.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
Exemplo n.º 14
0
def input_name_func():
    """
    请求玩家输入姓名流程
    输入0:进入请求玩家输入昵称流程(玩家姓名为默认或输入姓名流程结果)
    输入1:进入输入姓名流程
    输入2:返回标题菜单
    """
    game_time.init_time()
    cache_contorl.character_data["character_id"] = 0
    cache_contorl.character_data["character"][0] = character.Character()
    flow_return = 0
    while 1:
        flow_return = creator_character_panel.input_name_panel()
        if flow_return == 0:
            py_cmd.clr_cmd()
            break
        elif flow_return == 1:
            py_cmd.clr_cmd()
            creator_character_panel.start_input_name_panel()
            py_cmd.clr_cmd()
        else:
            break
    if flow_return == 0:
        input_nick_name_func()
    else:
        era_print.next_screen_print()
        cache_contorl.now_flow_id = "title_frame"
Exemplo n.º 15
0
def title_panel():
    """ 绘制游戏标题菜单 """
    clear_screen = panel.ClearScreenPanel()
    clear_screen.draw()
    width = config_normal.text_width
    title_info = panel.TitleAndRightInfoListPanel()
    game_name = config_normal.game_name
    info_list = [
        config_normal.author, config_normal.verson, config_normal.verson_time
    ]
    title_info.set(config_normal.game_name, info_list, width)
    title_info.draw()
    lineFeed = draw.NormalDraw()
    lineFeed.width = 1
    lineFeed.text = "\n"
    info = _("人类是可以被驯化的")
    lineFeed.draw()
    info_draw = draw.CenterDraw()
    info_draw.text = info
    info_draw.width = width
    info_draw.draw()
    lineFeed.draw()
    lineFeed.draw()
    line = draw.LineDraw("=", width)
    line.draw()
    now_list = [_("开始游戏"), _("读取存档"), _("退出游戏")]
    button_panel = panel.OneMessageAndSingleColumnButton()
    button_panel.set(now_list, "", 0)
    button_panel.draw()
    return_list = button_panel.get_return_list()
    ans = flow_handle.askfor_all(return_list.keys())
    py_cmd.clr_cmd()
    now_key = return_list[ans]
    if now_key == now_list[0]:
        cache.now_panel_id = constant.Panel.CREATOR_CHARACTER
    elif now_key == now_list[1]:
        now_panel = see_save_info_panel.SeeSaveListPanel(width, 0)
        now_panel.draw()
    elif now_key == now_list[2]:
        os._exit(0)
Exemplo n.º 16
0
def input_sex_choice_func():
    """
    玩家选择性别流程
    输入0-3:选择对应性别(Man/Woman/Futa/Asexual)
    输入4:随机选择一个性别
    输入5:返回请求输入性别流程
    """
    sex = list(
        text_loading.get_text_data(constant.FilePath.ROLE_PATH, "Sex").keys()
    )
    sex_max = len(sex)
    flow_return = creator_character_panel.input_sex_choice_panel()
    if flow_return in range(0, sex_max):
        sex_atr = sex[flow_return]
        cache_contorl.character_data["character"][0].sex = sex_atr
        py_cmd.clr_cmd()
        input_sex_confirm_func()
    elif flow_return == 4:
        rand = random.randint(0, len(sex) - 1)
        sex_atr = sex[rand]
        cache_contorl.character_data["character"][0].sex = sex_atr
        py_cmd.clr_cmd()
        input_sex_confirm_func()
    elif flow_return == 5:
        era_print.list_print()
        py_cmd.clr_cmd()
        input_sex_confirm_func()
Exemplo n.º 17
0
def get_in_scene_func():
    """
    用于进入场景界面的流程
    """
    py_cmd.clr_cmd()
    scene_path = cache_contorl.character_data["character"][0].position
    scene_path_str = map_handle.get_map_system_path_str_for_list(scene_path)
    map_handle.sort_scene_character_id(scene_path_str)
    cache_contorl.now_map = map_handle.get_map_for_path(scene_path)
    scene_data = cache_contorl.scene_data[scene_path_str].copy()
    scene_character_list = scene_data["SceneCharacterData"]
    print(cache_contorl.character_data["character"][0].dormitory is scene_path)
    if 0 not in scene_character_list:
        character_id_list = [0]
        scene_character_list = scene_character_list + character_id_list
        cache_contorl.scene_data[scene_path_str][
            "SceneCharacterData"
        ] = scene_character_list
    if (
        len(scene_character_list) > 1
        and cache_contorl.character_data["character_id"] == 0
    ):
        now_name_list = map_handle.get_scene_character_name_list(
            scene_path_str
        )
        now_name_list.remove(cache_contorl.character_data["character"][0].name)
        cache_contorl.character_data[
            "character_id"
        ] = map_handle.get_character_id_by_character_name(
            now_name_list[0], scene_path_str
        )
        if cache_contorl.old_character_id != 0:
            cache_contorl.character_data[
                "character_id"
            ] = cache_contorl.old_character_id
            cache_contorl.old_character_id = 0
    if len(scene_character_list) > 1:
        see_scene_func(True)
    else:
        see_scene_func(False)
Exemplo n.º 18
0
def acknowledgment_attribute_func():
    """
    创建角色时用于查看角色属性的流程
    """
    while True:
        character_handle.init_character_list()
        input_s = []
        see_attr_in_every_time_func()
        flow_return = see_character_attr_panel.input_attr_over_panel()
        input_s = flow_return + input_s
        yrn = game_init.askfor_int(input_s)
        py_cmd.clr_cmd()
        if yrn in panel_list:
            panel_state_handle.panel_state_change(yrn)
        elif yrn == "0":
            game_start_flow.init_game_start()
            break
        elif yrn == "1":
            cache_contorl.wframe_mouse.w_frame_re_print = 1
            era_print.next_screen_print()
            cache_contorl.now_flow_id = "title_frame"
            break
Exemplo n.º 19
0
def enter_character_nature_func():
    """
    请求玩家确认性格流程
    """
    character.init_attr(cache_contorl.character_data[0])
    while 1:
        py_cmd.clr_cmd()
        creator_character_panel.enter_character_nature_head()
        input_s = see_nature_panel.see_character_nature_change_panel(0)
        input_s += creator_character_panel.enter_character_nature_end()
        yrn = game_init.askfor_all(input_s)
        if yrn in cache_contorl.character_data[0].nature:
            if cache_contorl.character_data[0].nature[yrn] < 50:
                cache_contorl.character_data[0].nature[yrn] = random.uniform(
                    50, 100)
            else:
                cache_contorl.character_data[0].nature[yrn] = random.uniform(
                    0, 50)
        elif int(yrn) == 0:
            character.init_attr(cache_contorl.character_data[0])
            cache_contorl.now_flow_id = "acknowledgment_attribute"
            break
        elif int(yrn) == 1:
            cache_contorl.character_data[0].nature = nature.get_random_nature()
Exemplo n.º 20
0
def input_self_name_func():
    """
    请求玩家输入自称流程
    输入0:进入请求玩家输入性别流程(玩家自称为默认,或输入自称流程结果)
    输入1:进入输入自称流程
    输入2:返回请求输入昵称流程
    """
    flow_return = creator_character_panel.input_self_name_panel()
    if flow_return == 0:
        py_cmd.clr_cmd()
        input_sex_confirm_func()
    elif flow_return == 1:
        py_cmd.clr_cmd()
        creator_character_panel.start_input_self_name()
        py_cmd.clr_cmd()
        input_self_name_func()
    elif flow_return == 2:
        era_print.line_feed_print()
        py_cmd.clr_cmd()
        input_nick_name_func()
Exemplo n.º 21
0
def input_sex_confirm_func():
    """
    请求玩家输入性别流程
    输入0:进入询问是否进行详细设置流程(玩家性别为默认,或请求选择性别流程结果)
    输入1:进入选择性别流程
    输入2:返回请求输入自称流程
    """
    flow_return = creator_character_panel.input_sex_panel()
    if flow_return == 0:
        py_cmd.clr_cmd()
        attribute_generation_branch_func()
    elif flow_return == 1:
        py_cmd.clr_cmd()
        input_sex_choice_func()
    elif flow_return == 2:
        py_cmd.clr_cmd()
        input_self_name_func()
Exemplo n.º 22
0
def attribute_generation_branch_func():
    """
    询问玩家是否需要详细设置属性流程
    输入0:进入询问玩家年龄段流程
    输入1:进入属性最终确认流程(使用基础模板生成玩家属性)
    输入2:返回请求输入性别流程
    """
    flow_return = creator_character_panel.attribute_generation_branch_panel()
    if flow_return == 0:
        py_cmd.clr_cmd()
        detailed_setting_func_1()
    elif flow_return == 1:
        py_cmd.clr_cmd()
        cache_contorl.character_data["character"][0].init_attr()
        cache_contorl.now_flow_id = "acknowledgment_attribute"
    elif flow_return == 2:
        py_cmd.clr_cmd()
        input_sex_confirm_func()
Exemplo n.º 23
0
def see_scene_func(judge: bool):
    """
    用于查看当前场景界面的流程
    Keyword argument:
    judge -- 判断是否绘制角色列表界面的开关
    """
    while True:
        input_s = []
        in_scene_panel.see_scene_panel()
        scene_path = cache_contorl.character_data["character"][0].position
        scene_path_str = map_handle.get_map_system_path_str_for_list(
            scene_path
        )
        scene_character_name_list = map_handle.get_scene_character_name_list(
            scene_path_str
        )
        name_list_max = int(game_config.in_scene_see_player_max)
        change_page_judge = False
        if len(scene_character_name_list) == 1:
            cache_contorl.character_data["character_id"] = 0
        in_scene_cmd_list_1 = []
        if judge:
            if cache_contorl.panel_state["SeeSceneCharacterListPage"] == "0":
                input_s = (
                    input_s + in_scene_panel.see_scene_character_list_panel()
                )
                if len(scene_character_name_list) > name_list_max:
                    in_scene_cmd_list_1 = (
                        in_scene_panel.change_scene_character_list_panel()
                    )
                    change_page_judge = True
            input_s.append("SeeSceneCharacterListPage")
        start_id_1 = len(in_scene_cmd_list_1)
        in_scene_panel.see_character_info_panel()
        see_character_attr_panel.see_character_hp_and_mp_in_sence(
            cache_contorl.character_data["character_id"]
        )
        see_character_attr_panel.see_character_status_panel(
            cache_contorl.character_data["character_id"]
        )
        instruct_head = instruct_panel.see_instruct_head_panel()
        in_scene_cmd_list_2 = in_scene_panel.in_scene_button_panel(start_id_1)
        if change_page_judge:
            input_s += (
                in_scene_cmd_list_1 + instruct_head + in_scene_cmd_list_2
            )
        else:
            input_s += instruct_head + in_scene_cmd_list_2
        yrn = game_init.askfor_all(input_s)
        py_cmd.clr_cmd()
        now_page = int(cache_contorl.panel_state["SeeSceneCharacterListPanel"])
        character_max = len(cache_contorl.character_data["character"]) - 1
        page_max = math.floor(character_max / name_list_max)
        if yrn in scene_character_name_list:
            cache_contorl.character_data[
                "character_id"
            ] = map_handle.get_character_id_by_character_name(
                yrn, scene_path_str
            )
        elif (
            judge
            and yrn not in in_scene_cmd_list_2
            and yrn != "SeeSceneCharacterListPage"
            and change_page_judge
        ):
            if yrn == in_scene_cmd_list_1[0]:
                cache_contorl.panel_state["SeeSceneCharacterListPanel"] = 0
            elif yrn == in_scene_cmd_list_1[1]:
                if int(now_page) == 0:
                    cache_contorl.panel_state[
                        "SeeSceneCharacterListPanel"
                    ] = page_max
                else:
                    cache_contorl.panel_state["SeeSceneCharacterListPanel"] = (
                        int(now_page) - 1
                    )
            elif yrn == in_scene_cmd_list_1[2]:
                cache_contorl.panel_state[
                    "SeeSceneCharacterListPanel"
                ] = in_scene_panel.jump_character_list_page_panel()
            elif yrn == in_scene_cmd_list_1[3]:
                if int(now_page) == page_max:
                    cache_contorl.panel_state["SeeSceneCharacterListPanel"] = 0
                else:
                    cache_contorl.panel_state["SeeSceneCharacterListPanel"] = (
                        int(now_page) + 1
                    )
            elif yrn == in_scene_cmd_list_1[4]:
                cache_contorl.panel_state[
                    "SeeSceneCharacterListPanel"
                ] = page_max
        elif yrn == in_scene_cmd_list_2[0]:
            cache_contorl.now_flow_id = "see_map"
            now_map = map_handle.get_map_for_path(
                cache_contorl.character_data["character"][0].position
            )
            cache_contorl.now_map = now_map
            break
        elif yrn in [in_scene_cmd_list_2[1], in_scene_cmd_list_2[2]]:
            if yrn == in_scene_cmd_list_2[2]:
                cache_contorl.old_character_id = cache_contorl.character_data[
                    "character_id"
                ]
                cache_contorl.character_data["character_id"] = 0
            cache_contorl.now_flow_id = "see_character_attr"
            cache_contorl.old_flow_id = "in_scene"
            break
        elif yrn == "SeeSceneCharacterListPage":
            panel_state_handle.panel_state_change(yrn)
        elif yrn in instruct_head:
            if cache_contorl.instruct_filter[yrn] == 0:
                cache_contorl.instruct_filter[yrn] = 1
            else:
                cache_contorl.instruct_filter[yrn] = 0
Exemplo n.º 24
0
 def change_clothing(self):
     """ 更换角色服装 """
     py_cmd.clr_cmd()
     info_draw = ClothingDescribeDraw(self.clothing_data.tem_id, self.width)
     info_draw.draw()
     cache.character_data[0].put_on[self.clothing_type] = self.clothing_data.uid
Exemplo n.º 25
0
def see_attr_on_every_time_func():
    """
    通用用于查看角色属性的流程
    """
    while True:
        character_id = cache_contorl.character_data[0].target_character_id
        if cache_contorl.old_flow_id == "in_scene":
            now_scene = cache_contorl.character_data[0].position
            now_scene_str = map_handle.get_map_system_path_str_for_list(
                now_scene
            )
            character_id_list = map_handle.get_scene_character_id_list(
                now_scene_str
            )
        else:
            character_id_list = list(cache_contorl.character_data.keys())
        character_id_index = character_id_list.index(character_id)
        input_s = []
        see_attr_in_every_time_func()
        ask_see_attr = see_character_attr_panel.ask_for_see_attr()
        input_s += ask_see_attr
        inputs_1 = see_character_attr_panel.ask_for_see_attr_cmd()
        input_s += inputs_1
        yrn = game_init.askfor_all(input_s)
        py_cmd.clr_cmd()
        show_attr_handle_data = text_loading.get_text_data(
            constant.FilePath.CMD_PATH, "seeAttrPanelHandle"
        )
        character_max = character_id_list[len(character_id_list) - 1]
        if yrn in show_attr_handle_data:
            cache_contorl.panel_state["AttrShowHandlePanel"] = yrn
        elif yrn == "0":
            if character_id_index == 0:
                cache_contorl.character_data[
                    0
                ].target_character_id = character_max
            else:
                character_id = character_id_list[character_id_index - 1]
                cache_contorl.character_data[
                    0
                ].target_character_id = character_id
        elif yrn == "1":
            if cache_contorl.old_flow_id == "main":
                cache_contorl.character_data[0].target_character_id = 0
            elif cache_contorl.old_flow_id == "see_character_list":
                character_list_show = int(game_config.character_list_show)
                now_page_id = character_id_index / character_list_show
                cache_contorl.panel_state[
                    "SeeCharacterListPanel"
                ] = now_page_id
            elif cache_contorl.old_flow_id == "in_scene":
                scene_path = cache_contorl.character_data[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
                )
                now_character_name = cache_contorl.character_data[
                    cache_contorl.character_data[0].target_character_id
                ].name
                try:
                    now_character_index = name_list.index(now_character_name)
                except ValueError:
                    now_character_index = 0
                name_list_max = int(game_config.in_scene_see_player_max)
                now_scene_character_list_page = math.floor(
                    now_character_index / name_list_max
                )
                cache_contorl.panel_state[
                    "SeeSceneCharacterListPanel"
                ] = now_scene_character_list_page
            cache_contorl.panel_state["AttrShowHandlePanel"] = "MainAttr"
            cache_contorl.now_flow_id = cache_contorl.old_flow_id
            cache_contorl.old_flow_id = cache_contorl.too_old_flow_id
            break
        elif yrn == "2":
            if character_id == character_max:
                character_id = character_id_list[0]
                cache_contorl.character_data[
                    0
                ].target_character_id = character_id
            else:
                character_id = character_id_list[character_id_index + 1]
                cache_contorl.character_data[
                    0
                ].target_character_id = character_id
Exemplo n.º 26
0
 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()
Exemplo n.º 27
0
 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()
Exemplo n.º 28
0
 def up_map(self):
     """ 将当前地图切换为上级地图 """
     py_cmd.clr_cmd()
     up_map_path = map_handle.get_map_for_path(self.now_map)
     self.now_map = up_map_path
Exemplo n.º 29
0
 def see_character(self):
     """ 切换目标角色 """
     cache.character_data[0].target_character_id = self.character_id
     py_cmd.clr_cmd()
Exemplo n.º 30
0
 def draw(self):
     """ 绘制对象 """
     move_menu_panel_data = {
         0: MapSceneNameDraw(self.now_map, self.width),
         1: GlobalSceneNamePanel(self.now_map, self.width),
         2: SocialSceneNamePanel(self.now_map, self.width),
         3: CollectionSceneNamePanel(self.now_map, self.width),
     }
     move_menu_panel = MoveMenuPanel(self.width)
     while 1:
         line_feed.draw()
         if cache.now_panel_id != constant.Panel.SEE_MAP:
             break
         map_path_str = map_handle.get_map_system_path_str_for_list(
             self.now_map)
         map_data: game_type.Map = cache.map_data[map_path_str]
         map_name = attr_text.get_map_path_text(self.now_map)
         title_draw = draw.TitleLineDraw(_("移动:") + map_name, self.width)
         title_draw.draw()
         now_draw_list: game_type.MapDraw = map_data.map_draw
         character_data: game_type.Character = cache.character_data[0]
         character_scene_id = map_handle.get_map_scene_id_for_scene_path(
             self.now_map, character_data.position)
         return_list = []
         index = 0
         for now_draw_line in now_draw_list.draw_text:
             fix_width = int((self.width - now_draw_line.width) / 2)
             fix_text = " " * fix_width
             fix_draw = draw.NormalDraw()
             fix_draw.text = fix_text
             fix_draw.width = fix_width
             fix_draw.draw()
             for draw_text in now_draw_line.draw_list:
                 if draw_text.is_button and draw_text.text != character_scene_id:
                     scene_path = map_handle.get_scene_path_for_map_scene_id(
                         self.now_map, draw_text.text)
                     now_draw = draw.Button(draw_text.text,
                                            draw_text.text,
                                            cmd_func=self.move_now,
                                            args=(scene_path, ))
                     now_draw.width = self.width
                     now_draw.draw()
                     return_list.append(now_draw.return_text)
                 else:
                     now_draw = draw.NormalDraw()
                     now_draw.text = draw_text.text
                     now_draw.width = self.width
                     if draw_text.is_button and draw_text.text == character_scene_id:
                         now_draw.style = "nowmap"
                     now_draw.draw()
             line_feed.draw()
         path_edge = map_data.path_edge
         scene_path = path_edge[character_scene_id].copy()
         if character_scene_id in scene_path:
             del scene_path[character_scene_id]
         scene_path_list = list(scene_path.keys())
         if len(scene_path_list):
             line = draw.LineDraw(".", self.width)
             line.draw()
             message_draw = draw.NormalDraw()
             message_draw.text = _("你可以从这里前往:\n")
             message_draw.width = self.width
             message_draw.draw()
             draw_list = []
             for scene in scene_path_list:
                 load_scene_data = map_handle.get_scene_data_for_map(
                     map_path_str, scene)
                 now_scene_path = map_handle.get_map_system_path_for_str(
                     load_scene_data.scene_path)
                 now_draw = draw.CenterButton(
                     f"[{load_scene_data.scene_name}]",
                     load_scene_data.scene_name,
                     self.width / 4,
                     cmd_func=self.move_now,
                     args=(now_scene_path, ),
                 )
                 return_list.append(now_draw.return_text)
                 draw_list.append(now_draw)
             draw_group = value_handle.list_of_groups(draw_list, 4)
             for now_draw_list in draw_group:
                 for now_draw in now_draw_list:
                     now_draw.draw()
                 line_feed.draw()
         scene_id_list = list(path_edge.keys())
         now_index = len(scene_id_list)
         index = now_index
         move_menu_panel.update()
         move_menu_panel.draw()
         return_list.extend(move_menu_panel.return_list)
         if move_menu_panel.now_type in move_menu_panel_data:
             now_move_menu = move_menu_panel_data[move_menu_panel.now_type]
             now_move_menu.update(self.now_map, index)
             now_move_menu.draw()
             now_index = now_move_menu.end_index + 1
             return_list.extend(now_move_menu.return_list)
         line = draw.LineDraw("=", self.width)
         line.draw()
         if self.now_map != []:
             now_id = text_handle.id_index(now_index)
             now_text = now_id + _("查看上级地图")
             up_button = draw.CenterButton(now_text,
                                           str(now_index),
                                           self.width / 3,
                                           cmd_func=self.up_map)
             up_button.draw()
             return_list.append(up_button.return_text)
             now_index += 1
         else:
             now_draw = draw.NormalDraw()
             now_draw.text = " " * int(self.width / 3)
             now_draw.width = self.width / 3
             now_draw.draw()
         back_id = text_handle.id_index(now_index)
         now_text = back_id + _("返回")
         back_button = draw.CenterButton(now_text, str(now_index),
                                         self.width / 3)
         back_button.draw()
         return_list.append(back_button.return_text)
         now_index += 1
         character_map = map_handle.get_map_for_path(
             character_data.position)
         if character_map != self.now_map:
             now_id = text_handle.id_index(now_index)
             now_text = now_id + _("查看下级地图")
             down_button = draw.CenterButton(now_text,
                                             str(now_index),
                                             self.width / 3,
                                             cmd_func=self.down_map)
             down_button.draw()
             return_list.append(down_button.return_text)
         line_feed.draw()
         yrn = flow_handle.askfor_all(return_list)
         py_cmd.clr_cmd()
         if yrn == back_button.return_text:
             cache.now_panel_id = constant.Panel.IN_SCENE
             break