コード例 #1
0
 def draw(self):
     """ 绘制面板 """
     line = draw.LineDraw(".", self.width)
     line.draw()
     info_draw = panel.CenterDrawTextListPanel()
     info_draw.set(self.info_list, self.width, 3)
     info_draw.draw()
コード例 #2
0
def confirm_character_attr_panel():
    """ 确认角色属性面板 """
    now_attr_panel = see_character_info_panel.SeeCharacterInfoPanel(0, width)
    askfor_panel = panel.OneMessageAndSingleColumnButton()
    while 1:
        line_feed_draw.draw()
        now_attr_panel.draw()
        ask_list = []
        ask_list.extend(now_attr_panel.return_list)
        now_line = draw.LineDraw("~", width)
        now_line.draw()
        askfor_list = [_("就这样开始新的人生吧"), _("重头再来一次")]
        start_id = 0
        now_id_judge = 0
        now_id_list = []
        for now_id in ask_list:
            if now_id.isdigit():
                now_id_judge = 1
                now_id_list.append(int(now_id))
        if now_id_judge:
            start_id = max(now_id_list) + 1
        askfor_panel.set(askfor_list, _("就这样了可以吗?"), start_id)
        askfor_panel.draw()
        askfor_panel_return_list = askfor_panel.get_return_list()
        ask_list.extend(askfor_panel_return_list.keys())
        item_panel_ask_list = []
        item_old_page_id = ""
        item_next_page_id = ""
        yrn = flow_handle.askfor_all(ask_list)
        if yrn in askfor_panel_return_list:
            return askfor_panel_return_list[yrn] == askfor_list[0]
コード例 #3
0
ファイル: see_save_info_panel.py プロジェクト: gin234/dieloli
 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 = []
         auto_save_draw = SaveInfoDraw(["auto", 0], self.width, 1, 0, 0)
         auto_save_draw.draw()
         line_feed.draw()
         self.return_list.append("auto")
         now_line = draw.LineDraw(".", self.width)
         now_line.draw()
         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
コード例 #4
0
 def draw(self):
     """ 绘制面板 """
     self.draw_data[self.now_panel].draw()
     self.return_list = []
     self.return_list.extend(self.draw_data[self.now_panel].return_list)
     line = draw.LineDraw("=", self.width)
     line.draw()
     self.handle_panel.draw()
     self.return_list.extend(self.handle_panel.return_list)
コード例 #5
0
 def draw(self):
     """ 绘制面板 """
     line = draw.LineDraw(".", self.width)
     line.draw()
     info_draw = panel.CenterDrawTextListPanel()
     info_draw.set(
         [self.dormitory_text, self.classroom_text, self.officeroom_text],
         self.width, 3)
     info_draw.draw()
コード例 #6
0
 def draw(self):
     """ 绘制面板 """
     line = draw.LineDraw(":", self.width)
     line.draw()
     info_draw = draw.CenterDraw()
     info_draw.text = self.description
     info_draw.width = self.width
     info_draw.draw()
     line_feed.draw()
コード例 #7
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
コード例 #8
0
 def draw(self):
     """ 绘制对象 """
     title_draw = draw.TitleLineDraw(_("食物背包"), self.width)
     food_type_list = [_("主食"), _("零食"), _("饮品"), _("水果"), _("食材"), _("调料")]
     food_id_list = list(
         cooking.get_character_food_bag_type_list_buy_food_type(
             0, self.now_panel).items())
     self.handle_panel = panel.PageHandlePanel(food_id_list,
                                               SeeFoodListByFoodNameDraw,
                                               10, 1, window_width, 1, 1, 0)
     while 1:
         if cache.now_panel_id != constant.Panel.FOOD_BAG:
             break
         self.handle_panel.update()
         title_draw.draw()
         line_feed.draw()
         return_list = []
         for food_type in food_type_list:
             if food_type == self.now_panel:
                 now_draw = draw.CenterDraw()
                 now_draw.text = f"[{food_type}]"
                 now_draw.style = "onbutton"
                 now_draw.width = self.width / len(food_type_list)
                 now_draw.draw()
             else:
                 now_draw = draw.CenterButton(
                     f"[{food_type}]",
                     food_type,
                     self.width / len(food_type_list),
                     cmd_func=self.change_panel,
                     args=(food_type, ),
                 )
                 now_draw.draw()
                 return_list.append(now_draw.return_text)
         line = draw.LineDraw("+", self.width)
         line.draw()
         self.handle_panel.draw()
         return_list.extend(self.handle_panel.return_list)
         back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width)
         back_draw.draw()
         return_list.append(back_draw.return_text)
         yrn = flow_handle.askfor_all(return_list)
         if yrn == back_draw.return_text:
             cache.now_panel_id = constant.Panel.IN_SCENE
             break
