0ad/source/simulation/FormationManager.h
Matei 5e7baf3a43 # Bug fixes and cleanup of entity kill code.
Put all entity cleanup code in kill(), so the JS function Kill() can
just call kill(), and made the code more correct in both cases. Also
fixed a bug with auras (a unit kept around auras that had been deleted).
Also fixed up some notifier code that was causing crashes (although that
can still happen in some cases).

Fixes #176.

This was SVN commit r4810.
2007-01-25 07:00:31 +00:00

50 lines
1.3 KiB
C++

//Andrew aka pyrolink
//ajdecker1022@msn.com
//This keeps track of all the formations exisisting in the game.
#ifndef FORMATIONMANAGER_INCLUDED
#define FORMATIONMANAGER_INCLUDED
#include "ps/Singleton.h"
#include "FormationCollection.h"
#include "scripting/DOMEvent.h"
#define g_FormationManager CFormationManager::GetSingleton()
class CEntity;
class CStr;
class CFormation;
class CVector2D;
class CEntityFormation;
struct CEntityList;
class CFormationManager : public Singleton<CFormationManager>
{
#define FormIterator std::vector<CEntityFormation*>::iterator
public:
CFormationManager() {}
~CFormationManager();
void CreateFormation( CEntityList& entities, CStrW& name );
//entity is any unit in the formation
void DestroyFormation( size_t form );
inline bool IsValidFormation( int index )
{
return ((size_t)index < m_formations.size() && index >= 0);
}
bool AddUnit( CEntity* entity, int& form );
CEntityList AddUnitList( CEntityList& entities, int form );
//Returns false if the formation is destroyed
bool RemoveUnit( CEntity* entity );
bool RemoveUnitList( CEntityList& entities );
CEntityFormation* GetFormation(int form);
void UpdateIndexes( size_t update );
private:
std::vector<CEntityFormation*> m_formations;
};
#endif // FORMATIONMANAGER_INCLUDED