Cpp:Building A Simple Tile Engine:Part 6
From GDWiki
[edit] Part 6: Creating the unit manager
I haven't got the time to finish this article right now, so until I have here's a stub box for you to look at:
- This article is a stub. You can help out by expanding 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
Table of Content - Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - Part 8 - Part X

