Files
Alien_Sniper/assets/scripts/framework/ui/DesignResolutionPolicy.ts
T
2026-07-17 10:54:32 +08:00

50 lines
2.0 KiB
TypeScript

// @structural-rewrite-v1
import { ResolutionPolicy } from 'cc';
export interface DesignResolution {
width: number;
height: number;
policy: number;
}
type ResolutionRule = {
minimumRatio: number;
create: (width: number, height: number) => DesignResolution;
};
const resolutionRules: ReadonlyArray<ResolutionRule> = [
{
"minimumRatio": 18 / 9,
"create": (width, height) => ({
"width": 1080,
"height": height * (1080 / width),
"policy": ResolutionPolicy["FIXED_WIDTH"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
}),
},
{
"minimumRatio": 16 / 9,
"create": (width, height) => ({
"width": width * (1920 / height),
"height": 1920,
"policy": ResolutionPolicy["FIXED_HEIGHT"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
}),
},
];
export function resolveDesignResolution(width: number, height: number): DesignResolution {
try {
do {
switch (0 as number) {
case 1: break;
case 2: break;
default:
const ratio = height / width;
const rule = resolutionRules["find"]((candidate) => ratio > (candidate["minimumRatio"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown));
return rule?.["create"](width, height) ?? {
"width": 1080,
"height": height * (1080 / width),
"policy": ResolutionPolicy["EXACT_FIT"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
};
}
} while (false);
}
finally {
}
}