2023-09-05 12:03:10 +00:00
|
|
|
#ifndef GAME_EDITOR_MAPITEMS_LAYER_H
|
|
|
|
#define GAME_EDITOR_MAPITEMS_LAYER_H
|
|
|
|
|
|
|
|
#include <base/system.h>
|
|
|
|
#include <game/client/ui.h>
|
|
|
|
#include <game/client/ui_rect.h>
|
|
|
|
#include <game/mapitems.h>
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
using FIndexModifyFunction = std::function<void(int *pIndex)>;
|
|
|
|
|
|
|
|
class CLayerGroup;
|
|
|
|
|
|
|
|
class CLayer
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
class CEditor *m_pEditor;
|
|
|
|
class IGraphics *Graphics();
|
|
|
|
class ITextRender *TextRender();
|
|
|
|
|
2023-09-05 13:16:41 +00:00
|
|
|
explicit CLayer(CEditor *pEditor)
|
2023-09-05 12:03:10 +00:00
|
|
|
{
|
|
|
|
m_Type = LAYERTYPE_INVALID;
|
|
|
|
str_copy(m_aName, "(invalid)");
|
|
|
|
m_Visible = true;
|
|
|
|
m_Readonly = false;
|
|
|
|
m_Flags = 0;
|
2023-09-05 13:16:41 +00:00
|
|
|
m_pEditor = pEditor;
|
2023-09-05 12:03:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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<CLayerGroup> pBrush, CUIRect Rect) { return 0; }
|
|
|
|
virtual void FillSelection(bool Empty, std::shared_ptr<CLayer> pBrush, CUIRect Rect) {}
|
|
|
|
virtual void BrushDraw(std::shared_ptr<CLayer> pBrush, float x, float y) {}
|
|
|
|
virtual void BrushPlace(std::shared_ptr<CLayer> 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<CLayer> Duplicate() const = 0;
|
2023-10-02 13:14:38 +00:00
|
|
|
virtual const char *TypeName() const = 0;
|
2023-09-05 12:03:10 +00:00
|
|
|
|
|
|
|
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
|