/*******************/ /*** Layer Thing ***/ /*******************/ #ifndef __LAYER_THING_HEADER__ #define __LAYER_THING_HEADER__ #include "Layer.h" #include "MapEdit.h" #include "GUIToolbar.h" #include "Elem.h" /*****************************************************************************/ struct sLayerThing { std::vector XY; int Type; int SubType; int Spare[8]; bool operator==(sLayerThing const &v1) { if (XY[0]!=v1.XY[0]) return(false); return(true); } }; /*****************************************************************************/ class CIni; class CLayerThing : public CLayer { public: enum MouseMode { MouseModeNormal=0, MouseModePoints, }; CLayerThing(){}; CLayerThing(sLayerDef &Def); // New Layer CLayerThing(CFile *File,int Version) {Load(File,Version);} ~CLayerThing(); void InitLayer(sLayerDef &Def); virtual void InitSubView(CCore *Core); virtual void Render(CCore *Core,Vector3 &CamPos,bool Is3d); void RenderCursor(CCore *Core,Vector3 &CamPos,bool Is3d); virtual void GUIInit(CCore *Core); virtual void GUIKill(CCore *Core); virtual void GUIUpdate(CCore *Core); virtual void GUIChanged(CCore *Core); int GetWidth() {return(Width);} int GetHeight() {return(Height);} virtual void Load(CFile *File,int Version); virtual void Save(CFile *File); virtual void LoadThingScript(const char *Filename); virtual void Export(CCore *Core,CExport &Exp); // Functions virtual bool LButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag); virtual bool RButtonControl(CCore *Core,UINT nFlags, CPoint &point,bool DownFlag); virtual bool MouseMove(CCore *Core,UINT nFlags, CPoint &point); virtual bool Command(int CmdMsg,CCore *Core,int Param0=0,int Param1=0); protected: void RenderThing(CCore *Core,Vector3 &CamPos,sLayerThing &ThisThing,bool Render3d,bool Selected); int CheckThing(CPoint &Pos); void AddThing(CPoint &Pos); void SelectThing(CPoint &Pos); int CheckThingPoint(CPoint &Pos); void AddThingPoint(CPoint &Pos); void SelectThingPoint(CPoint &Pos); void UpdatePos(CPoint &Pos,int Thing,int PosNo,bool Recurs=false); int Width,Height; CIni ThingScript; CElemBank *ThingBank; CList ThingList; int CurrentThing,CurrentPoint; MouseMode Mode; }; /*****************************************************************************/ #endif