/***************************************************************************** * GameComponentCollection.h * * * * XFX GameComponentCollection definition file * * Copyright (c) XFX Team. All Rights Reserved * *****************************************************************************/ #ifndef _XFX_GAMECOMPONENTCOLLECTION_ #define _XFX_GAMECOMPONENTCOLLECTION_ #include "Interfaces.h" #include <System/Event.h> #include <System/Collections/Generic/List.h> #include <GameComponentCollectionEventArgs.h> using namespace System; using namespace System::Collections::Generic; namespace XFX { /** * A collection of game components. */ class GameComponentCollection : public Object { private: List<IGameComponent*> _components; protected: void ClearItems(); void InsertItem(const int index, IGameComponent * const item); void RemoveItem(const int index); void SetItem(const int index, IGameComponent * const item); public: int Count() const; GameComponentCollection(); virtual ~GameComponentCollection(); IGameComponent* operator[](const int index); static const Type& GetType(); Event<Object * const, GameComponentCollectionEventArgs * const> ComponentAdded; Event<Object * const, GameComponentCollectionEventArgs * const> ComponentRemoved; }; } #endif //_XFX_GAMECOMPONENTCOLLECTION_