Add Shift+V to select all fully-armed VTOLs.

master
Cyp 2013-05-25 23:20:31 +02:00
parent 7a52d37d5f
commit 0694970497
5 changed files with 39 additions and 0 deletions

View File

@ -2226,6 +2226,11 @@ void kf_SelectAllVTOLs( void )
selDroidSelection(selectedPlayer,DS_BY_TYPE,DST_VTOL,false);
}
void kf_SelectAllArmedVTOLs()
{
selDroidSelection(selectedPlayer, DS_BY_TYPE, DST_VTOL_ARMED, false);
}
// --------------------------------------------------------------------------
void kf_SelectAllHovers( void )
{

View File

@ -128,6 +128,7 @@ extern void kf_ToggleConsole( void );
extern void kf_SelectAllOnScreenUnits( void );
extern void kf_SelectAllUnits( void );
extern void kf_SelectAllVTOLs( void );
void kf_SelectAllArmedVTOLs();
extern void kf_SelectAllHovers( void );
extern void kf_SelectAllWheeled( void );
extern void kf_SelectAllTracked( void );

View File

@ -266,6 +266,7 @@ _keymapsave keyMapSaveTable[] =
kf_SelectAllSensorUnits,
kf_SelectAllTrucks,
kf_SetDroidOrderStop,
kf_SelectAllArmedVTOLs,
NULL // last function!
};
@ -433,6 +434,7 @@ void keyInitMappings( bool bForceDefaults )
keyAddMapping(KEYMAP_ASSIGNABLE, KEY_LCTRL, KEY_T, KEYMAP_PRESSED, kf_SelectAllTracked, N_("Select all Tracks"));
keyAddMapping(KEYMAP_ASSIGNABLE, KEY_LCTRL, KEY_U, KEYMAP_PRESSED, kf_SelectAllUnits, N_("Select EVERY unit"));
keyAddMapping(KEYMAP_ASSIGNABLE, KEY_LCTRL, KEY_V, KEYMAP_PRESSED, kf_SelectAllVTOLs, N_("Select all VTOLs"));
keyAddMapping(KEYMAP_ASSIGNABLE, KEY_LSHIFT, KEY_V, KEYMAP_PRESSED, kf_SelectAllArmedVTOLs, N_("Select all fully-armed VTOLs"));
keyAddMapping(KEYMAP_ASSIGNABLE, KEY_LCTRL, KEY_W, KEYMAP_PRESSED, kf_SelectAllWheeled, N_("Select all Wheels"));
keyAddMapping(KEYMAP__DEBUG, KEY_LCTRL, KEY_Y, KEYMAP_PRESSED, kf_FrameRate, N_("Show frame rate"));
keyAddMapping(KEYMAP_ASSIGNABLE, KEY_LCTRL, KEY_Z, KEYMAP_PRESSED, kf_SelectAllSameType, N_("Select all Similar Units"));

View File

@ -100,6 +100,33 @@ static unsigned int selSelectAllSameProp(unsigned int player, PROPULSION_TYPE pr
return count;
}
static unsigned int selSelectAllSamePropArmed(unsigned int player, PROPULSION_TYPE propType, bool bOnScreen)
{
unsigned int count = 0;
selDroidDeselect(player);
/* Go thru' them all */
for (DROID *psDroid = apsDroidLists[player]; psDroid; psDroid = psDroid->psNext)
{
/* Is on screen important */
if (!bOnScreen || droidOnScreen(psDroid, 0))
{
/* Get the propulsion type */
PROPULSION_STATS *psPropStats = asPropulsionStats + psDroid->asBits[COMP_PROPULSION];
ASSERT(psPropStats != NULL, "invalid propulsion stats pointer");
/* Same as that asked for - don't want Transporters*/
if (psPropStats->propulsionType == propType && (psDroid->droidType != DROID_TRANSPORTER && psDroid->droidType != DROID_SUPERTRANSPORTER) && vtolFull(psDroid))
{
SelectDroid(psDroid);
count++;
}
}
}
return count;
}
// ---------------------------------------------------------------------
// Selects all units owned by the player of a certain droid type.
// On Screen toggle.
@ -633,6 +660,9 @@ unsigned int selDroidSelection(unsigned int player, SELECTION_CLASS droidClass,
case DST_VTOL:
retVal = selSelectAllSameProp(player, PROPULSION_TYPE_LIFT, bOnScreen);
break;
case DST_VTOL_ARMED:
retVal = selSelectAllSamePropArmed(player, PROPULSION_TYPE_LIFT, bOnScreen);
break;
case DST_HOVER:
retVal = selSelectAllSameProp(player, PROPULSION_TYPE_HOVER, bOnScreen);
break;

View File

@ -31,6 +31,7 @@ enum SELECTIONTYPE
{
DST_UNUSED,
DST_VTOL,
DST_VTOL_ARMED,
DST_HOVER,
DST_WHEELED,
DST_TRACKED,