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()
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]
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
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)
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()
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()
def draw(self): """ 绘制对象 """ scene_position = cache.character_data[0].position scene_position_str = map_handle.get_map_system_path_str_for_list( scene_position) scene_name = cache.scene_data[scene_position_str].scene_name title_draw = draw.TitleLineDraw(scene_name, self.width) food_type_list = [_("主食"), _("零食"), _("饮品"), _("水果"), _("食材"), _("调料")] self.handle_panel = panel.PageHandlePanel([], SeeFoodListByFoodNameDraw, 10, 5, self.width, 1, 1, 0) while 1: py_cmd.clr_cmd() food_name_list = list( cooking.get_restaurant_food_type_list_buy_food_type( self.now_panel).items()) self.handle_panel.text_list = food_name_list self.handle_panel.update() title_draw.draw() return_list = [] for food_type in food_type_list: if food_type == self.now_panel: now_draw = draw.CenterDraw() now_draw.text = f"{food_type}]" now_draw.style = "onbutton" now_draw.width = self.width / len(food_type_list) now_draw.draw() else: now_draw = draw.CenterButton( f"[{food_type}]", food_type, self.width / len(food_type_list), cmd_func=self.change_panel, args=(food_type, ), ) now_draw.draw() return_list.append(now_draw.return_text) line_feed.draw() line = draw.LineDraw("+", self.width) line.draw() self.handle_panel.draw() return_list.extend(self.handle_panel.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width) back_draw.draw() line_feed.draw() return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(return_list) if yrn == back_draw.return_text: cache.now_panel_id = constant.Panel.IN_SCENE break
def draw(self): """ 绘制对象 """ title_draw = draw.TitleLineDraw(_("食物背包"), self.width) food_type_list = [_("主食"), _("零食"), _("饮品"), _("水果"), _("食材"), _("调料")] food_id_list = list( cooking.get_character_food_bag_type_list_buy_food_type( 0, self.now_panel).items()) self.handle_panel = panel.PageHandlePanel(food_id_list, SeeFoodListByFoodNameDraw, 10, 1, window_width, 1, 1, 0) while 1: if cache.now_panel_id != constant.Panel.FOOD_BAG: break self.handle_panel.update() title_draw.draw() line_feed.draw() return_list = [] for food_type in food_type_list: if food_type == self.now_panel: now_draw = draw.CenterDraw() now_draw.text = f"[{food_type}]" now_draw.style = "onbutton" now_draw.width = self.width / len(food_type_list) now_draw.draw() else: now_draw = draw.CenterButton( f"[{food_type}]", food_type, self.width / len(food_type_list), cmd_func=self.change_panel, args=(food_type, ), ) now_draw.draw() return_list.append(now_draw.return_text) line = draw.LineDraw("+", self.width) line.draw() self.handle_panel.draw() return_list.extend(self.handle_panel.return_list) back_draw = draw.CenterButton(_("[返回]"), _("返回"), window_width) back_draw.draw() return_list.append(back_draw.return_text) yrn = flow_handle.askfor_all(return_list) if yrn == back_draw.return_text: cache.now_panel_id = constant.Panel.IN_SCENE break
def 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)
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)
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
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)
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()
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
def draw(self): """ 绘制对象 """ line = draw.LineDraw(".", self.width) line.draw() for value in self.draw_list: value.draw()
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
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
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
def draw(self): """ 绘制面板 """ for now_draw in self.draw_list: now_draw.draw() line = draw.LineDraw("-.-", self.width) line.draw()
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()
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()