Cpp:Building A Simple Tile Engine:Part 8

From GDWiki

Jump to: navigation, search

[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

Categories