Ejemplo n.º 1
0
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
    )
Ejemplo n.º 2
0
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
    )
Ejemplo n.º 3
0
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
    )
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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