#ifndef GAME_EDITOR_MAPITEMS_LAYER_H #define GAME_EDITOR_MAPITEMS_LAYER_H #include #include #include #include #include using FIndexModifyFunction = std::function; class CLayerGroup; class CLayer { public: class CEditor *m_pEditor; class IGraphics *Graphics(); class ITextRender *TextRender(); CLayer() { m_Type = LAYERTYPE_INVALID; str_copy(m_aName, "(invalid)"); m_Visible = true; m_Readonly = false; m_Flags = 0; m_pEditor = nullptr; } CLayer(const CLayer &Other) { str_copy(m_aName, Other.m_aName); m_Flags = Other.m_Flags; m_pEditor = Other.m_pEditor; m_Type = Other.m_Type; m_Visible = true; m_Readonly = false; } virtual ~CLayer() { } virtual void BrushSelecting(CUIRect Rect) {} virtual int BrushGrab(std::shared_ptr pBrush, CUIRect Rect) { return 0; } virtual void FillSelection(bool Empty, std::shared_ptr pBrush, CUIRect Rect) {} virtual void BrushDraw(std::shared_ptr pBrush, float x, float y) {} virtual void BrushPlace(std::shared_ptr pBrush, float x, float y) {} virtual void BrushFlipX() {} virtual void BrushFlipY() {} virtual void BrushRotate(float Amount) {} virtual bool IsEntitiesLayer() const { return false; } virtual void Render(bool Tileset = false) {} virtual CUI::EPopupMenuFunctionResult RenderProperties(CUIRect *pToolbox) { return CUI::POPUP_KEEP_OPEN; } virtual void ModifyImageIndex(FIndexModifyFunction pfnFunc) {} virtual void ModifyEnvelopeIndex(FIndexModifyFunction pfnFunc) {} virtual void ModifySoundIndex(FIndexModifyFunction pfnFunc) {} virtual std::shared_ptr Duplicate() const = 0; virtual void GetSize(float *pWidth, float *pHeight) { *pWidth = 0; *pHeight = 0; } char m_aName[12]; int m_Type; int m_Flags; bool m_Readonly; bool m_Visible; }; #endif