// --------------------------------------------------------------------- // Deselects all units for the player unsigned int selDroidDeselect(unsigned int player) { unsigned int count = 0; for (DROID *psDroid = apsDroidLists[player]; psDroid; psDroid = psDroid->psNext) { if (psDroid->selected) { count++; DeSelectDroid(psDroid); } } return count; }
// --------------------------------------------------------------------- // Deselects all units for the player UDWORD selDroidDeselect( UDWORD player ) { UDWORD count; DROID *psDroid; for(psDroid = apsDroidLists[player], count = 0; psDroid; psDroid = psDroid->psNext) { if(psDroid->selected) { count++; } // psDroid->selected = false; DeSelectDroid(psDroid); } return(count); }
// Call this whenever a droid gets killed or removed. // returns true if ok, returns false if resulted in driving mode being stopped, ie could'nt find // a selected droid to drive. // bool driveDroidKilled(DROID *psDroid) { if(driveModeActive()) { if(psDroid == psDrivenDroid) { ChangeDriver(); psDrivenDroid = NULL; DeSelectDroid(psDroid); if(!StartDriverMode(psDroid)) { return false; } } } return true; }
static unsigned selSelectUnitsIf(unsigned player, T condition, bool onlyOnScreen) { unsigned count = 0; selDroidDeselect(player); // Go through all. for (DROID *psDroid = apsDroidLists[player]; psDroid != nullptr; psDroid = psDroid->psNext) { bool shouldSelect = (!onlyOnScreen || droidOnScreen(psDroid, 0)) && condition(psDroid); count += shouldSelect; if (shouldSelect && !psDroid->selected) { SelectDroid(psDroid); } else if (!shouldSelect && psDroid->selected) { DeSelectDroid(psDroid); } } return count; }