def pcmd( cmd_str: str, cmd_id: int, cmd_func=flow_handle.null_func, arg=(), kw={}, normal_style="standard", on_style="onbutton", ): """ 打印一条指令 Keyword arguments: cmd_str -- 命令对应文字 cmd_id -- 命令数字 cmd_func -- 命令函数 arg -- 传给命令函数的顺序参数 kw -- 传给命令函数的字典参数 normal_style -- 正常状态下命令显示样式 on_style -- 鼠标在其上的时候命令显示样式 """ cmd_str = dictionaries.handle_text(cmd_str) cmd_id = dictionaries.handle_text(f"{cmd_id}") cache_contorl.text_wait = float(game_config.text_wait) global last_char if len(cmd_str) > 0: last_char = cmd_str[-1:] flow_handle.print_cmd( cmd_str, cmd_id, cmd_func, arg, kw, normal_style, on_style )
def son_title_print(string: str): """ 按预订样式"sontitle(子标题)"绘制文本 示例: ::::子标题:::: 文本将用=补全至与行同宽 Keyword arguments: string -- 子标题文本 """ text_wait = cache_contorl.text_wait if text_wait != 0: time.sleep(text_wait) string = string string = dictionaries.handle_text(string) global last_char if len(string) > 0: last_char = string[-1:] width = game_config.text_width text_width = text_handle.get_text_index(string) line_width = int(int(width) / 4) line_width_fix = int(int(width) / 4 - int(text_width)) line_feed_print( ":" * line_width_fix + "<sontitle>" + string + "</sontitle>" + ":" * line_width * 3 )
def little_title_print(string: str): """ 按预订样式"littletitle(小标题)"绘制文本 示例: ====口小标题口==== 文本将用=补全至与行同宽 Keyword arguments: string -- 小标题文本 """ text_wait = cache_contorl.text_wait if text_wait != 0: time.sleep(text_wait) string = str(string) string = dictionaries.handle_text(string) global last_char if len(string) > 0: last_char = string[-1:] width = game_config.text_width text_width = text_handle.get_text_index(string) line_width = int(int(width) / 2 - int(text_width) / 2 - 2) line_feed_print( "=" * line_width + "<littletitle>口" + string + "口</littletitle>" + "=" * line_width )
def normal_print(string: str, style="standard", rich_text_judge=True): """ 游戏基础的文本绘制实现 Keyword arguments: string -- 需要绘制的文本 style -- 文本的默认样式 (default 'standard') rich_text_judge -- 启用富文本的开关 (default True) """ if rich_text_judge: bar_list = list( text_loading.get_game_data( constant.FilePath.BAR_CONFIG_PATH).keys()) string = dictionaries.handle_text(string) style_list = rich_text.set_rich_text_print(string, style) global last_char if len(string) > 0: last_char = string[-1:] string = rich_text.remove_rich_cache(string) string = r"" + string for i in range(0, len(string)): if style_list[i] in bar_list: style_data = text_loading.get_text_data( constant.FilePath.BAR_CONFIG_PATH, style_list[i]) true_bar = style_data["truebar"] null_bar = style_data["nullbar"] if string[i] == "0": image_print(null_bar, "bar") elif string[i] == "1": image_print(true_bar, "bar") else: io_init.era_print(string[i], style_list[i]) else: io_init.era_print(string[i], style_list[i]) else: io_init.era_print(string, style)
def remove_rich_cache(string: str) -> str: """ 移除文本中的富文本标签 Keyword arguments: string -- 原始文本 """ string = dictionaries.handle_text(string) bar_list = list( text_loading.get_game_data(constant.FilePath.BAR_CONFIG_PATH).keys()) style_name_list = game_config.get_font_data_list() + bar_list for i in range(0, len(style_name_list)): style_text_head = "<" + style_name_list[i] + ">" style_text_tail = "</" + style_name_list[i] + ">" if style_text_head in string: string = string.replace(style_text_head, "") string = string.replace(style_text_tail, "") return string
def option_str( cmd_list: str, cmd_column=1, cmd_size="left", last_line=False, askfor=True, cmd_list_data=None, null_cmd="", return_data=None, normal_style_data={}, on_style_data={}, ) -> list: """ 绘制无id的文本命令列表 例: [长寿的青蛙] Keyword arguments: cmd_list -- 命令列表id,当cmd_list_data为None时,根据此id调用cmd_list内的命令数据 cmd_column -- 每行命令列数 (default 1) cmd_size -- 命令文本在当前列的对齐方式(left/center/right) (default 'left') last_line -- 最后一个命令换行绘制 (default False) cmd_list_data -- 命令列表数据 (default None) null_cmd -- 在列表中按纯文本绘制,并不加入监听列表的命令文本 return_data -- 命令返回数据 (default None) normal_style_data -- 按钮通常样式列表 on_style_data -- 按钮被按下时样式列表 """ if cmd_list_data is None: cmd_list_data = text_loading.get_text_data( constant.FilePath.CMD_PATH, cmd_list ).copy() input_s = [] text_width = game_config.text_width if last_line: if len(cmd_list_data) - 1 < cmd_column: cmd_column = len(cmd_list_data) - 1 else: if len(cmd_list_data) < cmd_column: cmd_column = len(cmd_list_data) cmd_index = int(text_width / cmd_column) now_null_cmd = null_cmd for i in range(0, len(cmd_list_data)): normal_style = "standard" on_style = "onbutton" if cmd_list_data[i] in normal_style_data: normal_style = normal_style_data[cmd_list_data[i]] if cmd_list_data[i] in on_style_data: on_style = on_style_data[cmd_list_data[i]] now_null_cmd = True if return_data is None: if null_cmd == cmd_list_data[i]: now_null_cmd = False cmd_text_bak = dictionaries.handle_text(cmd_list_data[i]) cmd_text = "[" + cmd_text_bak + "]" else: if null_cmd == return_data[i]: now_null_cmd = False cmd_text_bak = return_data[i] cmd_text = "[" + cmd_list_data[i] + "]" if i == 0: cmd_size_print( cmd_text, cmd_text_bak, None, cmd_index, cmd_size, now_null_cmd, normal_style, on_style, ) if now_null_cmd: input_s.append(cmd_text_bak) elif i / cmd_column >= 1 and i % cmd_column == 0: era_print.line_feed_print() cmd_size_print( cmd_text, cmd_text_bak, None, cmd_index, cmd_size, now_null_cmd, normal_style, on_style, ) if now_null_cmd: input_s.append(cmd_text_bak) elif i == len(cmd_list_data) - 1 and last_line: era_print.line_feed_print() cmd_size_print( cmd_text, cmd_text_bak, None, cmd_index, cmd_size, now_null_cmd, normal_style, on_style, ) if now_null_cmd: input_s.append(cmd_text_bak) else: cmd_size_print( cmd_text, cmd_text_bak, None, cmd_index, cmd_size, now_null_cmd, normal_style, on_style, ) if now_null_cmd: input_s.append(cmd_text_bak) era_print.line_feed_print() if askfor: ans = game_init.askfor_all(input_s) return ans else: return input_s
def option_int( cmd_list: list, cmd_column=1, id_size="left", id_switch=True, askfor=True, cmd_size="left", start_id=0, cmd_list_data=None, last_line=False, normal_style_data={}, on_style_data={}, ) -> list: """ 批量绘制带id命令列表 例: [000]开始游戏 Keyword arguments: cmd_list -- 命令列表id,当cmd_list_data为None时,根据此id调用cmd_list内的命令数据 cmd_column -- 每行命令列数 (default 1) id_size -- id文本位置(left/center/right) (default 'left') id_switch -- id显示开关 (default True) askfor -- 绘制完成时等待玩家输入的开关 (default True) cmd_size -- 命令文本在当前列的对齐方式(left/center/right) (default 'left') start_id -- 命令列表的起始id (default 0) cmd_list_data -- 命令列表数据 (default None) last_line -- 最后一个命令换行绘制 (default False) normal_style_data -- 按钮对应通常样式列表 on_style_data -- 按钮对应按下时样式列表 """ if cmd_list_data is None: cmd_list_data = text_loading.get_text_data( constant.FilePath.CMD_PATH, cmd_list ).copy() input_i = [] text_width = game_config.text_width if last_line: if len(cmd_list_data) < cmd_column: cmd_column = len(cmd_list_data) else: if len(cmd_list_data) + 1 < cmd_column: cmd_column = len(cmd_list_data) cmd_index = int(text_width / cmd_column) if len(cmd_list_data) + 1 < cmd_column: cmd_column = len(cmd_list_data) + 1 for i in range(0, len(cmd_list_data)): cmd_text = dictionaries.handle_text(cmd_list_data[i]) return_id = i + start_id if id_switch: id = id_index(return_id) else: id = "" cmd_text_and_id = id + cmd_text cmd_text_and_id_index = text_handle.get_text_index(cmd_text_and_id) normal_style = "standard" on_style = "onbutton" if cmd_list_data[i] in normal_style_data: normal_style = normal_style_data[cmd_list_data[i]] if cmd_list_data[i] in on_style_data: on_style = on_style_data[cmd_list_data[i]] if cmd_text_and_id_index < cmd_index: if id_size == "right": cmd_text_and_id = cmd_text + id elif id_size == "left": cmd_text_and_id = id + cmd_text if i == 0: cmd_text_and_id = cmd_text_and_id.rstrip() cmd_size_print( cmd_text_and_id, return_id, None, cmd_index, cmd_size, True, normal_style, on_style, ) input_i.append(str(return_id)) elif i / cmd_column >= 1 and i % cmd_column == 0: era_print.line_feed_print() cmd_text_and_id = cmd_text_and_id.rstrip() cmd_size_print( cmd_text_and_id, return_id, None, cmd_index, cmd_size, True, normal_style, on_style, ) input_i.append(str(return_id)) elif i == len(cmd_list_data) and last_line: era_print.line_feed_print() cmd_text_and_id = cmd_text_and_id.rstrip() cmd_size_print( cmd_text_and_id, return_id, None, cmd_index, cmd_size, True, normal_style, on_style, ) input_i.append(str(return_id)) else: cmd_text_and_id = cmd_text_and_id.rstrip() cmd_size_print( cmd_text_and_id, return_id, None, cmd_index, cmd_size, True, normal_style, on_style, ) input_i.append(str(return_id)) era_print.line_feed_print() if askfor: ans = int(game_init.askfor_int(input_i)) return ans else: return input_i