コード例 #9
0
 def set(self, title_text: str, info_list: List[str], width: int):
     """
     设置绘制信息
     Keyword arguments:
     title_text -- 标题
     info_list -- 信息列表
     width -- 标题宽度
     """
     self.width = width
     line = draw.LineDraw("=", width)
     self.draw_list.append(line)
     title = draw.CenterDraw()
     title.width = self.width
     title.text = title_text
     self.draw_list.append(title)
     for info_text in info_list:
         info = draw.RightDraw()
         info.width = width
         info.text = info_text
         self.draw_list.append(info)
     self.draw_list.append(line)
コード例 #10
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)
コード例 #11
0
 def draw(self):
     """ 绘制对象 """
     timetable_list: List[
         game_type.TeacherTimeTable] = cache.teacher_school_timetable[0]
     text_list = []
     args_list = []
     line_feed.draw()
     title_draw = draw.TitleLineDraw(_("课程表"), self.width)
     title_draw.draw()
     for timetable in timetable_list:
         class_name = attr_text.get_scene_path_text(timetable.class_room)
         now_time = str(timetable.time)
         minute = now_time[-2:]
         hour = now_time[:-2]
         now_time_text = f"{hour}:{minute}"
         now_text = _(
             "{weekday} 第{times}节 班级:{class_name} 科目:{course} 上课时间:{time}"
         ).format(
             weekday=game_config.config_week_day[timetable.week_day].name,
             times=timetable.class_times,
             class_name=class_name,
             course=game_config.config_course[timetable.course].name,
             time=now_time_text,
         )
         text_list.append(now_text)
         args_list.append(timetable.class_room)
     now_draw = panel.LeftDrawIDButtonListPanel()
     now_draw.set(text_list, 0, self.width, 1, "", self.move_now, args_list)
     now_draw.draw()
     line_draw = draw.LineDraw("-", self.width)
     line_draw.draw()
     back_draw = draw.CenterButton(_("[返回]"), _("返回"), self.width)
     back_draw.draw()
     line_feed.draw()
     return_list = now_draw.return_list
     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
コード例 #12
0
 def update(self):
     """ 更新绘制面板 """
     line = draw.LineDraw(".", self.width)
     self.draw_list = []
     self.return_list = []
     self.draw_list.append(line)
     menu_draw = panel.CenterDrawButtonListPanel()
     move_name_list = [
         game_config.config_move_menu_type[i].name
         for i in game_config.config_move_menu_type
     ]
     move_name_draw_list = [f"[{name}]" for name in move_name_list]
     menu_draw.set(
         move_name_draw_list,
         move_name_list,
         self.width,
         len(game_config.config_move_menu_type),
         move_name_draw_list[self.now_type],
         self.change_type,
     )
     self.draw_list.append(menu_draw)
     self.return_list.extend(menu_draw.return_list)
コード例 #13
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()
コード例 #14
0
    clothing,
)
from Script.UI.Moudle import panel, draw
from Script.UI.Panel import see_character_info_panel
from Script.Config import normal_config, game_config

cache: game_type.Cache = cache_control.cache
""" 游戏缓存数据 """
_: FunctionType = get_text._
""" 翻译api """
width = normal_config.config_normal.text_width
""" 屏幕宽度 """
line_feed_draw = draw.NormalDraw()
""" 绘制换行对象 """
line_feed_draw.text = "\n"
line = draw.LineDraw("=", width)
""" 标题线绘制对象 """


