DDraceNetwork Documentation
Loading...
Searching...
No Matches
map.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_EDITOR_MAPITEMS_MAP_H
4#define GAME_EDITOR_MAPITEMS_MAP_H
5
6#include <base/types.h>
7
10
16
17#include <functional>
18#include <memory>
19#include <vector>
20
21class CEditor;
22class CEditorImage;
23class CEditorSound;
24class CLayerFront;
25class CLayerGroup;
26class CLayerGame;
27class CLayerImage;
28class CLayerSound;
29class CLayerSpeedup;
30class CLayerSwitch;
31class CLayerTele;
32class CLayerTune;
33class CQuad;
35
37{
41
42 void Run() override;
43
44public:
45 CDataFileWriterFinishJob(const char *pRealFilename, const char *pTempFilename, CDataFileWriter &&Writer);
46 const char *GetRealFilename() const { return m_aRealFilename; }
47 const char *GetTempFilename() const { return m_aTempFilename; }
48};
49
50using FErrorHandler = std::function<void(const char *pErrorMessage)>;
51
53{
54public:
74
75 const CEditor *Editor() const { return m_pEditor; }
76 CEditor *Editor() { return m_pEditor; }
77
90 void OnModify();
91 void ResetModifiedState();
92
93 std::vector<std::shared_ptr<CLayerGroup>> m_vpGroups;
94 std::vector<std::shared_ptr<CEditorImage>> m_vpImages;
95 std::vector<std::shared_ptr<CEnvelope>> m_vpEnvelopes;
96 std::vector<std::shared_ptr<CEditorSound>> m_vpSounds;
97 std::vector<CEditorMapSetting> m_vSettings;
98
99 std::shared_ptr<CLayerGroup> m_pGameGroup;
100 std::shared_ptr<CLayerGame> m_pGameLayer;
101 std::shared_ptr<CLayerTele> m_pTeleLayer;
102 std::shared_ptr<CLayerSpeedup> m_pSpeedupLayer;
103 std::shared_ptr<CLayerFront> m_pFrontLayer;
104 std::shared_ptr<CLayerSwitch> m_pSwitchLayer;
105 std::shared_ptr<CLayerTune> m_pTuneLayer;
106
108 {
109 public:
110 char m_aAuthor[32];
111 char m_aVersion[16];
112 char m_aCredits[128];
113 char m_aLicense[32];
114
115 void Reset();
116 void Copy(const CMapInfo &Source);
117 };
120
121 // Undo/Redo
137
140
142
143 // Quad knife
145 {
146 public:
151 };
153
154 std::shared_ptr<CEnvelope> NewEnvelope(CEnvelope::EType Type);
155 void InsertEnvelope(int Index, std::shared_ptr<CEnvelope> &pEnvelope);
156 void UpdateEnvelopeReferences(int Index, std::shared_ptr<CEnvelope> &pEnvelope, std::vector<std::shared_ptr<IEditorEnvelopeReference>> &vpEditorObjectReferences);
157 std::vector<std::shared_ptr<IEditorEnvelopeReference>> DeleteEnvelope(int Index);
158 int MoveEnvelope(int IndexFrom, int IndexTo);
159 template<typename F>
160 std::vector<std::shared_ptr<IEditorEnvelopeReference>> VisitEnvelopeReferences(F &&Visitor);
161
162 std::shared_ptr<CLayerGroup> NewGroup();
163 int MoveGroup(int IndexFrom, int IndexTo);
164 void DeleteGroup(int Index);
165 void ModifyImageIndex(const FIndexModifyFunction &IndexModifyFunction);
166 void ModifyEnvelopeIndex(const FIndexModifyFunction &IndexModifyFunction);
167 void ModifySoundIndex(const FIndexModifyFunction &IndexModifyFunction);
168
169 // Housekeeping
170 void Clean();
171 void CreateDefault();
172 void CheckIntegrity();
173
174 // io
175 bool Save(const char *pFilename, const FErrorHandler &ErrorHandler);
176 bool PerformPreSaveSanityChecks(const FErrorHandler &ErrorHandler);
177 bool Load(const char *pFilename, int StorageType, const FErrorHandler &ErrorHandler);
178 void PerformSanityChecks(const FErrorHandler &ErrorHandler);
179 bool PerformAutosave(const FErrorHandler &ErrorHandler);
180
181 void MakeGameGroup(std::shared_ptr<CLayerGroup> pGroup);
182 void MakeGameLayer(const std::shared_ptr<CLayer> &pLayer);
183 void MakeTeleLayer(const std::shared_ptr<CLayer> &pLayer);
184 void MakeSpeedupLayer(const std::shared_ptr<CLayer> &pLayer);
185 void MakeFrontLayer(const std::shared_ptr<CLayer> &pLayer);
186 void MakeSwitchLayer(const std::shared_ptr<CLayer> &pLayer);
187 void MakeTuneLayer(const std::shared_ptr<CLayer> &pLayer);
188
189 std::shared_ptr<CEditorImage> SelectedImage() const;
190 void SelectImage(const std::shared_ptr<CEditorImage> &pImage);
191 void SelectNextImage();
192 void SelectPreviousImage();
193 bool IsImageUsed(int ImageIndex) const;
194 std::vector<int> SortImages();
195
196 std::shared_ptr<CEditorSound> SelectedSound() const;
197 void SelectSound(const std::shared_ptr<CEditorSound> &pSound);
198 void SelectNextSound();
199 void SelectPreviousSound();
200 bool IsSoundUsed(int SoundIndex) const;
201
202private:
204};
205
206#endif
void Run() override
Definition map_io.cpp:34
CDataFileWriter m_Writer
Definition map.h:40
const char * GetRealFilename() const
Definition map.h:46
CDataFileWriterFinishJob(const char *pRealFilename, const char *pTempFilename, CDataFileWriter &&Writer)
Definition map_io.cpp:39
char m_aRealFilename[IO_MAX_PATH_LENGTH]
Definition map.h:38
const char * GetTempFilename() const
Definition map.h:47
char m_aTempFilename[IO_MAX_PATH_LENGTH]
Definition map.h:39
Definition datafile.h:61
Definition editor_history.h:13
Definition image.h:10
Definition map.h:108
char m_aAuthor[32]
Definition map.h:110
char m_aCredits[128]
Definition map.h:112
void Copy(const CMapInfo &Source)
Definition map.cpp:24
char m_aVersion[16]
Definition map.h:111
void Reset()
Definition map.cpp:16
char m_aLicense[32]
Definition map.h:113
Definition map.h:145
int m_Count
Definition map.h:149
bool m_Active
Definition map.h:147
int m_SelectedQuadIndex
Definition map.h:148
vec2 m_aPoints[4]
Definition map.h:150
bool m_Modified
Definition map.h:83
std::shared_ptr< CLayerSwitch > m_pSwitchLayer
Definition map.h:104
CMapInfo m_MapInfoTmp
Definition map.h:119
CEditor * m_pEditor
Definition map.h:203
CSoundSourceCircleShapePropTracker m_SoundSourceCircleShapePropTracker
Definition map.h:136
CSoundSourceOperationTracker m_SoundSourceOperationTracker
Definition map.h:133
void SelectSound(const std::shared_ptr< CEditorSound > &pSound)
Definition map.cpp:586
void MakeGameGroup(std::shared_ptr< CLayerGroup > pGroup)
Definition map.cpp:411
CLayerGroupPropTracker m_LayerGroupPropTracker
Definition map.h:127
void OnModify()
Definition map.cpp:32
void InsertEnvelope(int Index, std::shared_ptr< CEnvelope > &pEnvelope)
Definition map.cpp:65
std::vector< CEditorMapSetting > m_vSettings
Definition map.h:97
void MakeTuneLayer(const std::shared_ptr< CLayer > &pLayer)
Definition map.cpp:438
std::shared_ptr< CEditorImage > SelectedImage() const
Definition map.cpp:443
float m_LastSaveTime
Definition map.h:89
bool PerformPreSaveSanityChecks(const FErrorHandler &ErrorHandler)
Definition map_io.cpp:421
CEditorHistory m_EditorHistory
Definition map.h:122
std::vector< std::shared_ptr< CLayerGroup > > m_vpGroups
Definition map.h:93
std::vector< std::shared_ptr< CEditorImage > > m_vpImages
Definition map.h:94
void ResetModifiedState()
Definition map.cpp:39
char m_aFilename[IO_MAX_PATH_LENGTH]
Definition map.h:78
int m_ShiftBy
Definition map.h:141
std::shared_ptr< CLayerTele > m_pTeleLayer
Definition map.h:101
void ModifyEnvelopeIndex(const FIndexModifyFunction &IndexModifyFunction)
Definition map.cpp:221
void SelectNextSound()
Definition map.cpp:598
std::shared_ptr< CEnvelope > NewEnvelope(CEnvelope::EType Type)
Definition map.cpp:47
void SelectPreviousImage()
Definition map.cpp:489
void SelectPreviousSound()
Definition map.cpp:603
bool Load(const char *pFilename, int StorageType, const FErrorHandler &ErrorHandler)
Definition map_io.cpp:449
void DeleteGroup(int Index)
Definition map.cpp:204
void ModifyImageIndex(const FIndexModifyFunction &IndexModifyFunction)
Definition map.cpp:212
std::shared_ptr< CLayerFront > m_pFrontLayer
Definition map.h:103
std::vector< std::shared_ptr< CEditorSound > > m_vpSounds
Definition map.h:96
void Clean()
Definition map.cpp:239
CEnvelopeEditorOperationTracker m_EnvOpTracker
Definition map.h:126
CEditorHistory m_ServerSettingsHistory
Definition map.h:123
CLayerSoundsPropTracker m_LayerSoundsPropTracker
Definition map.h:132
std::vector< std::shared_ptr< IEditorEnvelopeReference > > DeleteEnvelope(int Index)
Definition map.cpp:80
CEditorHistory m_EnvelopeEditorHistory
Definition map.h:124
int MoveGroup(int IndexFrom, int IndexTo)
Definition map.cpp:189
CEditorMap(CEditor *pEditor)
Definition map.h:55
float m_LastModifiedTime
Definition map.h:88
CLayerTilesCommonPropTracker m_LayerTilesCommonPropTracker
Definition map.h:129
void CreateDefault()
Definition map.cpp:278
void MakeSpeedupLayer(const std::shared_ptr< CLayer > &pLayer)
Definition map.cpp:423
std::vector< std::shared_ptr< IEditorEnvelopeReference > > VisitEnvelopeReferences(F &&Visitor)
Definition map.cpp:131
const CEditor * Editor() const
Definition map.h:75
CLayerQuadsPropTracker m_LayerQuadPropTracker
Definition map.h:131
CMapInfo m_MapInfo
Definition map.h:118
CSoundSourcePropTracker m_SoundSourcePropTracker
Definition map.h:134
void MakeTeleLayer(const std::shared_ptr< CLayer > &pLayer)
Definition map.cpp:418
std::vector< std::shared_ptr< CEnvelope > > m_vpEnvelopes
Definition map.h:95
bool IsSoundUsed(int SoundIndex) const
Definition map.cpp:608
CQuadEditTracker m_QuadTracker
Definition map.h:125
CLayerTilesPropTracker m_LayerTilesPropTracker
Definition map.h:130
bool PerformAutosave(const FErrorHandler &ErrorHandler)
Definition map_io.cpp:1098
bool m_ModifiedAuto
Definition map.h:87
void UpdateEnvelopeReferences(int Index, std::shared_ptr< CEnvelope > &pEnvelope, std::vector< std::shared_ptr< IEditorEnvelopeReference > > &vpEditorObjectReferences)
Definition map.cpp:73
void MakeSwitchLayer(const std::shared_ptr< CLayer > &pLayer)
Definition map.cpp:433
std::shared_ptr< CLayerGroup > m_pGameGroup
Definition map.h:99
CSoundSourceRectShapePropTracker m_SoundSourceRectShapePropTracker
Definition map.h:135
void SelectImage(const std::shared_ptr< CEditorImage > &pImage)
Definition map.cpp:452
void MakeGameLayer(const std::shared_ptr< CLayer > &pLayer)
Definition map.cpp:406
std::vector< int > SortImages()
Definition map.cpp:541
bool Save(const char *pFilename, const FErrorHandler &ErrorHandler)
Definition map_io.cpp:46
void MakeFrontLayer(const std::shared_ptr< CLayer > &pLayer)
Definition map.cpp:428
bool m_ValidSaveFilename
Definition map.h:79
CEditor * Editor()
Definition map.h:76
void CheckIntegrity()
Definition map.cpp:303
int m_SelectedImage
Definition map.h:138
CLayerPropTracker m_LayerPropTracker
Definition map.h:128
std::shared_ptr< CLayerSpeedup > m_pSpeedupLayer
Definition map.h:102
void PerformSanityChecks(const FErrorHandler &ErrorHandler)
Definition map_io.cpp:1063
bool IsImageUsed(int ImageIndex) const
Definition map.cpp:514
void SelectNextImage()
Definition map.cpp:464
CQuadKnife m_QuadKnife
Definition map.h:152
std::shared_ptr< CLayerGame > m_pGameLayer
Definition map.h:100
std::shared_ptr< CEditorSound > SelectedSound() const
Definition map.cpp:577
int MoveEnvelope(int IndexFrom, int IndexTo)
Definition map.cpp:102
std::shared_ptr< CLayerTune > m_pTuneLayer
Definition map.h:105
void ModifySoundIndex(const FIndexModifyFunction &IndexModifyFunction)
Definition map.cpp:230
int m_SelectedSound
Definition map.h:139
std::shared_ptr< CLayerGroup > NewGroup()
Definition map.cpp:181
Definition sound.h:9
Definition editor.h:108
Definition editor_trackers.h:76
EType
Definition envelope.h:18
Definition layer_front.h:7
Definition layer_game.h:7
Definition editor_trackers.h:246
Definition layer_group.h:12
Definition editor_trackers.h:197
Definition editor_trackers.h:257
Definition editor_trackers.h:268
Definition layer_speedup.h:20
Definition layer_switch.h:20
Definition layer_tele.h:18
Definition editor_trackers.h:225
Definition editor_trackers.h:208
Definition layer_tune.h:18
Definition editor_trackers.h:21
Definition mapitems.h:337
Definition editor_trackers.h:301
Definition editor_trackers.h:102
Definition editor_trackers.h:279
Definition editor_trackers.h:290
Definition references.h:13
IJob()
Definition jobs.cpp:7
std::function< void(const char *pErrorMessage)> FErrorHandler
Definition map.h:50
std::function< void(int *pIndex)> FIndexModifyFunction
Definition layer.h:11
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:49
vector2_base< float > vec2
Definition vmath.h:161