Screenshot page

This commit is contained in:
Slushie 2023-04-13 03:19:37 +01:00
parent 80a5c4bde3
commit f1bf01686c
No known key found for this signature in database
GPG Key ID: CDA11820691304E3
5 changed files with 127 additions and 2 deletions

View File

@ -0,0 +1,48 @@
import StatusGenerator from "./StatusGenerator.mjs";
import Media from "../Media.mjs";
import { useEggstraWorkSchedulesStore } from "../../../src/stores/schedules.mjs";
export default class EggstraWorkStatus extends StatusGenerator
{
key = 'eggstrawork';
name = 'Eggstra Work';
async getActiveSchedule() {
await this.preparePinia();
return useEggstraWorkSchedulesStore().activeSchedule;
}
async getDataTime() {
let schedule = await this.getActiveSchedule();
return Date.parse(schedule.startTime);
}
async _getStatus() {
let schedule = await this.getActiveSchedule();
let lines = [];
let mode = 'Eggstra Work'
lines.push(`${mode} is now open on ${schedule.settings.coopStage.name}! #salmonrun #splatoon3`);
lines.push('');
lines.push('Current weapons:');
lines.push(...schedule.settings.weapons.map(w => ` ${w.name}`));
return lines.join('\n');
}
/** @param {ScreenshotHelper} screenshotHelper */
async _getMedia(screenshotHelper) {
let media = new Media;
media.file = await screenshotHelper.capture('salmonrun', {
params: {eggstra: "true"}
});
return media;
}
}

View File

@ -0,0 +1,73 @@
import StatusGenerator from "./StatusGenerator.mjs";
import Media from "../Media.mjs";
import { useEggstraWorkSchedulesStore } from "../../../src/stores/schedules.mjs";
import { useTimeStore } from "../../../src/stores/time.mjs";
export default class EggstraWorkUpcomingStatus extends StatusGenerator
{
key = 'eggstrawork.upcoming';
name = 'Upcoming Eggstra Work';
async getActiveSchedule() {
await this.preparePinia();
// Look for any upcoming schedules
return useEggstraWorkSchedulesStore().upcomingSchedules[0];
}
async getDataTime() {
let schedule = await this.getActiveSchedule();
return schedule
? Date.parse(schedule.startTime)
: false;
}
_getDescription(schedule) {
let stageName = schedule.settings.coopStage.name || '???';
return `An Eggstra Work shift on ${stageName} has been added to the schedule! #salmonrun #splatoon3`;
}
async _getStatus() {
let schedule = await this.getActiveSchedule();
if (!schedule) {
return false;
}
let lines = [];
lines.push(this._getDescription(schedule));
lines.push('');
let startTime = Date.parse(schedule.startTime);
let now = useTimeStore().now;
let hours = Math.floor((startTime - now) / (1000 * 60 * 60));
let formattedTime;
if (hours >= 24) {
let days = Math.round(hours / 24);
formattedTime = days === 1 ? '1 day' : `${days} days`;
} else {
formattedTime = hours === 1 ? '1 hour' : `${hours} hours`;
}
lines.push(`This shift will start in ${formattedTime} with these weapons:`);
lines.push(...schedule.settings.weapons.map(w => ` ${w.name}`));
return lines.join('\n');
}
/** @param {ScreenshotHelper} screenshotHelper */
async _getMedia(screenshotHelper) {
let schedule = await this.getActiveSchedule();
let media = new Media;
media.file = await screenshotHelper.capture('salmonRun', {
params: { startTime: schedule?.startTime, eggstra: "true" },
});
return media;
}
}

View File

@ -11,6 +11,8 @@ import SplatfestStatus from "./generators/SplatfestStatus.mjs";
import SplatfestResultsStatus from "./generators/SplatfestResultsStatus.mjs";
import StatusGeneratorManager from "./StatusGeneratorManager.mjs"
import SalmonRunUpcomingStatus from "./generators/SalmonRunUpcomingStatus.mjs";
import EggstraWorkStatus from "./generators/EggstraWorkStatus.mjs";
import EggstraWorkUpcomingStatus from "./generators/EggstraWorkUpcomingStatus.mjs";
function defaultStatusGenerators() {
return [
@ -22,6 +24,8 @@ function defaultStatusGenerators() {
new SalmonRunGearStatus,
new SplatfestStatus,
new SplatfestResultsStatus,
new EggstraWorkStatus,
new EggstraWorkUpcomingStatus,
];
}

View File

@ -8,7 +8,7 @@
</div>
<div class="hidden ss:block text-shadow text-white text-xl">
<KingSalmonid :schedule="schedule" class="inline-block -mb-1 mr-2" />
<KingSalmonid :schedule="schedule" class="inline-block -mb-1 mr-2" v-if="!eggstra"/>
<div class="inline-block" v-if="time.isUpcoming(schedule.startTime)">
Shift opens

View File

@ -2,7 +2,7 @@
<ScreenshotLayout header="Salmon Run">
<div class="grow flex items-center justify-center">
<div class="max-w-2xl scale-[1.6]">
<SalmonRunBox class="-rotate-1" is-screenshot :startTime="route.query.startTime" />
<SalmonRunBox class="-rotate-1" is-screenshot :startTime="route.query.startTime" :eggstra="route.query.eggstra=='true'"/>
</div>
</div>
</ScreenshotLayout>