mirror of
https://github.com/misenhower/splatoon3.ink.git
synced 2026-09-10 01:25:48 -05:00
Add gear store
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import fs from 'fs/promises';
|
||||
import { createPinia, setActivePinia } from 'pinia';
|
||||
import { useGearStore, useSchedulesStore } from '../../../src/stores/data.mjs';
|
||||
import { useGearDataStore, useSchedulesDataStore } from '../../../src/stores/data.mjs';
|
||||
import prefixedConsole from '../../common/prefixedConsole.mjs';
|
||||
import Tweet from '../Tweet.mjs';
|
||||
import TwitterClient from '../TwitterClient.mjs';
|
||||
@@ -24,8 +24,8 @@ export default class TweetGenerator
|
||||
|
||||
setActivePinia(createPinia());
|
||||
|
||||
useSchedulesStore().setData(JSON.parse(await fs.readFile('dist/data/schedules.json')));
|
||||
useGearStore().setData(JSON.parse(await fs.readFile('dist/data/gear.json')));
|
||||
useSchedulesDataStore().setData(JSON.parse(await fs.readFile('dist/data/schedules.json')));
|
||||
useGearDataStore().setData(JSON.parse(await fs.readFile('dist/data/gear.json')));
|
||||
|
||||
this._piniaInitialized = true;
|
||||
}
|
||||
|
||||
@@ -39,13 +39,13 @@ function defineEndpointStore(id, endpoint, transform = null) {
|
||||
});
|
||||
}
|
||||
|
||||
export const useSchedulesStore = defineEndpointStore('schedules', '/data/schedules.json', d => d.data);
|
||||
export const useGearStore = defineEndpointStore('gear', '/data/gear.json', d => d.data);
|
||||
export const useSchedulesDataStore = defineEndpointStore('schedules', '/data/schedules.json', d => d.data);
|
||||
export const useGearDataStore = defineEndpointStore('gear', '/data/gear.json', d => d.data);
|
||||
|
||||
export const useDataStore = defineStore('data', () => {
|
||||
const stores = {
|
||||
schedules: useSchedulesStore(),
|
||||
gear: useGearStore(),
|
||||
schedules: useSchedulesDataStore(),
|
||||
gear: useGearDataStore(),
|
||||
};
|
||||
|
||||
function updateAll() {
|
||||
|
||||
31
src/stores/gear.mjs
Normal file
31
src/stores/gear.mjs
Normal file
@@ -0,0 +1,31 @@
|
||||
import { acceptHMRUpdate, defineStore } from "pinia";
|
||||
import { computed } from "vue";
|
||||
import { useGearDataStore } from "./data.mjs";
|
||||
import { useTimeStore } from "./time.mjs";
|
||||
|
||||
function whenCurrent(node) {
|
||||
const time = useTimeStore();
|
||||
|
||||
return time.isCurrent(node?.saleEndTime)
|
||||
? node
|
||||
: null;
|
||||
}
|
||||
|
||||
function currentNodes(nodes) {
|
||||
return nodes?.filter(n => whenCurrent(n));
|
||||
}
|
||||
|
||||
export const useGearStore = defineStore('gear', () => {
|
||||
const gear = useGearDataStore();
|
||||
const gesotown = computed(() => gear.data?.gesotown);
|
||||
|
||||
const dailyDropBrand = computed(() => whenCurrent(gesotown.value?.pickupBrand));
|
||||
const dailyDropGear = computed(() => currentNodes(gesotown.value?.pickupBrand.brandGears));
|
||||
const normalGear = computed(() => currentNodes(gesotown.value?.limitedGears));
|
||||
|
||||
return { dailyDropBrand, dailyDropGear, normalGear };
|
||||
});
|
||||
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept(acceptHMRUpdate(useGearStore, import.meta.hot));
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { acceptHMRUpdate, defineStore } from "pinia";
|
||||
import { computed } from "vue";
|
||||
import { useSchedulesStore } from "./data.mjs";
|
||||
import { useSchedulesDataStore } from "./data.mjs";
|
||||
import { useTimeStore } from "./time.mjs";
|
||||
|
||||
// Schedule store definition (used for each type of schedule)
|
||||
@@ -24,24 +24,24 @@ function defineScheduleStore(id, options) {
|
||||
|
||||
// Regular Battle
|
||||
export const useRegularSchedulesStore = defineScheduleStore('regular', {
|
||||
nodes: () => useSchedulesStore().data?.regularSchedules.nodes,
|
||||
nodes: () => useSchedulesDataStore().data?.regularSchedules.nodes,
|
||||
settings: node => node.regularMatchSetting,
|
||||
});
|
||||
|
||||
// Anarchy Battle
|
||||
export const useAnarchySeriesSchedulesStore = defineScheduleStore('anarchy/series', {
|
||||
nodes: () => useSchedulesStore().data?.bankaraSchedules.nodes,
|
||||
nodes: () => useSchedulesDataStore().data?.bankaraSchedules.nodes,
|
||||
settings: node => node.bankaraMatchSettings.find(s => s.mode === 'CHALLENGE'),
|
||||
});
|
||||
|
||||
export const useAnarchyOpenSchedulesStore = defineScheduleStore('anarchy/open', {
|
||||
nodes: () => useSchedulesStore().data?.bankaraSchedules.nodes,
|
||||
nodes: () => useSchedulesDataStore().data?.bankaraSchedules.nodes,
|
||||
settings: node => node.bankaraMatchSettings.find(s => s.mode === 'OPEN'),
|
||||
});
|
||||
|
||||
// Salmon Run
|
||||
export const useSalmonRunSchedulesStore = defineScheduleStore('salmonRun', {
|
||||
nodes: () => useSchedulesStore().data?.coopGroupingSchedule.regularSchedules.nodes,
|
||||
nodes: () => useSchedulesDataStore().data?.coopGroupingSchedule.regularSchedules.nodes,
|
||||
settings: node => node.setting,
|
||||
});
|
||||
|
||||
|
||||
@@ -17,8 +17,11 @@ import MainLayout from '@/layouts/MainLayout.vue'
|
||||
import { useDataStore } from '../stores/data';
|
||||
import { onMounted } from 'vue';
|
||||
import ScheduleBox from '../components/ScheduleBox.vue';
|
||||
import { useGearStore } from '../stores/gear.mjs';
|
||||
|
||||
const data = useDataStore();
|
||||
onMounted(() => data.updateAll());
|
||||
|
||||
const gear = useGearStore();
|
||||
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user