@handle_panel.add_panel(constant.Panel.CREATOR_CHARACTER)
def creator_character_panel():
    """ 创建角色面板 """
    cache.character_data[0] = game_type.Character()
    character_handle.init_character_list()
    while 1:
        if input_name_panel():
            character.init_attr(0)
            game_start()
            if confirm_character_attr_panel():
                break
    cache.now_panel_id = constant.Panel.GET_UP
コード例 #15
0
 def draw(self):
     """ 绘制对象 """
     line = draw.LineDraw(".", self.width)
     line.draw()
     for value in self.draw_list:
         value.draw()
コード例 #16
0
 def update(self):
     """ 更新绘制对象 """
     self.return_list = []
     start_id = self.now_page * self.limit
     total_page = int((len(self.text_list) - 1) / self.limit)
     if start_id >= len(self.text_list):
         self.now_page = total_page
         start_id = self.now_page * self.limit
     now_page_list = []
     for i in range(start_id, len(self.text_list)):
         if len(now_page_list) >= self.limit:
             break
         now_page_list.append(self.text_list[i])
     draw_text_group = value_handle.list_of_groups(now_page_list, self.column)
     draw_list: List[draw.NormalDraw] = []
     self.end_index = self.button_start_id
     index = self.button_start_id
     line_feed = draw.NormalDraw()
     line_feed.text = "\n"
     line_feed.width = 1
     for draw_text_list in draw_text_group:
         if self.row_septal_lines != "" and index:
             line_draw = draw.LineDraw(self.row_septal_lines, self.width)
             draw_list.append(line_draw)
         now_width = self.width
         if self.col_septal_lines != "":
             col_index = len(draw_text_list) + 1
             col_width = text_handle.get_text_index(self.col_septal_lines)
             now_width -= col_width * col_index
         value_width = int(now_width / self.column)
         col_fix_draw = draw.NormalDraw()
         col_fix_draw.text = self.col_septal_lines
         col_fix_draw.width = 1
         draw_list.append(col_fix_draw)
         for value in draw_text_list:
             is_button = 1
             if value == self.null_button_text:
                 is_button = 0
             value_draw = self.draw_type(value, value_width, is_button, self.num_button, index)
             value_draw.draw_text = text_handle.align(value_draw.draw_text, "center", 0, 1, value_width)
             if self.num_button:
                 self.return_list.append(str(index))
             else:
                 self.return_list.append(value_draw.button_return)
             index += 1
             draw_list.append(value_draw)
             draw_list.append(col_fix_draw)
         draw_list.append(line_feed)
     if self.num_button:
         self.end_index = index
     if total_page:
         now_line = draw.LineDraw("-", self.width)
         draw_list.append(now_line)
         page_change_start_id = self.button_start_id
         if self.num_button:
             page_change_start_id = index
         old_page_index_text = text_handle.id_index(page_change_start_id)
         old_page_button = draw.CenterButton(
             _("{old_page_index_text} 上一页").format(old_page_index_text=old_page_index_text),
             str(page_change_start_id),
             int(self.width / 3),
             cmd_func=self.old_page,
         )
         self.return_list.append(str(page_change_start_id))
         draw_list.append(old_page_button)
         page_text = f"({self.now_page}/{total_page})"
         page_draw = draw.CenterDraw()
         page_draw.width = int(self.width / 3)
         page_draw.text = page_text
         draw_list.append(page_draw)
         next_page_index_text = text_handle.id_index(page_change_start_id + 1)
         next_page_button = draw.CenterButton(
             _("{next_page_index_text} 下一页").format(next_page_index_text=next_page_index_text),
             str(page_change_start_id + 1),
             int(self.width / 3),
             cmd_func=self.next_page,
         )
         self.end_index = page_change_start_id + 1
         self.return_list.append(str(page_change_start_id + 1))
         draw_list.append(next_page_button)
         draw_list.append(line_feed)
     self.draw_list = draw_list
