1#ifndef GAME_EDITOR_MAPITEMS_LAYER_H
2#define GAME_EDITOR_MAPITEMS_LAYER_H
3
4#include <game/client/ui.h>
5#include <game/client/ui_rect.h>
6#include <game/editor/map_object.h>
7#include <game/mapitems.h>
8
9#include <memory>
10
11using FIndexModifyFunction = std::function<void(int *pIndex)>;
12
13class CLayerGroup;
14
15class CLayer : public CMapObject
16{
17public:
18 explicit CLayer(CEditorMap *pMap, int Type);
19 CLayer(const CLayer &Other);
20
21 virtual void BrushSelecting(CUIRect Rect) {}
22 virtual int BrushGrab(CLayerGroup *pBrush, CUIRect Rect) { return 0; }
23 virtual void FillSelection(bool Empty, CLayer *pBrush, CUIRect Rect) {}
24 virtual void BrushDraw(CLayer *pBrush, vec2 WorldPos) {}
25 virtual void BrushPlace(CLayer *pBrush, vec2 WorldPos) {}
26 virtual void BrushFlipX() {}
27 virtual void BrushFlipY() {}
28 virtual void BrushRotate(float Amount) {}
29
30 virtual bool IsEntitiesLayer() const { return false; }
31
32 virtual void Render(bool Tileset = false) {}
33 virtual CUi::EPopupMenuFunctionResult RenderProperties(CUIRect *pToolbox) { return CUi::POPUP_KEEP_OPEN; }
34
35 virtual void ModifyImageIndex(const FIndexModifyFunction &IndexModifyFunction) {}
36 virtual void ModifyEnvelopeIndex(const FIndexModifyFunction &IndexModifyFunction) {}
37 virtual void ModifySoundIndex(const FIndexModifyFunction &IndexModifyFunction) {}
38
39 virtual std::shared_ptr<CLayer> Duplicate() const = 0;
40 virtual const char *TypeName() const = 0;
41
42 virtual void GetSize(float *pWidth, float *pHeight)
43 {
44 *pWidth = 0;
45 *pHeight = 0;
46 }
47 int m_Type;
48 char m_aName[12] = "";
49 int m_Flags = 0;
50
51 bool m_Readonly = false;
52 bool m_Visible = true;
53};
54
55#endif
56