Bugfixes and game db updates
Some checks failed
Build / build (push) Has been cancelled

This commit is contained in:
Trenton Zimmer
2025-06-21 11:13:50 -04:00
parent be7918c251
commit 3a5df7a7d0
9 changed files with 2140 additions and 68 deletions

View File

@@ -1,4 +1,4 @@
VITE_APP_VERSION="3.0.14"
VITE_APP_VERSION="3.0.15"
VITE_API_URL="http://10.5.7.5:8000/"
VITE_API_KEY="your_api_key_should_be_here"
VITE_ASSET_PATH="/assets"

View File

@@ -1,4 +1,4 @@
VITE_APP_VERSION="3.0.14"
VITE_APP_VERSION="3.0.15"
VITE_API_URL="https://restfulsleep.phaseii.network"
VITE_API_KEY="your_api_key_should_be_here"
VITE_ASSET_PATH="https://cdn.phaseii.network/file/PhaseII/web-assets"

View File

@@ -9,9 +9,10 @@
"3.0.8": ["- (Minor) Added game event options for Classic IIDX versions"],
"3.0.8-shrimplinks": ["- (Bugfix) Fix broken session."],
"3.0.9": ["- (Minor) Add additional data to the dashboard, including today stats and score stats. Add score stats to chart."],
"3.0.10": ["- (Major) Add experimental records pages, work on score processing.", "- (Bugfix) Clean up new dashboard data"],
"3.0.10": ["- (Major) Add experimental records pages, work on score processing.", "- (Bugfix) Clean up new dashboard data."],
"3.0.11": ["- (Bugfix) Fix broken chart sorting for certain games.", "- (Bugfix) Add spacing on mobile for personal records user buttons."],
"3.0.12": ["- (Feature) Add new game event settings to SILENT SCOPE: BONE EATER and beatmaniaIIDX EPOLIS."],
"3.0.13": ["- (Feature) Add new game event settings to beatmaniaIIDX EPOLIS."],
"3.0.14": ["- (Minor) Fix footer buttons on tables, add generic export table button for every table."]
"3.0.14": ["- (Minor) Fix footer buttons on tables, add generic export table button for every table."],
"3.0.15": ["- (Minor) Add beta support for Pinky Crush, clean up gameDB a little.", "- (Optimization) Convert dashboard to a more modular backend.", "- (Bugfix) Fix warnings on auth pages."]
}

View File

@@ -409,4 +409,48 @@ export const IIDXOptions = {
type: "String",
},
],
32: [
{
id: "global_shop_ranking",
name: "Global Shop Ranking",
help: "Return network-wide ranking instead of shop ranking on results screen.",
type: "Boolean",
},
{
id: "event_phase",
name: "Game Event Phase",
help: "Enable different boss events",
type: "Array",
options: [
{ id: 0, label: "No Event" },
{ id: 1, label: "MY POLIS DESIGNER (MAP 1)" },
{ id: 2, label: "MY POLIS DESIGNER (MAP 2)" },
{ id: 3, label: "MY POLIS DESIGNER (MAP 3)" },
{ id: 4, label: "MY POLIS DESIGNER (MAP FINAL)" },
{ id: 5, label: "EPOLIS RESTORATION (SYSTEM A)" },
{ id: 6, label: "EPOLIS RESTORATION (SYSTEM B)" },
{ id: 7, label: "EPOLIS RESTORATION (SYSTEM C)" },
{ id: 8, label: "EPOLIS RESTORATION (SYSTEM D + X)" },
],
},
{
id: "system_season_voice",
name: "System Season Voice",
help: "Enable different season voice in Game",
type: "Array",
options: [
{ id: 0, label: "Random" },
{ id: 1, label: "Winter" },
{ id: 2, label: "Spring" },
{ id: 3, label: "Summer" },
{ id: 4, label: "Autumn" },
],
},
{
id: "license",
name: "License Message",
help: "A server sent license.",
type: "String",
},
],
};

View File

