mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-09 06:43:24 +00:00
Encode blueprint information event when no active modifications
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
#2.3.3
|
||||
* Remove unused blueprint when hitting reset
|
||||
|
||||
#2.3.2
|
||||
* Use scan range for DSS rather than scan time
|
||||
* Fix companion API import of Dolphin
|
||||
|
||||
@@ -130,10 +130,10 @@ export default class ModificationsMenu extends TranslatedComponent {
|
||||
*/
|
||||
_blueprintSelected(fdname, grade) {
|
||||
this.context.tooltip(null);
|
||||
const { m } = this.props;
|
||||
const { m, ship } = this.props;
|
||||
const blueprint = getBlueprint(fdname, m);
|
||||
blueprint.grade = grade;
|
||||
m.blueprint = blueprint;
|
||||
ship.setModuleBlueprint(m, blueprint);
|
||||
|
||||
this.setState({ blueprintMenuOpened: false });
|
||||
this.props.onChange();
|
||||
@@ -155,15 +155,10 @@ export default class ModificationsMenu extends TranslatedComponent {
|
||||
this.context.tooltip(null);
|
||||
const { m, ship } = this.props;
|
||||
|
||||
if (m.blueprint) {
|
||||
if (special === null) {
|
||||
m.blueprint.special = null;
|
||||
ship.clearModuelSpecial(m);
|
||||
} else {
|
||||
m.blueprint.special = Modifications.specials[special];
|
||||
}
|
||||
ship.recalculateDps();
|
||||
ship.recalculateHps();
|
||||
ship.recalculateEps();
|
||||
ship.setModuleSpecial(m, Modifications.specials[special]);
|
||||
}
|
||||
|
||||
this.setState({ specialMenuOpened: false });
|
||||
@@ -268,7 +263,7 @@ export default class ModificationsMenu extends TranslatedComponent {
|
||||
_reset() {
|
||||
const { m, ship } = this.props;
|
||||
ship.clearModifications(m);
|
||||
ship.clearBlueprint(m);
|
||||
ship.clearModuleBlueprint(m);
|
||||
|
||||
this.props.onChange();
|
||||
}
|
||||
@@ -294,7 +289,7 @@ export default class ModificationsMenu extends TranslatedComponent {
|
||||
let blueprintLabel;
|
||||
let haveBlueprint = false;
|
||||
let blueprintTt;
|
||||
if (m.blueprint && !isEmpty(m.blueprint)) {
|
||||
if (m.blueprint && m.blueprint.name) {
|
||||
blueprintLabel = translate(m.blueprint.name) + ' ' + translate('grade') + ' ' + m.blueprint.grade;
|
||||
haveBlueprint = true;
|
||||
blueprintTt = blueprintTooltip(translate, m.blueprint.grades[m.blueprint.grade], Modifications.modules[m.grp].blueprints[m.blueprint.fdname].grades[m.blueprint.grade].engineers, m.grp);
|
||||
|
||||
@@ -429,11 +429,45 @@ export default class Ship {
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear blueprint for a module
|
||||
* @param {Number} m The module for which to clear the modifications
|
||||
* Set blueprint for a module
|
||||
* @param {Object} m The module for which to set the blueprint
|
||||
* @param {Object} bp The blueprint
|
||||
*/
|
||||
clearBlueprint(m) {
|
||||
setModuleBlueprint(m, bp) {
|
||||
m.blueprint = bp;
|
||||
this.updateModificationsString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear blueprint for a module
|
||||
* @param {Object} m The module for which to clear the blueprint
|
||||
*/
|
||||
clearModuleBlueprint(m) {
|
||||
m.blueprint = {};
|
||||
this.updateModificationsString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set special for a module
|
||||
* @param {Object} m The module for which to set the blueprint
|
||||
* @param {Object} bp The blueprint
|
||||
*/
|
||||
setModuleSpecial(m, special) {
|
||||
if (m.blueprint) {
|
||||
m.blueprint.special = special;
|
||||
}
|
||||
this.recalculateDps().recalculateHps().recalculateEps();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear special for a module
|
||||
* @param {Object} m The module for which to clear the blueprint
|
||||
*/
|
||||
clearModuleSpecial(m) {
|
||||
if (m.blueprint) {
|
||||
m.blueprint.special = null;
|
||||
}
|
||||
this.recalculateDps().recalculateHps().recalculateEps();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1445,18 +1479,22 @@ export default class Ship {
|
||||
|
||||
// Now work out the size of the binary buffer from our modifications array
|
||||
let bufsize = 0;
|
||||
for (let slot of slots) {
|
||||
if (slot.length > 0) {
|
||||
// Length is 1 for the slot ID, 10 for the blueprint name and grade, 5 for each modification, and 1 for the end marker
|
||||
bufsize = bufsize + 1 + 10 + (5 * slot.length) + 1;
|
||||
for (let i = 0; i < slots.length; i++) {
|
||||
if (slots[i].length > 0 || (blueprints[i] && blueprints[i].id)) {
|
||||
// Length is 1 for the slot ID, 5 for each modification, and 1 for the end marker
|
||||
bufsize = bufsize + 1 + (5 * slots[i].length) + 1;
|
||||
|
||||
if (blueprints[i] && blueprints[i].id) {
|
||||
// Additional 10 for the blueprint and grade
|
||||
bufsize += 10;
|
||||
}
|
||||
}
|
||||
for (let special of specials) {
|
||||
if (special) {
|
||||
// Length is 5 for each special
|
||||
|
||||
if (specials[i]) {
|
||||
// Additional 5 for each special
|
||||
bufsize += 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bufsize > 0) {
|
||||
bufsize = bufsize + 1; // For end marker
|
||||
@@ -1465,7 +1503,7 @@ export default class Ship {
|
||||
let curpos = 0;
|
||||
let i = 0;
|
||||
for (let slot of slots) {
|
||||
if (slot.length > 0) {
|
||||
if (slot.length > 0 || (blueprints[i] && blueprints[i].id)) {
|
||||
buffer.writeInt8(i, curpos++);
|
||||
if (blueprints[i] && blueprints[i].id) {
|
||||
buffer.writeInt8(MODIFICATION_ID_BLUEPRINT, curpos++);
|
||||
|
||||
Reference in New Issue
Block a user