HumanBreak/src/types/control.d.ts

632 lines
23 KiB
TypeScript
Raw Normal View History

2022-11-13 18:02:05 +08:00
/** @file control.js 主要用来进行游戏控制,比如行走控制、自动寻路、存读档等等游戏核心内容。 */
declare class control {
/**
* , Ctrl键进行穿墙,
*
*/
debug(): void;
/**
*
* 2.9.1
* @param doNotCheckAutoEvents
* @param immediate
*/
updateStatusBar(doNotCheckAutoEvents?: boolean, immediate?: boolean): void;
/** 删除某个flag/变量 */
removeFlag(name: string): void;
/** 设置某个独立开关 */
setSwitch(
x: number,
y: number,
floorId: string,
name: string,
value: any
): void;
/** 获得某个独立开关 */
getSwitch(
x: number,
y: number,
floorId: string,
name: string,
defaultValue: any
): any;
/** 增加某个独立开关 */
addSwitch(
x: number,
y: number,
floorId: string,
name: string,
value: any
): void;
/** 判定某个独立开关 */
hasSwitch(x: number, y: number, floorId: string, name: string): boolean;
/** 删除独立开关 */
removeSwitch(x: number, y: number, floorId: string, name: string): boolean;
/** 设置大地图的偏移量 */
setGameCanvasTranslate(canvasId: string, x: number, y: number): void;
/** 更新大地图的可见区域 */
updateViewport(): void;
/** 立刻聚集所有的跟随者 */
gatherFollowers(): void;
/** 回放下一个操作 */
replay(): void;
/**
*
* @example core.showStartAnimate(); // 重启游戏但不重置bgm
* @param noAnimate true表示不由黑屏淡入而是立即亮屏
* @param callback
*/
showStartAnimate(noAnimate?: boolean, callback?: () => void): void;
/**
*
* @example core.hideStartAnimate(core.startGame); // 淡出标题画面并开始新游戏,跳过难度选择
* @param callback
*/
hideStartAnimate(callback?: () => void): void;
/**
*
* @example core.setAutomaticRoute(0, 0, [{direction: "right", x: 4, y: 9}, {direction: "right", x: 5, y: 9}, {direction: "right", x: 6, y: 9}, {direction: "up", x: 6, y: 8}]);
* @param destX
* @param destY
* @param stepPostfix
*/
setAutomaticRoute(
destX: number,
destY: number,
stepPostfix: Array<{ direction: direction; x: number; y: number }>
): void;
/**
*
* @example core.setAutoHeroMove([{direction: "up", step: 1}, {direction: "left", step: 3}, {direction: "right", step: 3}, {direction: "up", step: 9}]); // 上左左左右右右上9
* @param steps
*/
setAutoHeroMove(steps: Array<{ direction: direction; step: number }>): void;
/**
*
* @example core.moveAction(core.doAction); // 尝试前进一步然后继续事件处理。常用于在事件流中让主角像自由行动时一样前进一步可以照常触发moveOneStep跑毒和计步和面前的事件包括但不限于阻激夹域捕
* @param callback
*/
moveAction(callback?: () => void): void;
/**
*
* @example core.moveHero(); // 连续前进
* @param direction
* @param callback
*/
moveHero(direction?: direction, callback?: () => void): void;
/**
*
* @example core.waitHeroToStop(core.vibrate); // 等待主角停下然后视野左右抖动1秒
* @param callback
*/
waitHeroToStop(callback?: () => void): void;
/**
*
* @example core.turnHero(); // 主角顺时针旋转90°即单击主角或按下Z键的效果
* @param direction up, down, left, right, :left, :right, :back
*/
turnHero(direction?: direction): void;
/**
* //
* @example core.tryMoveDirectly(6, 0); // 尝试瞬移到地图顶部的正中央以样板0层为例实际效果是瞬移到了上楼梯下面一格然后向上走一步并触发上楼事件
* @param destX
* @param destY
*/
tryMoveDirectly(destX: number, destY: number): void;
/**
*
* @example core.drawHero(); // 原地绘制主角的静止帧
* @param status stop
* @param offset
* @param frame
*/
drawHero(
status?: 'stop' | 'leftFoot' | 'rightFoot',
offset?: number,
frame?: number
): void;
/**
* n格的横坐标
* @example core.closeDoor(core.nextX(), core.nextY(), 'yellowDoor', core.turnHero); // 在主角面前关上一扇黄门然后主角顺时针旋转90°
* @param n 01
*/
nextX(n?: number): number;
/**
* n格的纵坐标
* @example core.jumpHero(core.nextX(2), core.nextY(2)); // 主角向前跃过一格,即跳跃靴道具的使用效果
* @param n 01
*/
nextY(n?: number): number;
/**
* 齿()
* @example core.nearHero(6, 6, 6); // 判定主角是否身处点66的半径为6的锯齿领域
* @param x
* @param y
* @param n 1
*/
nearHero(x: number, y: number, n?: number): boolean;
/**
* 使使core.updateStatusBar()
* @example core.updateDamage(); // 更新当前地图的显伤,绘制在显伤层(废话)
* @param floorId id
* @param ctx
*/
updateDamage(floorId?: string, ctx?: CanvasRenderingContext2D): void;
/** 仅重绘地图显伤 */
drawDamage(ctx?: CanvasRenderingContext2D): void;
/**
*
* @example core.setStatus('loc', {x : 0, y : 0, direction : 'up'}); // 设置主角位置为地图左上角,脸朝上
* @param name 'x''y''direction' core.setHeroLoc(name, value)('exp''exp') core.status.hero[name]
* @param value
*/
setStatus<K extends keyof HeroStatus>(name: K, value: HeroStatus[K]): void;
/**
* core.setStatus(name, core.getStatus(name) + value)
* @example core.addStatus('name', '酱'); // 在主角的名字后加一个“酱”字
* @param name
* @param value
*/
addStatus<K extends keyof HeroStatus>(name: K, value: HeroStatus[K]): void;
/**
*
* @example core.getStatus('loc'); // 读取主角的坐标和朝向
* @param name 'x''y''direction' core.getHeroLoc(name)('exp''exp') core.status.hero[name]
* @returns
*/
getStatus<K extends keyof HeroStatus>(name: K): HeroStatus[K];
/**
*
* @example core.getRealStatus('atk'); // 计算主角的攻击力,包括百分比修正。战斗使用的就是这个值
* @param name NaN
*/
getRealStatus<K extends keyof HeroStatus>(name: K): HeroStatus[K];
/** 获得某个状态的名字 */
getStatusLabel<K extends keyof HeroStatus>(name: K): string;
/**
* 1
* flag: '__'+name+'_buff__'
* @example core.setBuff('atk', 0.5); // 主角能发挥出的攻击力减半
* @param name NaN
* @param value 1
*/
setBuff<K extends keyof HeroStatus>(name: K, value?: HeroStatus[K]): void;
/**
* core.setBuff(name, core.getBuff(name) + value)
* @example core.addBuff('atk', -0.1); // 主角获得一层“攻击力减一成”的负面效果
* @param name NaN
* @param value
*/
addBuff<K extends keyof HeroStatus>(name: K, value: HeroStatus[K]): void;
/**
* 1
* @example core.getBuff('atk'); // 主角当前能发挥出多大比例的攻击力
* @param name
*/
getBuff<K extends keyof HeroStatus>(name: HeroStatus[K]): number;
/**
*
* @param action 'get''remove'
* @param type
*/
triggerDebuff(action: string, type: string | string[]): void;
/**
*
* 使使
* core.clearMap('hero'); core.drawHero();
* @example core.setHeroLoc('x', 5) // 将勇士当前位置的横坐标设置为5。
* @param name
* @param value
* @param noGather
*/
setHeroLoc(name: 'x' | 'y', value: number, noGather?: boolean): void;
setHeroLoc(name: 'direction', value: direction, noGather?: boolean): void;
/**
* /
* @example core.getHeroLoc(); // 读取主角的位置和朝向
* @param name
* @returns name ? core.status.hero.loc[name] : core.status.hero.loc
*/
getHeroLoc(): { x: number; y: number; direction: direction };
getHeroLoc(name: 'x' | 'y'): number;
getHeroLoc(name: 'direction'): direction;
/**
*
* @example core.getLvName(); // 获取主角当前级别的名称,如“下级佣兵”
* @param lv
* @returns
*/
getLvName(lv?: number): string | number;
/**
*
*
* null
*/
getNextLvUpNeed(): number;
/**
* flag变量
* @example core.setFlag('poison', true); // 令主角中毒
* @param name
* @param value null视为删除
*/
setFlag(name: string, value?: any): void;
/**
* flag变量 core.setFlag(name, core.getFlag(name, 0) + value)
* @example core.addFlag('hatred', 1); // 增加1点仇恨值
* @param name
* @param value
*/
addFlag(name: string, value: number | string): void;
/**
* flag变量
* @param name
* @param defaultValue 0
* @returns flags[name] ?? defaultValue
*/
getFlag(name: string, defaultValue?: any): any;
/**
* flag变量是否存在且不为false0''nullundefined和NaN
* @example core.hasFlag('poison'); // 判断主角当前是否中毒
* @param name
* @returns !!core.getFlag(name)
*/
hasFlag(name: string): boolean;
/**
* 使core.events._action_setWeather()
* @example core.setWeather('fog', 10); // 设置十级大雾天
* @param type
* @param level 105
*/
setWeather(
type?: 'rain' | 'snow' | 'sun' | 'fog' | 'cloud' | string,
level?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
): void;
/** 注册一个天气 */
registerWeather(
name: string,
initFunc: (level: number) => void,
frameFunc?: (timestamp: number, level: number) => void
): void;
/** 注销一个天气 */
unregisterWeather(name: string): void;
/**
* 使core.events._action_setCurtain()
* @example core.setCurtain(); // 恢复画面色调,用时四分之三秒
* @param color 1110[0, 0, 0, 0]
* @param time 750ms0
* @param callback core.doAction
*/
setCurtain(
color?: [number, number, number, number?],
time?: number,
moveMode?: string,
callback?: () => void
): void;
/**
*
* @example core.screenFlash([255, 0, 0, 1], 3); // 红屏一闪而过
* @param color 1110
* @param time
* @param times 01
* @param callback
*/
screenFlash(
color: [number, number, number, number?],
time: number,
times?: number,
moveMode?: string,
callback?: () => void
): void;
/**
* flags.__bgm__
* @example core.playBgm('bgm.mp3', 30); // 播放bgm.mp3并跳过前半分钟
* @param bgm
* @param startTime
*/
playBgm(bgm: string, startTime?: number): void;
/**
* animationFrame
* @param name 使
* @param needPlaying
* @param func timestamp
*/
registerAnimationFrame(
name: string,
needPlaying: boolean,
func?: (timestamp: number) => void
): void;
/** 注销一个animationFrame */
unregisterAnimationFrame(name: string): void;
/** 游戏是否已经开始 */
isPlaying(): boolean;
/** 清除游戏状态和数据 */
clearStatus(): void;
/** 清除自动寻路路线 */
clearAutomaticRouteNode(x?: any, y?: any): void;
/** 停止自动寻路操作 */
stopAutomaticRoute(): void;
/** 保存剩下的寻路,并停止 */
saveAndStopAutomaticRoute(): void;
/** 继续剩下的自动寻路操作 */
continueAutomaticRoute(): void;
/** 清空剩下的自动寻路列表 */
clearContinueAutomaticRoute(callback?: () => any): void;
/** 设置行走的效果动画 */
setHeroMoveInterval(callback?: () => any): void;
/** 每移动一格后执行的事件 */
moveOneStep(callback?: () => any): void;
/** 当前是否正在移动 */
isMoving(): boolean;
/** 瞬间移动 */
moveDirectly(destX?: any, destY?: any, ignoreSteps?: any): void;
/** 改变勇士的不透明度 */
setHeroOpacity(
opacity?: number,
moveMode?: string,
time?: any,
callback?: () => any
): void;
/** 加减画布偏移 */
addGameCanvasTranslate(x?: number, y?: number): void;
/**
*
* px,py: 左上角相对大地图的像素坐标32
*/
setViewport(px?: number, py?: number): void;
/** 移动视野范围 */
moveViewport(
x: number,
y: number,
moveMode?: string,
time?: number,
callback?: () => any
): void;
/** 更新跟随者坐标 */
updateFollowers(): void;
/** 更新领域、夹击、阻击的伤害地图 */
updateCheckBlock(floorId?: string): void;
/** 检查并执行领域、夹击、阻击事件 */
checkBlock(): void;
/** 选择录像文件 */
chooseReplayFile(): void;
/** 开始播放 */
startReplay(list?: any): void;
/** 更改播放状态 */
triggerReplay(): void;
/** 暂停播放 */
pauseReplay(): void;
/** 恢复播放 */
resumeReplay(): void;
/** 单步播放 */
stepReplay(): void;
/** 加速播放 */
speedUpReplay(): void;
/** 减速播放 */
speedDownReplay(): void;
/** 设置播放速度 */
setReplaySpeed(speed?: number): void;
/** 停止播放 */
stopReplay(force?: boolean): void;
/** 回退 */
rewindReplay(): void;
/** 是否正在播放录像 */
isReplaying(): boolean;
/**
*
* @param name 使
* @param func
* action参数
* func返回true代表成功处理了此录像行为false代表没有处理此录像行为
*/
registerReplayAction(
name: string,
func: (action?: string) => boolean
): void;
/** 注销一个录像行为 */
unregisterReplayAction(name: string): void;
/** 自动存档 */
autosave(removeLast?: any): void;
/** 实际进行自动存档 */
checkAutosave(): void;
/** 实际进行存读档事件 */
doSL(id?: string, type?: any): void;
/** 同步存档到服务器 */
syncSave(type?: any): void;
/** 从服务器加载存档 */
syncLoad(): void;
/** 存档到本地 */
saveData(): any;
/** 从本地读档 */
loadData(data?: any, callback?: () => any): any;
/** 获得某个存档内容 */
getSave(index?: any, callback?: () => any): any;
/** 获得某些存档内容 */
getSaves(ids?: any, callback?: () => any): any;
/** 获得所有存档内容 */
getAllSaves(callback?: () => any): any;
/** 获得所有存在存档的存档位 */
getSaveIndexes(callback?: () => any): any;
/** 判断某个存档位是否存在存档 */
hasSave(index?: number): boolean;
/** 删除某个存档 */
removeSave(index?: number, callback?: () => any): void;
/** 从status中获得属性如果不存在则从勇士属性中获取 */
getStatusOrDefault(status?: any, name?: string): any;
/** 从status中获得实际属性增幅后的如果不存在则从勇士属性中获取 */
getRealStatusOrDefault(status?: any, name?: string): any;
/** 获得勇士原始属性(无装备和衰弱影响) */
getNakedStatus(name?: string): any;
/** 锁定用户控制,常常用于事件处理 */
lockControl(): void;
/** 解锁用户控制 */
unlockControl(): void;
/** 清空录像折叠信息 */
clearRouteFolding(): void;
/** 检查录像折叠信息 */
checkRouteFolding(): void;
/** 获得映射文件名 */
getMappedName(name?: string): string;
/** 暂停背景音乐的播放 */
pauseBgm(): void;
/** 恢复背景音乐的播放 */
resumeBgm(resumeTime?: number): void;
/** 设置背景音乐的播放速度和音调 */
setBgmSpeed(speed: number, usePitch?: boolean): void;
/** 设置音乐图标的显隐状态 */
setMusicBtn(): void;
/** 开启或关闭背景音乐的播放 */
triggerBgm(): void;
/** 播放一个音效 */
playSound(sound: string, pitch?: number, callback?: () => any): number;
/** 停止(所有)音频 */
stopSound(id?: number): void;
/** 获得正在播放的所有指定音效的id列表 */
getPlayingSounds(name?: string): Array<number>;
/** 检查bgm状态 */
checkBgm(): void;
/** 设置屏幕放缩 */
setDisplayScale(delta: number): void;
/** 清空状态栏 */
clearStatusBar(): void;
/** 显示状态栏 */
showStatusBar(): void;
/** 隐藏状态栏 */
hideStatusBar(showToolbox?: boolean): void;
/** 更新状态栏的勇士图标 */
updateHeroIcon(name: string): void;
/** 改变工具栏为按钮1-8 */
setToolbarButton(useButton?: boolean): void;
/**
* resize函数
* @param name 使
* @param func obj参数resize函数
*/
registerResize(name: string, func: (obj: any) => void): void;
/** 注销一个resize函数 */
unregisterResize(name: string): void;
/** 屏幕分辨率改变后重新自适应 */
resize(): void;
}