/* ** Command & Conquer Generals(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ //////////////////////////////////////////////////////////////////////////////// // // // (c) 2001-2003 Electronic Arts Inc. // // // //////////////////////////////////////////////////////////////////////////////// // FILE: Sqaud.h /*---------------------------------------------------------------------------*/ /* EA Pacific */ /* Confidential Information */ /* Copyright (C) 2001 - All Rights Reserved */ /* DO NOT DISTRIBUTE */ /*---------------------------------------------------------------------------*/ /* Project: RTS3 */ /* File name: Sqaud.h */ /* Created: John K. McDonald, Jr., 4/19/2002 */ /* Desc: // @todo */ /* Revision History: */ /* 4/19/2002 : Initial creation */ /*---------------------------------------------------------------------------*/ #pragma once #ifndef _H_SQAUD_ #define _H_SQAUD_ // INCLUDES /////////////////////////////////////////////////////////////////// #include "Common/Snapshot.h" #include "Common/GameMemory.h" // DEFINES //////////////////////////////////////////////////////////////////// // FORWARD DECLARATIONS /////////////////////////////////////////////////////// class AIGroup; class Object; class Team; // TYPE DEFINES /////////////////////////////////////////////////////////////// typedef std::vector VecObjectID; typedef VecObjectID::iterator VecObjectIDIt; typedef std::vector VecObjectPtr; typedef VecObjectPtr::iterator VecObjectPtrIt; class Squad : public MemoryPoolObject, public Snapshot { MEMORY_POOL_GLUE_WITH_USERLOOKUP_CREATE(Squad, "Squad") protected: // snapshot methods virtual void crc( Xfer *xfer ); virtual void xfer( Xfer *xfer ); virtual void loadPostProcess( void ); VecObjectID m_objectIDs; // this one is the last requested object stuff. Its used so that we can return a // const& rather than making a copy and placing it on the stack. VecObjectPtr m_objectsCached; public: void addObject(Object *objectToAdd); // add an object void addObjectID(ObjectID objectID); // add an object ID void removeObject(Object *objectToRemove); // remove an object void clearSquad(); // remove all objects from this squad. const VecObjectPtr& getAllObjects(void); // get all objects on the list that haven't been deleted const VecObjectPtr& getLiveObjects(void); // get all objects that pass "isEffectivelyDead" test Int getSizeOfGroup(void) const; // get the current number of objects, including dead objects Bool isOnSquad(const Object *objToTest) const; // returns true if the object is on this squad, otherwise false // convenience function to fill this squad with members of a team // There SHOULD NOT be a TeamFromSquad Function. See comments in Squad.cpp for details void squadFromTeam(const Team* fromTeam, Bool clearSquadFirst); // convenience function to create a squad from an AIGroup, and an AIGroup from a team. // When creating the AIGroup from the Squad, the old AIGroup affiliations are broken. void squadFromAIGroup(const AIGroup* fromAIGroup, Bool clearSquadFirst); void aiGroupFromSquad(AIGroup* aiGroupToFill); }; EMPTY_DTOR(Squad) #endif /* _H_SQAUD_ */