// EditorApplication.h: interface for the EditorApplication class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_EDITORAPPLICATION_H__D3167DE3_61B5_49C9_A1F6_BBF3E6CB99AB__INCLUDED_)
#define AFX_EDITORAPPLICATION_H__D3167DE3_61B5_49C9_A1F6_BBF3E6CB99AB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


#include <MW4\MW4.hpp>

using namespace MechWarrior4;
using namespace Adept;
using namespace Stuff;


#include <MW4\MWApplication.hpp>

enum
{
	EditorApplicationClassID = MechWarrior4::FirstFreeMW4ClassID,
};

	//##########################################################################
	//#####################    EditorApplicaion    #########################
	//##########################################################################


	class EditorApplication:
		public MechWarrior4::MWApplication
	{
	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	//
	public:

		static void
			InitializeClass();
		static void
			TerminateClass();

		EditorApplication();
		~EditorApplication();

		static EditorApplication*
			Make();

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Message Support
	//
	public:

		void
			LoadGameMessageHandler(int connection, Stuff::MemoryStream *message);
		void
			EnterRunningGameState(void* data);
		void
			PauseGameMessageHandler(const PauseGameMessage *message);
		void
			LoadMissionResources(const char *mission_name);

		Entity::CreateMessage *
			MakePlayerCreationMessage(int player_id);

	protected:
		static const MessageEntry
			MessageEntries[];

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	//
	public:
		static ClassData
			*DefaultData;

   };


#endif // !defined(AFX_EDITORAPPLICATION_H__D3167DE3_61B5_49C9_A1F6_BBF3E6CB99AB__INCLUDED_)