コード例 #17
0
    def draw(self):
        """ 绘制对象 """
        school_id, phase = course.get_character_school_phase(0)
        time_table = cache.course_time_table_data[school_id][phase]
        weekday_text_list = [
            game_config.config_week_day[i].name
            for i in game_config.config_week_day
        ]
        character_data: game_type.Character = cache.character_data[0]
        now_time_value = cache.game_time.hour * 100 + cache.game_time.minute
        while 1:
            now_week_text = game_config.config_week_day[self.now_week].name
            title_draw = draw.TitleLineDraw(_("课程表"), self.width)
            title_draw.draw()
            index = 0
            return_list = []
            for week_text in weekday_text_list:
                if week_text == now_week_text:
                    if index == cache.game_time.weekday():
                        week_text = week_text + _("(今日)")
                    now_draw = draw.CenterDraw()
                    now_draw.text = f"[{week_text}]"

                    now_draw.style = "onbutton"
                    now_draw.width = self.width / len(weekday_text_list)
                    now_draw.draw()
                else:
                    if index == cache.game_time.weekday():
                        week_text = week_text + _("(今日)")
                    now_draw = draw.CenterButton(
                        f"[{week_text}]",
                        week_text,
                        self.width / len(weekday_text_list),
                        cmd_func=self.change_now_week,
                        args=(index, ),
                    )
                    now_draw.draw()
                    return_list.append(now_draw.return_text)
                index += 1
            line_feed.draw()
            line = draw.LineDraw("+", self.width)
            line.draw()
            title_list = [_("课时"), _("科目"), _("教师"), _("上课时间"), _("下课时间")]
            title_list_draw = panel.CenterDrawTextListPanel()
            title_list_draw.set(title_list, self.width, 5)
            title_list_draw.draw()
            now_text_list = []
            times_judge = 1
            if self.now_week not in time_table:
                now_text_list.append(_("休息日"))
            else:
                for times in range(0, len(time_table[self.now_week]) + 1):
                    course_time_id = game_config.config_school_session_data[
                        school_id][times]
                    course_time_config = game_config.config_school_session[
                        course_time_id]
                    course_time = str(course_time_config.start_time)
                    minute = course_time[-2:]
                    hour = course_time[:-2]
                    course_time_text = f"{hour}:{minute}"
                    course_end_time = str(course_time_config.end_time)
                    end_minute = course_end_time[-2:]
                    end_hour = course_end_time[:-2]
                    course_end_time_text = f"{end_hour}:{end_minute}"
                    now_time_judge = 0
                    if times_judge:
                        if self.now_week == cache.game_time.weekday():
                            if now_time_value < course_time_config.end_time:
                                now_time_judge = 1
                                times_judge = 0
                    if not times:
                        now_class_text = _("早读课")
                        if now_time_judge:
                            now_class_text += _("(当前)")
                        now_text = [
                            now_class_text, "", "", course_time_text,
                            course_end_time_text
                        ]
                        now_text_list.append(now_text)
                        continue
                    cache.class_timetable_teacher_data.setdefault(
                        school_id, {})
                    cache.class_timetable_teacher_data[school_id].setdefault(
                        phase, {})
                    cache.class_timetable_teacher_data[school_id][
                        phase].setdefault(character_data.classroom, {})
                    cache.class_timetable_teacher_data[school_id][phase][
                        character_data.classroom].setdefault(
                            self.now_week, {})
                    course_id = time_table[self.now_week][times]
                    course_config = game_config.config_course[course_id]
                    course_name = course_config.name
                    times_text = _("第{times}节").format(times=times)
                    if now_time_judge:
                        times_text += _("(当前)")
                    if (times in cache.class_timetable_teacher_data[school_id]
                        [phase][character_data.classroom][self.now_week]):
                        teacher_id = cache.class_timetable_teacher_data[
                            school_id][phase][character_data.classroom][
                                self.now_week][times]
                        teacher_data: game_type.Character = cache.character_data[
                            teacher_id]
                        teacher_name = teacher_data.name
                        now_text = [
                            times_text,
                            course_name,
                            teacher_name,
                            course_time_text,
                            course_end_time_text,
                        ]
                    else:
                        now_text = [
                            times_text,
                            course_name,
                            _("自习"),
                            course_time_text,
                            course_end_time_text,
                        ]
                    now_text_list.append(now_text)
            for now_text in now_text_list:
                now_draw = panel.LeftDrawTextListPanel()
                now_draw.set(now_text, self.width, 5)
                now_draw.draw()
            line_draw = draw.LineDraw("-", self.width)
            line_draw.draw()
            back_draw = draw.CenterButton(_("[返回]"), _("返回"), self.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
コード例 #18
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
コード例 #19
0
 def draw(self):
     """ 绘制面板 """
     for now_draw in self.draw_list:
         now_draw.draw()
     line = draw.LineDraw("-.-", self.width)
     line.draw()
コード例 #20
0
ファイル: in_scene_panel.py プロジェクト: ctjh031116/dieloli
 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()
コード例 #21
0
ファイル: in_scene_panel.py プロジェクト: ctjh031116/dieloli
 def draw(self):
     """ 绘制操作菜单面板 """
     self.return_list = []
     line = draw.LineDraw("-.-", self.width)
     line.draw()
     fix_draw = draw.NormalDraw()
     fix_width = int(
         (self.width - int(self.width / len(cache.instruct_filter)) * len(cache.instruct_filter)) / 2
     )
     fix_draw.width = fix_width
     fix_draw.text = " " * fix_width
     fix_draw.draw()
     for now_type in cache.instruct_filter:
         now_config = game_config.config_instruct_type[now_type]
         if cache.instruct_filter[now_type]:
             now_button = draw.CenterButton(
                 f"[{now_config.name}]",
                 now_config.name,
                 self.width / len(cache.instruct_filter),
                 " ",
                 "onbutton",
                 "standard",
                 cmd_func=self.change_filter,
                 args=(now_type,),
             )
         else:
             now_button = draw.CenterButton(
                 f"[{now_config.name}]",
                 now_config.name,
                 self.width / len(cache.instruct_filter),
                 cmd_func=self.change_filter,
                 args=(now_type,),
             )
         now_button.width = int(self.width / len(cache.instruct_filter))
         self.return_list.append(now_button.return_text)
         now_button.draw()
     line_feed.draw()
     line = draw.LineDraw("~..", self.width)
     line.draw()
     now_instruct_list = []
     now_premise_data = {}
     for now_type in cache.instruct_filter:
         if cache.instruct_filter[now_type] and now_type in constant.instruct_type_data:
             for instruct in constant.instruct_type_data[now_type]:
                 premise_judge = 0
                 if instruct in constant.instruct_premise_data:
                     for premise in constant.instruct_premise_data[instruct]:
                         if premise in now_premise_data:
                             if now_premise_data[premise]:
                                 continue
                             premise_judge = 1
                             break
                         else:
                             now_premise_value = handle_premise.handle_premise(premise, 0)
                             now_premise_data[premise] = now_premise_value
                             if not now_premise_value:
                                 premise_judge = 1
                                 break
                 if premise_judge:
                     continue
                 now_instruct_list.append(instruct)
     now_instruct_list.sort()
     instruct_group = value_handle.list_of_groups(now_instruct_list, 3)
     now_draw_list = []
     for instruct_list in instruct_group:
         for instruct_id in instruct_list:
             instruct_name = constant.handle_instruct_name_data[instruct_id]
             id_text = text_handle.id_index(instruct_id)
             now_text = f"{id_text}{instruct_name}"
             now_draw = draw.LeftButton(
                 now_text,
                 str(instruct_id),
                 int(self.width / len(instruct_group)),
                 cmd_func=self.handle_instruct,
                 args=(instruct_id,),
             )
             now_draw_list.append(now_draw)
             self.return_list.append(now_draw.return_text)
     now_draw = panel.VerticalDrawTextListGroup(self.width)
     now_group = value_handle.list_of_groups(now_draw_list, 3)
     now_draw.draw_list = now_group
     now_draw.draw()