47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import BezierEasing from "bezier-easing"
|
|
import { config } from "../constants/config"
|
|
|
|
export function Utility_ConvertSecondToString(seconds: number) {
|
|
let last = seconds
|
|
const hour = Math.floor(last / 3600)
|
|
last = last - hour * 3600
|
|
const minite = Math.floor(last / 60)
|
|
last = last - minite * 60
|
|
const second = Math.floor(last)
|
|
function format(value: number) {
|
|
return value >= 10 ? value.toString() : (`0${value}`)
|
|
}
|
|
return `${format(hour)}:${format(minite)}:${format(second)}`
|
|
}
|
|
|
|
// 计算积分
|
|
export function Utility_CalculateScore(difficulty: string, second: number): number {
|
|
let score = 0
|
|
const currentTime = Math.min(120, second)
|
|
if (difficulty === config.DIFFICULTY_TYPE.Easy) {
|
|
score = 270 - currentTime
|
|
} else if (difficulty === config.DIFFICULTY_TYPE.Medium) {
|
|
score = 420 - currentTime * 2
|
|
} else if (difficulty === config.DIFFICULTY_TYPE.Hard) {
|
|
score = 760 - currentTime * 3
|
|
} else if (difficulty === config.DIFFICULTY_TYPE.Expert) {
|
|
score = 1120 - currentTime * 3
|
|
} else if (difficulty === config.DIFFICULTY_TYPE.Extreme) {
|
|
score = 1320 - currentTime * 4
|
|
}
|
|
// console.log("计算积分 >>>>>", difficulty, second, score)
|
|
return score
|
|
}
|
|
|
|
const bezier_ease_out = BezierEasing(0.2, 0.8, 0.5, 1)
|
|
export function Utility_EaseOut(t: number, b: number, c: number, d: number) {
|
|
const p = bezier_ease_out(t / d)
|
|
return c * p + b
|
|
}
|
|
|
|
const bezier_ease_out_2 = BezierEasing(0.25, 0.1, 0.3, 1)
|
|
export function Utility_EaseOut_2(t: number, b: number, c: number, d: number) {
|
|
const p = bezier_ease_out_2(t / d)
|
|
return c * p + b
|
|
}
|