refactor: Layer2 数据拆分至 data-system

This commit is contained in:
AncTe committed 2026-05-16 17:06:18 +08:00
1 parent 80b73938b4
commit 9ada0796b3
20 files changed
+110 -155

No files matched your search

+1 -110
View File
@@ -1,22 +1,3 @@
/**
* 滑动数组
* @param arr
* @param delta
*/
export function slide<T>(arr: T[], delta: number): T[] {
if (delta === 0) return arr;
delta %= arr.length;
if (delta > 0) {
arr.unshift(...arr.splice(arr.length - delta, delta));
return arr;
}
if (delta < 0) {
arr.push(...arr.splice(0, -delta));
return arr;
}
return arr;
}
const backDirMap: Record<Dir2, Dir2> = {
up: 'down',
down: 'up',
@@ -38,23 +19,8 @@ export function has<T>(v: T): v is NonNullable<T> {
return v !== null && v !== void 0;
}
export function maxGameScale(n: number = 0) {
const index = core.domStyle.availableScale.indexOf(core.domStyle.scale);
core.control.setDisplayScale(
core.domStyle.availableScale.length - 1 - index - n
);
if (!core.isPlaying() && core.flags.enableHDCanvas) {
// @ts-ignore
core.domStyle.ratio = Math.max(
window.devicePixelRatio || 1,
core.domStyle.scale
);
core.resize();
}
}
export function ensureArray<T>(arr: T): T extends any[] ? T : T[] {
// @ts-ignore
// @ts-expect-error 需要弃用
return arr instanceof Array ? arr : [arr];
}
@@ -70,23 +36,6 @@ export function manhattan(x1: number, y1: number, x2: number, y2: number) {
return Math.abs(x1 - x2) + Math.abs(y1 - y2);
}
/**
* 检查一个点是否在当前超大地图 v2 优化范围内
*/
export function checkV2(x?: number, y?: number) {
return (
has(x) &&
has(y) &&
!(
core.bigmap.v2 &&
(x < core.bigmap.posX - core.bigmap.extend ||
x > core.bigmap.posX + core._WIDTH_ + core.bigmap.extend ||
y < core.bigmap.posY - core.bigmap.extend ||
y > core.bigmap.posY + core._HEIGHT_ + core.bigmap.extend)
)
);
}
export function formatDamage(damage: number): DamageString {
let dam = '';
let color = '';
@@ -105,64 +54,6 @@ export function formatDamage(damage: number): DamageString {
return { damage: dam, color: color as Color };
}
/**
* 判断一个数组的数值是否全部相等
* @param arr 要判断的数组
*/
export function equal(arr: number[]): boolean;
/**
* 判断一个数组的元素的某个属性的数值是否全部相等
* @param arr 要判断的数组
* @param key 要判断的属性名
*/
export function equal<T>(arr: T[], key: keyof T): boolean;
export function equal(arr: any, key?: any) {
if (has(key)) {
for (let i = 1; i < arr.length; i++) {
if (arr[i][key] !== arr[0][key]) return false;
}
return true;
} else {
for (let i = 1; i < arr.length; i++) {
if (arr[i] !== arr[0]) return false;
}
return true;
}
}
/**
* 获得一个数组的数值的最大值和最小值
* @param arr 要获得的数组
*/
export function boundary(arr: number[]): [number, number];
/**
* 获得一个数组的元素的某个属性的数值的最大值和最小值
* @param arr 要获得的数组
* @param key 要获得的属性名
*/
export function boundary<T>(arr: T[], key: keyof T): [number, number];
export function boundary(arr: any, key?: any) {
if (has(key)) {
let min = arr[0][key];
let max = arr[0][key];
for (let i = 1; i < arr.length; i++) {
const ele = arr[i][key];
if (ele < min) min = ele;
if (ele > max) max = ele;
}
return [min, max];
} else {
let min = arr[0];
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
const ele = arr[i];
if (ele < min) min = ele;
if (ele > max) max = ele;
}
return [min, max];
}
}
/**
* 获取两个坐标的相对方向
* @param from 初始坐标