mirror of
https://github.com/setube/ogame-vue-ts.git
synced 2026-05-12 07:55:11 +08:00
fix: 同步 gameSpeed 倍率展示并修复移动端资源栏遮挡
- 顶部资源栏/概览页:产量、能耗、明细按 gameSpeed 统一缩放,避免显示与实际产出不一致 - 支持 gameSpeed=0:避免 “|| 1” 抹掉 0,并在循环间隔计算中规避除 0 - 修复移动端资源横向滚动时被菜单按钮遮挡(min-w-0/overflow-hidden + 对齐规则)
This commit is contained in:
28
src/utils/speed.ts
Normal file
28
src/utils/speed.ts
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user