Cpp:Building A Simple Tile Engine:Part 8
From GDWiki
[edit] Part 8: Putting it all together
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: 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
Table of Content - Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - Part 8 - Part X

