ASERStudio::AStorySyntax::AStoryXController Class
class ASERStudio::AStorySyntax::AStoryXControllerAStoryXController是对AStoryX控制器和解析的一体化封装. 详情...
| 头文件: | #include <AStoryXController> |
| 自以下版本: | ASERStudio 2.0 |
公开类型
(自 ASERStudio 2.0 引入) enum | ControllerType { Unknown, Background, Music, SoundEffect, Mask, …, Aliases } |
公开成员函数
(自 ASERStudio 2.0 引入) | AStoryXController() |
(自 ASERStudio 2.0 引入) | AStoryXController(const ASERStudio::AStorySyntax::AStoryXController &other) |
(自 ASERStudio 2.0 引入) | AStoryXController(ASERStudio::AStorySyntax::AStoryXController &&other) |
(自 ASERStudio 2.0 引入) | ~AStoryXController() |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXController::ControllerType | getControllerType() |
(自 ASERStudio 2.0 引入) QString | getControllerTypeString() |
(自 ASERStudio 2.0 引入) QString | getHeader() |
(自 ASERStudio 2.0 引入) QStringList | getOptionalParameterNames() |
(自 ASERStudio 2.0 引入) QStringList | getOptionalParameterPrefixes() |
(自 ASERStudio 2.0 引入) QMap<QString, ASERStudio::AStorySyntax::AStoryXValueMeta> | getOptionalParameterValues() |
(自 ASERStudio 2.0 引入) QString | getRequiredParameterName() |
(自 ASERStudio 2.0 引入) QString | getRequiredParameterSeparator() |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXValueMeta | getRequiredParameterValue() |
(自 ASERStudio 2.0 引入) QString | getStartSign() |
(自 ASERStudio 2.0 引入) bool | isAdvanced() |
(自 ASERStudio 2.0 引入) bool | isMonotonicity() |
(自 ASERStudio 2.0 引入) bool | isValid() |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXControllerParseData | parseAStoryX(const QString &str, qint32 cursorPosition = -1, bool diagnostic = false, qint32 lineIndex = -1) |
(自 ASERStudio 2.0 引入) QString | toString() |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXController & | operator=(ASERStudio::AStorySyntax::AStoryXController &&other) |
(自 ASERStudio 2.0 引入) ASERStudio::AStorySyntax::AStoryXController & | operator=(const ASERStudio::AStorySyntax::AStoryXController &other) |
静态公开成员
(自 ASERStudio 2.0 引入) QString | controllerTypeToString(ASERStudio::AStorySyntax::AStoryXController::ControllerType type) |
详细说明
AStoryXController类封装了AStoryX控制器的定义和解析功能。 它可以通过解析JSON配置来设置控制器的类型、头部信息、必需参数和可选参数等属性。 同时,它还提供了一个方法来解析AStoryX字符串,并返回解析结果。
它可同时用于对控制器的定义以及语法解析。有关解析结果的详细信息,以及“独一性”的具体解释, 请参阅AStoryXControllerParseData类。
值得指出的是,AStoryXController并不是AStoryXControllerParseData的唯一来源,另请参见 AStoryXPreprocessor类。
Note: 这类目前是只读的,且只能从JSON配置中构造。未来可能会增加更多的构造方式和修改方法,但目前不保证。
兼容语义
ASE-Ramake和ASERStudio在部分概念的称呼上存在差异(但它们本质是同一个东西, 也保证行为一致)。 有关“独一性”的两种称呼问题,请参阅AStoryXControllerParseData类的相关说明。 此类提供了等同函数isMonotonicity和isAdvanced,用户可以根据自己的习惯选择使用哪个函数。
此外,ASE-Ramake将控制器行首标识符直接称作“Header”,而ASERStudio将其称作“StartSign”。 ASERStudio 为这两种称呼提供了等同函数getStartSign和getHeader,用户可以根据自己的习惯选择使用哪个函数。
成员类型文档
[since ASERStudio 2.0] enum AStoryXController::ControllerType
控制器类型枚举,定义了各种AStoryX控制器的类型。
| Constant | Value | Description |
|---|---|---|
ASERStudio::AStorySyntax::AStoryXController::Unknown | -1 | 未知类型,表示未识别的控制器类型。 |
ASERStudio::AStorySyntax::AStoryXController::Background | 0 | 背景控制器,用于设置场景背景。 |
ASERStudio::AStorySyntax::AStoryXController::Music | 1 | 音乐控制器,用于播放背景音乐。 |
ASERStudio::AStorySyntax::AStoryXController::SoundEffect | 2 | 音效控制器,用于播放音效。 |
ASERStudio::AStorySyntax::AStoryXController::Mask | 3 | 遮罩控制器,用于设置场景遮罩,这是个和明日方舟强相关的控制器。 |
ASERStudio::AStorySyntax::AStoryXController::Character | 4 | 角色控制器,用于设置角色相关属性。 |
ASERStudio::AStorySyntax::AStoryXController::Choice | 5 | 选项控制器,向玩家提供选项。 |
ASERStudio::AStorySyntax::AStoryXController::Delay | 6 | 延迟控制器,用于设置延迟时间。 |
ASERStudio::AStorySyntax::AStoryXController::VisualEffect | 7 | 视觉效果控制器,用于设置视觉效果。 |
ASERStudio::AStorySyntax::AStoryXController::Interlude | 8 | 插播控制器,这是个和明日方舟强相关的控制器,目前用于显示通讯效果和立绘插入效果。 |
ASERStudio::AStorySyntax::AStoryXController::ColorMask | 9 | 色彩遮罩控制器,用于设置色彩遮罩效果。 |
ASERStudio::AStorySyntax::AStoryXController::Shake | 10 | 震动控制器,用于抖动相机。 |
ASERStudio::AStorySyntax::AStoryXController::FreeText | 11 | 自由文本控制器,用于显示自由文本。 |
ASERStudio::AStorySyntax::AStoryXController::Cut | 12 | 裁切控制器,用于对指定渲染顺序之后的场景进行显示裁切。 |
ASERStudio::AStorySyntax::AStoryXController::Filter | 13 | 滤镜控制器,用于设置滤镜效果。 |
ASERStudio::AStorySyntax::AStoryXController::AnimatedText | 14 | 动态文本控制器,用于显示动态文本。目前只用于显示明日方舟的时间坐标效果。 |
ASERStudio::AStorySyntax::AStoryXController::Sign | 15 | 标识控制器,用于设置标识。 |
ASERStudio::AStorySyntax::AStoryXController::Variable | 16 | 变量控制器,用于设置和修改变量。 |
ASERStudio::AStorySyntax::AStoryXController::Judge | 17 | 判断控制器,用于进行条件判断并根据结果写入变量。 |
ASERStudio::AStorySyntax::AStoryXController::Branch | 18 | 分支控制器,用于根据变量值进行分支跳转。 |
ASERStudio::AStorySyntax::AStoryXController::Narration | 19 | 旁白控制器,用于向阅读模式增加提示文本,普通播放时不可见。 |
ASERStudio::AStorySyntax::AStoryXController::Dialog | 20 | 对话控制器,用于人物对话。对话控制器的特殊之处在于它没有Header(StartSign),因此在解析时会有特殊的处理逻辑。 |
ASERStudio::AStorySyntax::AStoryXController::Preprocessor | 21 | 预处理器,用于定义预处理器指令,目前主要用于定义宏。它一定以#开头。 |
ASERStudio::AStorySyntax::AStoryXController::Comment | 22 | 注释,用于添加注释。它一定以//开头。 |
ASERStudio::AStorySyntax::AStoryXController::Aliases | 23 | 别名区域,用于定义控制器别名。它也没有Header,在解析时依赖上下文信息来识别。 |
这个enum 从 ASERStudio 2.0 开始支持。
成员函数文档
[since ASERStudio 2.0] AStoryXController::AStoryXController()
构造函数
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] AStoryXController::AStoryXController(const ASERStudio::AStorySyntax::AStoryXController &other)
other 另一个AStoryXController对象。
复制构造函数
这个function 从 ASERStudio 2.0 开始支持。
[noexcept, since ASERStudio 2.0] AStoryXController::AStoryXController(ASERStudio::AStorySyntax::AStoryXController &&other)
other 另一个AStoryXController对象。
移动构造函数
这个function 从 ASERStudio 2.0 开始支持。
[noexcept, since ASERStudio 2.0] AStoryXController::~AStoryXController()
析构函数
这个function 从 ASERStudio 2.0 开始支持。
[static, since ASERStudio 2.0] QString AStoryXController::controllerTypeToString(ASERStudio::AStorySyntax::AStoryXController::ControllerType type)
type 控制器类型。
将ControllerType枚举值转换为字符串。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXController::ControllerType AStoryXController::getControllerType()
return 控制器的类型。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXController::getControllerTypeString()
return 用字符串表示的控制器类型。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXController::getHeader()
return 控制器行首标识符(即ASE-Ramake中的Header)。ASERStudio中也称其为StartSign。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QStringList AStoryXController::getOptionalParameterNames()
return 可选参数的名称列表。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QStringList AStoryXController::getOptionalParameterPrefixes()
return 可选参数的前缀列表。前缀用于区分不同的可选参数,并且在解析AStoryX字符串时具有重要作用。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QMap<QString, ASERStudio::AStorySyntax::AStoryXValueMeta> AStoryXController::getOptionalParameterValues()
return 可选参数的值对象Map,每个值对象包含了该参数的类型、默认值、以及用于类型检查和转换的相关信息。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXController::getRequiredParameterName()
return 必需参数的名称。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXController::getRequiredParameterSeparator()
return 必需参数的内部分隔符。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXValueMeta AStoryXController::getRequiredParameterValue()
return 必需参数的值对象,包含了该参数的类型、默认值、以及用于类型检查和转换的相关信息。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXController::getStartSign()
return 控制器行首标识符(即ASE-Ramake中的Header)。ASERStudio中也称其为StartSign。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] bool AStoryXController::isAdvanced()
return 控制器的高级性(Advanced)。和单调性等价,即控制器的可选参数前缀是否具有独一性。提供这个函数主要是为了兼容不同用户的习惯称呼。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] bool AStoryXController::isMonotonicity()
return 控制器的单调性(Monotonicity)。单调性是指控制器的可选参数前缀是否具有独一性,即是否存在两个或以上的可选参数前缀相同。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] bool AStoryXController::isValid()
return 控制器定义的有效性。一个有效的控制器定义应该至少包含一个非空的行首标识符(Header/StartSign)和一个必需参数名称。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXControllerParseData AStoryXController::parseAStoryX(const QString &str, qint32 cursorPosition = -1, bool diagnostic = false, qint32 lineIndex = -1)
解析AStoryX字符串并返回解析结果。 str 要解析的AStoryX字符串 cursorPosition 可选的光标位置参数,默认为-1。如果提供此参数,结果中将包含光标所在的参数名称, 可以用于编辑器中的参数提示等功能。 diagnostic 可选的诊断模式参数,默认为false。如果设置为true,解析器将返回更详细的诊断信息, 包括解析错误的位置、类型和建议的修复方法等。这对于开发者调试和改进AStoryX语法非常有帮助。 lineIndex 可选的行索引参数,默认为-1。如果提供此参数,则诊断结果会包含行索引信息,否则为-1。
这个函数既可用于在编辑器中解析并进行语法提示,也可用于在运行时解析AStoryX字符串并执行相应的控制器行为。 但显然前者会比较重,因此建议根据实际需要传递参数,并非总进行诊断。
此外,除非你有特殊需要(比如在特定场景下只尝试按这个控制器的规则解析,而不考虑其他控制器), 否则你不需要直接调用这个函数。针对任意文本的解析,应该使用ASERStudio::AStorySyntax::AStoryXRule::parseAStoryX函数, 该函数会根据所有控制器的规则来解析文本,并返回最合适的解析结果。
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] QString AStoryXController::toString()
return 控制器定义的字符串表示形式,主要用于调试和日志记录等目的。会包含控制器的类型、行首标识符、必需参数名称和可选参数信息等内容。
这个function 从 ASERStudio 2.0 开始支持。
[noexcept, since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXController &AStoryXController::operator=(ASERStudio::AStorySyntax::AStoryXController &&other)
other 另一个AStoryXController对象。
移动赋值运算符
这个function 从 ASERStudio 2.0 开始支持。
[since ASERStudio 2.0] ASERStudio::AStorySyntax::AStoryXController &AStoryXController::operator=(const ASERStudio::AStorySyntax::AStoryXController &other)
other 另一个AStoryXController对象。
复制赋值运算符
这个function 从 ASERStudio 2.0 开始支持。