41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { defineStore } from "pinia";
|
|
import { computed, ref } from "vue";
|
|
|
|
export type AcquiredTypeSource = 'bo' | 'so' | 'prod' | 'misc';
|
|
|
|
export const useAcquiredTypesStore = defineStore('market-acquisition', () => {
|
|
const acquiredTypes = ref<any[]>([]); // TODO
|
|
|
|
const types = computed(() => acquiredTypes.value.filter(item => item.remaining > 0));
|
|
const addAcquiredType = async (type: number, quantity: number, price: number, source?: AcquiredTypeSource) => {
|
|
const newItem = [];
|
|
|
|
acquiredTypes.value = [...acquiredTypes.value, newItem];
|
|
};
|
|
const removeAcquiredType = async (id: number, quantity: number) => {
|
|
const found = acquiredTypes.value.find(t => t.id === id);
|
|
|
|
if (!found) {
|
|
return 0;
|
|
}
|
|
|
|
const item = {
|
|
...found,
|
|
remaining: Math.max(0, found.remaining - quantity)
|
|
};
|
|
|
|
acquiredTypes.value = acquiredTypes.value.map(i => {
|
|
if (i.id === item.id) {
|
|
return item;
|
|
} else {
|
|
return i;
|
|
}
|
|
});
|
|
};
|
|
|
|
const refresh = () => {}
|
|
|
|
refresh();
|
|
|
|
return { acquiredTypes: types, addAcquiredType, removeAcquiredType, refresh };
|
|
}); |