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

#if !defined(AFX_EDGAMEOBJECT_H__1A00EDB6_F215_4A9E_AD26_EC9DF30765E1__INCLUDED_)
#define AFX_EDGAMEOBJECT_H__1A00EDB6_F215_4A9E_AD26_EC9DF30765E1__INCLUDED_

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

#include "EdGUIObject.h"
#include <Adept\Entity.hpp>
#include <MW4\AI.hpp>

class UndoCommand;
using namespace MechWarrior4;

class EdGameObject : public EdGUIObject  
{
private:

protected:
	bool DrawFromOBB;
	bool UseGameCollsion;
	void Copy(EdGameObject &obj);
	Adept::Entity *MyEntity;
	CString ResourcePath;
	CString m_ScriptName,AIType;
	float MemoryCell[DEFAULT_MEMORYCELL_VALUES];
	virtual void BuildDisplayInfoFromData();
	bool InRadius( Point3D &pnt); 
	void PickPen();
	int Alignment;
	char Skin;
	void BuildRadius();
	CString SkinToText(char skin);
	bool Changeable;

public:
	Adept::Entity* GetMyEntity() {return MyEntity; }
	CString GetResourceName();
	CString GetResourcePath() {return ResourcePath; }

	bool CanChangeType() {return Changeable;}
	void SaveTextInfo(NotationFile *not_file);	
	void SetInfo(Page *page);	

	bool IsInvulnerable();
	void SetInvulnerable(bool);
	CString GetSkinText() { return (SkinToText(Skin)); }
	char GetSkin() 	{return Skin;}
 	void SetSkin(char skin);
	void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd);
	bool IsMultiZone();
	bool IsMultiTile();		
	void SelectMultiZone();	
	void SelectMultiTile();	
	void SetAlignment(int align);	
	int GetAlignment();	
	void RemoveFromMap();
	void AddToMap();
	void Clear();
	void UpdateVisibility(DWORD visflag);
	void MakeVisible(DWORD *visflag);
	bool HasLocalizedName();
	void UseLocalizedName(bool flag);
	void FillSkinList(CComboBox *ctrl);

	void ChangeTo(CString &path); 
	void BuildFrom(CString &path,CString &name);
	CString GetTypeName();
	void SetName( CString &name);
	void UpdateMat();
	void Dissociate() {  MyEntity=NULL; InMap=false;}
	void AssociateTo(Adept::Entity *entity); 
	EdGUIObject *Clone();

	CString  GetScriptName();
	void SetScriptName(CString script_name);
	void GetMultiProps(CObjProps *props);
	void SetMultiProps(CObjProps *props,UndoCommand **cmd);

	CString GetAIType();
	CString GetBestAIType() const;
	void FillValidAITypes(CComboBox *con);
	bool HasAI() const;

	void SetAIType(const CString& type);
	void SetDefaultAI();

	void SetMemoryCell(int cell, Scalar value);
	Scalar GetMemoryCell(int cell) const;


	CString GetTag(unsigned long tag_flags);

	int AddToList(CObjManListCtrl *list,unsigned long tag_flags);
	void Draw(DrawInfo &dinf);
	void DrawTileViolation(DrawInfo &dinf); 

	int GetUnSelIcon();
	int GetSelIcon()   {return GetUnSelIcon();}

	EdGameObject();
	virtual ~EdGameObject();

};

#endif // !defined(AFX_EDGAMEOBJECT_H__1A00EDB6_F215_4A9E_AD26_EC9DF30765E1__INCLUDED_)
