Files
ogame-vue-ts/src/utils/speed.ts
lpj 690e6cbbf5 fix: 同步 gameSpeed 倍率展示并修复移动端资源栏遮挡
- 顶部资源栏/概览页:产量、能耗、明细按 gameSpeed 统一缩放,避免显示与实际产出不一致
- 支持 gameSpeed=0:避免 “|| 1” 抹掉 0,并在循环间隔计算中规避除 0
- 修复移动端资源横向滚动时被菜单按钮遮挡(min-w-0/overflow-hidden + 对齐规则)
2025-12-17 22:23:27 +08:00

29 lines
1005 B
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}