1
0
mirror of https://github.com/kihashi/stardew_community_checklist.git synced 2025-10-19 08:03:17 +00:00
stardew_community_checklist/src/store/index.js
2018-04-28 12:16:52 -04:00

85 lines
2.1 KiB
JavaScript

import Vue from 'vue'
import Vuex from 'vuex'
import SkillJson from '@/assets/game_data/skills.json'
import SeasonJson from '@/assets/game_data/seasons.json'
import RoomJson from '@/assets/game_data/rooms.json'
import BundleJson from '@/assets/game_data/bundles.json'
import ItemJson from '@/assets/game_data/items.json'
Vue.use(Vuex)
var state = {
StoredItems: {},
seasons: loadSeasons(),
skills: loadSkills(),
rooms: loadRooms()
}
state.bundles = loadBundles(state.rooms)
state.items = loadItems(state.bundles, state.skills, state.seasons)
export default new Vuex.Store({
state: state,
getters: {
IsBundleItemRedeemed: (state) => (BundleItem) => {
return state.StoredItems.hasOwnProperty(BundleItem.id)
},
GetBundleById: (state) => (bundleId) => {
return getById(state.bundles, bundleId)
}
},
mutations: {
RedeemItem (state, BundleItem) {
Vue.set(state.StoredItems, BundleItem.id, 1)
},
UndoRedeemItem (state, BundleItem) {
Vue.delete(state.StoredItems, BundleItem.id)
}
}
})
function getById (array, id) {
return array.find(x => x.id === id)
}
function loadSeasons () {
return SeasonJson.seasons
}
function loadSkills () {
return SkillJson.skills
}
function loadRooms () {
return RoomJson.rooms.map(room => {
room.bundles = new Array(0)
room.items_required = 0
return room
})
}
function loadBundles (rooms) {
return BundleJson.bundles.map(bundle => {
bundle.room = getById(rooms, bundle.room)
bundle.room.bundles.push(bundle)
bundle.room.items_required += bundle.items_required
bundle.items = new Array(0)
return bundle
})
}
function loadItems (bundles, skills, seasons) {
return ItemJson.items.map(item => {
item.skills = item.skills.map(skill => getById(skills, skill))
item.seasons = item.seasons.map(season => getById(seasons, season))
item.bundles.map(bundleItem => {
bundleItem.bundle = getById(bundles, bundleItem.bundle_id)
bundleItem.item = item
bundleItem.bundle.items.push(bundleItem)
return bundleItem
})
return item
})
}