/// Remove a unit from the army bool CvArmyAI::RemoveUnit(int iUnitToRemoveID) { bool bWasOneOrMoreRemoved = false; CvArmyFormationSlot slot; for(int iI = 0; iI < (int)m_FormationEntries.size(); iI++) { slot = m_FormationEntries[iI]; if(slot.GetUnitID() == iUnitToRemoveID) { UnitHandle pThisUnit = GET_PLAYER(GetOwner()).getUnit(iUnitToRemoveID); if(pThisUnit) { // Clears unit's army ID and erase from formation entries pThisUnit->setArmyID(FFreeList::INVALID_INDEX); m_FormationEntries[iI].SetUnitID(ARMY_NO_UNIT); bWasOneOrMoreRemoved = true; // Tell the associate operation that a unit was lost CvAIOperation* pThisOperation = GET_PLAYER(GetOwner()).getAIOperation(m_iOperationID); if(pThisOperation) { pThisOperation->UnitWasRemoved(GetID(), iI); } } } } return bWasOneOrMoreRemoved; }
/// Remove a unit from the army bool CvArmyAI::RemoveUnit(int iUnitToRemoveID) { for(int iI = 0; iI < (int)m_FormationEntries.size(); iI++) { CvArmyFormationSlot slot = m_FormationEntries[iI]; if(slot.GetUnitID() == iUnitToRemoveID) { UnitHandle pThisUnit = GET_PLAYER(GetOwner()).getUnit(iUnitToRemoveID); if(pThisUnit) { // Clears unit's army ID and erase from formation entries pThisUnit->setArmyID(-1); pThisUnit->AI_setUnitAIType(pThisUnit->getUnitInfo().GetDefaultUnitAIType()); m_FormationEntries[iI].SetUnitID(ARMYSLOT_NO_UNIT); // Tell the associate operation that a unit was lost CvAIOperation* pThisOperation = GET_PLAYER(GetOwner()).getAIOperation(m_iOperationID); if(pThisOperation) { pThisOperation->UnitWasRemoved(GetID(), iI); } return true; } } } return false; }
/// Remove a unit from the army bool CvArmyAI::RemoveUnit(int iUnitToRemoveID) { bool bWasOneOrMoreRemoved = false; CvArmyFormationSlot slot; for(int iI = 0; iI < (int)m_FormationEntries.size(); iI++) { slot = m_FormationEntries[iI]; if(slot.GetUnitID() == iUnitToRemoveID) { UnitHandle pThisUnit = GET_PLAYER(GetOwner()).getUnit(iUnitToRemoveID); if(pThisUnit) { // Clears unit's army ID and erase from formation entries pThisUnit->setArmyID(-1); #if defined(MOD_BALANCE_CORE) pThisUnit->AI_setUnitAIType(pThisUnit->getUnitInfo().GetDefaultUnitAIType()); #endif m_FormationEntries[iI].SetUnitID(ARMY_NO_UNIT); bWasOneOrMoreRemoved = true; // Tell the associate operation that a unit was lost CvAIOperation* pThisOperation = GET_PLAYER(GetOwner()).getAIOperation(m_iOperationID); if(pThisOperation) { pThisOperation->UnitWasRemoved(GetID(), iI); } } } } return bWasOneOrMoreRemoved; }