Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

ASERStudio::AStorySyntax::AStoryXController Class

class ASERStudio::AStorySyntax::AStoryXController

AStoryXController是对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类的相关说明。 此类提供了等同函数isMonotonicityisAdvanced,用户可以根据自己的习惯选择使用哪个函数。

此外,ASE-Ramake将控制器行首标识符直接称作“Header”,而ASERStudio将其称作“StartSign”。 ASERStudio 为这两种称呼提供了等同函数getStartSigngetHeader,用户可以根据自己的习惯选择使用哪个函数。

成员类型文档

[since ASERStudio 2.0] enum AStoryXController::ControllerType

控制器类型枚举,定义了各种AStoryX控制器的类型。

ConstantValueDescription
ASERStudio::AStorySyntax::AStoryXController::Unknown-1未知类型,表示未识别的控制器类型。
ASERStudio::AStorySyntax::AStoryXController::Background0背景控制器,用于设置场景背景。
ASERStudio::AStorySyntax::AStoryXController::Music1音乐控制器,用于播放背景音乐。
ASERStudio::AStorySyntax::AStoryXController::SoundEffect2音效控制器,用于播放音效。
ASERStudio::AStorySyntax::AStoryXController::Mask3遮罩控制器,用于设置场景遮罩,这是个和明日方舟强相关的控制器。
ASERStudio::AStorySyntax::AStoryXController::Character4角色控制器,用于设置角色相关属性。
ASERStudio::AStorySyntax::AStoryXController::Choice5选项控制器,向玩家提供选项。
ASERStudio::AStorySyntax::AStoryXController::Delay6延迟控制器,用于设置延迟时间。
ASERStudio::AStorySyntax::AStoryXController::VisualEffect7视觉效果控制器,用于设置视觉效果。
ASERStudio::AStorySyntax::AStoryXController::Interlude8插播控制器,这是个和明日方舟强相关的控制器,目前用于显示通讯效果和立绘插入效果。
ASERStudio::AStorySyntax::AStoryXController::ColorMask9色彩遮罩控制器,用于设置色彩遮罩效果。
ASERStudio::AStorySyntax::AStoryXController::Shake10震动控制器,用于抖动相机。
ASERStudio::AStorySyntax::AStoryXController::FreeText11自由文本控制器,用于显示自由文本。
ASERStudio::AStorySyntax::AStoryXController::Cut12裁切控制器,用于对指定渲染顺序之后的场景进行显示裁切。
ASERStudio::AStorySyntax::AStoryXController::Filter13滤镜控制器,用于设置滤镜效果。
ASERStudio::AStorySyntax::AStoryXController::AnimatedText14动态文本控制器,用于显示动态文本。目前只用于显示明日方舟的时间坐标效果。
ASERStudio::AStorySyntax::AStoryXController::Sign15标识控制器,用于设置标识。
ASERStudio::AStorySyntax::AStoryXController::Variable16变量控制器,用于设置和修改变量。
ASERStudio::AStorySyntax::AStoryXController::Judge17判断控制器,用于进行条件判断并根据结果写入变量。
ASERStudio::AStorySyntax::AStoryXController::Branch18分支控制器,用于根据变量值进行分支跳转。
ASERStudio::AStorySyntax::AStoryXController::Narration19旁白控制器,用于向阅读模式增加提示文本,普通播放时不可见。
ASERStudio::AStorySyntax::AStoryXController::Dialog20对话控制器,用于人物对话。对话控制器的特殊之处在于它没有Header(StartSign),因此在解析时会有特殊的处理逻辑。
ASERStudio::AStorySyntax::AStoryXController::Preprocessor21预处理器,用于定义预处理器指令,目前主要用于定义宏。它一定以#开头。
ASERStudio::AStorySyntax::AStoryXController::Comment22注释,用于添加注释。它一定以//开头。
ASERStudio::AStorySyntax::AStoryXController::Aliases23别名区域,用于定义控制器别名。它也没有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 开始支持。