HumanBreak/src/types/map.d.ts

606 lines
20 KiB
TypeScript
Raw Normal View History

2022-11-13 18:02:05 +08:00
/** @file maps.js负责一切和地图相关的处理内容 */
declare class maps {
/**
* id得到数字
* @example core.getNumberById('yellowWall'); // 1
* @param id id
* @returns project\maps.jsproject\icons.js中的
*/
getNumberById(id: string): number;
/**
*
* @example core.getMapArray('MT0'); // 生成主塔0层的事件层矩阵隐藏的图块视为0
* @param floorId id
* @param showDisable true表示隐藏的图块也会被表示出来
* @returns 访[y][x]
*/
getMapArray(floorId?: string, noCache?: boolean): number[][];
/** 判定图块的事件层数字不存在为0 */
getMapNumber(floorId?: string, noCache?: boolean): number;
/**
*
* @example core.getBgMapArray('MT0'); // 生成主塔0层的背景层矩阵使用缓存
* @param floorId id
* @param noCache true表示不使用缓存
* @returns 访[y][x]
*/
getBgMapArray(floorId?: string, noCache?: boolean): number[][];
/**
*
* @example core.getFgMapArray('MT0'); // 生成主塔0层的前景层矩阵使用缓存
* @param floorId id
* @param noCache true表示不使用缓存
* @returns 访[y][x]
*/
getFgMapArray(floorId?: string, noCache?: boolean): number[][];
/**
*
* @example core.getBgNumber(); // 判断主角脚下的背景层图块的数字
* @param x
* @param y
* @param floorId id
* @param true表示不使用缓存而强制重算
*/
getBgNumber(
x?: number,
y?: number,
floorId?: string,
noCache?: boolean
): number;
/**
*
* @example core.getFgNumber(); // 判断主角脚下的前景层图块的数字
* @param x
* @param y
* @param floorId id
* @param true表示不使用缓存而强制重算
*/
getFgNumber(
x?: number,
y?: number,
floorId?: string,
noCache?: boolean
): number;
/**
*
* @example core.generateMovableArray(); // 判断当前地图主角从各点能向何方向移动
* @param floorId id
* @returns
*/
generateMovableArray(floorId?: string): Array<Array<Array<direction>>>;
/**
*
* @exmaple core.canMoveHero(); // 判断主角是否可以前进一步
* @param x
* @param y
* @param direction
* @param floorId id
* @returns true表示可移动false表示不可移动
*/
canMoveHero(
x?: number,
y?: number,
direction?: direction,
floorId?: string
): boolean;
/**
*
* @example core.canMoveDirectly(0, 0); // 能否瞬移到地图左上角
* @param destX
* @param destY
* @returns -1
*/
canMoveDirectly(destX: number, destY: number): number;
/**
*
* @example core.automaticRoute(0, 0); // 自动寻路到地图左上角
* @param destX
* @param destY
* @returns loc属性组成的一维数组
*/
automaticRoute(
destX: number,
destY: number
): Array<{ direction: direction; x: number; y: number }>;
/**
*
* @example core.drawMap(); // 绘制当前地图
* @param floorId id
* @param callback
*/
drawMap(floorId?: string, callback?: () => void): void;
/**
*
*/
redrawMap(): void;
/**
*
* @example core.drawBg(); // 绘制当前地图的背景层
* @param floorId id
* @param ctx ctx
*/
drawBg(floorId?: string, ctx?: CanvasRenderingContext2D): void;
/**
*
* @example core.drawEvents(); // 绘制当前地图的事件层
* @param floorId id
* @param blocks
* @param ctx ctx
*/
drawEvents(
floorId?: string,
blocks?: Block[],
ctx?: CanvasRenderingContext2D
): void;
/**
*
* @example core.drawFg(); // 绘制当前地图的前景层
* @param floorId id
* @param ctx ctx
*/
drawFg(floorId?: string, ctx?: CanvasRenderingContext2D): void;
/**
*
* @example core.drawThumbnail(); // 绘制当前地图的缩略图
* @param floorId id
* @param blocks
* @param options flags用于存读档
*/
drawThumbnail(
floorId?: string,
blocks?: Block[],
options?: {
heroLoc?: [number, number];
heroIcon?: string;
/** 是否绘制显伤 */
damage?: boolean;
/** 存读档时使用,可以无视 */
flags?: { [x: string]: any };
ctx?: CtxRefer;
x?: number;
y?: number;
/** 绘制大小 */
size?: number;
/** 绘制全图 */
all?: boolean;
/** 绘制的视野中心 */
centerX?: number;
/** 绘制的视野中心 */
centerY?: number;
/** 存读档时使用,可以无视 */
noHD: boolean;
}
): void;
/**
* cannotIn属性
* @example core.noPass(0, 0); // 判断地图左上角能否被踏入
* @param x
* @param y
* @param floorId id
* @returns true表示可踏入
*/
noPass(x: number, y: number, floorId?: string): boolean;
/**
* id
* @example if(core.getBlockId(x1, y1) != 'greenSlime' && core.getBlockId(x2, y2) != 'redSlime') core.openDoor(x3, y3); // 一个简单的机关门事件,打败或炸掉这一对绿头怪和红头怪就开门
* @param x
* @param y
* @param floorId id
* @param showDisable nulltrue表示不返回null
* @returns idnull
*/
getBlockId(
x: number,
y: number,
floorId?: string,
showDisable?: boolean
): string | null;
/** 判定某个点的图块数字空图块为0 */
getBlockNumber(
x: number,
y: number,
floorId?: string,
showDisable?: boolean
): number;
/**
*
* @example if(core.getBlockCls(x1, y1) != 'enemys' && core.getBlockCls(x2, y2) != 'enemy48') core.openDoor(x3, y3); // 另一个简单的机关门事件,打败或炸掉这一对不同身高的敌人就开门
* @param x
* @param y
* @param floorId id
* @param showDisable nulltrue表示不返回null
* @returns npcnpc
*/
getBlockCls(
x: number,
y: number,
floorId?: string,
showDisable?: boolean
):
| 'terrains'
| 'animates'
| 'enemys'
| 'enemy48'
| 'items'
| 'npcs'
| 'npc48'
| 'autotile'
| 'tileset'
| null;
/**
* ,
* @example core.searchBlock('*Door'); // 搜索当前地图的所有门
* @param id id0
* @param floorId id
* @param showDisable true表示计入
* @returns
*/
searchBlock(
id: string,
floorId?: string | Array<string>,
showDisable?: boolean
): Array<{
floorId: string;
index: number;
x: number;
y: number;
block: Block;
}>;
/**
*
* @example core.searchBlockWithFilter(function (block) { return block.event.id.endsWith('Door'); }); // 搜索当前地图的所有门
* @param blockFilter block输入boolean值
* @param floorId id
* @param showDisable true表示计入
* @returns
*/
searchBlockWithFilter(
blockFilter: (block: Block) => boolean,
floorId?: string | Array<string>,
showDisable?: boolean
): Array<{
floorId: string;
index: number;
x: number;
y: number;
block: Block;
}>;
/**
* /
* @example core.showBlock(0, 0); // 显示地图左上角的图块
* @param x
* @param y
* @param floorId id
*/
showBlock(x: number, y: number, floorId?: string): void;
/**
*
* @example core.hideBlock(0, 0); // 隐藏地图左上角的图块
* @param x
* @param y
* @param floorId id
*/
hideBlock(x: number, y: number, floorId?: string): void;
/**
*
* @example core.removeBlock(0, 0); // 尝试删除地图左上角的图块
* @param x
* @param y
* @param floorId id
*/
removeBlock(x: number, y: number, floorId?: string): void;
/**
*
* @example core.setBlock(1, 0, 0); // 把地图左上角变成黄墙
* @param number '1'id
* @param x
* @param y
* @param floorId id
*/
setBlock(
number: number | string,
x: number,
y: number,
floorId?: string
): void;
/**
*
* @example core.replaceBlock(21, 22, core.floorIds); // 把游戏中地上当前所有的黄钥匙都变成蓝钥匙
* @param fromNumber
* @param toNumber
* @param floorId id或其数组
*/
replaceBlock(
fromNumber: number,
toNumber: number,
floorId?: string | Array<string>
): void;
/**
*
* @example core.setBgFgBlock('bg', 167, 6, 6); // 把当前地图背景层的中心块改为滑冰
* @param name
* @param number '1'id
* @param x
* @param y
* @param floorId id
*/
setBgFgBlock(
name: 'bg' | 'fg',
number: number | string,
x: number,
y: number,
floorId?: string
): void;
/**
*
* @example core.moveBlock(0, 0, ['down']); // 令地图左上角的图块下移一格,用时半秒,再花半秒淡出
* @param x
* @param y
* @param steps
* @param time
* @param keep true表示不淡出
* @param callback
*/
moveBlock(
x: number,
y: number,
steps: step[],
time?: number,
keep?: boolean,
callback?: () => void
): void;
/**
* V2.7
* @example core.jumpBlock(0, 0, 0, 0); // 令地图左上角的图块原地跳跃半秒,再花半秒淡出
* @param sx
* @param sy
* @param ex
* @param ey
* @param time
* @param keep true表示不淡出
* @param callback
*/
jumpBlock(
sx: number,
sy: number,
ex: number,
ey: number,
time?: number,
keep?: boolean,
callback?: () => void
): void;
/**
* 使使core.drawHeroAnimate(name, callback)
* @example core.drawAnimate('attack', core.nextX(), core.nextY(), false, core.vibrate); // 在主角面前一格播放普攻动画动画停止后视野左右抖动1秒
* @param name
* @param x
* @param y
* @param alignWindow
* @param callback
* @returns core.stopAnimate()
*/
drawAnimate(
name: string,
x: number,
y: number,
alignWindow: boolean,
callback?: () => void
): number;
/**
*
* @param name
* @param callback
* @returns core.stopAnimate()
*/
drawHeroAnimate(name: string, callback?: () => void): number;
/**
*
* @param id drawAnimate或drawHeroAnimate返回值
* @param doCallback
*/
stopAnimate(id?: number, doCallback?: boolean): void;
/** 获得当前正在播放的所有指定动画的id列表 */
getPlayingAnimates(name?: string): Array<number>;
/** 加载某个楼层(从剧本或存档中) */
loadFloor(floorId: string, map?: any): ResolvedMap;
/** 根据需求解析出blocks */
extractBlocks(map?: any): void;
/** 根据需求为UI解析出blocks */
extractBlocks(map?: any, flags?: any): void;
/** 根据数字获得图块 */
getBlockByNumber(number: number): Block;
/** 根据ID获得图块 */
getBlockById(id: string): Block;
/** 获得当前事件点的ID */
getIdOfThis(id?: string): string;
/** 初始化一个图块 */
initBlock(
x?: number,
y?: number,
id?: string | number,
addInfo?: boolean,
eventFloor?: any
): Block;
/** 压缩地图 */
compressMap(mapArr?: any, floorId?: string): object;
/** 解压缩地图 */
decompressMap(mapArr?: any, floorId?: string): object;
/** 将当前地图重新变成数字,以便于存档 */
saveMap(floorId?: string): any;
/** 将存档中的地图信息重新读取出来 */
loadMap(data?: any, floorId?: string, flags?: any): object;
/** 更改地图画布的尺寸 */
resizeMap(floorId?: string): void;
/** 以x,y的形式返回每个点的事件 */
2022-11-21 20:00:34 +08:00
getMapBlocksObj(
floorId?: string,
noCache?: boolean
): Record<`${number},${number}`, Block>;
2022-11-13 18:02:05 +08:00
/** 获得某些点可否通行的信息 */
canMoveDirectlyArray(locs?: any): object;
/** 绘制一个图块 */
drawBlock(block?: any, animate?: any): void;
/** 生成groundPattern */
generateGroundPattern(floorId?: string): void;
/** 某个点是否存在NPC */
npcExists(x?: number, y?: number, floorId?: string): boolean;
/** 某个点是否存在(指定的)地形 */
terrainExists(
x?: number,
y?: number,
id?: string,
floorId?: string
): boolean;
/** 某个点是否存在楼梯 */
stairExists(x?: number, y?: number, floorId?: string): boolean;
/** 当前位置是否在楼梯边;在楼传平面塔模式下对箭头也有效 */
nearStair(): boolean;
/** 某个点是否存在(指定的)怪物 */
enemyExists(x?: number, y?: number, id?: string, floorId?: string): boolean;
/** 获得某个点的block */
getBlock(
x?: number,
y?: number,
floorId?: string,
showDisable?: boolean
): Block;
/** 获得某个图块或素材的信息包括IDcls图片坐标faceIds等等 */
getBlockInfo(block?: any): any;
/** 获得某个图块对应行走图朝向向下的那一项的id如果不存在行走图绑定则返回自身id */
getFaceDownId(block?: any): string;
/** 根据图块的索引来隐藏图块 */
hideBlockByIndex(index?: any, floorId?: string): void;
/** 一次性隐藏多个block */
hideBlockByIndexes(indexes?: any, floorId?: string): void;
/** 根据block的索引尽可能删除该块 */
removeBlockByIndex(index?: any, floorId?: string): void;
/** 一次性删除多个block */
removeBlockByIndexes(indexes?: any, floorId?: string): void;
/** 显示前景/背景地图 */
showBgFgMap(
name?: string,
loc?: any,
floorId?: string,
callback?: () => any
): void;
/** 隐藏前景/背景地图 */
hideBgFgMap(
name?: string,
loc?: any,
floorId?: string,
callback?: () => any
): void;
/** 显示一个楼层贴图 */
showFloorImage(loc?: any, floorId?: string, callback?: () => any): void;
/** 隐藏一个楼层贴图 */
hideFloorImage(loc?: any, floorId?: string, callback?: () => any): void;
/** 动画形式转变某点图块 */
animateSetBlock(
number?: number | string,
x?: number,
y?: number,
floorId?: string,
time?: number,
callback?: () => any
): void;
/** 动画形式同时转变若干点图块 */
animateSetBlocks(
number?: number | string,
locs?: any,
floorId?: string,
time?: number,
callback?: () => any
): void;
/** 事件转向 */
turnBlock(
direction?: string,
x?: number,
y?: number,
floorId?: string
): void;
/** 重置地图 */
resetMap(floorId?: string | string[]): void;
/** 显示/隐藏某个块时的动画效果 */
animateBlock(loc?: any, type?: any, time?: any, callback?: () => any): void;
/** 添加一个全局动画 */
addGlobalAnimate(block?: any): void;
/** 删除一个或所有全局动画 */
removeGlobalAnimate(x?: number, y?: number, name?: string): void;
/** 绘制UI层的box动画 */
drawBoxAnimate(): void;
}