41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
interface Game {
|
||
nodes: Ref<CardNode[]>;
|
||
selectedNodes: Ref<CardNode[]>;
|
||
removeList: Ref<CardNode[]>;
|
||
removeFlag: Ref<boolean>;
|
||
backFlag: Ref<boolean>;
|
||
handleSelect: (node: CardNode) => void;
|
||
handleSelectRemove: (node: CardNode) => void;
|
||
handleBack: () => void;
|
||
handleRemove: () => void;
|
||
initData: (config?: GameConfig) => void;
|
||
}
|
||
interface GameConfig {
|
||
container?: Ref<HTMLElement | undefined>, // cardNode容器
|
||
cardNum: number, // card类型数量
|
||
layerNum: number // card层数
|
||
trap?:boolean, // 是否开启陷阱
|
||
delNode?: boolean, // 是否从nodes中剔除已选节点
|
||
events?: GameEvents // 游戏事件
|
||
}
|
||
|
||
interface GameEvents {
|
||
clickCallback?: () => void,
|
||
dropCallback?: () => void,
|
||
winCallback?: () => void,
|
||
loseCallback?: () => void
|
||
}
|
||
|
||
// 卡片节点类型
|
||
type CardNode = {
|
||
id: string // 节点id zIndex-index
|
||
type: number // 类型
|
||
zIndex: number // 图层
|
||
index: number // 所在图层中的索引
|
||
parents: CardNode[] // 父节点
|
||
row: number // 行
|
||
column: number // 列
|
||
top: number
|
||
left: number
|
||
state: number // 是否可点击 0: 无状态 1: 可点击 2:已选 3:已消除
|
||
} |