mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-09 06:43:24 +00:00
Improved low weight build logic
This commit is contained in:
@@ -196,16 +196,24 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
|
||||
};
|
||||
|
||||
/**
|
||||
* Strip ship to D-class and no other components.
|
||||
* Optimize for the lower mass build that can still boost and power the ship
|
||||
* without power management.
|
||||
*/
|
||||
$scope.stripBuild = function() {
|
||||
for (var i = 0, l = ship.common.length - 1; i < l; i++) { // All except Fuel Tank
|
||||
var id = ship.common[i].maxClass + 'D';
|
||||
ship.use(ship.common[i], id, Components.common(i, id));
|
||||
}
|
||||
$scope.optimizeMassBuild = function() {
|
||||
var common = ship.common;
|
||||
ship.hardpoints.forEach(function(slot) { ship.use(slot, null, null); });
|
||||
ship.internal.forEach(function(slot) { ship.use(slot, null, null); });
|
||||
ship.useBulkhead(0);
|
||||
ship.use(common[1], common[1].maxClass + 'D', Components.common(1, common[1].maxClass + 'D')); // Thrusters
|
||||
ship.use(common[2], common[2].maxClass + 'A', Components.common(2, common[2].maxClass + 'A')); // FSD
|
||||
ship.use(common[3], common[3].maxClass + 'D', Components.common(3, common[3].maxClass + 'D')); // Life Support
|
||||
ship.use(common[5], common[5].maxClass + 'D', Components.common(5, common[5].maxClass + 'D')); // Sensors
|
||||
|
||||
var pd = $scope.availCS.lightestPowerDist(ship.boostEnergy); // Find lightest Power Distributor that can still boost
|
||||
ship.use(ship.common[4], pd, Components.common(4, pd));
|
||||
var pp = $scope.availCS.lightestPowerPlant(ship.powerRetracted); // Find lightest Power plant that can power the ship
|
||||
ship.use(ship.common[0], pp, Components.common(0, pp));
|
||||
|
||||
updateState(Serializer.fromShip(ship));
|
||||
};
|
||||
|
||||
|
||||
@@ -91,9 +91,32 @@ angular.module('shipyard').factory('ComponentSet', ['lodash', function(_) {
|
||||
},
|
||||
getKey
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
ComponentSet.prototype.lightestPowerDist = function(boostEnergy) {
|
||||
var pds = this.common[4];
|
||||
var pd = pds[0];
|
||||
|
||||
for (var i = 1; i < pds.length; i++) {
|
||||
if (pds[i].mass < pd.mass && pds[i].enginecapacity >= boostEnergy) {
|
||||
pd = pds[i];
|
||||
}
|
||||
}
|
||||
return pd.class + pd.rating;
|
||||
};
|
||||
|
||||
ComponentSet.prototype.lightestPowerPlant = function(powerUsed) {
|
||||
var pps = this.common[0];
|
||||
var pp = null;
|
||||
|
||||
for (var i = 0; i < pps.length; i++) {
|
||||
if (pp == null || (pps[i].mass < pp.mass && pps[i].pGen >= powerUsed)) {
|
||||
pp = pps[i];
|
||||
}
|
||||
}
|
||||
return pp.class + (pp.rating != 'D' ? 'A' : 'D'); // Use A rated if C,E
|
||||
};
|
||||
|
||||
return ComponentSet;
|
||||
|
||||
}]);
|
||||
|
||||
@@ -71,16 +71,17 @@
|
||||
color: @primary;
|
||||
}
|
||||
|
||||
.largePhone({
|
||||
.smallTablet({
|
||||
width: 60%;
|
||||
});
|
||||
|
||||
.medPhone({
|
||||
.largePhone({
|
||||
width: 100%;
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
.largePhone({
|
||||
.smallTablet({
|
||||
float: left;
|
||||
clear: left;
|
||||
width: 100%;
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
<button ng-click="aRatedBuild()">
|
||||
<svg class="icon lg"><use xlink:href="#a"></use></svg><span class="button-lbl">A-Rated</span>
|
||||
</button>
|
||||
<button ng-click="stripBuild()">
|
||||
<svg class="icon lg"><use xlink:href="#feather"></use></svg><span class="button-lbl">Low-Weight</span>
|
||||
<button ng-click="optimizeMassBuild()">
|
||||
<svg class="icon lg"><use xlink:href="#feather"></use></svg><span class="button-lbl">Optimize Mass</span>
|
||||
</button>
|
||||
<button ng-click="exportBuild($event)" ng-disabled="!buildName">
|
||||
<svg class="icon lg"><use xlink:href="#download"></use></svg><span class="button-lbl">Export</span>
|
||||
|
||||
@@ -1,317 +1,37 @@
|
||||
{
|
||||
"8E": {
|
||||
"grp": "pp",
|
||||
"class": 8,
|
||||
"rating": "E",
|
||||
"cost": 2007241,
|
||||
"mass": 160,
|
||||
"pGen": 24,
|
||||
"eff": "F"
|
||||
},
|
||||
"8D": {
|
||||
"grp": "pp",
|
||||
"class": 8,
|
||||
"rating": "D",
|
||||
"cost": 6021722,
|
||||
"mass": 64,
|
||||
"pGen": 27,
|
||||
"eff": "D"
|
||||
},
|
||||
"8C": {
|
||||
"grp": "pp",
|
||||
"class": 8,
|
||||
"rating": "C",
|
||||
"cost": 18065165,
|
||||
"mass": 80,
|
||||
"pGen": 30,
|
||||
"eff": "C"
|
||||
},
|
||||
"8B": {
|
||||
"grp": "pp",
|
||||
"class": 8,
|
||||
"rating": "B",
|
||||
"cost": 54195495,
|
||||
"mass": 128,
|
||||
"pGen": 33,
|
||||
"eff": "C"
|
||||
},
|
||||
"8A": {
|
||||
"grp": "pp",
|
||||
"class": 8,
|
||||
"rating": "A",
|
||||
"cost": 162586486,
|
||||
"mass": 80,
|
||||
"pGen": 36,
|
||||
"eff": "B"
|
||||
},
|
||||
"7E": {
|
||||
"grp": "pp",
|
||||
"class": 7,
|
||||
"rating": "E",
|
||||
"cost": 633199,
|
||||
"mass": 80,
|
||||
"pGen": 20,
|
||||
"eff": "F"
|
||||
},
|
||||
"7D": {
|
||||
"grp": "pp",
|
||||
"class": 7,
|
||||
"rating": "D",
|
||||
"cost": 1899597,
|
||||
"mass": 32,
|
||||
"pGen": 22.5,
|
||||
"eff": "D"
|
||||
},
|
||||
"7C": {
|
||||
"grp": "pp",
|
||||
"class": 7,
|
||||
"rating": "C",
|
||||
"cost": 5698790,
|
||||
"mass": 40,
|
||||
"pGen": 25,
|
||||
"eff": "C"
|
||||
},
|
||||
"7B": {
|
||||
"grp": "pp",
|
||||
"class": 7,
|
||||
"rating": "B",
|
||||
"cost": 17096371,
|
||||
"mass": 64,
|
||||
"pGen": 27.5,
|
||||
"eff": "C"
|
||||
},
|
||||
"7A": {
|
||||
"grp": "pp",
|
||||
"class": 7,
|
||||
"rating": "A",
|
||||
"cost": 51289112,
|
||||
"mass": 40,
|
||||
"pGen": 30,
|
||||
"eff": "B"
|
||||
},
|
||||
"6E": {
|
||||
"grp": "pp",
|
||||
"class": 6,
|
||||
"rating": "E",
|
||||
"cost": 199747,
|
||||
"mass": 40,
|
||||
"pGen": 16.8,
|
||||
"eff": "F"
|
||||
},
|
||||
"6D": {
|
||||
"grp": "pp",
|
||||
"class": 6,
|
||||
"rating": "D",
|
||||
"cost": 599242,
|
||||
"mass": 16,
|
||||
"pGen": 18.9,
|
||||
"eff": "D"
|
||||
},
|
||||
"6C": {
|
||||
"grp": "pp",
|
||||
"class": 6,
|
||||
"rating": "C",
|
||||
"cost": 1797726,
|
||||
"mass": 20,
|
||||
"pGen": 21,
|
||||
"eff": "C"
|
||||
},
|
||||
"6B": {
|
||||
"grp": "pp",
|
||||
"class": 6,
|
||||
"rating": "B",
|
||||
"cost": 5393177,
|
||||
"mass": 32,
|
||||
"pGen": 23.1,
|
||||
"eff": "C"
|
||||
},
|
||||
"6A": {
|
||||
"grp": "pp",
|
||||
"class": 6,
|
||||
"rating": "A",
|
||||
"cost": 16179531,
|
||||
"mass": 20,
|
||||
"pGen": 25.2,
|
||||
"eff": "B"
|
||||
},
|
||||
"5E": {
|
||||
"grp": "pp",
|
||||
"class": 5,
|
||||
"rating": "E",
|
||||
"cost": 63012,
|
||||
"mass": 20,
|
||||
"pGen": 13.6,
|
||||
"eff": "F"
|
||||
},
|
||||
"5D": {
|
||||
"grp": "pp",
|
||||
"class": 5,
|
||||
"rating": "D",
|
||||
"cost": 189035,
|
||||
"mass": 8,
|
||||
"pGen": 15.3,
|
||||
"eff": "D"
|
||||
},
|
||||
"5C": {
|
||||
"grp": "pp",
|
||||
"class": 5,
|
||||
"rating": "C",
|
||||
"cost": 567106,
|
||||
"mass": 10,
|
||||
"pGen": 17,
|
||||
"eff": "C"
|
||||
},
|
||||
"5B": {
|
||||
"grp": "pp",
|
||||
"class": 5,
|
||||
"rating": "B",
|
||||
"cost": 1701318,
|
||||
"mass": 16,
|
||||
"pGen": 18.7,
|
||||
"eff": "C"
|
||||
},
|
||||
"5A": {
|
||||
"grp": "pp",
|
||||
"class": 5,
|
||||
"rating": "A",
|
||||
"cost": 5103953,
|
||||
"mass": 10,
|
||||
"pGen": 20.4,
|
||||
"eff": "B"
|
||||
},
|
||||
"4E": {
|
||||
"grp": "pp",
|
||||
"class": 4,
|
||||
"rating": "E",
|
||||
"cost": 19878,
|
||||
"mass": 10,
|
||||
"pGen": 10.4,
|
||||
"eff": "F"
|
||||
},
|
||||
"4D": {
|
||||
"grp": "pp",
|
||||
"class": 4,
|
||||
"rating": "D",
|
||||
"cost": 59633,
|
||||
"mass": 4,
|
||||
"pGen": 11.7,
|
||||
"eff": "D"
|
||||
},
|
||||
"4C": {
|
||||
"grp": "pp",
|
||||
"class": 4,
|
||||
"rating": "C",
|
||||
"cost": 178898,
|
||||
"mass": 5,
|
||||
"pGen": 13,
|
||||
"eff": "C"
|
||||
},
|
||||
"4B": {
|
||||
"grp": "pp",
|
||||
"class": 4,
|
||||
"rating": "B",
|
||||
"cost": 536693,
|
||||
"mass": 8,
|
||||
"pGen": 14.3,
|
||||
"eff": "C"
|
||||
},
|
||||
"4A": {
|
||||
"grp": "pp",
|
||||
"class": 4,
|
||||
"rating": "A",
|
||||
"cost": 1610080,
|
||||
"mass": 5,
|
||||
"pGen": 15.6,
|
||||
"eff": "B"
|
||||
},
|
||||
"3E": {
|
||||
"grp": "pp",
|
||||
"class": 3,
|
||||
"rating": "E",
|
||||
"cost": 6271,
|
||||
"mass": 5,
|
||||
"pGen": 8,
|
||||
"eff": "F"
|
||||
},
|
||||
"3D": {
|
||||
"grp": "pp",
|
||||
"class": 3,
|
||||
"rating": "D",
|
||||
"cost": 18812,
|
||||
"mass": 2,
|
||||
"pGen": 9,
|
||||
"eff": "D"
|
||||
},
|
||||
"3C": {
|
||||
"grp": "pp",
|
||||
"class": 3,
|
||||
"rating": "C",
|
||||
"cost": 56435,
|
||||
"mass": 2.5,
|
||||
"pGen": 10,
|
||||
"eff": "C"
|
||||
},
|
||||
"3B": {
|
||||
"grp": "pp",
|
||||
"class": 3,
|
||||
"rating": "B",
|
||||
"cost": 169304,
|
||||
"mass": 4,
|
||||
"pGen": 11,
|
||||
"eff": "C"
|
||||
},
|
||||
"3A": {
|
||||
"grp": "pp",
|
||||
"class": 3,
|
||||
"rating": "A",
|
||||
"cost": 507912,
|
||||
"mass": 2.5,
|
||||
"pGen": 12,
|
||||
"eff": "B"
|
||||
},
|
||||
"2E": {
|
||||
"grp": "pp",
|
||||
"class": 2,
|
||||
"rating": "E",
|
||||
"cost": 1978,
|
||||
"mass": 2.5,
|
||||
"pGen": 6.4,
|
||||
"eff": "F"
|
||||
},
|
||||
"2D": {
|
||||
"grp": "pp",
|
||||
"class": 2,
|
||||
"rating": "D",
|
||||
"cost": 5934,
|
||||
"mass": 1,
|
||||
"pGen": 7.2,
|
||||
"eff": "D"
|
||||
},
|
||||
"2C": {
|
||||
"grp": "pp",
|
||||
"class": 2,
|
||||
"rating": "C",
|
||||
"cost": 17803,
|
||||
"mass": 1.3,
|
||||
"pGen": 8,
|
||||
"eff": "C"
|
||||
},
|
||||
"2B": {
|
||||
"grp": "pp",
|
||||
"class": 2,
|
||||
"rating": "B",
|
||||
"cost": 53408,
|
||||
"mass": 2,
|
||||
"pGen": 8.8,
|
||||
"eff": "C"
|
||||
},
|
||||
"2A": {
|
||||
"grp": "pp",
|
||||
"class": 2,
|
||||
"rating": "A",
|
||||
"cost": 160224,
|
||||
"mass": 1.3,
|
||||
"pGen": 9.6,
|
||||
"eff": "B"
|
||||
}
|
||||
"8E":{ "grp": "pp", "class": 8, "rating": "E", "cost": 2007241, "mass": 160, "pGen": 24, "eff": "F" },
|
||||
"8D":{ "grp": "pp", "class": 8, "rating": "D", "cost": 6021722, "mass": 64, "pGen": 27, "eff": "D" },
|
||||
"8C":{ "grp": "pp", "class": 8, "rating": "C", "cost": 18065165, "mass": 80, "pGen": 30, "eff": "C" },
|
||||
"8B":{ "grp": "pp", "class": 8, "rating": "B", "cost": 54195495, "mass": 128, "pGen": 33, "eff": "C" },
|
||||
"8A":{ "grp": "pp", "class": 8, "rating": "A", "cost": 162586486, "mass": 80, "pGen": 36, "eff": "B" },
|
||||
"7E":{ "grp": "pp", "class": 7, "rating": "E", "cost": 633199, "mass": 80, "pGen": 20, "eff": "F" },
|
||||
"7D":{ "grp": "pp", "class": 7, "rating": "D", "cost": 1899597, "mass": 32, "pGen": 22.5, "eff": "D" },
|
||||
"7C":{ "grp": "pp", "class": 7, "rating": "C", "cost": 5698790, "mass": 40, "pGen": 25, "eff": "C" },
|
||||
"7B":{ "grp": "pp", "class": 7, "rating": "B", "cost": 17096371, "mass": 64, "pGen": 27.5, "eff": "C" },
|
||||
"7A":{ "grp": "pp", "class": 7, "rating": "A", "cost": 51289112, "mass": 40, "pGen": 30, "eff": "B" },
|
||||
"6E":{ "grp": "pp", "class": 6, "rating": "E", "cost": 199747, "mass": 40, "pGen": 16.8, "eff": "F" },
|
||||
"6D":{ "grp": "pp", "class": 6, "rating": "D", "cost": 599242, "mass": 16, "pGen": 18.9, "eff": "D" },
|
||||
"6C":{ "grp": "pp", "class": 6, "rating": "C", "cost": 1797726, "mass": 20, "pGen": 21, "eff": "C" },
|
||||
"6B":{ "grp": "pp", "class": 6, "rating": "B", "cost": 5393177, "mass": 32, "pGen": 23.1, "eff": "C" },
|
||||
"6A":{ "grp": "pp", "class": 6, "rating": "A", "cost": 16179531, "mass": 20, "pGen": 25.2, "eff": "B" },
|
||||
"5E":{ "grp": "pp", "class": 5, "rating": "E", "cost": 63012, "mass": 20, "pGen": 13.6, "eff": "F" },
|
||||
"5D":{ "grp": "pp", "class": 5, "rating": "D", "cost": 189035, "mass": 8, "pGen": 15.3, "eff": "D" },
|
||||
"5C":{ "grp": "pp", "class": 5, "rating": "C", "cost": 567106, "mass": 10, "pGen": 17, "eff": "C" },
|
||||
"5B":{ "grp": "pp", "class": 5, "rating": "B", "cost": 1701318, "mass": 16, "pGen": 18.7, "eff": "C" },
|
||||
"5A":{ "grp": "pp", "class": 5, "rating": "A", "cost": 5103953, "mass": 10, "pGen": 20.4, "eff": "B" },
|
||||
"4E":{ "grp": "pp", "class": 4, "rating": "E", "cost": 19878, "mass": 10, "pGen": 10.4, "eff": "F" },
|
||||
"4D":{ "grp": "pp", "class": 4, "rating": "D", "cost": 59633, "mass": 4, "pGen": 11.7, "eff": "D" },
|
||||
"4C":{ "grp": "pp", "class": 4, "rating": "C", "cost": 178898, "mass": 5, "pGen": 13, "eff": "C" },
|
||||
"4B":{ "grp": "pp", "class": 4, "rating": "B", "cost": 536693, "mass": 8, "pGen": 14.3, "eff": "C" },
|
||||
"4A":{ "grp": "pp", "class": 4, "rating": "A", "cost": 1610080, "mass": 5, "pGen": 15.6, "eff": "B" },
|
||||
"3E":{ "grp": "pp", "class": 3, "rating": "E", "cost": 6271, "mass": 5, "pGen": 8, "eff": "F" },
|
||||
"3D":{ "grp": "pp", "class": 3, "rating": "D", "cost": 18812, "mass": 2, "pGen": 9, "eff": "D" },
|
||||
"3C":{ "grp": "pp", "class": 3, "rating": "C", "cost": 56435, "mass": 2.5, "pGen": 10, "eff": "C" },
|
||||
"3B":{ "grp": "pp", "class": 3, "rating": "B", "cost": 169304, "mass": 4, "pGen": 11, "eff": "C" },
|
||||
"3A":{ "grp": "pp", "class": 3, "rating": "A", "cost": 507912, "mass": 2.5, "pGen": 12, "eff": "B" },
|
||||
"2E":{ "grp": "pp", "class": 2, "rating": "E", "cost": 1978, "mass": 2.5, "pGen": 6.4, "eff": "F" },
|
||||
"2D":{ "grp": "pp", "class": 2, "rating": "D", "cost": 5934, "mass": 1, "pGen": 7.2, "eff": "D" },
|
||||
"2C":{ "grp": "pp", "class": 2, "rating": "C", "cost": 17803, "mass": 1.3, "pGen": 8, "eff": "C" },
|
||||
"2B":{ "grp": "pp", "class": 2, "rating": "B", "cost": 53408, "mass": 2, "pGen": 8.8, "eff": "C" },
|
||||
"2A":{ "grp": "pp", "class": 2, "rating": "A", "cost": 160224, "mass": 1.3, "pGen": 9.6, "eff": "B" }
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "coriolis_shipyard",
|
||||
"version": "1.3.1",
|
||||
"version": "1.4.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/cmmcleod/coriolis"
|
||||
|
||||
Reference in New Issue
Block a user