HumanBreak/src/types/function.d.ts
2023-01-01 22:02:58 +08:00

283 lines
6.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

interface ActionData {
/**
* 当按键弹起时
* @param keyCode 按键的keyCode
* @param altKey 当前是否按下了alt键
*/
onKeyUp(keyCode: number, altKey: boolean): boolean;
/**
* 当点击状态栏时
* @param px 点击的横坐标
* @param py 点击的纵坐标
* @param vertical 当前是否是竖屏
*/
onClickStatusBar(px: number, py: number, vertical: boolean): boolean;
}
interface ControlData {
/**
* 获取保存信息
*/
saveData(): Save;
/**
* 读取一个存档
* @param data 存档信息
* @param callback 读取完毕后的回调函数
*/
loadData(data: Save, callback?: () => void): void;
/**
* 获取一个属性对应的中文名
* @param name 要获取的状态名称
*/
getStatusLabel(name: string): string;
/**
* 变更勇士的debuff
* @param action 触发的类型get表示获得debuffremove表示移除debuff
* @param type 获取的debuff列表
*/
triggerDebuff(action: 'get' | 'remove', type: string | string[]): void;
/**
* 立即仅更新状态栏
*/
updateStatusBar(): void;
/**
* 更新一个地图的地图伤害
* @param floorId 要更新的楼层id
*/
updateCheckBlock(floorId: FloorIds): void;
/**
* 每步移动后执行的函数
* @param callback 回调函数(好像没什么必要吧
*/
moveOneStep(callback?: () => void): void;
/**
* 瞬移到某一点
* @param x 瞬移至的横坐标
* @param y 瞬移至的纵坐标
* @param ignoreSteps 忽略的步数,不填则会自动计算
*/
moveDirectly(x: number, y: number, ignoreSteps?: number): boolean;
/**
* 并行脚本
* @param time 距离游戏加载完毕经过的时间
*/
parallelDo(time: number): void;
}
interface EnemyData {
/**
* 获得所有特殊属性定义
*/
getSpecials(): EnemySpecialDeclaration[];
/**
* 获得怪物真实属性
* @param enemy 敌人id或敌人对象
* @param hero 勇士信息不填则从core.status.hero获取
* @param x 敌人的横坐标
* @param y 敌人的纵坐标
* @param floorId 敌人所在的地图
*/
getEnemyInfo(
enemy: EnemyIds | Enemy,
hero?: HeroStatus,
x?: number,
y?: number,
floorId?: FloorIds
): EnemyInfo;
/**
* 获得战斗伤害信息(实际伤害计算函数)
* @param enemy 敌人id或敌人对象
* @param hero 勇士信息不填则从core.status.hero获取
* @param x 敌人的横坐标
* @param y 敌人的纵坐标
* @param floorId 敌人所在的地图
*/
getDamageInfo(
enemy: EnemyIds | Enemy,
hero?: Partial<HeroStatus>,
x?: number,
y?: number,
floorId?: FloorIds
): DamageInfo;
/**
* 判定某种特殊属性的有无
* @example core.hasSpecial('greenSlime', 1) // 判定绿头怪有无先攻属性
* @param special 敌人id或敌人对象或正整数数组或自然数
* @param test 待检查的属性编号
* @returns 若special为数组或数且含有test或相等、或special为敌人id或对象且具有此属性则返回true
*/
hasSpecial(
special: number | number[] | EnemyIds | Enemy,
test: number
): boolean;
}
interface UiData {
/**
* 获取道具栏要显示的道具
* @param cls 要获取的类型
*/
getToolboxItems<T extends Exclude<ItemCls, 'items'>>(cls: T): ItemIdOf<T>[];
/**
* 绘制状态栏
*/
drawStatusBar(): void;
/**
* 数据统计界面统计的道具数量
*/
drawStatistics(): AllIdsOf<'items'>[];
/**
* 绘制关于界面
*/
drawAbout(): void;
}
interface EventData {
/**
* 重置游戏
* @param hero 勇士信息
* @param hard 难度信息
* @param floorId 勇士所在楼层
* @param maps 所有的地图信息
* @param values 全局数值信息
*/
resetGame(
hero: HeroStatus,
hard: string,
floorId: FloorIds,
maps: GameStatus['maps'],
values: Partial<CoreValues>
): void;
/**
* 游戏获胜
* @param reason 胜利原因
* @param norank 是否不计榜
* @param noexit 是否不退出
*/
win(reason: string, norank?: boolean, noexit?: boolean): void;
/**
* 游戏失败
* @param reason 失败原因
*/
lose(reason: string): void;
/**
* 切换楼层中,即屏幕完全变黑的那一刻
* @param floorId 目标楼层
* @param heroLoc 勇士到达的位置
*/
changingFloor(floorId: FloorIds, heroLoc: Loc): void;
/**
* 切换楼层后
* @param floorId 目标楼层
*/
afterChangeFloor(floorId: FloorIds): void;
/**
* 飞往某个楼层
* @param toId 目标楼层
* @param callback 飞到后的回调函数
*/
flyTo(toId: FloorIds, callback?: () => void): boolean;
/**
* 与怪物战斗前
* @param enemyId 打败的怪物
* @param x 怪物横坐标
* @param y 怪物纵坐标
*/
beforeBattle(
enemyId: AllIdsOf<'enemys' | 'enemy48'>,
x?: number,
y?: number
): void;
/**
* 与怪物战斗后
* @param enemyId 打败的怪物
* @param x 怪物横坐标
* @param y 怪物纵坐标
*/
afterBattle(
enemyId: AllIdsOf<'enemys' | 'enemy48'>,
x?: number,
y?: number
): void;
/**
* 开门后
* @param doorId 门的id
* @param x 门的横坐标
* @param y 门的纵坐标
*/
afterOpenDoor(
doorId: AllIdsOf<Exclude<Cls, 'enemys' | 'enemy48'>>,
x: number,
y: number
): void;
/**
* 获得道具后
* @param itemId 道具id
* @param x 道具横坐标
* @param y 道具纵坐标
* @param isGentleClick 是否是轻按
*/
afterGetItem(
itemId: AllIdsOf<'items'>,
x: number,
y: number,
isGentleClick?: boolean
): void;
/**
* 推箱子后
*/
afterPushBox(): void;
}
interface FunctionsData {
/**
* 交互信息
*/
actions: ActionData;
/**
* 游戏的逻辑信息
*/
control: ControlData;
/**
* 怪物信息
*/
enemys: EnemyData;
/**
* ui信息
*/
ui: UiData;
/**
* 事件信息
*/
events: EventData;
}