diff --git a/src/app/components/AvailableModulesMenu.jsx b/src/app/components/AvailableModulesMenu.jsx index 7c804ed1..f1f90380 100644 --- a/src/app/components/AvailableModulesMenu.jsx +++ b/src/app/components/AvailableModulesMenu.jsx @@ -56,7 +56,11 @@ const GRPCAT = { 'ch': 'defence', 'po': 'defence', 'ec': 'defence', - 'sfn': 'defence' + 'sfn': 'defence', + // Standard + 'gpp': 'guardian', + 'gpc': 'guardian', + 'ggc': 'guardian' }; // Order here is the order in which items will be shown in the modules menu const CATEGORIES = { @@ -82,7 +86,10 @@ const CATEGORIES = { 'defence': ['ch', 'po', 'ec'], 'scanners': ['sc', 'ss', 'cs', 'kw', 'ws'], // Overloaded with internal scanners // Experimental - 'experimental': ['axmc', 'axmr', 'rfl', 'xs', 'sfn'] + 'experimental': ['axmc', 'axmr', 'rfl', 'xs', 'sfn'], + + // Guardian + 'guardian': ['gpp', 'gpc', 'ggc'] }; /** @@ -208,7 +215,7 @@ export default class AvailableModulesMenu extends TranslatedComponent { * @return {React.Component} Available Module Group contents */ _buildGroup(translate, mountedModule, warningFunc, mass, onSelect, grp, modules) { - let prevClass = null, prevRating = null; + let prevClass = null, prevRating = null, prevName; let elems = []; const sortedModules = modules.sort(this._moduleOrder); @@ -223,6 +230,7 @@ export default class AvailableModulesMenu extends TranslatedComponent { let m = sortedModules[i]; let mount = null; let disabled = false; + prevName = m.name if (ModuleUtils.isShieldGenerator(m.grp)) { // Shield generators care about maximum hull mass disabled = mass > m.maxmass; @@ -258,7 +266,10 @@ export default class AvailableModulesMenu extends TranslatedComponent { case 'G': mount = ; break; case 'T': mount = ; break; } - + if (m.name && m.name === prevName) { + // elems.push(
); + itemsOnThisRow = 0; + } if (itemsOnThisRow == 6 || i > 0 && sortedModules.length > 3 && itemsPerClass > 2 && m.class != prevClass && (m.rating != prevRating || m.mount)) { elems.push(
); itemsOnThisRow = 0; @@ -273,6 +284,7 @@ export default class AvailableModulesMenu extends TranslatedComponent { itemsOnThisRow++; prevClass = m.class; prevRating = m.rating; + prevName = m.name; } return ; diff --git a/src/app/i18n/en.json b/src/app/i18n/en.json index ae9ecea7..72718995 100644 --- a/src/app/i18n/en.json +++ b/src/app/i18n/en.json @@ -117,6 +117,10 @@ "pl": "Pulse Laser", "po": "Point Defence", "pp": "Power Plant", + "gpp": "Guardian Hybrid Power Plant", + "gpd": "Guardian Hybrid Power Distributor", + "gpc": "Guardian Plasma Charger", + "ggc": "Guardian Gauss Cannon", "psg": "Prismatic Shield Generator", "pv": "Planetary Vehicle Hangar", "rf": "Refinery", diff --git a/src/app/shipyard/Constants.js b/src/app/shipyard/Constants.js index 5763923a..55aa8a64 100755 --- a/src/app/shipyard/Constants.js +++ b/src/app/shipyard/Constants.js @@ -9,12 +9,16 @@ export const StandardArray = [ 'pd', // Power Distributor 's', // Sensors 'ft', // Fuel Tank + 'gpp', // Guardian Hybrid Power Plant + 'gpd' // Guardian Hybrid Power Distributor ]; // Map to lookup group labels/names for component grp, used for JSON Serialization export const ModuleGroupToName = { // Standard pp: 'Power Plant', + gpp: 'Guardian Hybrid Power Plant', + gpd: 'Guardian Hybrid Power Distributor', t: 'Thrusters', fsd: 'Frame Shift Drive', ls: 'Life Support', @@ -75,7 +79,9 @@ export const ModuleGroupToName = { sb: 'Shield Booster', tp: 'Torpedo Pylon', sfn: 'Shutdown Field Neutraliser', - xs: 'Xeno Scanner' + xs: 'Xeno Scanner', + gpc: 'Guardian Plasma Charger', + ggc: 'Guardian Gauss Cannon', }; let GrpNameToCodeMap = {};