mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Refactor armoire content to be cached by day
This commit is contained in:
@@ -15,6 +15,7 @@ import back from './back';
|
||||
import body from './body';
|
||||
import headAccessory from './head-accessory';
|
||||
import eyewear from './eyewear';
|
||||
import memoize from '../../fns/datedMemoize';
|
||||
|
||||
const gear = {
|
||||
weapon,
|
||||
@@ -27,44 +28,65 @@ const gear = {
|
||||
eyewear,
|
||||
};
|
||||
|
||||
/*
|
||||
The gear is exported as a tree (defined above), and a flat list
|
||||
(eg, {weapon_healer_1: .., shield_special_0: ...}) since
|
||||
they are needed in different forms at different points in the app
|
||||
*/
|
||||
const flat = {};
|
||||
function populateGear (key, klass, type, index, item) {
|
||||
const set = `${klass}-${index}`;
|
||||
|
||||
defaults(item, {
|
||||
type,
|
||||
key,
|
||||
set,
|
||||
klass,
|
||||
index,
|
||||
str: 0,
|
||||
int: 0,
|
||||
per: 0,
|
||||
con: 0,
|
||||
canBuy: () => false,
|
||||
});
|
||||
|
||||
if (item.canOwn === undefined && (item.mystery || key.indexOf('takeThis') !== -1)) {
|
||||
item.canOwn = ownsItem(key);
|
||||
}
|
||||
}
|
||||
|
||||
each(GEAR_TYPES, type => {
|
||||
const allGearTypes = CLASSES.concat(['base', 'special', 'mystery', 'armoire']);
|
||||
|
||||
each(allGearTypes, klass => {
|
||||
each(gear[type][klass], (item, index) => {
|
||||
const key = `${type}_${klass}_${index}`;
|
||||
const set = `${klass}-${index}`;
|
||||
|
||||
defaults(item, {
|
||||
type,
|
||||
key,
|
||||
set,
|
||||
klass,
|
||||
index,
|
||||
str: 0,
|
||||
int: 0,
|
||||
per: 0,
|
||||
con: 0,
|
||||
canBuy: () => false,
|
||||
});
|
||||
|
||||
if (item.mystery || key.indexOf('takeThis') !== -1) {
|
||||
item.canOwn = ownsItem(key);
|
||||
}
|
||||
|
||||
flat[key] = item;
|
||||
populateGear(key, klass, type, index, item);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function buildFlatList () {
|
||||
/*
|
||||
The gear is exported as a tree (defined above), and a flat list
|
||||
(eg, {weapon_healer_1: .., shield_special_0: ...}) since
|
||||
they are needed in different forms at different points in the app
|
||||
*/
|
||||
const flat = {};
|
||||
|
||||
each(GEAR_TYPES, type => {
|
||||
const allGearTypes = CLASSES.concat(['base', 'special', 'mystery', 'armoire']);
|
||||
|
||||
each(allGearTypes, klass => {
|
||||
each(gear[type][klass], (item, index) => {
|
||||
const key = `${type}_${klass}_${index}`;
|
||||
populateGear(key, klass, type, index, item);
|
||||
|
||||
flat[key] = item;
|
||||
});
|
||||
});
|
||||
});
|
||||
return flat;
|
||||
}
|
||||
|
||||
const memoizedFlatList = memoize(buildFlatList);
|
||||
|
||||
export default {
|
||||
tree: gear,
|
||||
flat,
|
||||
get flat () {
|
||||
return memoizedFlatList();
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user