mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-10 07:05:35 +00:00
Include module status and priority in JSON import and export.
This commit is contained in:
@@ -72,7 +72,7 @@ angular.module('app').service('Serializer', ['lodash', 'GroupMap', 'MountMap', '
|
||||
internal = ship.internal;
|
||||
|
||||
var data = {
|
||||
$schema: 'http://cdn.coriolis.io/schemas/ship-loadout/1.json#',
|
||||
$schema: 'http://cdn.coriolis.io/schemas/ship-loadout/2.json#',
|
||||
name: buildName,
|
||||
ship: ship.name,
|
||||
references: [{
|
||||
@@ -84,13 +84,13 @@ angular.module('app').service('Serializer', ['lodash', 'GroupMap', 'MountMap', '
|
||||
components: {
|
||||
standard: {
|
||||
bulkheads: ship.bulkheads.c.name,
|
||||
powerPlant: { class: standard[0].c.class, rating: standard[0].c.rating },
|
||||
thrusters: { class: standard[1].c.class, rating: standard[1].c.rating },
|
||||
frameShiftDrive: { class: standard[2].c.class, rating: standard[2].c.rating },
|
||||
lifeSupport: { class: standard[3].c.class, rating: standard[3].c.rating },
|
||||
powerDistributor: { class: standard[4].c.class, rating: standard[4].c.rating },
|
||||
sensors: { class: standard[5].c.class, rating: standard[5].c.rating },
|
||||
fuelTank: { class: standard[6].c.class, rating: standard[6].c.rating }
|
||||
powerPlant: { class: standard[0].c.class, rating: standard[0].c.rating, enabled: Boolean(standard[0].enabled), priority: standard[0].priority+1 },
|
||||
thrusters: { class: standard[1].c.class, rating: standard[1].c.rating, enabled: Boolean(standard[1].enabled), priority: standard[1].priority+1 },
|
||||
frameShiftDrive: { class: standard[2].c.class, rating: standard[2].c.rating, enabled: Boolean(standard[2].enabled), priority: standard[2].priority+1 },
|
||||
lifeSupport: { class: standard[3].c.class, rating: standard[3].c.rating, enabled: Boolean(standard[3].enabled), priority: standard[3].priority+1 },
|
||||
powerDistributor: { class: standard[4].c.class, rating: standard[4].c.rating, enabled: Boolean(standard[4].enabled), priority: standard[4].priority+1 },
|
||||
sensors: { class: standard[5].c.class, rating: standard[5].c.rating, enabled: Boolean(standard[5].enabled), priority: standard[5].priority+1 },
|
||||
fuelTank: { class: standard[6].c.class, rating: standard[6].c.rating, enabled: Boolean(standard[6].enabled), priority: standard[6].priority+1 }
|
||||
},
|
||||
hardpoints: _.map(_.filter(hardpoints, function(slot) { return slot.maxClass > 0; }), slotToSchema),
|
||||
utility: _.map(_.filter(hardpoints, function(slot) { return slot.maxClass === 0; }), slotToSchema),
|
||||
@@ -116,6 +116,8 @@ angular.module('app').service('Serializer', ['lodash', 'GroupMap', 'MountMap', '
|
||||
}
|
||||
|
||||
var comps = detailedBuild.components;
|
||||
var priorities = [ 0 ]; // cargoScoop
|
||||
var enabled = [ false ]; // assume cargoScoop disabled
|
||||
var shipData = ShipsDB[shipId];
|
||||
var ship = new Ship(shipId, shipData.properties, shipData.slots);
|
||||
var bulkheads = Components.bulkheadIndex(comps.standard.bulkheads);
|
||||
@@ -130,6 +132,8 @@ angular.module('app').service('Serializer', ['lodash', 'GroupMap', 'MountMap', '
|
||||
if (!comps.standard[c].class || !comps.standard[c].rating) {
|
||||
throw 'Invalid value for ' + c;
|
||||
}
|
||||
priorities.push(comps.standard[c].priority === undefined ? 0 : comps.standard[c].priority-1);
|
||||
enabled.push(comps.standard[c].enabled === undefined ? true : comps.standard[c].enabled);
|
||||
return comps.standard[c].class + comps.standard[c].rating;
|
||||
}
|
||||
);
|
||||
@@ -143,7 +147,15 @@ angular.module('app').service('Serializer', ['lodash', 'GroupMap', 'MountMap', '
|
||||
return c ? Components.findHardpointId(c.group, c.class, c.rating, c.name, MountMap[c.mount]) : 0;
|
||||
}));
|
||||
|
||||
ship.buildWith({ bulkheads: bulkheads, common: common, hardpoints: hardpoints, internal: internal });
|
||||
// The ordering of these arrays must match the order in which they are read in Ship.buildWith
|
||||
priorities = priorities.concat(_.map(comps.hardpoints, function(c) { return (!c || c.priority===undefined) ? 0 : c.priority-1; }),
|
||||
_.map(comps.utility, function(c) { return (!c || c.priority===undefined) ? 0 : c.priority-1; }),
|
||||
_.map(comps.internal, function(c) { return (!c || c.priority===undefined) ? 0 : c.priority-1; }));
|
||||
enabled = enabled.concat(_.map(comps.hardpoints, function(c) { return (!c || c.enabled===undefined) ? false : c.enabled; }),
|
||||
_.map(comps.utility, function(c) { return (!c || c.enabled===undefined) ? false : c.enabled; }),
|
||||
_.map(comps.internal, function(c) { return (!c || c.enabled===undefined) ? false : c.enabled; }));
|
||||
|
||||
ship.buildWith({ bulkheads: bulkheads, common: common, hardpoints: hardpoints, internal: internal }, priorities, enabled);
|
||||
|
||||
return ship;
|
||||
};
|
||||
@@ -213,7 +225,7 @@ angular.module('app').service('Serializer', ['lodash', 'GroupMap', 'MountMap', '
|
||||
|
||||
function slotToSchema(slot) {
|
||||
if (slot.c) {
|
||||
var o = { class: slot.c.class, rating: slot.c.rating, group: GroupMap[slot.c.grp] };
|
||||
var o = { class: slot.c.class, rating: slot.c.rating, enabled: Boolean(slot.enabled), priority: slot.priority+1, group: GroupMap[slot.c.grp] };
|
||||
if (slot.c.name) {
|
||||
o.name = slot.c.name;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user