view LightClone/Source/World.h @ 54:95677f648a2c VirtualMachine Mk2

Refactored VirtualMachine
author koryspansel
date Fri, 30 Sep 2011 18:37:54 -0700
parents 8cefb65577cc
children dc1f4a668d50
line wrap: on
line source

/*
 * World
 */

#ifndef __WORLD_H__
#define __WORLD_H__

#include "Core.h"
#include "ResourceManager.h"
#include "RenderContext.h"
#include "Environment.h"
#include "Bot.h"
#include "Loader.h"
#include "CameraController.h"
#include "InputManager.h"
#include "GuiInterface.h"
#include "GuiImage.h"
#include "GuiButton.h"
#include "CodePanel.h"
#include "Program.h"
#include "Dialog.h"

/*
 * MessageDialog
 */
typedef Dialog<1> MessageDialog;

/*
 * ChoiceDialog
 */
typedef Dialog<2> ChoiceDialog;

/*
 * World
 */
class World
{
	/*
	 * MaximumCodePanels
	 */
	static const uint32 MaximumCodePanels = 3;

	/*
	 * pInputManager
	 */
	InputManager* pInputManager;

	/*
	 * kLoader
	 */
	Loader kLoader;

	/*
	 * kEnvironment
	 */
	Environment kEnvironment;

	/*
	 * kBot
	 */
	Bot kBot;

	/*
	 * kProgram
	 */
	Program kProgram;

	/*
	 * nWorldState
	 */
	uint32 nWorldState;

	/*
	 * nLogicState
	 */
	uint32 nLogicState;

	/*
	 * nSimulationState
	 */
	uint32 nSimulationState;

	/*
	 * nCurrentLevel
	 */
	uint32 nCurrentLevel;

	/*
	 * kCameraController
	 */
	CameraController kCameraController;

	/*
	 * kInterface
	 */
	GuiInterface kInterface;

	/*
	 * pMenuMain
	 */
	GuiElement* pMenuMain;

	/*
	 * pMenuHelp
	 */
	GuiElement* pMenuHelp;

	/*
	 * pMenuPause
	 */
	GuiElement* pMenuPause;

	/*
	 * pHud
	 */
	GuiElement* pHud;

	/*
	 * pBackground
	 */
	GuiImage* pBackground;

	/*
	 * pButtonPlay
	 */
	GuiButton* pButtonPlay;

	/*
	 * pButtonStop
	 */
	GuiButton* pButtonStop;

	/*
	 * pButtonReset
	 */
	GuiButton* pButtonReset;

	/*
	 * pButtonExit
	 */
	GuiButton* pButtonExit;

	/*
	 * pToolbar
	 */
	CodePanel* pToolbar;

	/*
	 * pCode
	 */
	CodePanel* pCode[MaximumCodePanels];

	/*
	 * pMessageDialog
	 */
	MessageDialog* pMessageDialog;

	/*
	 * pConfirmDialog
	 */
	ChoiceDialog* pConfirmDialog;

public:
	
	/*
	 * World
	 */
	World();

	/*
	 * Initialize
	 */
	ErrorCode Initialize(ResourceManager* pResource, InputManager* pInput);

	/*
	 * Terminate
	 */
	void Terminate();

	/*
	 * Activate
	 */
	void Activate();

	/*
	 * Deactivate
	 */
	void Deactivate();

	/*
	 * IsActive
	 */
	bool IsActive();

	/*
	 * Load
	 */
	ErrorCode Load(const char* pName);

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

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

private:

	/*
	 * InitializeInterface
	 */
	ErrorCode InitializeInterface(ResourceManager* pResourceManager);

	/*
	 * 	RenderEnvironment
	 */
	void RenderEnvironment(RenderContext& kContext, Environment* pEnvironment);

	/*
	 * RenderBot
	 */
	void RenderBot(RenderContext& kContext, Environment* pEnvironment, Bot* pBot);

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

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

	/*
	 * OnAction
	 */
	void OnAction(GuiEventArguments& kArguments);

	/*
	 * OnPlay
	 */
	void OnPlay(GuiEventArguments& kArguments);

	/*
	 * OnStop
	 */
	void OnStop(GuiEventArguments& kArguments);

	/*
	 * OnReset
	 */
	void OnReset(GuiEventArguments& kArguments);

	/*
	 * OnExit
	 */
	void OnExit(GuiEventArguments& kArguments);

	/*
	 * OnResult
	 */
	void OnResult(GuiEventArguments& kArguments);

	/*
	 * OnConfirm
	 */
	void OnConfirm(GuiEventArguments& kArguments);
};

#endif //__WORLD_H__