1#ifndef GAME_EDITOR_MAPITEMS_LAYER_TUNE_H
2#define GAME_EDITOR_MAPITEMS_LAYER_TUNE_H
3
4#include "layer_tiles.h"
5
6struct STuneTileStateChange
7{
8 bool m_Changed;
9 struct SData
10 {
11 int m_Number;
12 int m_Type;
13 int m_Index;
14 } m_Previous, m_Current;
15};
16
17class CLayerTune : public CLayerTiles
18{
19public:
20 CLayerTune(CEditorMap *pMap, int w, int h);
21 CLayerTune(const CLayerTune &Other);
22 ~CLayerTune() override;
23
24 CTuneTile *m_pTuneTile;
25 unsigned char m_TuningNumber;
26
27 void Resize(int NewW, int NewH) override;
28 void Shift(EShiftDirection Direction) override;
29 [[nodiscard]] bool IsEmpty() const override;
30 void BrushDraw(CLayer *pBrush, vec2 WorldPos) override;
31 void BrushFlipX() override;
32 void BrushFlipY() override;
33 void BrushRotate(float Amount) override;
34 void FillSelection(bool Empty, CLayer *pBrush, CUIRect Rect) override;
35 int FindNextFreeNumber() const;
36 bool ContainsElementWithId(int Id) const;
37 void GetPos(int Number, int Offset, ivec2 &Pos);
38
39 int m_GotoTuneOffset;
40 ivec2 m_GotoTuneLastPos;
41
42 EditorTileStateChangeHistory<STuneTileStateChange> m_History;
43 void ClearHistory() override
44 {
45 CLayerTiles::ClearHistory();
46 m_History.clear();
47 }
48
49 std::shared_ptr<CLayer> Duplicate() const override;
50 const char *TypeName() const override;
51
52private:
53 void RecordStateChange(int x, int y, STuneTileStateChange::SData Previous, STuneTileStateChange::SData Current);
54};
55
56#endif
57