view LightClone/Source/ScreenManager.h @ 75:57c0ce406a68 tip

Add main menu
author koryspansel <koryspansel@bendbroadband.com>
date Tue, 18 Oct 2011 17:08:17 -0700
parents bc8afcf7e1ec
children
line wrap: on
line source

/*
 * ScreenManager
 */

#ifndef __SCREENMANAGER_H__
#define __SCREENMANAGER_H__

#include "Core.h"
#include "Screen.h"
#include "HashMap.h"
#include "FixedString.h"
#include "FixedStack.h"
#include "RenderContext.h"

/*
 * ScreenManager
 */
class ScreenManager
{
	/*
	 * ScreenMap
	 */
	typedef HashMap<FixedString<>, Screen*, FixedString<>::Hash> ScreenMap;

	/*
	 * ScreenStack
	 */
	typedef FixedStack<Screen*, 32> ScreenStack;

	/*
	 * kScreens
	 */
	ScreenMap kScreens;

	/*
	 * kStack
	 */
	ScreenStack kStack;

	/*
	 * bDirty
	 */
	bool bDirty;

public:

	/*
	 * ScreenManager
	 */
	ScreenManager();

	/*
	 * Register
	 */
	ErrorCode Register(const char* pName, Screen* pInstance);

	/*
	 * Initialize
	 */
	ErrorCode Initialize(ServiceProvider* pServiceProvider);

	/*
	 * Terminate
	 */
	void Terminate();

	/*
	 * Update
	 */
	void Update(float fElapsed);

	/*
	 * Render
	 */
	void Render(RenderContext& kContext);

	/*
	 * Set
	 */
	void Set(const char* pName);

	/*
	 * Push
	 */
	void Push(const char* pName);

	/*
	 * Pop
	 */
	void Pop();

	/*
	 * IsActive
	 */
	bool IsActive() const;
};

#endif //__SCREENMANAGER_H__