mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
Refactor
This commit is contained in:
@@ -67,6 +67,7 @@ api.itemList =
|
|||||||
'hatchingPotions' : {localeKey: 'hatchingPotion', isEquipment: false}
|
'hatchingPotions' : {localeKey: 'hatchingPotion', isEquipment: false}
|
||||||
'eggs' : {localeKey: 'eggSingular', isEquipment: false}
|
'eggs' : {localeKey: 'eggSingular', isEquipment: false}
|
||||||
'quests' : {localeKey: 'quest', isEquipment: false}
|
'quests' : {localeKey: 'quest', isEquipment: false}
|
||||||
|
'food' : {localeKey: 'foodText', isEquipment: false}
|
||||||
'Saddle' : {localeKey: 'foodSaddleText', isEquipment: false}
|
'Saddle' : {localeKey: 'foodSaddleText', isEquipment: false}
|
||||||
|
|
||||||
gear =
|
gear =
|
||||||
@@ -938,6 +939,7 @@ api.dropEggs =
|
|||||||
Dragon: text: t('dropEggDragonText'), adjective: t('dropEggDragonAdjective')
|
Dragon: text: t('dropEggDragonText'), adjective: t('dropEggDragonAdjective')
|
||||||
Cactus: text: t('dropEggCactusText'), adjective: t('dropEggCactusAdjective')
|
Cactus: text: t('dropEggCactusText'), adjective: t('dropEggCactusAdjective')
|
||||||
BearCub: text: t('dropEggBearCubText'), mountText: t('dropEggBearCubMountText'), adjective: t('dropEggBearCubAdjective')
|
BearCub: text: t('dropEggBearCubText'), mountText: t('dropEggBearCubMountText'), adjective: t('dropEggBearCubAdjective')
|
||||||
|
|
||||||
_.each api.dropEggs, (egg,key) ->
|
_.each api.dropEggs, (egg,key) ->
|
||||||
_.defaults egg,
|
_.defaults egg,
|
||||||
canBuy:true
|
canBuy:true
|
||||||
|
|||||||
@@ -186,6 +186,7 @@ habitrpg.controller("InventoryCtrl",
|
|||||||
});
|
});
|
||||||
$scope.closeQuest();
|
$scope.closeQuest();
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.buyQuest = function(quest) {
|
$scope.buyQuest = function(quest) {
|
||||||
var item = Content.quests[quest];
|
var item = Content.quests[quest];
|
||||||
if (item.lvl && item.lvl > user.stats.lvl)
|
if (item.lvl && item.lvl > user.stats.lvl)
|
||||||
|
|||||||
@@ -210,38 +210,49 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$
|
|||||||
return filteredArray;
|
return filteredArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @TODO: Extract equip and purchase into equipment service
|
||||||
|
$rootScope.equip = function(itemKey) {
|
||||||
|
var equipType = user.preferences.costume ? 'costume' : 'equipped';
|
||||||
|
var equipParams = {
|
||||||
|
type: equipType,
|
||||||
|
key: itemKey
|
||||||
|
};
|
||||||
|
|
||||||
|
user.ops.equip({ params: equipParams });
|
||||||
|
}
|
||||||
|
|
||||||
$rootScope.purchase = function(type, item){
|
$rootScope.purchase = function(type, item){
|
||||||
if (type == 'special') return user.ops.buySpecialSpell({params:{key:item.key}});
|
if (type == 'special') return user.ops.buySpecialSpell({params:{key:item.key}});
|
||||||
|
|
||||||
var gems = user.balance * 4;
|
var gems = user.balance * 4;
|
||||||
var itemName = _getLocalekeyForItem(type);
|
var price = item.value;
|
||||||
|
|
||||||
var price = ((((item.specialClass == "wizard") && (item.type == "weapon")) || item.gearSet == "animal") + 1);
|
var itemName = window.env.t(Content.itemList[type].localeKey)
|
||||||
|
|
||||||
if (itemList[type].isEquipment) {
|
if (Content.itemList[type].isEquipment) {
|
||||||
if (user.items.gear.owned[item.key]) {
|
var eligibleForPurchase = _canBuyEquipment(item.key);
|
||||||
var equipType = user.preferences.costume ? 'costume' : 'equipped';
|
if (!eligibleForPurchase) return false;
|
||||||
return user.ops.equip({params:{type: equipType, key: item.key}});
|
|
||||||
}
|
// @TODO: Attach gemValue to content so we don't have to do this
|
||||||
if (gems < price) return $rootScope.openModal('buyGems');
|
price = ((((item.specialClass == "wizard") && (item.type == "weapon")) || item.gearSet == "animal") + 1);
|
||||||
var message = window.env.t('buyThis', {text: itemName, price: price, gems: gems})
|
type = 'gear';
|
||||||
if($window.confirm(message))
|
|
||||||
user.ops.purchase({params:{type:"gear",key:item.key}});
|
|
||||||
} else {
|
|
||||||
if(gems < item.value) return $rootScope.openModal('buyGems');
|
|
||||||
var message = window.env.t('buyThis', {text: itemName, price: item.value, gems: gems})
|
|
||||||
if($window.confirm(message))
|
|
||||||
user.ops.purchase({params:{type:type,key:item.key}});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gems < price) return $rootScope.openModal('buyGems');
|
||||||
|
|
||||||
|
var message = window.env.t('buyThis', {text: itemName, price: price, gems: gems});
|
||||||
|
if ($window.confirm(message))
|
||||||
|
user.ops.purchase({params:{type:type,key:item.key}});
|
||||||
}
|
}
|
||||||
|
|
||||||
function _getLocalekeyForItem(type) {
|
function _canBuyEquipment(itemKey) {
|
||||||
var itemName = type;
|
if (user.items.gear.owned[itemKey]) {
|
||||||
if (Content.itemList[type]) {
|
$window.alert(window.env.t('messageAlreadyOwnGear'));
|
||||||
itemName = window.env.t(Content.itemList[type].localeKey)
|
} else if (user.items.gear.owned[itemKey] === false) {
|
||||||
|
$window.alert(window.env.t('messageAlreadyPurchasedGear'));
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -62,7 +62,11 @@ mixin customizeProfile(mobile)
|
|||||||
span(ng-hide='#{showPath("user.items.gear.owned", gearGroup("animal"), "&&")}')
|
span(ng-hide='#{showPath("user.items.gear.owned", gearGroup("animal"), "&&")}')
|
||||||
+gemCost(2)
|
+gemCost(2)
|
||||||
button.btn.btn-xs(ng-click='#{unlockPath("items.gear.owned", gearGroup("animal"))}')!= env.t('unlockSet', {cost: 5}) + ' <span class="Pet_Currency_Gem1x inline-gems"/>'
|
button.btn.btn-xs(ng-click='#{unlockPath("items.gear.owned", gearGroup("animal"))}')!= env.t('unlockSet', {cost: 5}) + ' <span class="Pet_Currency_Gem1x inline-gems"/>'
|
||||||
button.customize-option(ng-repeat='item in ::getGearArray("animal")' ng-class="{locked: user.items.gear.owned[item.key] == undefined, selectableInventory: user.preferences.costume ? user.items.gear.costume.headAccessory == item.key : user.items.gear.equipped.headAccessory == item.key}", popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter', popover-placement='right', popover-append-to-body='true', ng-click='purchase(item.type,item)', class='{{::item.key}}')
|
button.customize-option(ng-repeat='item in ::getGearArray("animal")', class='{{::item.key}}',
|
||||||
|
ng-class="{locked: user.items.gear.owned[item.key] == undefined, selectableInventory: user.preferences.costume ? user.items.gear.costume.headAccessory == item.key : user.items.gear.equipped.headAccessory == item.key}",
|
||||||
|
popover='{{::item.notes()}}', popover-title='{{::item.text()}}', popover-trigger='mouseenter',
|
||||||
|
popover-placement='right', popover-append-to-body='true',
|
||||||
|
ng-click='user.items.gear.owned[item.key] ? equip(item.key) : purchase(item.type,item)')
|
||||||
|
|
||||||
.col-md-4
|
.col-md-4
|
||||||
h3(class=mobile?'item item-divider':'')=env.t('bodyHead')
|
h3(class=mobile?'item item-divider':'')=env.t('bodyHead')
|
||||||
@@ -73,7 +77,7 @@ mixin customizeProfile(mobile)
|
|||||||
li.customize-menu
|
li.customize-menu
|
||||||
menu(label=env.t('color'))
|
menu(label=env.t('color'))
|
||||||
each color in ['white','brown','blond','red','black']
|
each color in ['white','brown','blond','red','black']
|
||||||
button(type='button', class='#{path=="skin" ? "skin_"+color : "customize-option hair hair_bangs_1_"+color}', ng-click='set({"preferences.hair.color": "#{color}"})', ng-class='{selectableInventory: user.preferences.hair.color == "#{color}"}')
|
button(type='button', class='#{path=="skin" ? "skin_"+color : "customize-option hair hair_bangs_1_"+color}', ng-click='set({"preferences.hair.color": "#{color}"})', ng-class='{selectableInventory: user.preferences.hair.color == "#{color}"}')
|
||||||
each color in ['candycane','frost','winternight','holly']
|
each color in ['candycane','frost','winternight','holly']
|
||||||
button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', ng-click='unlock("hair.color.#{color}")', ng-class='{selectableInventory: user.preferences.hair.color == "#{color}"}')
|
button(type='button', ng-if='user.purchased.hair.color.#{color}', class='customize-option hair hair_bangs_1_#{color}', ng-click='unlock("hair.color.#{color}")', ng-class='{selectableInventory: user.preferences.hair.color == "#{color}"}')
|
||||||
each color in ['pblue','pgreen','porange','ppink','ppurple','pyellow']
|
each color in ['pblue','pgreen','porange','ppink','ppurple','pyellow']
|
||||||
|
|||||||
Reference in New Issue
Block a user