Update multiple-slot actions to ed-forge

This commit is contained in:
Felix Linker
2021-12-28 00:38:25 +01:00
parent d406018f0b
commit e82ab0aec0
4 changed files with 140 additions and 210 deletions

View File

@@ -21,31 +21,26 @@ export default class UtilitySlotSection extends SlotSection {
* Empty all utility slots and close the menu
*/
_empty() {
this.props.ship.emptyUtility();
this.props.onChange();
this.props.ship.getUtilities().forEach((slot) => slot.reset());
this._close();
}
/**
* Mount module in utility slot, replace all if Alt is held
* @param {string} group Module Group name
* @param {string} type Module type
* @param {string} rating Module Rating
* @param {string} name Module name
* @param {Synthetic} event Event
*/
_use(group, rating, name, event) {
this.props.ship.useUtility(group, rating, name, event.getModifierState('Alt'));
this.props.onChange();
_use(type, rating, event) {
const fillAll = event.getModifierState('Alt');
for (const slot of this.props.ship.getUtilities(undefined, true)) {
if (slot.isEmpty() || fillAll) {
slot.setItem(type, '', rating);
}
}
this._close();
}
/**
* Empty all utility slots on right-click
*/
_contextMenu() {
this._empty();
}
/**
* Create all HardpointSlots (React component) for the slots
* @return {Array} Array of HardpointSlots
@@ -58,8 +53,6 @@ export default class UtilitySlotSection extends SlotSection {
for (let h of ship.getUtilities(undefined, true)) {
slots.push(<Slot
key={h.object.Slot}
maxClass={h.getSize()}
onChange={this.props.onChange}
currentMenu={currentMenu}
drag={this._drag.bind(this, h)}
dragOver={this._dragOverSlot.bind(this, h)}
@@ -91,23 +84,23 @@ export default class UtilitySlotSection extends SlotSection {
</ul>
<div className='select-group cap'>{translate('sb')}</div>
<ul>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'sb', 'A', null)}>A</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'sb', 'B', null)}>B</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'sb', 'C', null)}>C</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'sb', 'D', null)}>D</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'sb', 'E', null)}>E</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'shieldbooster', '5')}>A</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'shieldbooster', '4')}>B</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'shieldbooster', '3')}>C</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'shieldbooster', '2')}>D</li>
<li className='c' tabIndex='0' onClick={_use.bind(this, 'shieldbooster', '1')}>E</li>
</ul>
<div className='select-group cap'>{translate('hs')}</div>
<ul>
<li className='lc' tabIndex='0' onClick={_use.bind(this, 'hs', null, 'Heat Sink Launcher')}>{translate('Heat Sink Launcher')}</li>
<li className='lc' tabIndex='0' onClick={_use.bind(this, 'heatsinklauncher', '')}>{translate('Heat Sink Launcher')}</li>
</ul>
<div className='select-group cap'>{translate('ch')}</div>
<ul>
<li className='lc' tabIndex='0' onClick={_use.bind(this, 'ch', null, 'Chaff Launcher')}>{translate('Chaff Launcher')}</li>
<li className='lc' tabIndex='0' onClick={_use.bind(this, 'chafflauncher', '')}>{translate('Chaff Launcher')}</li>
</ul>
<div className='select-group cap'>{translate('po')}</div>
<ul>
<li className='lc' tabIndex='0' onClick={_use.bind(this, 'po', null, 'Point Defence')}>{translate('Point Defence')}</li>
<li className='lc' tabIndex='0' onClick={_use.bind(this, 'pointdefence', '')}>{translate('Point Defence')}</li>
</ul>
</div>;
}