fix: 同步 gameSpeed 倍率展示并修复移动端资源栏遮挡

- 顶部资源栏/概览页:产量、能耗、明细按 gameSpeed 统一缩放,避免显示与实际产出不一致
- 支持 gameSpeed=0:避免 “|| 1” 抹掉 0,并在循环间隔计算中规避除 0
- 修复移动端资源横向滚动时被菜单按钮遮挡(min-w-0/overflow-hidden + 对齐规则)
This commit is contained in:
lpj
2025-12-17 22:15:58 +08:00
parent cfcde0b024
commit 690e6cbbf5
6 changed files with 129 additions and 69 deletions

28
src/utils/speed.ts Normal file
View File

@@ -0,0 +1,28 @@
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
}