@@ -171,6 +171,7 @@ export class VersionConstants {
static IIDX_CASTHOUR = 29;
static IIDX_RESIDENT = 30;
static IIDX_EPOLIS = 31;
static IIDX_PINKY_CRUSH = 32;
static JUBEAT = 1;
static JUBEAT_RIPPLES = 2;
@@ -1213,6 +1214,7 @@ export const gameData = [
VersionConstants.IIDX_CASTHOUR,
VersionConstants.IIDX_RESIDENT,
VersionConstants.IIDX_EPOLIS,
VersionConstants.IIDX_PINKY_CRUSH,
],
scoreHeaders: [
{ text: "Misses", value: "data.misses", width: 100 },
@@ -1403,6 +1405,11 @@ export const gameData = [
label: "EPOLIS",
maxRivals: 5,
},
{
id: VersionConstants.IIDX_PINKY_CRUSH,
label: "PINKY CRUSH",
maxRivals: 5,
},
],
},
{
@@ -2020,7 +2027,7 @@ export const gameData = [
{
id: GameConstants.SILENT_SCOPE,
name: "SILENT SCOPE: BONE EATER",
skip: false,
skip: true,
noRivals: true,
noScores: false,
noRecords: true,

File diff suppressed because it is too large Load Diff

View File

@@ -99,7 +99,7 @@ export const useMainStore = defineStore("main", {
const apiServer = import.meta.env.VITE_API_URL;
const apiKey = import.meta.env.VITE_API_KEY;
let loadingTimeout;
this.errorCode = ""; // We want to reset the network error.
this.errorCode = "";
const startLoading = () => {
loadingTimeout = setTimeout(() => {
@@ -243,7 +243,7 @@ export const useMainStore = defineStore("main", {
saveUserAuthKey(data.sessionId, remember ? 30 : 1);
return true;
} else {
alert(this.errorCode);
alert("Incorrect username or password!");
return false;
}
} catch (error) {

View File

@@ -63,8 +63,8 @@ async function saveSettings() {
@submit.prevent="submitPCBID()"
>
<h2 class="text-xl mb-6 lg:w-1/2">
Claim an arcade using a PCBID. If the account already has an owner,
you may not claim the arcade.
Claim an arcade using a PCBID.<br />
You cannot claim the arcade if it has an owner.
</h2>
<FormField

View File

@@ -51,6 +51,10 @@ const cumulativePlays = computed(() => {
);
});
const uniqueProfiles = computed(() => {
return userProfiles.value.length;
});
const longestStreak = computed(() => {
const groupByDay = (timestamps) => {
const dayMap = {};
@@ -153,6 +157,65 @@ const todayPlays = computed(() => {
return total;
});
const cardBoxes = ref([
{
label: "Cumulative Plays",
icon: mdiCounter,
iconColor: "text-emerald-600",
suffix: "play",
number: cumulativePlays,
},
{
label: "Games Played",
icon: mdiGamepadOutline,
iconColor: "text-sky-300",
suffix: "game",
number: uniqueProfiles,
},
{
label: "Plays Today",
icon: mdiCounter,
iconColor: "text-sky-300",
suffix: "play",
number: todayPlays,
},
{
label: "Longest Play Streak",
icon: mdiFire,
iconColor: "text-red-500",
suffix: "play",
number: longestStreak,
},
{
label: "Total Records",
icon: mdiGamepadOutline,
iconColor: "text-sky-300",
suffix: "record",
number: totalRecords,
},
{
label: "Total Attempts",
icon: mdiGamepadOutline,
iconColor: "text-sky-300",
suffix: "attempt",
number: totalAttempts,
},
{
label: "Records Today",
icon: mdiGamepadOutline,
iconColor: "text-sky-300",
suffix: "record",
number: todayRecords,
},
{
label: "Attempts Today",
icon: mdiGamepadOutline,
iconColor: "text-sky-300",
suffix: "attempt",
number: todayAttempts,
},
]);
</script>
<template>
@@ -187,65 +250,16 @@ const todayPlays = computed(() => {
<div
class="grid grid-cols-2 sm:grid-cols-3 gap-6 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 3xl:grid-cols-5 mb-6"
>
<CardBoxWidget
:icon="mdiCounter"
:number="cumulativePlays"
label="Cumulative Plays"
suffix="plays"
icon-color="text-emerald-600"
/>
<CardBoxWidget
:icon="mdiGamepadOutline"
:number="userProfiles.length"
label="Games Played"
suffix="games"
icon-color="text-sky-300"
/>
<CardBoxWidget
v-if="todayPlays"
:icon="mdiGamepadOutline"
:number="todayPlays"
label="Plays Today"
suffix="plays"
icon-color="text-sky-300"
/>
<CardBoxWidget
:icon="mdiFire"
:number="longestStreak"
label="Longest Play Streak"
suffix="plays"
icon-color="text-red-600"
/>
<CardBoxWidget
:icon="mdiGamepadOutline"
:number="totalRecords"
label="Total Records"
suffix="records"
icon-color="text-sky-300"
/>
<CardBoxWidget
:icon="mdiGamepadOutline"
:number="totalAttempts"
label="Total Attempts"
suffix="attempts"
icon-color="text-sky-300"
/>
<CardBoxWidget
v-if="todayRecords"
:icon="mdiGamepadOutline"
:number="todayRecords"
label="Records Today"
suffix="records"
icon-color="text-sky-300"
/>
<CardBoxWidget
v-if="todayAttempts"
:icon="mdiGamepadOutline"
:number="todayAttempts"
label="Attempts Today"
suffix="attempts"
icon-color="text-sky-300"
/>
<template v-for="box of cardBoxes" :key="box.label">
<CardBoxWidget
v-if="box.number"
:icon="box.icon"
:number="box.number"
:label="box.label"
:suffix="`${box.suffix}${box.number == 1 ? '' : 's'}`"
:icon-color="box.iconColor"
/>
</template>
</div>
<SectionTitleLine :icon="mdiGamepad" title="Showcase" main />