feat(customize): earrings and headbands

This commit is contained in:
SabreCat
2018-05-29 21:02:42 +00:00
parent 821f84dbe8
commit a0e2d6a05e
30 changed files with 102 additions and 6 deletions

View File

@@ -191,11 +191,13 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
.col-4.text-center.sub-menu-item(@click='changeSubPage("wheelchair")', :class='{active: activeSubPage === "wheelchair"}') .col-4.text-center.sub-menu-item(@click='changeSubPage("wheelchair")', :class='{active: activeSubPage === "wheelchair"}')
strong(v-once) {{$t('wheelchair')}} strong(v-once) {{$t('wheelchair')}}
.col-3.text-center.sub-menu-item(@click='changeSubPage("flower")', :class='{active: activeSubPage === "flower"}') .col-3.text-center.sub-menu-item(@click='changeSubPage("flower")', :class='{active: activeSubPage === "flower"}')
strong(v-once) {{$t('flower')}} strong(v-once) {{$t('accent')}}
.row.sub-menu(v-if='editing') .row.sub-menu(v-if='editing')
.col-4.offset-4.text-center.sub-menu-item(@click='changeSubPage("ears")' :class='{active: activeSubPage === "ears"}') .col-4.offset-2.text-center.sub-menu-item(@click='changeSubPage("ears")' :class='{active: activeSubPage === "ears"}')
strong(v-once) {{$t('animalEars')}} strong(v-once) {{$t('animalEars')}}
.row(v-if='activeSubPage === "glasses"') .col-4.text-center.sub-menu-item(@click='changeSubPage("headband")' :class='{active: activeSubPage === "headband"}')
strong(v-once) {{$t('headband')}}
#glasses.row(v-if='activeSubPage === "glasses"')
.col-12.customize-options .col-12.customize-options
.option(v-for='option in eyewear', :class='{active: option.active}') .option(v-for='option in eyewear', :class='{active: option.active}')
.sprite.customize-option(:class="`eyewear_special_${option.key}`", @click='option.click') .sprite.customize-option(:class="`eyewear_special_${option.key}`", @click='option.click')
@@ -212,6 +214,10 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
.svg-icon.gem(v-html='icons.gem') .svg-icon.gem(v-html='icons.gem')
span 5 span 5
button.btn.btn-secondary.purchase-all(@click='unlock(animalEarsUnlockString)') {{ $t('purchaseAll') }} button.btn.btn-secondary.purchase-all(@click='unlock(animalEarsUnlockString)') {{ $t('purchaseAll') }}
#headband.row(v-if='activeSubPage === "headband"')
.col-12.customize-options
.option(v-for='option in headbands', :class='{active: option.active}')
.sprite.customize-option(:class="`headAccessory_special_${option.key}`", @click='option.click')
#wheelchairs.row(v-if='activeSubPage === "wheelchair"') #wheelchairs.row(v-if='activeSubPage === "wheelchair"')
.col-12.customize-options .col-12.customize-options
.option(@click='set({"preferences.chair": "none"})', :class='{active: user.preferences.chair === "none"}') .option(@click='set({"preferences.chair": "none"})', :class='{active: user.preferences.chair === "none"}')
@@ -222,7 +228,7 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
#flowers.row(v-if='activeSubPage === "flower"') #flowers.row(v-if='activeSubPage === "flower"')
.col-12.customize-options .col-12.customize-options
.head_0.option(@click='set({"preferences.hair.flower":0})', :class='{active: user.preferences.hair.flower === 0}') .head_0.option(@click='set({"preferences.hair.flower":0})', :class='{active: user.preferences.hair.flower === 0}')
.option(v-for='option in [1, 2, 3, 4, 5, 6]', .option(v-for='option in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]',
:class='{active: user.preferences.hair.flower === option}') :class='{active: user.preferences.hair.flower === option}')
.sprite.customize-option(:class="`hair_flower_${option}`", @click='set({"preferences.hair.flower": option})') .sprite.customize-option(:class="`hair_flower_${option}`", @click='set({"preferences.hair.flower": option})')
.row(v-if='activeSubPage === "flower"') .row(v-if='activeSubPage === "flower"')
@@ -1038,6 +1044,21 @@ export default {
}, },
computed: { computed: {
...mapState({user: 'user.data'}), ...mapState({user: 'user.data'}),
headbands () {
let keys = ['blackHeadband', 'blueHeadband', 'greenHeadband', 'pinkHeadband', 'redHeadband', 'whiteHeadband', 'yellowHeadband'];
let options = keys.map(key => {
let newKey = `headAccessory_special_${key}`;
let option = {};
option.key = key;
option.active = this.user.preferences.costume ? this.user.items.gear.costume.headAccessory === newKey : this.user.items.gear.equipped.headAccessory === newKey;
option.click = () => {
let type = this.user.preferences.costume ? 'costume' : 'equipped';
return this.equip(newKey, type);
};
return option;
});
return options;
},
eyewear () { eyewear () {
let keys = ['blackTopFrame', 'blueTopFrame', 'greenTopFrame', 'pinkTopFrame', 'redTopFrame', 'whiteTopFrame', 'yellowTopFrame']; let keys = ['blackTopFrame', 'blueTopFrame', 'greenTopFrame', 'pinkTopFrame', 'redTopFrame', 'whiteTopFrame', 'yellowTopFrame'];
let options = keys.map(key => { let options = keys.map(key => {

View File

@@ -45,6 +45,8 @@
"beard": "Beard", "beard": "Beard",
"mustache": "Mustache", "mustache": "Mustache",
"flower": "Flower", "flower": "Flower",
"accent": "Accent",
"headband": "Headband",
"wheelchair": "Wheelchair", "wheelchair": "Wheelchair",
"extra": "Extra", "extra": "Extra",
"basicSkins": "Basic Skins", "basicSkins": "Basic Skins",

View File

@@ -1591,6 +1591,20 @@
"headAccessoryTigerEarsNotes": "These ears make you look like a fierce tiger! Confers no benefit.", "headAccessoryTigerEarsNotes": "These ears make you look like a fierce tiger! Confers no benefit.",
"headAccessoryWolfEarsText": "Wolf Ears", "headAccessoryWolfEarsText": "Wolf Ears",
"headAccessoryWolfEarsNotes": "These ears make you look like a loyal wolf! Confers no benefit.", "headAccessoryWolfEarsNotes": "These ears make you look like a loyal wolf! Confers no benefit.",
"headAccessoryBlackHeadbandText": "Black Headband",
"headAccessoryBlackHeadbandNotes": "A simple black headband. Confers no benefit.",
"headAccessoryBlueHeadbandText": "Blue Headband",
"headAccessoryBlueHeadbandNotes": "A simple blue headband. Confers no benefit.",
"headAccessoryGreenHeadbandText": "Green Headband",
"headAccessoryGreenHeadbandNotes": "A simple green headband. Confers no benefit.",
"headAccessoryPinkHeadbandText": "Pink Headband",
"headAccessoryPinkHeadbandNotes": "A simple pink headband. Confers no benefit.",
"headAccessoryRedHeadbandText": "Red Headband",
"headAccessoryRedHeadbandNotes": "A simple red headband. Confers no benefit.",
"headAccessoryWhiteHeadbandText": "White Headband",
"headAccessoryWhiteHeadbandNotes": "A simple white headband. Confers no benefit.",
"headAccessoryYellowHeadbandText": "Yellow Headband",
"headAccessoryYellowHeadbandNotes": "A simple yellow headband. Confers no benefit.",
"headAccessoryMystery201403Text": "Forest Walker Antlers", "headAccessoryMystery201403Text": "Forest Walker Antlers",
"headAccessoryMystery201403Notes": "These antlers shimmer with moss and lichen. Confers no benefit. March 2014 Subscriber Item.", "headAccessoryMystery201403Notes": "These antlers shimmer with moss and lichen. Confers no benefit. March 2014 Subscriber Item.",

View File

@@ -8,4 +8,14 @@ module.exports = prefill({
4: {}, 4: {},
5: {}, 5: {},
6: {}, 6: {},
7: {},
8: {},
9: {},
10: {},
11: {},
12: {},
13: {},
14: {},
15: {},
16: {},
}); });

View File

@@ -8,7 +8,7 @@ import takeThisGear from './special-takeThis';
import wonderconGear from './special-wondercon'; import wonderconGear from './special-wondercon';
import t from '../../../translation'; import t from '../../../translation';
const CURRENT_SEASON = 'spring'; const CURRENT_SEASON = '_NONE_';
let armor = { let armor = {
0: backerGear.armorSpecial0, 0: backerGear.armorSpecial0,
@@ -2361,6 +2361,55 @@ let headAccessory = {
return CURRENT_SEASON === 'spring'; return CURRENT_SEASON === 'spring';
}, },
}, },
blackHeadband: {
gearSet: 'headband',
text: t('headAccessoryBlackHeadbandText'),
notes: t('headAccessoryBlackHeadbandNotes'),
value: 0,
canOwn: ownsItem('headAccessory_special_blackHeadband'),
},
blueHeadband: {
gearSet: 'headband',
text: t('headAccessoryBlueHeadbandText'),
notes: t('headAccessoryBlueHeadbandNotes'),
value: 0,
canOwn: ownsItem('headAccessory_special_blueHeadband'),
},
greenHeadband: {
gearSet: 'headband',
text: t('headAccessoryGreenHeadbandText'),
notes: t('headAccessoryGreenHeadbandNotes'),
value: 0,
canOwn: ownsItem('headAccessory_special_greenHeadband'),
},
pinkHeadband: {
gearSet: 'headband',
text: t('headAccessoryPinkHeadbandText'),
notes: t('headAccessoryPinkHeadbandNotes'),
value: 0,
canOwn: ownsItem('headAccessory_special_pinkHeadband'),
},
redHeadband: {
gearSet: 'headband',
text: t('headAccessoryRedHeadbandText'),
notes: t('headAccessoryRedHeadbandNotes'),
value: 0,
canOwn: ownsItem('headAccessory_special_redHeadband'),
},
whiteHeadband: {
gearSet: 'headband',
text: t('headAccessoryWhiteHeadbandText'),
notes: t('headAccessoryWhiteHeadbandNotes'),
value: 0,
canOwn: ownsItem('headAccessory_special_whiteHeadband'),
},
yellowHeadband: {
gearSet: 'headband',
text: t('headAccessoryYellowHeadbandText'),
notes: t('headAccessoryYellowHeadbandNotes'),
value: 0,
canOwn: ownsItem('headAccessory_special_yellowHeadband'),
},
}; };
let shield = { let shield = {

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

View File

@@ -252,7 +252,7 @@ let schema = new Schema({
gear: { gear: {
owned: _.transform(shared.content.gear.flat, (m, v) => { owned: _.transform(shared.content.gear.flat, (m, v) => {
m[v.key] = {type: Boolean}; m[v.key] = {type: Boolean};
if (v.key.match(/(armor|head|shield)_warrior_0/) || v.gearSet === 'glasses') { if (v.key.match(/(armor|head|shield)_warrior_0/) || v.gearSet === 'glasses' || v.gearSet === 'headband' ) {
m[v.key].default = true; m[v.key].default = true;
} }
}), }),