mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 07:55:11 +08:00
- 顶部资源栏/概览页:产量、能耗、明细按 gameSpeed 统一缩放,避免显示与实际产出不一致 - 支持 gameSpeed=0:避免 “|| 1” 抹掉 0,并在循环间隔计算中规避除 0 - 修复移动端资源横向滚动时被菜单按钮遮挡(min-w-0/overflow-hidden + 对齐规则)
29 lines
1005 B
TypeScript
29 lines
1005 B
TypeScript
import type { Resources } from '@/types/game'
|
||
|
||
/**
|
||
* 按倍率缩放一个数值
|
||
* - 支持合法的 0(例如用于“暂停”)
|
||
*/
|
||
export const scaleNumber = (value: number, multiplier: number): number => value * multiplier
|
||
|
||
/**
|
||
* 按倍率缩放 Resources(常用于“每小时产量/消耗”等展示)
|
||
* - 支持合法的 0(例如用于“暂停”)
|
||
*/
|
||
export const scaleResources = (resources: Resources, multiplier: number): Resources => ({
|
||
metal: resources.metal * multiplier,
|
||
crystal: resources.crystal * multiplier,
|
||
deuterium: resources.deuterium * multiplier,
|
||
darkMatter: resources.darkMatter * multiplier,
|
||
energy: resources.energy * multiplier
|
||
})
|
||
|
||
/**
|
||
* 计算游戏循环的间隔(毫秒)
|
||
* - multiplier <= 0 或非有限值时,回退到 baseMs,避免除 0
|
||
*/
|
||
export const getGameLoopIntervalMs = (multiplier: number, baseMs: number = 1000): number => {
|
||
if (!Number.isFinite(multiplier) || multiplier <= 0) return baseMs
|
||
return baseMs / multiplier
|
||
}
|