Cpp:Building A Simple Tile Engine:Part 6
From GPWiki
The wiki is now hosted by GameDev.NET at wiki.gamedev.net. All gpwiki.org content has been moved to the new server. However, the GPWiki forums are still active! Come say hello. [edit] Part 6: Creating the unit manager
This page is far from complete, go ahead and write some more!
You can extend this page by editing it. [edit] File: UnitManager.h#ifndef UNITMANAGER_H #define UNITMANAGER_H #include <vector> using std::vector; #include "Interfaces.h" #include "Unit.h" /** Unit mananger */ class CUnitManager: public IBaseEntity { protected: vector< CUnit* > m_vpUnits; void AddUnit( CUnit* pUnit ); public: CUnitManager(); virtual ~CUnitManager(); virtual void VThink ( const int& iElapsedTime ); virtual void VRender ( SDL_Surface* pDestSurface ); virtual bool VLoad ( TiXmlElement* pXMLData ); virtual TiXmlElement VGetSaveData(); CUnit* GetUnit( unsigned int iIndex ); }; #endif // UNITMANAGER_H [edit] File: UnitManager.cpp#include "UnitManager.h" #include "Unit.h" CUnitManager::CUnitManager() { } CUnitManager::~CUnitManager() { while( m_vpUnits.size() > 0 ) { if ( m_vpUnits.back() != 0 ) { delete m_vpUnits.back(); } m_vpUnits.pop_back(); } } bool CUnitManager::VLoad( TiXmlElement* pXMLData ) { TiXmlNode* pXMLUnit = 0; CUnit* pUnit; bool bLoadOK; while( pXMLUnit = pXMLData->IterateChildren( pXMLUnit ) ) { pUnit = new CUnit; bLoadOK = pUnit->VLoad( pXMLUnit->ToElement() ); if ( bLoadOK == false ) { return false; } AddUnit( pUnit ); } return true; } TiXmlElement CUnitManager::VGetSaveData() { TiXmlElement pXMLUnits( "units" ); for ( unsigned int i = 0; i < m_vpUnits.size(); ++i ) { pXMLUnits.InsertEndChild( m_vpUnits[ i ]->VGetSaveData() ); } return pXMLUnits; } void CUnitManager::AddUnit( CUnit* pUnit ) { m_vpUnits.push_back( pUnit ); } CUnit* CUnitManager::GetUnit( unsigned int iIndex ) { if ( iIndex < 0 || iIndex > m_vpUnits.size() ) return 0; return m_vpUnits[ iIndex ]; } void CUnitManager::VThink( const int& iElapsedTime ) { for ( unsigned int i = 0; i < m_vpUnits.size(); ++i ) { m_vpUnits[ i ]->VThink( iElapsedTime ); } } void CUnitManager::VRender( SDL_Surface* pDestSurface ) { for ( unsigned int i = 0; i < m_vpUnits.size(); ++i ) { m_vpUnits[ i ]->VRender( pDestSurface ); } } Proceed to Part 7: Creating the game manager
|


