Cpp:Building A Simple Tile Engine:Part 8
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 8: Putting it all together
This page is far from complete, go ahead and write some more!
You can extend this page by editing it. [edit] File: TileEngine.h#include <string> using std::string; #include "Engine.h" class CTileEngine: public CEngine { protected: void AdditionalInit(); void Think ( const int& iElapsedTime ); void Render ( SDL_Surface* pDestSurface ); void KeyUp (const int& iKeyEnum); void KeyDown (const int& iKeyEnum); void End(); void MouseMoved (const int& iButton, const int& iX, const int& iY, const int& iRelX, const int& iRelY); void MouseButtonUp (const int& iButton, const int& iX, const int& iY, const int& iRelX, const int& iRelY); void MouseButtonDown(const int& iButton, const int& iX, const int& iY, const int& iRelX, const int& iRelY); public: CTileEngine(); virtual ~CTileEngine(); bool LoadGame( const string& sFile ); bool SaveGame( const string& sFile ); }; [edit] File: TileEngine.cpp#include "TileEngine.h" #include "Game.h" #include "Unit.h" CGame* g_pGame; CTileEngine::CTileEngine() { SetTitle( "TileEngine - Loading Core..." ); // Set the game window size to 5 x 4 images of 128 x 128 pixels SetSize( 5 * 128, 4 * 128 ); } CTileEngine::~CTileEngine() { // Nothing } void CTileEngine::AdditionalInit() { SetTitle( "TileEngine - Loading..." ); g_pGame = new CGame; LoadGame( "Media/TestTile.xml" ); SetTitle( "TileEngine" ); } void CTileEngine::End() { SetTitle( "TileEngine - Quiting..." ); SaveGame( "savegame.xml" ); if ( g_pGame != 0 ) delete g_pGame; g_pGame = 0; } void CTileEngine::Think( const int& iElapsedTime ) { g_pGame->VThink( iElapsedTime ); } void CTileEngine::Render( SDL_Surface* pDestSurface ) { g_pGame->VRender( pDestSurface ); } void CTileEngine::KeyDown(const int& iKeyEnum) { } void CTileEngine::KeyUp(const int& iKeyEnum) { } void CTileEngine::MouseMoved(const int& iButton, const int& iX, const int& iY, const int& iRelX, const int& iRelY) { } void CTileEngine::MouseButtonUp(const int& iButton, const int& iX, const int& iY, const int& iRelX, const int& iRelY) { } void CTileEngine::MouseButtonDown(const int& iButton, const int& iX, const int& iY, const int& iRelX, const int& iRelY) { int iUnit = (iButton == SDL_BUTTON_RIGHT ? 1 : 0); CUnit* pUnit = g_pGame->GetUnitManager()->GetUnit( iUnit ); pUnit->SetTileX( (iX - iX % 128) / 128 ); pUnit->SetTileY( (iY - iY % 128) / 128 ); } bool CTileEngine::LoadGame( const string& sFile ) { TiXmlDocument doc; if ( doc.LoadFile( sFile.c_str() ) == false ) { return false; } return g_pGame->VLoad( doc.FirstChildElement( "map" ) ); } bool CTileEngine::SaveGame( const string& sFile ) { TiXmlDocument doc; TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "", "" ); doc.LinkEndChild( decl ); doc.InsertEndChild( g_pGame->VGetSaveData() ); return doc.SaveFile( sFile.c_str() ); } Proceed to Part 9: Building a browser based XML map editor
|


