From dc348d56013e2888eed8c8b3fc4ea50f77439401 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sat, 14 Dec 2013 00:35:03 -0700 Subject: [PATCH] [#1969] add in @Fandekasp's shirts, had to do separate commit for handling of user.preferences.shirt --- migrations/20131204_classes.js | 19 +++++++++++++++++++ src/models/user.js | 6 ++++-- views/options/inventory/inventory.jade | 2 +- views/options/profile.jade | 22 ++++++++++++++++++---- views/shared/header/avatar.jade | 1 + 5 files changed, 43 insertions(+), 7 deletions(-) diff --git a/migrations/20131204_classes.js b/migrations/20131204_classes.js index 87c53f7b3a..50250e18da 100644 --- a/migrations/20131204_classes.js +++ b/migrations/20131204_classes.js @@ -20,11 +20,30 @@ db.users.find().forEach(function(user){ // gender => size user.preferences.size = (user.preferences.gender == 'f') ? 'slim' : 'broad'; + user.preferences.shirt = (user.preferences.gender == 'f') ? 'pink' : 'white'; delete user.preferences.gender; // Delete armorSet delete user.preferences.armorSet; + user.items.gear = { + owned: {}, // TODO + equipped: { + weapon: 'weapon_warrior_' + user.items.weapon, + shield: 'shield_warrior_' + user.items.shield, + head: 'head_warrior_' + user.items.head, + armor: 'armor_warrior_' + user.items.armor + }, + costume: {} + }; + _.each({head:'showHelm',weapon:'showWeapon',shield:'showShield',armor:'showArmor'}, function(show,k){ + if (user.preferences[show] === false) { + user.items.gear.costume[k] = user.items.gear.equipped[k]; + user.preferences.costume = true + } + delete user.preferences[v]; + }); + user.preferences.sleep = user.flags.rest; delete user.flags.rest; diff --git a/src/models/user.js b/src/models/user.js index d37a449226..5cb059507a 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -81,7 +81,8 @@ var UserSchema = new Schema({ purchased: { ads: {type: Boolean, 'default': false}, skin: {type: Schema.Types.Mixed, 'default': {}}, // eg, {skeleton: true, pumpkin: true, eb052b: true} - hair: {type: Schema.Types.Mixed, 'default': {}} + hair: {type: Schema.Types.Mixed, 'default': {}}, + shirt: {type: Schema.Types.Mixed, 'default': {}} }, flags: { @@ -210,10 +211,11 @@ var UserSchema = new Schema({ }, hideHeader: {type:Boolean, 'default':false}, skin: {type:String, 'default':'white'}, + shirt: {type: String, 'default': 'white'}, timezoneOffset: Number, language: String, automaticAllocation: Boolean, - useCostume: Boolean, + costume: Boolean, sleep: {type: Boolean, 'default': false} }, profile: { diff --git a/views/options/inventory/inventory.jade b/views/options/inventory/inventory.jade index 01ddc4e4e6..d0b6578505 100644 --- a/views/options/inventory/inventory.jade +++ b/views/options/inventory/inventory.jade @@ -11,7 +11,7 @@ script(type='text/ng-template', id='partials/options.inventory.inventory.html') div(ng-repeat='item in gear[klass]') button.customize-option(popover='{{item.notes}}', popover-title='{{item.text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='user.ops.equip({query:{key:item.key}})', class='shop_{{item.key}}', ng-class='{selectableInventory: user.items.gear.equipped[item.type] == item.key}') label.checkbox.inline - input(type="checkbox", ng-model="user.preferences.costume") + input(type="checkbox", ng-model="user.preferences.costume", ng-click='set({"preferences.costume":!user.preferences.costume})') | Use Costume  i.icon-question-sign(popover="Show something different on your avatar than the gear you have equipped for battle", popover-trigger='mouseenter', popover-placement='right') li.customize-menu(ng-if='user.preferences.costume') diff --git a/views/options/profile.jade b/views/options/profile.jade index ca92fdfb09..672803517b 100644 --- a/views/options/profile.jade +++ b/views/options/profile.jade @@ -1,13 +1,27 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template') .row-fluid .span4 + h3 Body + small. + 2 / locked + + h5 Size + .btn-group + button.btn.btn-small(ng-class='{active: user.preferences.size=="slim"}', ng-click='set({"preferences.size":"slim"})') Slim + button.btn.btn-small(ng-class='{active: user.preferences.size=="broad"}', ng-click='set({"preferences.size":"broad"})') Broad + menu(type='list') - // body-type li.customize-menu - menu(label='Head') + menu(label='Shirts') + each shirt in ['black', 'blue', 'green', 'pink', 'white', 'yellow'] + button.customize-option(class='{{user.preferences.size}}_shirt_'+shirt, type='button', ng-click='set({"preferences.shirt":"'+shirt+'"})') + + menu(label='Special Shirts') + each shirt in ['convict', 'cross', 'fire', 'horizon', 'ocean', 'purple', 'rainbow', 'redblue', 'thunder', 'tropical', 'zombie'] + button.customize-option(type='button', class='{{user.preferences.size}}_shirt_'+shirt, ng-class='{locked: !user.purchased.shirt.'+shirt+'}', ng-click='unlock("shirt.'+shirt+'")') menu - button.broad_armor_base_0.customize-option(type='button', ng-click='set({"preferences.size":"broad"})') - button.slim_armor_base_0.customize-option(type='button', ng-click='set({"preferences.size":"slim"})') + button.btn.btn-small.btn-primary(ng-hide="user.purchased.shirt.convict && user.purchased.shirt.cross && user.purchased.shirt.fire && user.purchased.shirt.horizon && user.purchased.shirt.ocean && user.purchased.shirt.purple && user.purchased.shirt.rainbow && user.purchased.shirt.redblue && user.purchased.shirt.thunder && user.purchased.shirt.tropical && user.purchased.shirt.zombie", ng-click='unlock("shirt.convict,shirt.cross,shirt.fire,shirt.horizon,shirt.ocean,shirt.purple,shirt.rainbow,shirt.redblue,shirt.thunder,shirt.tropical,shirt.zombie")') Unlock Set - 5 + .span4 h3 Hair diff --git a/views/shared/header/avatar.jade b/views/shared/header/avatar.jade index dce75fa564..b804b1138e 100644 --- a/views/shared/header/avatar.jade +++ b/views/shared/header/avatar.jade @@ -11,6 +11,7 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember( // Avatar span(class='skin_{{profile.preferences.skin}}') + span(class='{{profile.preferences.size}}_shirt_{{profile.preferences.shirt}}') span(class='{{profile.preferences.size}}_{{profile.items.gear.equipped.armor}}', ng-if='!profile.preferences.costume') span(class='{{profile.preferences.size}}_{{profile.items.gear.costume.armor}}', ng-if='profile.preferences.costume')