7 Commits

Author SHA1 Message Date
0f24578e06 joe
Some checks failed
deploy / deploy (push) Failing after 43s
2024-08-01 00:35:10 +01:00
Lee
2ac3dbdacd Update src/utils/scoresaber/scores.ts
Some checks failed
deploy / deploy (push) Failing after 35s
2024-07-31 23:32:42 +00:00
Lee
e4f2c69f7e Update .gitea/workflows/deploy.yml
Some checks failed
deploy / deploy (push) Failing after 1m17s
2024-07-31 23:30:06 +00:00
Lee
9e43a72ac9 Update src/utils/scoresaber/scores.ts
Some checks failed
deploy / deploy (push) Failing after 10s
2024-07-31 23:29:10 +00:00
2fedf0e6ff add shortened name for site name
All checks were successful
deploy / deploy (push) Successful in 1m8s
2024-02-01 03:20:44 +00:00
a14ff2f343 Merge branch 'master' of https://git.fascinated.cc/Fascinated/scoresaber-reloaded-v2
All checks were successful
deploy / deploy (push) Successful in 1m2s
2024-02-01 02:23:56 +00:00
be9328bab5 why was this disabled? 2024-02-01 02:23:55 +00:00
5 changed files with 39 additions and 14 deletions

View File

@ -17,5 +17,5 @@ jobs:
- name: Push to dokku - name: Push to dokku
uses: dokku/github-action@master uses: dokku/github-action@master
with: with:
git_remote_url: "ssh://dokku@10.0.3.39:22/scoresaber-reloadedv2" git_remote_url: "ssh://dokku@10.0.50.65:22/scoresaber-reloadedv2"
ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }} ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}

View File

@ -34,7 +34,7 @@ const nextConfig = {
generateEtags: true, generateEtags: true,
reactStrictMode: true, reactStrictMode: true,
swcMinify: true, swcMinify: true,
compress: false, compress: true,
poweredByHeader: false, poweredByHeader: false,
experimental: { experimental: {
webpackBuildWorker: true, webpackBuildWorker: true,

View File

@ -18,7 +18,7 @@ export const viewport: Viewport = {
export const metadata: Metadata = { export const metadata: Metadata = {
metadataBase: new URL(ssrSettings.siteUrl), metadataBase: new URL(ssrSettings.siteUrl),
title: { title: {
template: ssrSettings.siteName + " - %s", template: ssrSettings.siteNameShort + " - %s",
default: ssrSettings.siteName, default: ssrSettings.siteName,
}, },
description: ssrSettings.description, description: ssrSettings.description,

View File

@ -1,5 +1,6 @@
{ {
"siteName": "ScoreSaber Reloaded", "siteName": "ScoreSaber Reloaded",
"siteNameShort": "SSR",
"description": "Scoresaber Reloaded is a new way to view your scores and get more stats about your and your plays", "description": "Scoresaber Reloaded is a new way to view your scores and get more stats about your and your plays",
"siteUrl": "https://ssr.fascinated.cc", "siteUrl": "https://ssr.fascinated.cc",
"proxy": "https://proxy.fascinated.cc" "proxy": "https://proxy.fascinated.cc"

View File

@ -7,7 +7,7 @@ import { useScoresaberScoresStore } from "@/store/scoresaberScoresStore";
export const WEIGHT_COEFFICIENT = 0.965; export const WEIGHT_COEFFICIENT = 0.965;
const starMultiplier = 42.11; const starMultiplier = 42.11;
const ppCurve = [ const ppCurve: [number, number][] = [
[1, 5.367394282890631], [1, 5.367394282890631],
[0.9995, 5.019543595874787], [0.9995, 5.019543595874787],
[0.999, 4.715470646416203], [0.999, 4.715470646416203],
@ -63,29 +63,53 @@ function lerp(v0: number, v1: number, t: number) {
return v0 + t * (v1 - v0); return v0 + t * (v1 - v0);
} }
function calculatePPModifier(c1: Array<any>, c2: Array<any>, acc: number) { function calculatePPModifier(
const distance = (c2[0] - acc) / (c2[0] - c1[0]); c1: [number, number],
return lerp(c2[1], c1[1], distance); c2: [number, number],
acc: number,
): number {
const distance: number = (c2[0] - acc) / (c2[0] - c1[0]);
const interpolated: number = lerp(c2[1], c1[1], distance);
console.log(
`Acc: ${acc}, c1: ${c1}, c2: ${c2}, Distance: ${distance}, Interpolated: ${interpolated}`,
);
return interpolated;
} }
function findPPModifier(acc: number, curve: Array<any>) { function findPPModifier(
acc: number,
curve: [number, number][],
): number | undefined {
acc = clamp(acc, 0, 100) / 100; acc = clamp(acc, 0, 100) / 100;
console.log("Clamped Accuracy:", acc);
let prev = curve[1]; let prev: [number, number] = curve[1];
for (const item of curve) { for (const item of curve) {
console.log("Curve Point:", item[0], item[1]);
if (item[0] <= acc) { if (item[0] <= acc) {
return calculatePPModifier(item, prev, acc); return calculatePPModifier(item, prev, acc);
} }
prev = item; prev = item;
} }
return undefined;
} }
export function getScoreSaberPP(acc: number, stars: number) { export function getScoreSaberPP(
const ppValue = stars * starMultiplier; acc: number,
const modifier = findPPModifier(acc * 100, ppCurve); stars: number,
if (!modifier) return undefined; ): { pp: number | undefined } {
console.log("Input Stars:", stars);
console.log("Input Accuracy:", acc);
const ppValue: number = stars * starMultiplier;
const modifier: number | undefined = findPPModifier(acc * 100, ppCurve);
console.log("Modifier:", modifier);
if (!modifier) return { pp: undefined };
const finalPP: number = modifier * ppValue;
console.log("Final PP:", finalPP);
const finalPP = modifier * ppValue;
return { return {
pp: Number.isNaN(finalPP) ? undefined : finalPP, pp: Number.isNaN(finalPP) ? undefined : finalPP,
}; };