跳转至

组件总览

本页按用途列出全部组件。括号内为组件编号,即导出 JSON 中的 type 字段。

控制流(有 next,决定流程走向)

组件 type 适用 scope 说明
对局开始 17 match 主流程固定起点
结算开始 23 settlement 结算流程固定起点
牌型开始 27 cardset 牌型 build_flow 固定起点
比较开始 29 cardsetCompare 同型比较 compare_flow 固定起点
方法开始 25 method 方法流程固定起点
条件转移 16 match / settlement / cardset / cardsetCompare 唯一拥有两个出口的组件,有 next_truenext_false;condition 槽必须接逻辑或比较组件,不允许留空
结束对局 18 match 主流程到此结束,切换至结算流程
结算结束 24 settlement 给当前玩家写入胜负结果
方法返回 26 method 结束方法并返回值
匹配返回 28 cardset 返回是否匹配,以及匹配时的牌型属性
比较返回 30 cardsetCompare 返回 A 胜(0)或 B 胜(1)

执行(有 next,完成一项操作但不分支)

组件 type 说明
赋值 4 左值由属性访问组件指定,右值为值或算数表达式
方法调用 1 对一组对象调用方法。参数按名匹配,而非按位置
集合排序 2 按属性优先级对集合排序
洗牌 19 随机排序牌桌卡牌池
发牌 20 按属性范围与数量给当前出牌者发牌

用户操作(有 next,流程在此暂停等待客户端)

组件 type 说明
出牌 21 请求当前出牌者出牌。平台会基于 build_flow 与压制关系自动校验合法性
动作选择 22 请求当前出牌者从枚举选项中选择一个,常用于抢地主、使用技能、跳过出牌

逻辑与取值(无 next,仅作为其他组件的输入插槽)

组件 type 说明
集合访问 5 按下标取集合元素
属性访问 6 访问对象属性、组件结果属性或集合映射结果。详见下节
集合大小 7 返回集合长度
整数常量 8 字面整数
枚举常量 9 枚举值;本质仍是整数
算数运算 10 加、减、乘、除、模
集合逻辑 11 对集合执行「存在」或「所有」判断
双目逻辑 12 与、或,连接两个逻辑组件
非逻辑 13 对一个逻辑组件取反
比较 14 等于、大于、小于、大于等于、小于等于
牌型判断 15 判定传入牌组是否匹配指定牌型

属性访问的三种 operator

属性访问组件(type=6)是最容易写错的组件之一,因为它的 operator 含义有三种。

operator 含义 典型用法
0 对象属性访问 取「当前玩家.score」
1 组件结果属性访问 取上游组件结果的某个属性,例如「集合访问的结果是一张牌,继续取它的 point」
2 集合映射属性访问 把玩家集合映射成「每个玩家的 score 列表」,返回整数数组

实际使用中 01 是最容易混淆的两种,设计组件链时建议先想清楚上游产出的是对象还是组件结果。

各 scope 可用组件矩阵

组件 match settlement cardset cardsetCompare method
方法调用 (1)
赋值 (4)
集合访问 (5)
属性访问 (6)
集合大小 (7)
整数 (8)、枚举 (9) 常量
算数 (10)
集合逻辑 (11)、双目 (12)、非 (13)、比较 (14)
集合排序 (2)
牌型判断 (15)
条件转移 (16)
洗牌 (19)、发牌 (20)、出牌 (21)、动作选择 (22)、结束对局 (18)
结算结束 (24)
匹配返回 (28)
比较返回 (30)
方法返回 (26)

表示可用, 表示该 scope 无意义或不允许。