From 55a15f938cbfbcb026d8aedfbadfe7e7d1e0ea51 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Mon, 14 Nov 2016 22:26:14 +0000 Subject: [PATCH] feat(customize): new hairstyles --- .../sprites/dist/spritesmith-main-15.css | 336 ++++++++++++++++++ .../sprites/dist/spritesmith-main-15.png | Bin 0 -> 23202 bytes website/common/locales/en/character.json | 1 + .../script/content/appearance/hair/bangs.js | 1 + .../script/content/appearance/hair/index.js | 2 + .../content/appearance/hair/top-hair.js | 12 + .../common/script/content/appearance/sets.js | 1 + website/server/models/user/schema.js | 1 + website/views/options/profile.jade | 10 +- .../views/shared/avatar/generated_avatar.jade | 2 +- 10 files changed, 364 insertions(+), 2 deletions(-) create mode 100644 website/assets/sprites/dist/spritesmith-main-15.css create mode 100644 website/assets/sprites/dist/spritesmith-main-15.png create mode 100644 website/common/script/content/appearance/hair/top-hair.js diff --git a/website/assets/sprites/dist/spritesmith-main-15.css b/website/assets/sprites/dist/spritesmith-main-15.css new file mode 100644 index 0000000000..5bbf5619b0 --- /dev/null +++ b/website/assets/sprites/dist/spritesmith-main-15.css @@ -0,0 +1,336 @@ +.Pet-Turtle-Red { + background-image: url(/spritesmith-main-15.png); + background-position: -82px 0px; + width: 81px; + height: 99px; +} +.Pet-Turtle-Shade { + background-image: url(/spritesmith-main-15.png); + background-position: 0px -400px; + width: 81px; + height: 99px; +} +.Pet-Turtle-Skeleton { + background-image: url(/spritesmith-main-15.png); + background-position: -164px 0px; + width: 81px; + height: 99px; +} +.Pet-Turtle-White { + background-image: url(/spritesmith-main-15.png); + background-position: 0px -100px; + width: 81px; + height: 99px; +} +.Pet-Turtle-Zombie { + background-image: url(/spritesmith-main-15.png); + background-position: -82px -100px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Base { + background-image: url(/spritesmith-main-15.png); + background-position: -164px -100px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-CottonCandyBlue { + background-image: url(/spritesmith-main-15.png); + background-position: -246px 0px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-CottonCandyPink { + background-image: url(/spritesmith-main-15.png); + background-position: -246px -100px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Desert { + background-image: url(/spritesmith-main-15.png); + background-position: 0px -200px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Golden { + background-image: url(/spritesmith-main-15.png); + background-position: -82px -200px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Red { + background-image: url(/spritesmith-main-15.png); + background-position: -164px -200px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Shade { + background-image: url(/spritesmith-main-15.png); + background-position: -246px -200px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Skeleton { + background-image: url(/spritesmith-main-15.png); + background-position: -328px 0px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-White { + background-image: url(/spritesmith-main-15.png); + background-position: -328px -100px; + width: 81px; + height: 99px; +} +.Pet-Unicorn-Zombie { + background-image: url(/spritesmith-main-15.png); + background-position: -328px -200px; + width: 81px; + height: 99px; +} +.Pet-Whale-Base { + background-image: url(/spritesmith-main-15.png); + background-position: 0px -300px; + width: 81px; + height: 99px; +} +.Pet-Whale-CottonCandyBlue { + background-image: url(/spritesmith-main-15.png); + background-position: -82px -300px; + width: 81px; + height: 99px; +} +.Pet-Whale-CottonCandyPink { + background-image: url(/spritesmith-main-15.png); + background-position: -164px -300px; + width: 81px; + height: 99px; +} +.Pet-Whale-Desert { + background-image: url(/spritesmith-main-15.png); + background-position: -246px -300px; + width: 81px; + height: 99px; +} +.Pet-Whale-Golden { + background-image: url(/spritesmith-main-15.png); + background-position: -328px -300px; + width: 81px; + height: 99px; +} +.Pet-Whale-Red { + background-image: url(/spritesmith-main-15.png); + background-position: -410px 0px; + width: 81px; + height: 99px; +} +.Pet-Whale-Shade { + background-image: url(/spritesmith-main-15.png); + background-position: -410px -100px; + width: 81px; + height: 99px; +} +.Pet-Whale-Skeleton { + background-image: url(/spritesmith-main-15.png); + background-position: -410px -200px; + width: 81px; + height: 99px; +} +.Pet-Whale-White { + background-image: url(/spritesmith-main-15.png); + background-position: -410px -300px; + width: 81px; + height: 99px; +} +.Pet-Whale-Zombie { + background-image: url(/spritesmith-main-15.png); + background-position: -492px 0px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Base { + background-image: url(/spritesmith-main-15.png); + background-position: -492px -100px; + width: 81px; + height: 99px; +} +.Pet-Wolf-CottonCandyBlue { + background-image: url(/spritesmith-main-15.png); + background-position: -492px -200px; + width: 81px; + height: 99px; +} +.Pet-Wolf-CottonCandyPink { + background-image: url(/spritesmith-main-15.png); + background-position: -492px -300px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Desert { + background-image: url(/spritesmith-main-15.png); + background-position: 0px 0px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Floral { + background-image: url(/spritesmith-main-15.png); + background-position: -82px -400px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Ghost { + background-image: url(/spritesmith-main-15.png); + background-position: -164px -400px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Golden { + background-image: url(/spritesmith-main-15.png); + background-position: -246px -400px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Peppermint { + background-image: url(/spritesmith-main-15.png); + background-position: -328px -400px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Red { + background-image: url(/spritesmith-main-15.png); + background-position: -410px -400px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Shade { + background-image: url(/spritesmith-main-15.png); + background-position: -492px -400px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Skeleton { + background-image: url(/spritesmith-main-15.png); + background-position: -574px 0px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Spooky { + background-image: url(/spritesmith-main-15.png); + background-position: -574px -100px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Thunderstorm { + background-image: url(/spritesmith-main-15.png); + background-position: -574px -200px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Veteran { + background-image: url(/spritesmith-main-15.png); + background-position: -574px -300px; + width: 81px; + height: 99px; +} +.Pet-Wolf-White { + background-image: url(/spritesmith-main-15.png); + background-position: -574px -400px; + width: 81px; + height: 99px; +} +.Pet-Wolf-Zombie { + background-image: url(/spritesmith-main-15.png); + background-position: 0px -500px; + width: 81px; + height: 99px; +} +.Pet_HatchingPotion_Base { + background-image: url(/spritesmith-main-15.png); + background-position: -131px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_CottonCandyBlue { + background-image: url(/spritesmith-main-15.png); + background-position: -425px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_CottonCandyPink { + background-image: url(/spritesmith-main-15.png); + background-position: -180px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Desert { + background-image: url(/spritesmith-main-15.png); + background-position: -229px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Floral { + background-image: url(/spritesmith-main-15.png); + background-position: -278px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Ghost { + background-image: url(/spritesmith-main-15.png); + background-position: -327px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Golden { + background-image: url(/spritesmith-main-15.png); + background-position: -376px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Peppermint { + background-image: url(/spritesmith-main-15.png); + background-position: -82px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Red { + background-image: url(/spritesmith-main-15.png); + background-position: -474px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Shade { + background-image: url(/spritesmith-main-15.png); + background-position: -523px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Skeleton { + background-image: url(/spritesmith-main-15.png); + background-position: -572px -500px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Spooky { + background-image: url(/spritesmith-main-15.png); + background-position: 0px -600px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Thunderstorm { + background-image: url(/spritesmith-main-15.png); + background-position: -49px -600px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_White { + background-image: url(/spritesmith-main-15.png); + background-position: -98px -600px; + width: 48px; + height: 51px; +} +.Pet_HatchingPotion_Zombie { + background-image: url(/spritesmith-main-15.png); + background-position: -147px -600px; + width: 48px; + height: 51px; +} diff --git a/website/assets/sprites/dist/spritesmith-main-15.png b/website/assets/sprites/dist/spritesmith-main-15.png new file mode 100644 index 0000000000000000000000000000000000000000..31ee58ce1c9e36b49e4a7b040105a6377eda1fa6 GIT binary patch literal 23202 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 F{{!#G@?Zb} literal 0 HcmV?d00001 diff --git a/website/common/locales/en/character.json b/website/common/locales/en/character.json index 2b6d54afb5..ea0b2f0a7d 100644 --- a/website/common/locales/en/character.json +++ b/website/common/locales/en/character.json @@ -30,6 +30,7 @@ "hairBase": "Base", "hairSet1": "Hairstyle Set 1", "hairSet2": "Hairstyle Set 2", + "hairSet3": "Hairstyle Set 3", "bodyFacialHair": "Facial Hair", "beard": "Beard", "mustache": "Mustache", diff --git a/website/common/script/content/appearance/hair/bangs.js b/website/common/script/content/appearance/hair/bangs.js index 40f01cdce4..a540190cda 100644 --- a/website/common/script/content/appearance/hair/bangs.js +++ b/website/common/script/content/appearance/hair/bangs.js @@ -5,4 +5,5 @@ module.exports = prefill({ 1: {}, 2: {}, 3: {}, + 4: {}, }); diff --git a/website/common/script/content/appearance/hair/index.js b/website/common/script/content/appearance/hair/index.js index 35201d8b1c..464ade2463 100644 --- a/website/common/script/content/appearance/hair/index.js +++ b/website/common/script/content/appearance/hair/index.js @@ -4,6 +4,7 @@ import beard from './beard.js'; import color from './color.js'; import flower from './flower.js'; import mustache from './mustache.js'; +import topHair from './top-hair.js'; module.exports = { color, @@ -12,4 +13,5 @@ module.exports = { flower, beard, mustache, + topHair, }; diff --git a/website/common/script/content/appearance/hair/top-hair.js b/website/common/script/content/appearance/hair/top-hair.js new file mode 100644 index 0000000000..50610fbe03 --- /dev/null +++ b/website/common/script/content/appearance/hair/top-hair.js @@ -0,0 +1,12 @@ +import prefill from '../prefill.js'; +import sets from '../sets.js'; + +module.exports = prefill({ + 0: {}, + 1: {price: 2, set: sets.topHair}, + 2: {price: 2, set: sets.topHair}, + 3: {price: 2, set: sets.topHair}, + 4: {price: 2, set: sets.topHair}, + 5: {price: 2, set: sets.topHair}, + 6: {price: 2, set: sets.topHair}, +}); diff --git a/website/common/script/content/appearance/sets.js b/website/common/script/content/appearance/sets.js index 6d9be3abd7..fec4b73dca 100644 --- a/website/common/script/content/appearance/sets.js +++ b/website/common/script/content/appearance/sets.js @@ -4,6 +4,7 @@ import prefill from './prefill.js'; module.exports = prefill({ baseHair1: {setPrice: 5, text: t('hairSet1')}, baseHair2: {setPrice: 5, text: t('hairSet2')}, + topHair: {setPrice: 5, text: t('hairSet3')}, facialHair: {setPrice: 5, text: t('bodyFacialHair')}, specialShirts: {setPrice: 5, text: t('specialShirts')}, winterHairColors: {setPrice: 5, availableUntil: '2016-01-01'}, diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 3816641331..8a571608a7 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -395,6 +395,7 @@ let schema = new Schema({ beard: {type: Number, default: 0}, mustache: {type: Number, default: 0}, flower: {type: Number, default: 1}, + topHair: {type: Number, default: 0}, }, hideHeader: {type: Boolean, default: false}, skin: {type: String, default: '915533'}, diff --git a/website/views/options/profile.jade b/website/views/options/profile.jade index b5ca6e177b..eac91aa92e 100644 --- a/website/views/options/profile.jade +++ b/website/views/options/profile.jade @@ -109,7 +109,7 @@ mixin customizeProfile(mobile) // Bangs menu(label=env.t('hairBangs')) button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.bangs":0})', ng-class='{selectableInventory: user.preferences.hair.bangs == 0}') - each num in [1,2,3] + each num in [1,2,3,4] button(class='hair_bangs_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-click='set({"preferences.hair.bangs":#{num}})', ng-class='{selectableInventory: user.preferences.hair.bangs == "#{num}"}') // Base hairstyles (free) @@ -133,6 +133,14 @@ mixin customizeProfile(mobile) button.btn.btn-xs(ng-click='#{unlockPath("hair.base", styles)}')!= env.t('unlockSet', {cost: 5}) + ' ' each num in styles button(class='hair_base_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.base["#{num}"], selectableInventory: user.preferences.hair.base == "#{num}"}', ng-click='unlock("hair.base.#{num}")') + menu(label=env.t('hairSet3')) + - var styles = [1,2,3,4,5,6] + span(ng-hide='#{showPath("user.purchased.hair.topHair", styles, "&&")}') + +gemCost(2) + button.btn.btn-xs(ng-click='#{unlockPath("hair.topHair", styles)}')!= env.t('unlockSet', {cost: 5}) + ' ' + button(class='head_0 customize-option', type='button', ng-click='set({"preferences.hair.topHair":0})', ng-class='{selectableInventory: user.preferences.hair.topHair == 0}') + each num in styles + button(class='hair_topHair_#{num}_{{user.preferences.hair.color}} customize-option', type='button', ng-class='{locked: !user.purchased.hair.topHair["#{num}"], selectableInventory: user.preferences.hair.topHair == "#{num}"}', ng-click='unlock("hair.topHair.#{num}")') li.customize-menu menu(label=env.t('bodyFacialHair')) diff --git a/website/views/shared/avatar/generated_avatar.jade b/website/views/shared/avatar/generated_avatar.jade index 0dbea1c12c..265215e735 100644 --- a/website/views/shared/avatar/generated_avatar.jade +++ b/website/views/shared/avatar/generated_avatar.jade @@ -19,7 +19,7 @@ mixin generatedAvatar(options) +costumeSetting('back', {suffix: " + '_collar'"}) +costumeSetting('body') span.head_0 - - var hairTypes = ['base', 'bangs', 'mustache', 'beard'] + - var hairTypes = ['base', 'bangs', 'topHair', 'mustache', 'beard'] each type in hairTypes span(class='hair_#{type}_{{profile.preferences.hair.#{type}}}_{{profile.preferences.hair.color}}') +costumeSetting('eyewear')