From d286dda07fb37af1161926f8997243f18b397d5b Mon Sep 17 00:00:00 2001 From: Kevin Chang Date: Mon, 12 Oct 2015 19:38:33 -0700 Subject: [PATCH 1/4] Refinements, limpet ammo display added to reloads --- app/js/controllers/controller-outfit.js | 60 +++++++++++++++++-------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/app/js/controllers/controller-outfit.js b/app/js/controllers/controller-outfit.js index 21868b47..74d42d16 100755 --- a/app/js/controllers/controller-outfit.js +++ b/app/js/controllers/controller-outfit.js @@ -40,8 +40,8 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' $scope.retroPredicate = 'netCost'; $scope.costDesc = true; $scope.costPredicate = 'c.cost'; - $scope.ammoDesc = false; - $scope.ammoPredicate = 'ammoName'; + $scope.ammoDesc = true; + $scope.ammoPredicate = 'ammoUnitCost'; $scope.costTab = Persist.getCostTab() || 'costs'; if ($scope.savedCode) { @@ -555,29 +555,40 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' function updateAmmoCosts() { var costs = $scope.ammoList = []; - var total = 0, i, l, item; + var controllers = []; + var total = 0, i, l, item, q; for (var g in { common: 1, internal: 1, hardpoints: 1 }) { var slotGroup = ship[g]; for (i = 0, l = slotGroup.length; i < l; i++) { - var q = 0; if (slotGroup[i].id) { - //special cases needed for fuel, SCB and AFMU since they don't use standard ammo/clip - if (slotGroup[i].c.grp == 'ft') { - q = slotGroup[i].c.capacity; - slotGroup[i].c.ammocost = 50; - } - if (slotGroup[i].c.grp == 'scb') { - q = slotGroup[i].c.cells; - } - if (slotGroup[i].c.grp == 'am') { - q = slotGroup[i].c.ammo; + //special cases needed for fuel, SCB, AFMU, and limpet controllers since they don't use standard ammo/clip + var isLimpet = false; + q = 0; + switch (slotGroup[i].c.grp) { + case 'ft': + q = slotGroup[i].c.capacity; + slotGroup[i].c.ammocost = 50; + break; + case 'scb': + q = slotGroup[i].c.cells; + break; + case 'am': + q = slotGroup[i].c.ammo; + break; + case 'fx': case 'hb': case 'cc': case 'pc': + isLimpet = true; + if (!ship.cargoCapacity) { //skip ammo costs if no cargo space for limpets + continue; + } + q = ship.cargoCapacity; + slotGroup[i].c.ammocost = 101; + break; + default: + q = slotGroup[i].c.clip + slotGroup[i].c.ammo; } //calculate ammo costs only if a cost is specified if (slotGroup[i].c.ammocost > 0) { - if (q == 0) { - q = slotGroup[i].c.clip + slotGroup[i].c.ammo; - } item = { ammoClassRating: slotGroup[i].c.class + slotGroup[i].c.rating, ammoName: slotGroup[i].c.name || slotGroup[i].c.grp, @@ -585,12 +596,23 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' ammoUnitCost: slotGroup[i].c.ammocost, ammoTotalCost: q * slotGroup[i].c.ammocost }; - costs.push(item); - total += item.ammoTotalCost; + if (isLimpet) { //add total limpet cost once and finalize costs entry later + controllers.push(item); + total += controllers.length == 1 ? item.ammoTotalCost : 0; + } else { + costs.push(item); + total += item.ammoTotalCost; + } } } } } + q = Math.ceil(ship.cargoCapacity / controllers.length); + for (i = 0; i < controllers.length; i++) { + controllers[i].ammoTotalCost = q * 101; + controllers[i].ammoMax = (i == 0) && (q != ship.cargoCapacity / controllers.length) ? q-- : q; // handle rounding error with first controller + costs.push(controllers[i]); + } $scope.ammoTotal = total; } From 20cce4dcdad858d768265c9487be7d5cde2330ec Mon Sep 17 00:00:00 2001 From: Kevin Chang Date: Mon, 12 Oct 2015 20:54:47 -0700 Subject: [PATCH 2/4] More logical limpet ammo display, fuel tied to slider --- app/js/controllers/controller-outfit.js | 56 ++++++++++++++----------- app/js/i18n/de.js | 1 + app/js/i18n/en.js | 1 + app/js/i18n/es.js | 1 + app/js/i18n/fr.js | 1 + app/js/i18n/ru.js | 1 + 6 files changed, 36 insertions(+), 25 deletions(-) diff --git a/app/js/controllers/controller-outfit.js b/app/js/controllers/controller-outfit.js index 74d42d16..edc1d071 100755 --- a/app/js/controllers/controller-outfit.js +++ b/app/js/controllers/controller-outfit.js @@ -461,6 +461,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' $scope.fuelChange = function(fuel) { $scope.fuel = fuel; + updateAmmoCosts(); win.triggerHandler('render'); }; @@ -555,20 +556,17 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' function updateAmmoCosts() { var costs = $scope.ammoList = []; - var controllers = []; - var total = 0, i, l, item, q; + var total = 0, i, l, item, q, limpets = 0, scoop = false; for (var g in { common: 1, internal: 1, hardpoints: 1 }) { var slotGroup = ship[g]; for (i = 0, l = slotGroup.length; i < l; i++) { if (slotGroup[i].id) { - //special cases needed for fuel, SCB, AFMU, and limpet controllers since they don't use standard ammo/clip - var isLimpet = false; + //special cases needed for SCB, AFMU, and limpet controllers since they don't use standard ammo/clip q = 0; switch (slotGroup[i].c.grp) { - case 'ft': - q = slotGroup[i].c.capacity; - slotGroup[i].c.ammocost = 50; + case 'fs': //skip fuel calculation if scoop present + scoop = true; break; case 'scb': q = slotGroup[i].c.cells; @@ -577,12 +575,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' q = slotGroup[i].c.ammo; break; case 'fx': case 'hb': case 'cc': case 'pc': - isLimpet = true; - if (!ship.cargoCapacity) { //skip ammo costs if no cargo space for limpets - continue; - } - q = ship.cargoCapacity; - slotGroup[i].c.ammocost = 101; + limpets = ship.cargoCapacity; break; default: q = slotGroup[i].c.clip + slotGroup[i].c.ammo; @@ -596,22 +589,35 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' ammoUnitCost: slotGroup[i].c.ammocost, ammoTotalCost: q * slotGroup[i].c.ammocost }; - if (isLimpet) { //add total limpet cost once and finalize costs entry later - controllers.push(item); - total += controllers.length == 1 ? item.ammoTotalCost : 0; - } else { - costs.push(item); - total += item.ammoTotalCost; - } + costs.push(item); + total += item.ammoTotalCost; } } } } - q = Math.ceil(ship.cargoCapacity / controllers.length); - for (i = 0; i < controllers.length; i++) { - controllers[i].ammoTotalCost = q * 101; - controllers[i].ammoMax = (i == 0) && (q != ship.cargoCapacity / controllers.length) ? q-- : q; // handle rounding error with first controller - costs.push(controllers[i]); + + //limpets if controllers exist and cargo space available + if (limpets > 0) { + item = { + ammoName: 'limpets', + ammoMax: ship.cargoCapacity, + ammoUnitCost: 101, + ammoTotalCost: ship.cargoCapacity * 101 + }; + costs.push(item); + total += item.ammoTotalCost; + } + //total fuel, or if slider isn't at max, use that value and only if scoop not present + if (!scoop) { + q = $scope.fuel != ship.fuelCapacity ? $scope.fuel : ship.fuelCapacity; + item = { + ammoName: 'fuel', + ammoMax: q, + ammoUnitCost: 50, + ammoTotalCost: q * 50 + }; + costs.push(item); + total += item.ammoTotalCost; } $scope.ammoTotal = total; } diff --git a/app/js/i18n/de.js b/app/js/i18n/de.js index c5db8091..4acc3b46 100644 --- a/app/js/i18n/de.js +++ b/app/js/i18n/de.js @@ -115,6 +115,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func laden: 'Beladen', language: 'Sprache', large: 'Groß', + limpets: 'Krallen', ls: 'Lebenserhaltung', 'Lightweight Alloy': 'Leichte Legierung', 'lock factor': 'Massensperrefaktor', diff --git a/app/js/i18n/en.js b/app/js/i18n/en.js index c2818eb7..ac01137d 100644 --- a/app/js/i18n/en.js +++ b/app/js/i18n/en.js @@ -105,6 +105,7 @@ angular.module('app').config(['$translateProvider', function($translateProvider) laden: 'laden', language: 'language', large: 'large', + 'limpets': 'Limpets', ls: 'life support', 'Lightweight Alloy': 'Lightweight Alloy', 'lock factor': 'lock factor', diff --git a/app/js/i18n/es.js b/app/js/i18n/es.js index ee174fbc..ccc5bbac 100644 --- a/app/js/i18n/es.js +++ b/app/js/i18n/es.js @@ -115,6 +115,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func 'large': 'Grande', 'ls': 'Soporte vital', 'Lightweight Alloy': 'Aleaci\u00f3n ligera', + 'limpets': 'Drones', 'lock factor': 'factor de bloqueo', 'mass': 'Masa', 'max': 'm\u00e1x', diff --git a/app/js/i18n/fr.js b/app/js/i18n/fr.js index 80d18db7..69449222 100644 --- a/app/js/i18n/fr.js +++ b/app/js/i18n/fr.js @@ -106,6 +106,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func large: 'large', ls: 'Systèmes de survie', 'Lightweight Alloy': 'alliage léger', + 'limpets': 'Patelles', 'lock factor': 'facteur inhibition de masse', LS: 'SL', LY: 'AL', diff --git a/app/js/i18n/ru.js b/app/js/i18n/ru.js index 07c5002d..e6b61363 100644 --- a/app/js/i18n/ru.js +++ b/app/js/i18n/ru.js @@ -124,6 +124,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func large: 'большой', ls: 'Система жизнеобеспечения', 'Lightweight Alloy': 'Легкий сплав', + 'limpets': 'Дроны', 'lock factor': 'Масс. блок', LS: 'Св.сек', LY: 'Св.лет', From 93ac3b217fb0925f1ca9c517bf5a4645839e80e4 Mon Sep 17 00:00:00 2001 From: Kevin Chang Date: Tue, 13 Oct 2015 15:56:17 -0700 Subject: [PATCH 3/4] Clean up unnecessary fuel costs logic --- app/js/controllers/controller-outfit.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/js/controllers/controller-outfit.js b/app/js/controllers/controller-outfit.js index edc1d071..ccbab053 100755 --- a/app/js/controllers/controller-outfit.js +++ b/app/js/controllers/controller-outfit.js @@ -609,12 +609,11 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' } //total fuel, or if slider isn't at max, use that value and only if scoop not present if (!scoop) { - q = $scope.fuel != ship.fuelCapacity ? $scope.fuel : ship.fuelCapacity; item = { ammoName: 'fuel', - ammoMax: q, + ammoMax: $scope.fuel, ammoUnitCost: 50, - ammoTotalCost: q * 50 + ammoTotalCost: $scope.fuel * 50 }; costs.push(item); total += item.ammoTotalCost; From d01cd24b0d8af96507c8600be56223284f479ea0 Mon Sep 17 00:00:00 2001 From: Kevin Chang Date: Tue, 13 Oct 2015 15:58:44 -0700 Subject: [PATCH 4/4] Updated comment to reflect changes to fuel logic --- app/js/controllers/controller-outfit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/js/controllers/controller-outfit.js b/app/js/controllers/controller-outfit.js index ccbab053..b9609ad4 100755 --- a/app/js/controllers/controller-outfit.js +++ b/app/js/controllers/controller-outfit.js @@ -607,7 +607,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', ' costs.push(item); total += item.ammoTotalCost; } - //total fuel, or if slider isn't at max, use that value and only if scoop not present + //calculate refuel costs if no scoop present if (!scoop) { item = { ammoName: 'fuel',