Skip to content

Commit

Permalink
Add Shift+V to select all fully-armed VTOLs.
Browse files Browse the repository at this point in the history
  • Loading branch information
Cyp committed May 25, 2013
1 parent 7a52d37 commit 0694970
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/keybind.cpp
Expand Up @@ -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 )
{
Expand Down
1 change: 1 addition & 0 deletions src/keybind.h
Expand Up @@ -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 );
Expand Down
2 changes: 2 additions & 0 deletions src/keymap.cpp
Expand Up @@ -266,6 +266,7 @@ _keymapsave keyMapSaveTable[] =
kf_SelectAllSensorUnits,
kf_SelectAllTrucks,
kf_SetDroidOrderStop,
kf_SelectAllArmedVTOLs,
NULL // last function!
};

Expand Down Expand Up @@ -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"));
Expand Down
30 changes: 30 additions & 0 deletions src/selection.cpp
Expand Up @@ -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.
Expand Down Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions src/selection.h
Expand Up @@ -31,6 +31,7 @@ enum SELECTIONTYPE
{
DST_UNUSED,
DST_VTOL,
DST_VTOL_ARMED,
DST_HOVER,
DST_WHEELED,
DST_TRACKED,
Expand Down

0 comments on commit 0694970

Please sign in to comment.