组件总览
本页按用途列出全部组件。括号内为组件编号,即导出 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_true 与 next_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 列表」,返回整数数组 |
实际使用中 0 与 1 是最容易混淆的两种,设计组件链时建议先想清楚上游产出的是对象还是组件结果。
各 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 无意义或不允许。