DDraceNetwork Docs
editor.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_EDITOR_H
4#define GAME_EDITOR_EDITOR_H
5
6#include <base/bezier.h>
7#include <base/system.h>
8
10#include <game/client/ui.h>
12#include <game/mapitems.h>
13
14#include <game/editor/enums.h>
27
28#include <engine/console.h>
29#include <engine/editor.h>
30#include <engine/engine.h>
31#include <engine/graphics.h>
33#include <engine/shared/jobs.h>
34
35#include "editor_history.h"
37#include "editor_trackers.h"
38#include "editor_ui.h"
39#include "layer_selector.h"
40#include "map_view.h"
41#include "smooth_value.h"
42#include <game/editor/prompt.h>
44
45#include <deque>
46#include <functional>
47#include <map>
48#include <memory>
49#include <string>
50#include <vector>
51
52typedef std::function<void(int *pIndex)> FIndexModifyFunction;
53template<typename T>
54using FDropdownRenderCallback = std::function<void(const T &, char (&aOutput)[128], std::vector<STextColorSplit> &)>;
55
56// CEditor SPECIFIC
57enum
58{
63
68};
69
70class CEditorImage;
71class CEditorSound;
72
74{
75 void MakeGameGroup(std::shared_ptr<CLayerGroup> pGroup);
76 void MakeGameLayer(const std::shared_ptr<CLayer> &pLayer);
77
78public:
80
82 {
83 Clean();
84 }
85
87 {
88 Clean();
89 }
90
91 bool m_Modified; // unsaved changes in manual save
92 bool m_ModifiedAuto; // unsaved changes in autosave
96 void OnModify();
97
98 std::vector<std::shared_ptr<CLayerGroup>> m_vpGroups;
99 std::vector<std::shared_ptr<CEditorImage>> m_vpImages;
100 std::vector<std::shared_ptr<CEnvelope>> m_vpEnvelopes;
101 std::vector<std::shared_ptr<CEditorSound>> m_vpSounds;
102
104 {
105 public:
106 char m_aAuthor[32];
107 char m_aVersion[16];
108 char m_aCredits[128];
109 char m_aLicense[32];
110
111 void Reset()
112 {
113 m_aAuthor[0] = '\0';
114 m_aVersion[0] = '\0';
115 m_aCredits[0] = '\0';
116 m_aLicense[0] = '\0';
117 }
118
119 void Copy(const CMapInfo &Source)
120 {
125 }
126 };
129
130 std::vector<CEditorMapSetting> m_vSettings;
131
132 std::shared_ptr<class CLayerGame> m_pGameLayer;
133 std::shared_ptr<CLayerGroup> m_pGameGroup;
134
135 std::shared_ptr<CEnvelope> NewEnvelope(CEnvelope::EType Type)
136 {
137 OnModify();
138 std::shared_ptr<CEnvelope> pEnv = std::make_shared<CEnvelope>(Type);
139 m_vpEnvelopes.push_back(pEnv);
140 return pEnv;
141 }
142
143 void DeleteEnvelope(int Index);
144 void SwapEnvelopes(int Index0, int Index1);
145 template<typename F>
146 void VisitEnvelopeReferences(F &&Visitor);
147
148 std::shared_ptr<CLayerGroup> NewGroup()
149 {
150 OnModify();
151 std::shared_ptr<CLayerGroup> pGroup = std::make_shared<CLayerGroup>();
152 pGroup->m_pMap = this;
153 m_vpGroups.push_back(pGroup);
154 return pGroup;
155 }
156
157 int SwapGroups(int Index0, int Index1)
158 {
159 if(Index0 < 0 || Index0 >= (int)m_vpGroups.size())
160 return Index0;
161 if(Index1 < 0 || Index1 >= (int)m_vpGroups.size())
162 return Index0;
163 if(Index0 == Index1)
164 return Index0;
165 OnModify();
166 std::swap(m_vpGroups[Index0], m_vpGroups[Index1]);
167 return Index1;
168 }
169
170 void DeleteGroup(int Index)
171 {
172 if(Index < 0 || Index >= (int)m_vpGroups.size())
173 return;
174 OnModify();
175 m_vpGroups.erase(m_vpGroups.begin() + Index);
176 }
177
179 {
180 OnModify();
181 for(auto &pGroup : m_vpGroups)
182 pGroup->ModifyImageIndex(pfnFunc);
183 }
184
186 {
187 OnModify();
188 for(auto &pGroup : m_vpGroups)
189 pGroup->ModifyEnvelopeIndex(pfnFunc);
190 }
191
193 {
194 OnModify();
195 for(auto &pGroup : m_vpGroups)
196 pGroup->ModifySoundIndex(pfnFunc);
197 }
198
199 void Clean();
200 void CreateDefault(IGraphics::CTextureHandle EntitiesTexture);
201
202 // io
203 bool Save(const char *pFilename, const std::function<void(const char *pErrorMessage)> &ErrorHandler);
204 bool PerformPreSaveSanityChecks(const std::function<void(const char *pErrorMessage)> &ErrorHandler);
205 bool Load(const char *pFilename, int StorageType, const std::function<void(const char *pErrorMessage)> &ErrorHandler);
206 void PerformSanityChecks(const std::function<void(const char *pErrorMessage)> &ErrorHandler);
207
208 // DDRace
209
210 std::shared_ptr<class CLayerTele> m_pTeleLayer;
211 std::shared_ptr<class CLayerSpeedup> m_pSpeedupLayer;
212 std::shared_ptr<class CLayerFront> m_pFrontLayer;
213 std::shared_ptr<class CLayerSwitch> m_pSwitchLayer;
214 std::shared_ptr<class CLayerTune> m_pTuneLayer;
215 void MakeTeleLayer(const std::shared_ptr<CLayer> &pLayer);
216 void MakeSpeedupLayer(const std::shared_ptr<CLayer> &pLayer);
217 void MakeFrontLayer(const std::shared_ptr<CLayer> &pLayer);
218 void MakeSwitchLayer(const std::shared_ptr<CLayer> &pLayer);
219 void MakeTuneLayer(const std::shared_ptr<CLayer> &pLayer);
220};
221
223{
224public:
225 CProperty(const char *pName, int Value, int Type, int Min, int Max) :
226 m_pName(pName), m_Value(Value), m_Type(Type), m_Min(Min), m_Max(Max) {}
227
228 CProperty(std::nullptr_t) :
229 m_pName(nullptr), m_Value(0), m_Type(0), m_Min(0), m_Max(0) {}
230
231 const char *m_pName;
234 int m_Min;
235 int m_Max;
236};
237
238enum
239{
251};
252
254{
258
259 void Run() override
260 {
262 }
263
264public:
265 CDataFileWriterFinishJob(const char *pRealFileName, const char *pTempFileName, CDataFileWriter &&Writer) :
266 m_Writer(std::move(Writer))
267 {
268 str_copy(m_aRealFileName, pRealFileName);
269 str_copy(m_aTempFileName, pTempFileName);
270 }
271
272 const char *GetRealFileName() const { return m_aRealFileName; }
273 const char *GetTempFileName() const { return m_aTempFileName; }
274};
275
276class CEditor : public IEditor
277{
278 class IInput *m_pInput = nullptr;
279 class IClient *m_pClient = nullptr;
281 class CConfig *m_pConfig = nullptr;
282 class IConsole *m_pConsole = nullptr;
283 class IEngine *m_pEngine = nullptr;
284 class IGraphics *m_pGraphics = nullptr;
285 class ITextRender *m_pTextRender = nullptr;
286 class ISound *m_pSound = nullptr;
287 class IStorage *m_pStorage = nullptr;
290
291 std::vector<std::reference_wrapper<CEditorComponent>> m_vComponents;
295
297
299
305
306 int GetTextureUsageFlag() const;
307
309 {
313 };
314
315 std::shared_ptr<CLayerGroup> m_apSavedBrushes[10];
317
318public:
319 class IInput *Input() const { return m_pInput; }
320 class IClient *Client() const { return m_pClient; }
322 class CConfig *Config() const { return m_pConfig; }
323 class IConsole *Console() const { return m_pConsole; }
324 class IEngine *Engine() const { return m_pEngine; }
325 class IGraphics *Graphics() const { return m_pGraphics; }
326 class ISound *Sound() const { return m_pSound; }
327 class ITextRender *TextRender() const { return m_pTextRender; }
328 class IStorage *Storage() const { return m_pStorage; }
329 CUi *Ui() { return &m_UI; }
331
332 CMapView *MapView() { return &m_MapView; }
333 const CMapView *MapView() const { return &m_MapView; }
335
336 void SelectNextLayer();
337 void SelectPreviousLayer();
338
339 void FillGameTiles(EGameTileOp FillTile) const;
340 bool CanFillGameTiles() const;
341 void AddQuadOrSound();
342 void AddGroup();
343 void AddSoundLayer();
344 void AddTileLayer();
345 void AddQuadsLayer();
346 void AddSwitchLayer();
347 void AddFrontLayer();
348 void AddTuneLayer();
349 void AddSpeedupLayer();
350 void AddTeleLayer();
351 void DeleteSelectedLayer();
352 void LayerSelectImage();
353 bool IsNonGameTileLayerSelected() const;
354 void MapDetails();
355 void TestMapLocally();
356#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description) CQuickAction m_QuickAction##name;
358#undef REGISTER_QUICK_ACTION
359
361#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description) m_QuickAction##name(text, description, callback, disabled, active, button_color),
362#include <game/editor/quick_actions.h>
364 m_ZoomEnvelopeX(1.0f, 0.1f, 600.0f),
365 m_ZoomEnvelopeY(640.0f, 0.1f, 32000.0f),
367 {
374
376 m_Dialog = 0;
377
378 m_BrushColorEnabled = true;
379
380 m_aFileName[0] = '\0';
381 m_aFileNamePending[0] = '\0';
382 m_aFileSaveName[0] = '\0';
383 m_ValidSaveFilename = false;
384
385 m_PopupEventActivated = false;
387
391 m_pFileDialogTitle = nullptr;
392 m_pFileDialogButtonText = nullptr;
393 m_pFileDialogUser = nullptr;
395 m_aFileDialogCurrentLink[0] = '\0';
396 m_aFilesSelectedName[0] = '\0';
398 m_FileDialogOpening = false;
400
404
406
407 m_SelectEntitiesImage = "DDNet";
408
409 m_ResetZoomEnvelope = true;
410 m_OffsetEnvelopeX = 0.1f;
411 m_OffsetEnvelopeY = 0.5f;
412
413 m_ShowMousePointer = true;
414
415 m_GuiActive = true;
416 m_PreviewZoom = false;
417
419 m_ShowDetail = true;
420 m_Animate = false;
421 m_AnimateStart = 0;
422 m_AnimateTime = 0;
423 m_AnimateSpeed = 1;
424 m_AnimateUpdatePopup = false;
425
428
430 m_UpdateEnvPointInfo = false;
431 m_SelectedTangentInPoint = std::pair(-1, -1);
432 m_SelectedTangentOutPoint = std::pair(-1, -1);
434
435 m_QuadKnifeActive = false;
438
439 for(size_t i = 0; i < std::size(m_aSavedColors); ++i)
440 {
441 m_aSavedColors[i] = color_cast<ColorRGBA>(ColorHSLA(i / (float)std::size(m_aSavedColors), 1.0f, 0.5f));
442 }
443
445 for(auto &CursorTexture : m_aCursorTextures)
446 CursorTexture.Invalidate();
447
449
450 ms_pUiGotContext = nullptr;
451
452 // DDRace
453
454 m_TeleNumber = 1;
457
458 m_SwitchNum = 1;
459 m_TuningNum = 1;
460 m_SwitchDelay = 0;
461 m_SpeedupForce = 50;
463 m_SpeedupAngle = 0;
464 m_LargeLayerWasWarned = false;
468 }
469
471 {
472 public:
473 CHoverTile(int Group, int Layer, int x, int y, const CTile Tile) :
474 m_Group(Group),
475 m_Layer(Layer),
476 m_X(x),
477 m_Y(y),
478 m_Tile(Tile)
479 {
480 }
481
484 int m_X;
485 int m_Y;
487 };
488 std::vector<CHoverTile> m_vHoverTiles;
489 const std::vector<CHoverTile> &HoverTiles() const { return m_vHoverTiles; }
490
491 void Init() override;
492 void OnUpdate() override;
493 void OnRender() override;
494 void OnActivate() override;
495 void OnWindowResize() override;
496 void OnClose() override;
497 void OnDialogClose() override;
498 bool HasUnsavedData() const override { return m_Map.m_Modified; }
499 void UpdateMentions() override { m_Mentions++; }
500 void ResetMentions() override { m_Mentions = 0; }
501 void OnIngameMoved() override { m_IngameMoved = true; }
502 void ResetIngameMoved() override { m_IngameMoved = false; }
503
505 void OnMouseMove(vec2 MousePos);
506 void HandleAutosave();
507 bool PerformAutosave();
509
511 void FilelistPopulate(int StorageType, bool KeepSelection = false);
512 void InvokeFileDialog(int StorageType, int FileType, const char *pTitle, const char *pButtonText,
513 const char *pBasepath, bool FilenameAsDefault,
514 bool (*pfnFunc)(const char *pFilename, int StorageType, void *pUser), void *pUser);
516 {
517 bool operator()(const char *pLhs, const char *pRhs) const
518 {
519 return str_comp(pLhs, pRhs) < 0;
520 }
521 };
522 std::map<const char *, CUi::SMessagePopupContext *, SStringKeyComparator> m_PopupMessageContexts;
523 void ShowFileDialogError(const char *pFormat, ...)
524 GNUC_ATTRIBUTE((format(printf, 2, 3)));
525
526 void Reset(bool CreateDefault = true);
527 bool Save(const char *pFilename) override;
528 bool Load(const char *pFilename, int StorageType) override;
529 bool HandleMapDrop(const char *pFilename, int StorageType) override;
530 bool Append(const char *pFilename, int StorageType, bool IgnoreHistory = false);
531 void LoadCurrentMap();
532 void Render();
533
534 void RenderPressedKeys(CUIRect View);
537 void UpdateColorPipette();
538 void RenderMousePointer();
539 void RenderGameEntities(const std::shared_ptr<CLayerTiles> &pTiles);
540
541 std::vector<CQuad *> GetSelectedQuads();
542 std::shared_ptr<CLayer> GetSelectedLayerType(int Index, int Type) const;
543 std::shared_ptr<CLayer> GetSelectedLayer(int Index) const;
544 std::shared_ptr<CLayerGroup> GetSelectedGroup() const;
546 void SelectLayer(int LayerIndex, int GroupIndex = -1);
547 void AddSelectedLayer(int LayerIndex);
548 void SelectQuad(int Index);
549 void ToggleSelectQuad(int Index);
550 void DeselectQuads();
551 void DeselectQuadPoints();
552 void SelectQuadPoint(int QuadIndex, int Index);
553 void ToggleSelectQuadPoint(int QuadIndex, int Index);
554 void DeleteSelectedQuads();
555 bool IsQuadSelected(int Index) const;
556 bool IsQuadCornerSelected(int Index) const;
557 bool IsQuadPointSelected(int QuadIndex, int Index) const;
558 int FindSelectedQuadIndex(int Index) const;
559
560 int FindEnvPointIndex(int Index, int Channel) const;
561 void SelectEnvPoint(int Index);
562 void SelectEnvPoint(int Index, int Channel);
563 void ToggleEnvPoint(int Index, int Channel);
564 bool IsEnvPointSelected(int Index, int Channel) const;
565 bool IsEnvPointSelected(int Index) const;
566 void DeselectEnvPoints();
567 void SelectTangentOutPoint(int Index, int Channel);
568 bool IsTangentOutPointSelected(int Index, int Channel) const;
569 void SelectTangentInPoint(int Index, int Channel);
570 bool IsTangentInPointSelected(int Index, int Channel) const;
571 bool IsTangentInSelected() const;
572 bool IsTangentOutSelected() const;
573 bool IsTangentSelected() const;
574 std::pair<int, int> EnvGetSelectedTimeAndValue() const;
575
576 template<typename E>
577 SEditResult<E> DoPropertiesWithState(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
578 int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
579
581 const void *m_pColorPickerPopupActiveId = nullptr;
582 void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function<void(ColorRGBA Color)> &SetColor);
583
586 char m_aTooltip[256] = "";
587
589
594
595 enum
596 {
619 };
620
628
629 int m_Mentions = 0;
630 bool m_IngameMoved = false;
631
632 enum
633 {
638 };
639
645 bool (*m_pfnFileDialogFunc)(const char *pFileName, int StorageType, void *pUser);
658
665
667
669 {
676 };
677 std::vector<CFilelistItem> m_vCompleteFileList;
678 std::vector<const CFilelistItem *> m_vpFilteredFileList;
679
680 static bool CompareFilenameAscending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
681 {
682 if(str_comp(pLhs->m_aFilename, "..") == 0)
683 return true;
684 if(str_comp(pRhs->m_aFilename, "..") == 0)
685 return false;
686 if(pLhs->m_IsLink != pRhs->m_IsLink)
687 return pLhs->m_IsLink;
688 if(pLhs->m_IsDir != pRhs->m_IsDir)
689 return pLhs->m_IsDir;
690 return str_comp_filenames(pLhs->m_aName, pRhs->m_aName) < 0;
691 }
692
693 static bool CompareFilenameDescending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
694 {
695 if(str_comp(pLhs->m_aFilename, "..") == 0)
696 return true;
697 if(str_comp(pRhs->m_aFilename, "..") == 0)
698 return false;
699 if(pLhs->m_IsLink != pRhs->m_IsLink)
700 return pLhs->m_IsLink;
701 if(pLhs->m_IsDir != pRhs->m_IsDir)
702 return pLhs->m_IsDir;
703 return str_comp_filenames(pLhs->m_aName, pRhs->m_aName) > 0;
704 }
705
706 static bool CompareTimeModifiedAscending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
707 {
708 if(str_comp(pLhs->m_aFilename, "..") == 0)
709 return true;
710 if(str_comp(pRhs->m_aFilename, "..") == 0)
711 return false;
712 if(pLhs->m_IsLink || pRhs->m_IsLink)
713 return pLhs->m_IsLink;
714 if(pLhs->m_IsDir != pRhs->m_IsDir)
715 return pLhs->m_IsDir;
716 return pLhs->m_TimeModified < pRhs->m_TimeModified;
717 }
718
719 static bool CompareTimeModifiedDescending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
720 {
721 if(str_comp(pLhs->m_aFilename, "..") == 0)
722 return true;
723 if(str_comp(pRhs->m_aFilename, "..") == 0)
724 return false;
725 if(pLhs->m_IsLink || pRhs->m_IsLink)
726 return pLhs->m_IsLink;
727 if(pLhs->m_IsDir != pRhs->m_IsDir)
728 return pLhs->m_IsDir;
729 return pLhs->m_TimeModified > pRhs->m_TimeModified;
730 }
731
735
736 std::vector<std::string> m_vSelectEntitiesFiles;
738
739 // Zooming
742
744
747
750
752 float m_MouseWorldScale = 1.0f; // Mouse (i.e. UI) scale relative to the World (selected Group)
753 vec2 m_MouseWorldPos = vec2(0.0f, 0.0f);
758 char m_MapEditorId; // UI element ID for the main map editor
759
761 {
765 };
768
774
776 {
782 };
784 float m_aExtraEditorSplits[NUM_EXTRAEDITORS] = {250.0f, 250.0f, 250.0f};
785 float m_ToolBoxWidth = 100.0f;
786
788 {
792 };
795
796 std::vector<int> m_vSelectedLayers;
797 std::vector<int> m_vSelectedQuads;
803 std::vector<std::pair<int, int>> m_vSelectedEnvelopePoints;
809 std::pair<int, int> m_SelectedTangentInPoint;
810 std::pair<int, int> m_SelectedTangentOutPoint;
812
816
817 // Color palette and pipette
819 ColorRGBA m_PipetteColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
821
823
825 {
830 };
833
835
836 std::shared_ptr<CLayerGroup> m_pBrush;
837 std::shared_ptr<CLayerTiles> m_pTilesetPicker;
838 std::shared_ptr<CLayerQuads> m_pQuadsetPicker;
839
840 static const void *ms_pUiGotContext;
841
843 std::deque<std::shared_ptr<CDataFileWriterFinishJob>> m_WriterFinishJobs;
844
846
847 static void EnvelopeEval(int TimeOffsetMillis, int Env, ColorRGBA &Result, size_t Channels, void *pUser);
848
852
855 void AddTileart(bool IgnoreHistory = false);
856 void TileartCheckColors();
857
858 void PlaceBorderTiles();
859
860 void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip);
861 int DoButton_Editor_Common(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
862 int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
863 int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners);
864
865 int DoButton_Ex(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize = EditorFontSizes::MENU, int Align = TEXTALIGN_MC);
866 int DoButton_FontIcon(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize = 10.0f);
867 int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags = 0, const char *pToolTip = nullptr);
868
869 int DoButton_DraggableEx(const void *pId, const char *pText, int Checked, const CUIRect *pRect, bool *pClicked, bool *pAbrupted, int Flags, const char *pToolTip = nullptr, int Corners = IGraphics::CORNER_ALL, float FontSize = 10.0f);
870
871 bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
872 bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
873
874 void DoMapSettingsEditBox(CMapSettingsBackend::CContext *pContext, const CUIRect *pRect, float FontSize, float DropdownMaxHeight, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr);
875
876 template<typename T>
877 int DoEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CLineInput *pLineInput, const CUIRect *pEditBoxRect, int x, float MaxHeight, bool AutoWidth, const std::vector<T> &vData, const FDropdownRenderCallback<T> &pfnMatchCallback);
878 template<typename T>
879 int RenderEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CUIRect View, CLineInput *pLineInput, int x, float MaxHeight, bool AutoWidth, const std::vector<T> &vData, const FDropdownRenderCallback<T> &pfnMatchCallback);
880
881 void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const;
882
883 SEditResult<int> UiDoValueSelector(void *pId, CUIRect *pRect, const char *pLabel, int Current, int Min, int Max, int Step, float Scale, const char *pToolTip, bool IsDegree = false, bool IsHex = false, int Corners = IGraphics::CORNER_ALL, const ColorRGBA *pColor = nullptr, bool ShowValue = true);
884
885 static CUi::EPopupMenuFunctionResult PopupMenuFile(void *pContext, CUIRect View, bool Active);
886 static CUi::EPopupMenuFunctionResult PopupMenuTools(void *pContext, CUIRect View, bool Active);
887 static CUi::EPopupMenuFunctionResult PopupMenuSettings(void *pContext, CUIRect View, bool Active);
888 static CUi::EPopupMenuFunctionResult PopupGroup(void *pContext, CUIRect View, bool Active);
890 {
892 std::vector<std::shared_ptr<CLayerTiles>> m_vpLayers;
893 std::vector<int> m_vLayerIndices;
895 };
896 static CUi::EPopupMenuFunctionResult PopupLayer(void *pContext, CUIRect View, bool Active);
897 static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active);
898 static CUi::EPopupMenuFunctionResult PopupSource(void *pContext, CUIRect View, bool Active);
899 static CUi::EPopupMenuFunctionResult PopupPoint(void *pContext, CUIRect View, bool Active);
900 static CUi::EPopupMenuFunctionResult PopupEnvPoint(void *pContext, CUIRect View, bool Active);
901 static CUi::EPopupMenuFunctionResult PopupEnvPointMulti(void *pContext, CUIRect View, bool Active);
902 static CUi::EPopupMenuFunctionResult PopupEnvPointCurveType(void *pContext, CUIRect View, bool Active);
903 static CUi::EPopupMenuFunctionResult PopupImage(void *pContext, CUIRect View, bool Active);
904 static CUi::EPopupMenuFunctionResult PopupSound(void *pContext, CUIRect View, bool Active);
905 static CUi::EPopupMenuFunctionResult PopupNewFolder(void *pContext, CUIRect View, bool Active);
906 static CUi::EPopupMenuFunctionResult PopupMapInfo(void *pContext, CUIRect View, bool Active);
907 static CUi::EPopupMenuFunctionResult PopupEvent(void *pContext, CUIRect View, bool Active);
908 static CUi::EPopupMenuFunctionResult PopupSelectImage(void *pContext, CUIRect View, bool Active);
909 static CUi::EPopupMenuFunctionResult PopupSelectSound(void *pContext, CUIRect View, bool Active);
910 static CUi::EPopupMenuFunctionResult PopupSelectGametileOp(void *pContext, CUIRect View, bool Active);
911 static CUi::EPopupMenuFunctionResult PopupSelectConfigAutoMap(void *pContext, CUIRect View, bool Active);
912 static CUi::EPopupMenuFunctionResult PopupSelectAutoMapReference(void *pContext, CUIRect View, bool Active);
913 static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active);
914 static CUi::EPopupMenuFunctionResult PopupSpeedup(void *pContext, CUIRect View, bool Active);
915 static CUi::EPopupMenuFunctionResult PopupSwitch(void *pContext, CUIRect View, bool Active);
916 static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active);
917 static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active);
918 static CUi::EPopupMenuFunctionResult PopupEntities(void *pContext, CUIRect View, bool Active);
919 static CUi::EPopupMenuFunctionResult PopupProofMode(void *pContext, CUIRect View, bool Active);
920 static CUi::EPopupMenuFunctionResult PopupAnimateSettings(void *pContext, CUIRect View, bool Active);
922 static CUi::EPopupMenuFunctionResult PopupEnvelopeCurvetype(void *pContext, CUIRect View, bool Active);
923
924 static bool CallbackOpenMap(const char *pFileName, int StorageType, void *pUser);
925 static bool CallbackAppendMap(const char *pFileName, int StorageType, void *pUser);
926 static bool CallbackSaveMap(const char *pFileName, int StorageType, void *pUser);
927 static bool CallbackSaveCopyMap(const char *pFileName, int StorageType, void *pUser);
928 static bool CallbackAddTileart(const char *pFilepath, int StorageType, void *pUser);
929 static bool CallbackSaveImage(const char *pFileName, int StorageType, void *pUser);
930 static bool CallbackSaveSound(const char *pFileName, int StorageType, void *pUser);
931 static bool CallbackCustomEntities(const char *pFileName, int StorageType, void *pUser);
932
933 void PopupSelectImageInvoke(int Current, float x, float y);
935
936 void PopupSelectGametileOpInvoke(float x, float y);
938
939 void PopupSelectConfigAutoMapInvoke(int Current, float x, float y);
941
942 void PopupSelectSoundInvoke(int Current, float x, float y);
944
945 void PopupSelectAutoMapReferenceInvoke(int Current, float x, float y);
947
948 void DoQuadEnvelopes(const std::vector<CQuad> &vQuads, IGraphics::CTextureHandle Texture = IGraphics::CTextureHandle());
949 void DoQuadEnvPoint(const CQuad *pQuad, int QIndex, int pIndex);
950 void DoQuadPoint(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int v);
951 void SetHotQuadPoint(const std::shared_ptr<CLayerQuads> &pLayer);
952
953 float TriangleArea(vec2 A, vec2 B, vec2 C);
954 bool IsInTriangle(vec2 Point, vec2 A, vec2 B, vec2 C);
955 void DoQuadKnife(int QuadIndex);
956
957 void DoSoundSource(int LayerIndex, CSoundSource *pSource, int Index);
958
959 enum class EAxis
960 {
961 AXIS_NONE = 0,
962 AXIS_X,
963 AXIS_Y
964 };
966 {
967 enum
968 {
975 };
977 };
978 void DoMapEditor(CUIRect View);
979 void DoToolbarLayers(CUIRect Toolbar);
980 void DoToolbarImages(CUIRect Toolbar);
981 void DoToolbarSounds(CUIRect Toolbar);
982 void DoQuad(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int Index);
983 void PreparePointDrag(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex);
984 void DoPointDrag(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY);
985 EAxis GetDragAxis(int OffsetX, int OffsetY) const;
986 void DrawAxis(EAxis Axis, CPoint &OriginalPoint, CPoint &Point) const;
987 void DrawAABB(const SAxisAlignedBoundingBox &AABB, int OffsetX = 0, int OffsetY = 0) const;
988 ColorRGBA GetButtonColor(const void *pId, int Checked);
989
990 // Alignment methods
991 // These methods take `OffsetX` and `OffsetY` because the calculations are made with the original positions
992 // of the quad(s), before we started dragging. This allows us to edit `OffsetX` and `OffsetY` based on the previously
993 // calculated alignments.
995 {
996 CPoint m_AlignedPoint; // The "aligned" point, which we want to align/snap to
997 union
998 {
999 // The current changing value when aligned to this point. When aligning to a point on the X axis, then the X value is changing because
1000 // we aligned the Y values (X axis aligned => Y values are the same, Y axis aligned => X values are the same).
1001 int m_X;
1002 int m_Y;
1003 };
1004 EAxis m_Axis; // The axis we are aligning on
1005 int m_PointIndex; // The point index we are aligning
1006 int m_Diff; // Store the difference
1007 };
1008 void ComputePointAlignments(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY, std::vector<SAlignmentInfo> &vAlignments, bool Append = false) const;
1009 void ComputePointsAlignments(const std::shared_ptr<CLayerQuads> &pLayer, bool Pivot, int OffsetX, int OffsetY, std::vector<SAlignmentInfo> &vAlignments) const;
1010 void ComputeAABBAlignments(const std::shared_ptr<CLayerQuads> &pLayer, const SAxisAlignedBoundingBox &AABB, int OffsetX, int OffsetY, std::vector<SAlignmentInfo> &vAlignments) const;
1011 void DrawPointAlignments(const std::vector<SAlignmentInfo> &vAlignments, int OffsetX, int OffsetY) const;
1012 void QuadSelectionAABB(const std::shared_ptr<CLayerQuads> &pLayer, SAxisAlignedBoundingBox &OutAABB);
1013 void ApplyAlignments(const std::vector<SAlignmentInfo> &vAlignments, int &OffsetX, int &OffsetY);
1014 void ApplyAxisAlignment(int &OffsetX, int &OffsetY) const;
1015
1016 bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate);
1017 static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser);
1018 bool ReplaceSound(const char *pFileName, int StorageType, bool CheckDuplicate);
1019 static bool ReplaceSoundCallback(const char *pFileName, int StorageType, void *pUser);
1020 static bool AddImage(const char *pFilename, int StorageType, void *pUser);
1021 static bool AddSound(const char *pFileName, int StorageType, void *pUser);
1022 static bool IsAssetUsed(int FileType, int Index, void *pUser);
1023
1024 bool IsEnvelopeUsed(int EnvelopeIndex) const;
1025 void RemoveUnusedEnvelopes();
1026
1027 static bool IsVanillaImage(const char *pImage);
1028
1029 void RenderLayers(CUIRect LayersBox);
1030 void RenderImagesList(CUIRect Toolbox);
1031 void RenderSelectedImage(CUIRect View);
1032 void RenderSounds(CUIRect Toolbox);
1033 void RenderModebar(CUIRect View);
1034 void RenderStatusbar(CUIRect View, CUIRect *pTooltipRect);
1035 void RenderTooltip(CUIRect TooltipRect);
1036
1037 void RenderEnvelopeEditor(CUIRect View);
1038
1040 void RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEditorLast);
1041 static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char (&aOutput)[128], std::vector<STextColorSplit> &vColorSplits);
1042
1043 void RenderEditorHistory(CUIRect View);
1044
1045 enum class EDragSide // Which side is the drag bar on
1046 {
1047 SIDE_BOTTOM,
1048 SIDE_LEFT,
1049 SIDE_TOP,
1050 SIDE_RIGHT
1051 };
1052 void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue = 100.0f, float MaxValue = 400.0f);
1053
1054 void SetHotEnvelopePoint(const CUIRect &View, const std::shared_ptr<CEnvelope> &pEnvelope, int ActiveChannels);
1055
1056 void RenderMenubar(CUIRect Menubar);
1057 void RenderFileDialog();
1058
1059 void SelectGameLayer();
1060 std::vector<int> SortImages();
1061
1062 void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId);
1063
1064 // Tile Numbers For Explanations - TODO: Add/Improve tiles and explanations
1065 enum
1066 {
1071
1080
1083 };
1084
1085 enum
1086 {
1093
1096
1108
1113
1114 enum
1115 {
1127 };
1128
1129 // Explanations
1130 enum class EExplanation
1131 {
1132 NONE,
1133 DDNET,
1134 FNG,
1135 RACE,
1136 VANILLA,
1137 BLOCKWORLDS
1138 };
1139 static const char *ExplainDDNet(int Tile, int Layer);
1140 static const char *ExplainFNG(int Tile, int Layer);
1141 static const char *ExplainVanilla(int Tile, int Layer);
1142 static const char *Explain(EExplanation Explanation, int Tile, int Layer);
1143
1144 // Zooming
1145 void ZoomAdaptOffsetX(float ZoomFactor, const CUIRect &View);
1146 void UpdateZoomEnvelopeX(const CUIRect &View);
1147
1148 void ZoomAdaptOffsetY(float ZoomFactor, const CUIRect &View);
1149 void UpdateZoomEnvelopeY(const CUIRect &View);
1150
1151 void ResetZoomEnvelope(const std::shared_ptr<CEnvelope> &pEnvelope, int ActiveChannels);
1152 void RemoveTimeOffsetEnvelope(const std::shared_ptr<CEnvelope> &pEnvelope);
1153 float ScreenToEnvelopeX(const CUIRect &View, float x) const;
1154 float EnvelopeToScreenX(const CUIRect &View, float x) const;
1155 float ScreenToEnvelopeY(const CUIRect &View, float y) const;
1156 float EnvelopeToScreenY(const CUIRect &View, float y) const;
1157 float ScreenToEnvelopeDX(const CUIRect &View, float DeltaX);
1158 float ScreenToEnvelopeDY(const CUIRect &View, float DeltaY);
1159
1160 // DDRace
1161
1167
1168 unsigned char m_TeleNumber;
1170 unsigned char m_ViewTeleNumber;
1171
1172 unsigned char m_TuningNum;
1173
1174 unsigned char m_SpeedupForce;
1175 unsigned char m_SpeedupMaxSpeed;
1177
1178 unsigned char m_SwitchNum;
1179 unsigned char m_SwitchDelay;
1180 unsigned char m_ViewSwitch;
1181
1182 void AdjustBrushSpecialTiles(bool UseNextFree, int Adjust = 0);
1184 int FindNextFreeTeleNumber(bool Checkpoint = false);
1185
1186 // Undo/Redo
1192
1193private:
1194 void UndoLastAction();
1195 void RedoLastAction();
1196
1197 std::map<int, CPoint[5]> m_QuadDragOriginalPoints;
1198};
1199
1200// make sure to inline this function
1201inline class IGraphics *CLayer::Graphics() { return m_pEditor->Graphics(); }
1203
1204#endif
Definition: config.h:23
Definition: editor.h:254
void Run() override
Definition: editor.h:259
CDataFileWriter m_Writer
Definition: editor.h:257
const char * GetRealFileName() const
Definition: editor.h:272
const char * GetTempFileName() const
Definition: editor.h:273
char m_aTempFileName[IO_MAX_PATH_LENGTH]
Definition: editor.h:256
CDataFileWriterFinishJob(const char *pRealFileName, const char *pTempFileName, CDataFileWriter &&Writer)
Definition: editor.h:265
char m_aRealFileName[IO_MAX_PATH_LENGTH]
Definition: editor.h:255
Definition: datafile.h:71
void Finish()
Definition: datafile.cpp:770
Definition: editor_history.h:11
Definition: image.h:10
Definition: editor.h:104
char m_aAuthor[32]
Definition: editor.h:106
char m_aCredits[128]
Definition: editor.h:108
void Copy(const CMapInfo &Source)
Definition: editor.h:119
char m_aVersion[16]
Definition: editor.h:107
void Reset()
Definition: editor.h:111
char m_aLicense[32]
Definition: editor.h:109
Definition: editor.h:74
bool m_Modified
Definition: editor.h:91
void VisitEnvelopeReferences(F &&Visitor)
Definition: map.cpp:51
CMapInfo m_MapInfoTmp
Definition: editor.h:128
CEditor * m_pEditor
Definition: editor.h:79
void MakeGameGroup(std::shared_ptr< CLayerGroup > pGroup)
Definition: map.cpp:90
void OnModify()
Definition: map.cpp:5
std::vector< CEditorMapSetting > m_vSettings
Definition: editor.h:130
void MakeTuneLayer(const std::shared_ptr< CLayer > &pLayer)
Definition: map.cpp:174
float m_LastSaveTime
Definition: editor.h:94
void CreateDefault(IGraphics::CTextureHandle EntitiesTexture)
Definition: map.cpp:122
void PerformSanityChecks(const std::function< void(const char *pErrorMessage)> &ErrorHandler)
Definition: map_io.cpp:1035
std::shared_ptr< class CLayerSpeedup > m_pSpeedupLayer
Definition: editor.h:211
void SwapEnvelopes(int Index0, int Index1)
Definition: map.cpp:29
std::vector< std::shared_ptr< CLayerGroup > > m_vpGroups
Definition: editor.h:98
std::vector< std::shared_ptr< CEditorImage > > m_vpImages
Definition: editor.h:99
float m_LastAutosaveUpdateTime
Definition: editor.h:95
std::shared_ptr< CEnvelope > NewEnvelope(CEnvelope::EType Type)
Definition: editor.h:135
bool PerformPreSaveSanityChecks(const std::function< void(const char *pErrorMessage)> &ErrorHandler)
Definition: map_io.cpp:406
void DeleteGroup(int Index)
Definition: editor.h:170
std::vector< std::shared_ptr< CEditorSound > > m_vpSounds
Definition: editor.h:101
void Clean()
Definition: map.cpp:97
void DeleteEnvelope(int Index)
Definition: map.cpp:12
void ModifyImageIndex(FIndexModifyFunction pfnFunc)
Definition: editor.h:178
float m_LastModifiedTime
Definition: editor.h:93
void MakeSpeedupLayer(const std::shared_ptr< CLayer > &pLayer)
Definition: map.cpp:156
bool Load(const char *pFilename, int StorageType, const std::function< void(const char *pErrorMessage)> &ErrorHandler)
Definition: map_io.cpp:434
CEditorMap()
Definition: editor.h:81
CMapInfo m_MapInfo
Definition: editor.h:127
void MakeTeleLayer(const std::shared_ptr< CLayer > &pLayer)
Definition: map.cpp:150
std::vector< std::shared_ptr< CEnvelope > > m_vpEnvelopes
Definition: editor.h:100
bool m_ModifiedAuto
Definition: editor.h:92
void MakeSwitchLayer(const std::shared_ptr< CLayer > &pLayer)
Definition: map.cpp:168
void ModifyEnvelopeIndex(FIndexModifyFunction pfnFunc)
Definition: editor.h:185
std::shared_ptr< CLayerGroup > m_pGameGroup
Definition: editor.h:133
void ModifySoundIndex(FIndexModifyFunction pfnFunc)
Definition: editor.h:192
void MakeGameLayer(const std::shared_ptr< CLayer > &pLayer)
Definition: map.cpp:84
std::shared_ptr< class CLayerFront > m_pFrontLayer
Definition: editor.h:212
void MakeFrontLayer(const std::shared_ptr< CLayer > &pLayer)
Definition: map.cpp:162
std::shared_ptr< class CLayerTele > m_pTeleLayer
Definition: editor.h:210
std::shared_ptr< class CLayerTune > m_pTuneLayer
Definition: editor.h:214
~CEditorMap()
Definition: editor.h:86
std::shared_ptr< class CLayerSwitch > m_pSwitchLayer
Definition: editor.h:213
int SwapGroups(int Index0, int Index1)
Definition: editor.h:157
std::shared_ptr< class CLayerGame > m_pGameLayer
Definition: editor.h:132
bool Save(const char *pFilename, const std::function< void(const char *pErrorMessage)> &ErrorHandler)
Definition: map_io.cpp:32
std::shared_ptr< CLayerGroup > NewGroup()
Definition: editor.h:148
Definition: sound.h:8
Definition: editor.h:471
CHoverTile(int Group, int Layer, int x, int y, const CTile Tile)
Definition: editor.h:473
int m_Layer
Definition: editor.h:483
const CTile m_Tile
Definition: editor.h:486
int m_Group
Definition: editor.h:482
int m_X
Definition: editor.h:484
int m_Y
Definition: editor.h:485
Definition: editor.h:277
int FindNextFreeTeleNumber(bool Checkpoint=false)
Definition: editor.cpp:9401
void RenderGameEntities(const std::shared_ptr< CLayerTiles > &pTiles)
Definition: editor.cpp:8452
static const char * ExplainFNG(int Tile, int Layer)
Definition: explanations.cpp:491
IGraphics::CTextureHandle GetSpeedupTexture()
Definition: editor.cpp:8632
unsigned char m_SpeedupForce
Definition: editor.h:1174
int m_ShiftBy
Definition: editor.h:845
static CUi::EPopupMenuFunctionResult PopupSelectImage(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2281
class IStorage * m_pStorage
Definition: editor.h:287
static CUi::EPopupMenuFunctionResult PopupMenuFile(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:25
CEditorMap m_Map
Definition: editor.h:842
@ TILE_FNG_SPIKE_OLD3
Definition: editor.h:1111
@ TILE_FNG_SPIKE_RED
Definition: editor.h:1089
@ TILE_FNG_LASER
Definition: editor.h:1107
@ TILE_FNG_SHOTGUN
Definition: editor.h:1104
@ TILE_FNG_SPIKE_GOLD
Definition: editor.h:1087
@ TILE_FNG_FLAG_BLUE
Definition: editor.h:1101
@ TILE_FNG_SPIKE_BLUE
Definition: editor.h:1090
@ TILE_FNG_SPIKE_OLD2
Definition: editor.h:1110
@ TILE_FNG_SPAWN_RED
Definition: editor.h:1098
@ TILE_FNG_SPIKE_PURPLE
Definition: editor.h:1095
@ TILE_FNG_SPAWN
Definition: editor.h:1097
@ TILE_FNG_NINJA
Definition: editor.h:1106
@ TILE_FNG_SPIKE_OLD1
Definition: editor.h:1109
@ TILE_FNG_FLAG_RED
Definition: editor.h:1100
@ TILE_FNG_HEART
Definition: editor.h:1103
@ TILE_FNG_SCORE_BLUE
Definition: editor.h:1092
@ TILE_FNG_SPAWN_BLUE
Definition: editor.h:1099
@ TILE_FNG_SPIKE_NORMAL
Definition: editor.h:1088
@ TILE_FNG_SCORE_RED
Definition: editor.h:1091
@ TILE_FNG_SHIELD
Definition: editor.h:1102
@ TILE_FNG_GRENADE
Definition: editor.h:1105
@ TILE_FNG_SPIKE_GREEN
Definition: editor.h:1094
CEditorHistory m_EnvelopeEditorHistory
Definition: editor.h:1189
void OnClose() override
Definition: editor.cpp:9044
int m_QuadKnifeCount
Definition: editor.h:814
int DoButton_DraggableEx(const void *pId, const char *pText, int Checked, const CUIRect *pRect, bool *pClicked, bool *pAbrupted, int Flags, const char *pToolTip=nullptr, int Corners=IGraphics::CORNER_ALL, float FontSize=10.0f)
Definition: editor.cpp:272
void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function< void(ColorRGBA Color)> &SetColor)
Definition: editor.cpp:3737
int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners)
Definition: editor.cpp:216
int m_FileDialogStorageType
Definition: editor.h:640
int PopupSelectGameTileOpResult()
Definition: popups.cpp:2459
bool m_ShowMousePointer
Definition: editor.h:748
int m_ToolbarPreviewSound
Definition: editor.h:666
char m_aFileSaveName[IO_MAX_PATH_LENGTH]
Definition: editor.h:592
void ZoomAdaptOffsetY(float ZoomFactor, const CUIRect &View)
Definition: editor.cpp:6048
void RenderPressedKeys(CUIRect View)
Definition: editor.cpp:8294
static CUi::EPopupMenuFunctionResult PopupLayer(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:713
static bool CallbackCustomEntities(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:951
bool IsNonGameTileLayerSelected() const
Definition: quick_actions.cpp:143
void DoMapSettingsEditBox(CMapSettingsBackend::CContext *pContext, const CUIRect *pRect, float FontSize, float DropdownMaxHeight, int Corners=IGraphics::CORNER_ALL, const char *pToolTip=nullptr)
Definition: editor_server_settings.cpp:289
void DoMapEditor(CUIRect View)
Definition: editor.cpp:3078
CPrompt m_Prompt
Definition: editor.h:294
int RenderEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CUIRect View, CLineInput *pLineInput, int x, float MaxHeight, bool AutoWidth, const std::vector< T > &vData, const FDropdownRenderCallback< T > &pfnMatchCallback)
Definition: editor_server_settings.cpp:466
char m_aFileName[IO_MAX_PATH_LENGTH]
Definition: editor.h:590
void TestMapLocally()
Definition: quick_actions.cpp:219
bool m_IngameMoved
Definition: editor.h:630
@ TILE_PUB_CREDITS3
Definition: editor.h:1074
@ TILE_PUB_CREDITS7
Definition: editor.h:1078
@ TILE_PUB_ENTITIES_OFF2
Definition: editor.h:1082
@ TILE_PUB_CREDITS1
Definition: editor.h:1072
@ TILE_PUB_CREDITS6
Definition: editor.h:1077
@ TILE_PUB_CREDITS5
Definition: editor.h:1076
@ TILE_PUB_DEATH
Definition: editor.h:1069
@ TILE_PUB_AIR
Definition: editor.h:1067
@ TILE_PUB_ENTITIES_OFF1
Definition: editor.h:1081
@ TILE_PUB_CREDITS8
Definition: editor.h:1079
@ TILE_PUB_UNHOOKABLE
Definition: editor.h:1070
@ TILE_PUB_CREDITS4
Definition: editor.h:1075
@ TILE_PUB_CREDITS2
Definition: editor.h:1073
@ TILE_PUB_HOOKABLE
Definition: editor.h:1068
IGraphics::CTextureHandle GetFrontTexture()
Definition: editor.cpp:8618
int m_SelectedSource
Definition: editor.h:808
int m_FilePreviewImageWidth
Definition: editor.h:662
bool m_BrushColorEnabled
Definition: editor.h:588
float m_AnimateSpeed
Definition: editor.h:772
std::vector< int > SortImages()
Definition: editor.cpp:4789
static bool ReplaceSoundCallback(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:4726
bool m_ValidSaveFilename
Definition: editor.h:593
bool m_EditorWasUsedBefore
Definition: editor.h:296
IGraphics::CTextureHandle GetTuneTexture()
Definition: editor.cpp:8646
void RenderEnvelopeEditor(CUIRect View)
Definition: editor.cpp:6292
void DeselectQuads()
Definition: editor.cpp:530
static CUi::EPopupMenuFunctionResult PopupSource(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1088
CMapSettingsBackend::CContext m_MapSettingsCommandContext
Definition: editor.h:851
bool HasUnsavedData() const override
Definition: editor.h:498
CLineInputBuffered< IO_MAX_PATH_LENGTH > m_FileDialogFilterInput
Definition: editor.h:651
std::shared_ptr< CLayerTiles > m_pTilesetPicker
Definition: editor.h:837
IGraphics::CTextureHandle m_FrontTexture
Definition: editor.h:300
int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition: editor.cpp:207
unsigned char m_ViewSwitch
Definition: editor.h:1180
void DeleteSelectedLayer()
Definition: quick_actions.cpp:194
CLayerSelector m_LayerSelector
Definition: editor.h:293
void DoQuadPoint(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int v)
Definition: editor.cpp:2353
void RenderMousePointer()
Definition: editor.cpp:8402
void * m_pFileDialogUser
Definition: editor.h:646
void AddGroup()
Definition: quick_actions.cpp:50
vec2 m_MouseDeltaWorld
Definition: editor.h:755
void Init() override
Definition: editor.cpp:8660
static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2883
bool m_ShowPicker
Definition: editor.h:794
std::map< const char *, CUi::SMessagePopupContext *, SStringKeyComparator > m_PopupMessageContexts
Definition: editor.h:522
std::vector< CHoverTile > m_vHoverTiles
Definition: editor.h:488
void OnUpdate() override
Definition: editor.cpp:8951
int m_FilesSelectedIndex
Definition: editor.h:656
void PopupSelectImageInvoke(int Current, float x, float y)
Definition: popups.cpp:2343
void DoQuadEnvelopes(const std::vector< CQuad > &vQuads, IGraphics::CTextureHandle Texture=IGraphics::CTextureHandle())
Definition: editor.cpp:2828
void OnDialogClose() override
Definition: editor.cpp:9054
std::vector< CQuad * > GetSelectedQuads()
Definition: editor.cpp:475
static CUi::EPopupMenuFunctionResult PopupSwitch(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2756
const void * m_pContainerPannedLast
Definition: editor.h:757
void SelectNextLayer()
Definition: editor.cpp:751
unsigned char m_SpeedupMaxSpeed
Definition: editor.h:1175
float ScreenToEnvelopeDX(const CUIRect &View, float DeltaX)
Definition: editor.cpp:6135
bool Save(const char *pFilename) override
Definition: editor.cpp:9080
IGraphics::CTextureHandle m_TuneTexture
Definition: editor.h:304
CUi * Ui()
Definition: editor.h:329
vec2 m_MouseWorldNoParaPos
Definition: editor.h:754
float m_ToolBoxWidth
Definition: editor.h:785
void RenderMenubar(CUIRect Menubar)
Definition: editor.cpp:7871
IGraphics::CTextureHandle GetEntitiesTexture()
Definition: editor.cpp:8653
IGraphics::CTextureHandle GetTeleTexture()
Definition: editor.cpp:8625
char m_aTileartFilename[IO_MAX_PATH_LENGTH]
Definition: editor.h:854
char m_aFilesSelectedName[IO_MAX_PATH_LENGTH]
Definition: editor.h:650
char m_aFileDialogCurrentFolder[IO_MAX_PATH_LENGTH]
Definition: editor.h:648
bool m_GuiActive
Definition: editor.h:749
IGraphics::CTextureHandle m_FilePreviewImage
Definition: editor.h:659
int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector< ColorRGBA > &vColors={})
Definition: editor_props.cpp:13
char * m_pFileDialogPath
Definition: editor.h:652
EAxis GetDragAxis(int OffsetX, int OffsetY) const
Definition: editor.cpp:1579
char m_aFileNamePending[IO_MAX_PATH_LENGTH]
Definition: editor.h:591
void AddSoundLayer()
Definition: quick_actions.cpp:57
unsigned char m_TeleCheckpointNumber
Definition: editor.h:1169
void ShowFileDialogError(const char *pFormat,...) GNUC_ATTRIBUTE((format(printf
Definition: editor.cpp:5838
void DeleteSelectedQuads()
Definition: editor.cpp:566
int m_PopupEventActivated
Definition: editor.h:622
bool m_LargeLayerWasWarned
Definition: editor.h:624
int FindNextFreeSwitchNumber()
Definition: editor.cpp:9386
void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue=100.0f, float MaxValue=400.0f)
Definition: editor.cpp:7817
std::pair< int, int > m_SelectedTangentOutPoint
Definition: editor.h:810
class ITextRender * TextRender() const
Definition: editor.h:327
void HandleCursorMovement()
Definition: editor.cpp:8730
void OnRender() override
Definition: editor.cpp:8992
bool m_FileDialogMultipleStorages
Definition: editor.h:654
std::map< int, CPoint[5]> m_QuadDragOriginalPoints
Definition: editor.h:1197
void ToggleSelectQuadPoint(int QuadIndex, int Index)
Definition: editor.cpp:546
void SelectLayer(int LayerIndex, int GroupIndex=-1)
Definition: editor.cpp:497
void LayerSelectImage()
Definition: quick_actions.cpp:162
static bool CallbackSaveMap(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:832
void DoToolbarLayers(CUIRect Toolbar)
Definition: editor.cpp:1069
int m_SelectedQuadPoints
Definition: editor.h:801
CUi::SColorPickerPopupContext m_ColorPickerPopupContext
Definition: editor.h:580
void ResetZoomEnvelope(const std::shared_ptr< CEnvelope > &pEnvelope, int ActiveChannels)
Definition: editor.cpp:6061
bool m_Animate
Definition: editor.h:769
static CUi::EPopupMenuFunctionResult PopupEntities(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2927
class IConfigManager * ConfigManager() const
Definition: editor.h:321
static bool CallbackSaveSound(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:923
void SelectGameLayer()
Definition: editor.cpp:4774
int PopupSelectAutoMapReferenceResult()
Definition: popups.cpp:2577
vec2 m_aQuadKnifePoints[4]
Definition: editor.h:815
void PopupSelectGametileOpInvoke(float x, float y)
Definition: popups.cpp:2452
const char * m_pFileDialogTitle
Definition: editor.h:643
EAxis
Definition: editor.h:960
bool IsEnvelopeUsed(int EnvelopeIndex) const
Definition: editor.cpp:5974
bool IsTangentSelected() const
Definition: editor.cpp:713
static CUi::EPopupMenuFunctionResult PopupEnvPointMulti(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1536
bool IsTangentInSelected() const
Definition: editor.cpp:703
EExplanation
Definition: editor.h:1131
static CUi::EPopupMenuFunctionResult PopupAnimateSettings(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2989
bool IsTangentOutSelected() const
Definition: editor.cpp:708
static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2856
static CUi::EPopupMenuFunctionResult PopupEnvPointCurveType(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1553
const CMapView * MapView() const
Definition: editor.h:333
bool Append(const char *pFilename, int StorageType, bool IgnoreHistory=false)
Definition: editor.cpp:9133
void TileartCheckColors()
Definition: tileart.cpp:173
void PopupSelectConfigAutoMapInvoke(int Current, float x, float y)
Definition: popups.cpp:2508
const std::vector< CHoverTile > & HoverTiles() const
Definition: editor.h:489
std::shared_ptr< CLayer > GetSelectedLayer(int Index) const
Definition: editor.cpp:451
float TriangleArea(vec2 A, vec2 B, vec2 C)
Definition: editor.cpp:2579
int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags=0, const char *pToolTip=nullptr)
Definition: editor.cpp:228
static CUi::EPopupMenuFunctionResult PopupSpeedup(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2717
bool m_QuadKnifeActive
Definition: editor.h:813
unsigned char m_TeleNumber
Definition: editor.h:1168
void AddTeleLayer()
Definition: quick_actions.cpp:132
IGraphics::CTextureHandle m_aCursorTextures[ECursorType::NUM_CURSORS]
Definition: editor.h:831
bool IsEnvPointSelected(int Index, int Channel) const
Definition: editor.cpp:657
bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate)
Definition: editor.cpp:4486
int m_SelectedEnvelope
Definition: editor.h:802
std::shared_ptr< CLayer > GetSelectedLayerType(int Index, int Type) const
Definition: editor.cpp:467
bool(* m_pfnFileDialogFunc)(const char *pFileName, int StorageType, void *pUser)
Definition: editor.h:645
std::shared_ptr< CLayerGroup > m_pBrush
Definition: editor.h:836
void HandleAutosave()
Definition: editor.cpp:8825
void UpdateColorPipette()
Definition: editor.cpp:8350
static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser)
Definition: editor.cpp:4541
void DoToolbarSounds(CUIRect Toolbar)
Definition: editor.cpp:1433
bool IsTangentInPointSelected(int Index, int Channel) const
Definition: editor.cpp:698
void DoToolbarImages(CUIRect Toolbar)
Definition: editor.cpp:1419
void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const
Definition: editor.cpp:294
void DoQuadEnvPoint(const CQuad *pQuad, int QIndex, int pIndex)
Definition: editor.cpp:2977
EShowTile
Definition: editor.h:761
@ SHOW_TILE_DECIMAL
Definition: editor.h:763
@ SHOW_TILE_OFF
Definition: editor.h:762
@ SHOW_TILE_HEXADECIMAL
Definition: editor.h:764
void AddFrontLayer()
Definition: quick_actions.cpp:99
CSmoothValue m_ZoomEnvelopeY
Definition: editor.h:741
class IConsole * m_pConsole
Definition: editor.h:282
void AddTileart(bool IgnoreHistory=false)
Definition: tileart.cpp:141
int m_Mode
Definition: editor.h:584
CSoundSource * GetSelectedSource() const
Definition: editor.cpp:487
static const char * ExplainDDNet(int Tile, int Layer)
Definition: explanations.cpp:6
ColorRGBA m_PipetteColor
Definition: editor.h:819
static CUi::EPopupMenuFunctionResult PopupEnvPoint(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1363
CEnvelopeEditorOperationTracker m_EnvOpTracker
Definition: editor.h:1191
class IEngine * m_pEngine
Definition: editor.h:283
EShowTile m_ShowTileInfo
Definition: editor.h:766
char m_MapEditorId
Definition: editor.h:758
IGraphics::CTextureHandle m_CheckerTexture
Definition: editor.h:822
CLineInputBuffered< 256 > m_SettingsCommandInput
Definition: editor.h:849
void DoQuadKnife(int QuadIndex)
Definition: editor.cpp:2605
static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char(&aOutput)[128], std::vector< STextColorSplit > &vColorSplits)
Definition: editor_server_settings.cpp:1023
int m_SelectedImage
Definition: editor.h:806
static bool CompareTimeModifiedAscending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition: editor.h:706
char m_aFileDialogCurrentLink[IO_MAX_PATH_LENGTH]
Definition: editor.h:649
bool HandleMapDrop(const char *pFilename, int StorageType) override
Definition: editor.cpp:9093
static bool IsAssetUsed(int FileType, int Index, void *pUser)
Definition: editor.cpp:4731
void RenderModebar(CUIRect View)
Definition: editor.cpp:5863
EShowEnvelope
Definition: editor.h:788
@ SHOWENV_ALL
Definition: editor.h:791
@ SHOWENV_NONE
Definition: editor.h:789
@ SHOWENV_SELECTED
Definition: editor.h:790
static bool CallbackAppendMap(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:816
ECursorType m_CursorType
Definition: editor.h:832
int m_FileDialogLastPopulatedStorageType
Definition: editor.h:641
IGraphics::CTextureHandle m_SpeedupTexture
Definition: editor.h:302
void AddQuadsLayer()
Definition: quick_actions.cpp:78
int DoEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CLineInput *pLineInput, const CUIRect *pEditBoxRect, int x, float MaxHeight, bool AutoWidth, const std::vector< T > &vData, const FDropdownRenderCallback< T > &pfnMatchCallback)
Definition: editor_server_settings.cpp:405
static CUi::EPopupMenuFunctionResult PopupProofMode(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2964
float EnvelopeToScreenX(const CUIRect &View, float x) const
Definition: editor.cpp:6120
void SelectTangentOutPoint(int Index, int Channel)
Definition: editor.cpp:681
void AddSpeedupLayer()
Definition: quick_actions.cpp:121
@ POPEVENT_REMOVE_USED_IMAGE
Definition: editor.h:615
@ POPEVENT_IMAGE_MAX
Definition: editor.h:609
@ POPEVENT_LOAD
Definition: editor.h:598
@ POPEVENT_LARGELAYER
Definition: editor.h:606
@ POPEVENT_RESTART_SERVER
Definition: editor.h:617
@ POPEVENT_SAVE_COPY
Definition: editor.h:603
@ POPEVENT_EXIT
Definition: editor.h:597
@ POPEVENT_SOUND_MAX
Definition: editor.h:610
@ POPEVENT_RESTARTING_SERVER
Definition: editor.h:618
@ POPEVENT_SAVE_SOUND
Definition: editor.h:605
@ POPEVENT_LOADCURRENT
Definition: editor.h:599
@ POPEVENT_REMOVE_USED_SOUND
Definition: editor.h:616
@ POPEVENT_NEW
Definition: editor.h:601
@ POPEVENT_PIXELART_BIG_IMAGE
Definition: editor.h:612
@ POPEVENT_PREVENTUNUSEDTILES
Definition: editor.h:607
@ POPEVENT_PLACE_BORDER_TILES
Definition: editor.h:611
@ POPEVENT_SAVE
Definition: editor.h:602
@ POPEVENT_SAVE_IMG
Definition: editor.h:604
@ POPEVENT_LOADDROP
Definition: editor.h:600
@ POPEVENT_PIXELART_TOO_MANY_COLORS
Definition: editor.h:614
@ POPEVENT_PIXELART_MANY_COLORS
Definition: editor.h:613
@ POPEVENT_IMAGEDIV16
Definition: editor.h:608
void ApplyAxisAlignment(int &OffsetX, int &OffsetY) const
Definition: editor.cpp:2024
char m_aTooltip[256]
Definition: editor.h:586
int DoButton_Ex(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize=EditorFontSizes::MENU, int Align=TEXTALIGN_MC)
Definition: editor.cpp:244
class IInput * Input() const
Definition: editor.h:319
bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const char *pToolTip=nullptr, const std::vector< STextColorSplit > &vColorSplits={})
Definition: editor.cpp:124
CMapSettingsBackend m_MapSettingsBackend
Definition: editor.h:850
void RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEditorLast)
Definition: editor_server_settings.cpp:55
static bool CallbackOpenMap(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:799
static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:827
const void * m_pColorPickerPopupActiveId
Definition: editor.h:581
class IStorage * Storage() const
Definition: editor.h:328
std::vector< std::pair< int, int > > m_vSelectedEnvelopePoints
Definition: editor.h:803
void AdjustBrushSpecialTiles(bool UseNextFree, int Adjust=0)
Definition: editor.cpp:9294
vec2 m_MouseWorldPos
Definition: editor.h:753
static CUi::EPopupMenuFunctionResult PopupEnvelopeCurvetype(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:3046
float m_OffsetEnvelopeY
Definition: editor.h:746
class IGraphics * m_pGraphics
Definition: editor.h:284
int PopupSelectConfigAutoMapResult()
Definition: popups.cpp:2519
class IClient * m_pClient
Definition: editor.h:279
void FreeDynamicPopupMenus()
Definition: editor.cpp:8334
static CUi::EPopupMenuFunctionResult PopupImage(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1658
static CUi::EPopupMenuFunctionResult PopupPoint(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1279
void RenderTooltip(CUIRect TooltipRect)
Definition: editor.cpp:5957
std::vector< std::reference_wrapper< CEditorComponent > > m_vComponents
Definition: editor.h:291
void ToggleSelectQuad(int Index)
Definition: editor.cpp:521
void DoPointDrag(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY)
Definition: editor.cpp:1573
void SelectTangentInPoint(int Index, int Channel)
Definition: editor.cpp:692
std::vector< std::string > m_vSelectEntitiesFiles
Definition: editor.h:736
static CUi::EPopupMenuFunctionResult PopupSelectSound(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2364
IGraphics::CTextureHandle m_SwitchTexture
Definition: editor.h:303
int m_SortByTimeModified
Definition: editor.h:734
EExtraEditor m_ActiveExtraEditor
Definition: editor.h:783
void SetHotQuadPoint(const std::shared_ptr< CLayerQuads > &pLayer)
Definition: editor.cpp:3692
static void EnvelopeEval(int TimeOffsetMillis, int Env, ColorRGBA &Result, size_t Channels, void *pUser)
Definition: editor.cpp:107
EPreviewState
Definition: editor.h:309
@ PREVIEW_UNLOADED
Definition: editor.h:310
@ PREVIEW_ERROR
Definition: editor.h:312
@ PREVIEW_LOADED
Definition: editor.h:311
static CUi::EPopupMenuFunctionResult PopupGroup(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:450
bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners=IGraphics::CORNER_ALL, const char *pToolTip=nullptr, const std::vector< STextColorSplit > &vColorSplits={})
Definition: editor.cpp:130
void MapDetails()
Definition: quick_actions.cpp:176
int GetTextureUsageFlag() const
Definition: editor.cpp:8613
void SelectQuad(int Index)
Definition: editor.cpp:515
void DrawAABB(const SAxisAlignedBoundingBox &AABB, int OffsetX=0, int OffsetY=0) const
Definition: editor.cpp:1934
int m_PopupEnvelopeSelectedPoint
Definition: editor.h:921
std::vector< int > m_vSelectedQuads
Definition: editor.h:797
int DoButton_Editor_Common(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition: editor.cpp:195
CEditorHistory m_EditorHistory
Definition: editor.h:1187
int FindEnvPointIndex(int Index, int Channel) const
Definition: editor.cpp:615
void RenderStatusbar(CUIRect View, CUIRect *pTooltipRect)
Definition: editor.cpp:5931
int m_CurrentQuadIndex
Definition: editor.h:805
float ScreenToEnvelopeX(const CUIRect &View, float x) const
Definition: editor.cpp:6115
static CUi::EPopupMenuFunctionResult PopupNewFolder(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1907
static bool CompareTimeModifiedDescending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition: editor.h:719
void OnIngameMoved() override
Definition: editor.h:501
void QuadSelectionAABB(const std::shared_ptr< CLayerQuads > &pLayer, SAxisAlignedBoundingBox &OutAABB)
Definition: editor.cpp:1958
void void Reset(bool CreateDefault=true)
Definition: editor.cpp:8563
int m_Dialog
Definition: editor.h:585
class IClient * Client() const
Definition: editor.h:320
void UpdateMentions() override
Definition: editor.h:499
void OnActivate() override
Definition: editor.cpp:9033
static const char * ExplainVanilla(int Tile, int Layer)
Definition: explanations.cpp:599
void ComputeAABBAlignments(const std::shared_ptr< CLayerQuads > &pLayer, const SAxisAlignedBoundingBox &AABB, int OffsetX, int OffsetY, std::vector< SAlignmentInfo > &vAlignments) const
Definition: editor.cpp:1798
int m_FilePreviewSound
Definition: editor.h:660
void AddSelectedLayer(int LayerIndex)
Definition: editor.cpp:508
static bool IsVanillaImage(const char *pImage)
Definition: editor.cpp:90
std::pair< int, int > EnvGetSelectedTimeAndValue() const
Definition: editor.cpp:718
void RemoveUnusedEnvelopes()
Definition: editor.cpp:6013
void OnWindowResize() override
Definition: editor.cpp:9039
float m_AnimateTime
Definition: editor.h:771
bool m_ColorPipetteActive
Definition: editor.h:820
bool m_UpdateEnvPointInfo
Definition: editor.h:811
bool m_ResetZoomEnvelope
Definition: editor.h:743
void RenderSavingIndicator(CUIRect View)
Definition: editor.cpp:8316
class ISound * Sound() const
Definition: editor.h:326
std::shared_ptr< CLayerGroup > m_apSavedBrushes[10]
Definition: editor.h:315
void FilelistPopulate(int StorageType, bool KeepSelection=false)
Definition: editor.cpp:5709
class ISound * m_pSound
Definition: editor.h:286
void RemoveTimeOffsetEnvelope(const std::shared_ptr< CEnvelope > &pEnvelope)
Definition: editor.cpp:6145
const void * m_pContainerPanned
Definition: editor.h:756
EDragSide
Definition: editor.h:1046
float ScreenToEnvelopeY(const CUIRect &View, float y) const
Definition: editor.cpp:6125
static CUi::EPopupMenuFunctionResult PopupEvent(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2033
void DrawPointAlignments(const std::vector< SAlignmentInfo > &vAlignments, int OffsetX, int OffsetY) const
Definition: editor.cpp:1910
void DoQuad(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int Index)
Definition: editor.cpp:2033
static bool AddImage(const char *pFilename, int StorageType, void *pUser)
Definition: editor.cpp:4546
bool IsQuadPointSelected(int QuadIndex, int Index) const
Definition: editor.cpp:602
bool m_AnimateUpdatePopup
Definition: editor.h:773
static const void * ms_pUiGotContext
Definition: editor.h:840
static bool CallbackSaveImage(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:895
class IConsole * Console() const
Definition: editor.h:323
CQuadEditTracker m_QuadTracker
Definition: editor.h:1190
int64_t m_AnimateStart
Definition: editor.h:770
static CUi::EPopupMenuFunctionResult PopupMapInfo(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1958
class ITextRender * m_pTextRender
Definition: editor.h:285
int FindSelectedQuadIndex(int Index) const
Definition: editor.cpp:607
const char * m_pFileDialogButtonText
Definition: editor.h:644
int DoButton_FontIcon(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip, int Corners, float FontSize=10.0f)
Definition: editor.cpp:259
void ComputePointsAlignments(const std::shared_ptr< CLayerQuads > &pLayer, bool Pivot, int OffsetX, int OffsetY, std::vector< SAlignmentInfo > &vAlignments) const
Definition: editor.cpp:1735
void ApplyAlignments(const std::vector< SAlignmentInfo > &vAlignments, int &OffsetX, int &OffsetY)
Definition: editor.cpp:1992
void AddTuneLayer()
Definition: quick_actions.cpp:110
int m_SelectedQuadPoint
Definition: editor.h:798
void OnMouseMove(vec2 MousePos)
Definition: editor.cpp:8777
bool CanFillGameTiles() const
Definition: quick_actions.cpp:16
std::vector< CFilelistItem > m_vCompleteFileList
Definition: editor.h:677
bool IsQuadCornerSelected(int Index) const
Definition: editor.cpp:597
CRenderTools m_RenderTools
Definition: editor.h:288
void SetHotEnvelopePoint(const CUIRect &View, const std::shared_ptr< CEnvelope > &pEnvelope, int ActiveChannels)
Definition: editor.cpp:6238
void PreparePointDrag(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex)
Definition: editor.cpp:1568
IGraphics::CTextureHandle GetSwitchTexture()
Definition: editor.cpp:8639
static CUi::EPopupMenuFunctionResult PopupMenuSettings(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:226
void ToggleEnvPoint(int Index, int Channel)
Definition: editor.cpp:642
int m_SelectedSound
Definition: editor.h:807
std::shared_ptr< CLayerGroup > GetSelectedGroup() const
Definition: editor.cpp:444
void SelectEnvPoint(int Index)
Definition: editor.cpp:628
float EnvelopeToScreenY(const CUIRect &View, float y) const
Definition: editor.cpp:6130
static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2589
@ FILETYPE_IMG
Definition: editor.h:635
@ FILETYPE_MAP
Definition: editor.h:634
@ NUM_FILETYPES
Definition: editor.h:637
@ FILETYPE_SOUND
Definition: editor.h:636
std::string m_SelectEntitiesImage
Definition: editor.h:737
class IConfigManager * m_pConfigManager
Definition: editor.h:280
class CConfig * Config() const
Definition: editor.h:322
bool m_BrushDrawDestructive
Definition: editor.h:627
class IInput * m_pInput
Definition: editor.h:278
bool m_PreviewZoom
Definition: editor.h:751
float m_OffsetEnvelopeX
Definition: editor.h:745
void PopupSelectAutoMapReferenceInvoke(int Current, float x, float y)
Definition: popups.cpp:2567
void RenderMapSettingsErrorDialog()
Definition: editor_server_settings.cpp:550
void AddSwitchLayer()
Definition: quick_actions.cpp:88
ColorRGBA GetButtonColor(const void *pId, int Checked)
Definition: editor.cpp:136
class IEngine * Engine() const
Definition: editor.h:324
static const char * Explain(EExplanation Explanation, int Tile, int Layer)
Definition: explanations.cpp:669
int PopupSelectImageResult()
Definition: popups.cpp:2351
void UpdateZoomEnvelopeX(const CUIRect &View)
Definition: editor.cpp:6041
CMapView * MapView()
Definition: editor.h:332
ECursorType
Definition: editor.h:825
@ NUM_CURSORS
Definition: editor.h:829
@ CURSOR_NORMAL
Definition: editor.h:826
@ CURSOR_RESIZE_V
Definition: editor.h:827
@ CURSOR_RESIZE_H
Definition: editor.h:828
static bool CompareFilenameDescending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition: editor.h:693
std::pair< int, int > m_SelectedTangentInPoint
Definition: editor.h:809
void RedoLastAction()
Definition: editor.cpp:9284
void HandleWriterFinishJobs()
Definition: editor.cpp:8893
void Render()
Definition: editor.cpp:7960
EPreviewState m_FilePreviewState
Definition: editor.h:661
static bool CompareFilenameAscending(const CFilelistItem *pLhs, const CFilelistItem *pRhs)
Definition: editor.h:680
void ResetIngameMoved() override
Definition: editor.h:502
int m_SelectedGroup
Definition: editor.h:800
class CConfig * m_pConfig
Definition: editor.h:281
bool m_FileDialogSaveAction
Definition: editor.h:642
static const ColorRGBA ms_DefaultPropColor
Definition: editor.h:316
void RenderSelectedImage(CUIRect View)
Definition: editor.cpp:4974
void DeselectQuadPoints()
Definition: editor.cpp:535
int m_SelectedQuadEnvelope
Definition: editor.h:804
CMapView m_MapView
Definition: editor.h:292
IGraphics::CTextureHandle m_EntitiesTexture
Definition: editor.h:298
void PlaceBorderTiles()
Definition: editor.cpp:8707
static CUi::EPopupMenuFunctionResult PopupSelectAutoMapReference(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2532
bool Load(const char *pFilename, int StorageType) override
Definition: editor.cpp:9108
void UpdateZoomEnvelopeY(const CUIRect &View)
Definition: editor.cpp:6054
void RefreshFilteredFileList()
Definition: editor.cpp:5674
short m_SpeedupAngle
Definition: editor.h:1176
bool ReplaceSound(const char *pFileName, int StorageType, bool CheckDuplicate)
Definition: editor.cpp:4674
unsigned char m_ViewTeleNumber
Definition: editor.h:1170
void AddQuadOrSound()
Definition: quick_actions.cpp:24
EExtraEditor
Definition: editor.h:776
@ EXTRAEDITOR_ENVELOPES
Definition: editor.h:778
@ EXTRAEDITOR_NONE
Definition: editor.h:777
@ NUM_EXTRAEDITORS
Definition: editor.h:781
@ EXTRAEDITOR_SERVER_SETTINGS
Definition: editor.h:779
@ EXTRAEDITOR_HISTORY
Definition: editor.h:780
std::shared_ptr< CLayerQuads > m_pQuadsetPicker
Definition: editor.h:838
int m_FileDialogFileType
Definition: editor.h:653
ColorRGBA m_aSavedColors[8]
Definition: editor.h:818
void InvokeFileDialog(int StorageType, int FileType, const char *pTitle, const char *pButtonText, const char *pBasepath, bool FilenameAsDefault, bool(*pfnFunc)(const char *pFilename, int StorageType, void *pUser), void *pUser)
Definition: editor.cpp:5785
void RenderImagesList(CUIRect Toolbox)
Definition: editor.cpp:4823
void PopupSelectSoundInvoke(int Current, float x, float y)
Definition: popups.cpp:2398
static bool AddSound(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:4610
CLineInputBuffered< IO_MAX_PATH_LENGTH > m_FileDialogFileNameInput
Definition: editor.h:647
int m_PopupEventType
Definition: editor.h:621
unsigned char m_TuningNum
Definition: editor.h:1172
void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip)
Definition: editor.cpp:187
void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId)
Definition: editor.cpp:982
static CUi::EPopupMenuFunctionResult PopupSelectGametileOp(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2434
int m_SortByFilename
Definition: editor.h:733
SEditResult< int > UiDoValueSelector(void *pId, CUIRect *pRect, const char *pLabel, int Current, int Min, int Max, int Step, float Scale, const char *pToolTip, bool IsDegree=false, bool IsHex=false, int Corners=IGraphics::CORNER_ALL, const ColorRGBA *pColor=nullptr, bool ShowValue=true)
Definition: editor.cpp:306
int m_AllowPlaceUnusedTiles
Definition: editor.h:626
int m_PopupEventWasActivated
Definition: editor.h:623
float ScreenToEnvelopeDY(const CUIRect &View, float DeltaY)
Definition: editor.cpp:6140
static CUi::EPopupMenuFunctionResult PopupMenuTools(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:153
void RenderLayers(CUIRect LayersBox)
Definition: editor.cpp:3799
CEditor()
Definition: editor.h:360
void ZoomAdaptOffsetX(float ZoomFactor, const CUIRect &View)
Definition: editor.cpp:6035
int m_SelectedQuadIndex
Definition: editor.h:799
bool IsTangentOutPointSelected(int Index, int Channel) const
Definition: editor.cpp:687
class IGraphics * Graphics() const
Definition: editor.h:325
void AddTileLayer()
Definition: quick_actions.cpp:67
bool m_ShowDetail
Definition: editor.h:767
CRenderTools * RenderTools()
Definition: editor.h:330
int m_Mentions
Definition: editor.h:629
void ComputePointAlignments(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, int OffsetX, int OffsetY, std::vector< SAlignmentInfo > &vAlignments, bool Append=false) const
Definition: editor.cpp:1612
bool m_FileDialogOpening
Definition: editor.h:664
CImageInfo m_TileartImageInfo
Definition: editor.h:853
static bool CallbackAddTileart(const char *pFilepath, int StorageType, void *pUser)
Definition: tileart.cpp:192
int m_FilePreviewImageHeight
Definition: editor.h:663
CSmoothValue m_ZoomEnvelopeX
Definition: editor.h:740
void FillGameTiles(EGameTileOp FillTile) const
Definition: quick_actions.cpp:9
static CUi::EPopupMenuFunctionResult PopupSound(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:1799
void RenderSounds(CUIRect Toolbox)
Definition: editor.cpp:4997
bool IsQuadSelected(int Index) const
Definition: editor.cpp:592
float m_aExtraEditorSplits[NUM_EXTRAEDITORS]
Definition: editor.h:784
std::deque< std::shared_ptr< CDataFileWriterFinishJob > > m_WriterFinishJobs
Definition: editor.h:843
CEditorHistory m_ServerSettingsHistory
Definition: editor.h:1188
bool IsInTriangle(vec2 Point, vec2 A, vec2 B, vec2 C)
Definition: editor.cpp:2584
std::vector< int > m_vSelectedLayers
Definition: editor.h:796
CLayerSelector * LayerSelector()
Definition: editor.h:334
void LoadCurrentMap()
Definition: editor.cpp:9062
void SortFilteredFileList()
Definition: editor.cpp:5115
void DoSoundSource(int LayerIndex, CSoundSource *pSource, int Index)
Definition: editor.cpp:1465
void RenderEditorHistory(CUIRect View)
Definition: editor.cpp:7666
bool PerformAutosave()
Definition: editor.cpp:8857
void SelectPreviousLayer()
Definition: editor.cpp:775
CLineInputBuffered< IO_MAX_PATH_LENGTH > m_FileDialogNewFolderNameInput
Definition: editor.h:657
int PopupSelectSoundResult()
Definition: popups.cpp:2406
SEditResult< E > DoPropertiesWithState(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector< ColorRGBA > &vColors={})
Definition: editor_props.cpp:20
unsigned char m_SwitchDelay
Definition: editor.h:1179
void UndoLastAction()
Definition: editor.cpp:9274
void DeselectEnvPoints()
Definition: editor.cpp:674
bool m_PreventUnusedTilesWasWarned
Definition: editor.h:625
@ TILE_VANILLA_FLAG_RED
Definition: editor.h:1119
@ TILE_VANILLA_SPAWN
Definition: editor.h:1116
@ TILE_VANILLA_SHIELD
Definition: editor.h:1121
@ TILE_VANILLA_SHOTGUN
Definition: editor.h:1123
@ TILE_VANILLA_NINJA
Definition: editor.h:1125
@ TILE_VANILLA_GRENADE
Definition: editor.h:1124
@ TILE_VANILLA_HEART
Definition: editor.h:1122
@ TILE_VANILLA_SPAWN_BLUE
Definition: editor.h:1118
@ TILE_VANILLA_SPAWN_RED
Definition: editor.h:1117
@ TILE_VANILLA_LASER
Definition: editor.h:1126
@ TILE_VANILLA_FLAG_BLUE
Definition: editor.h:1120
bool m_FileDialogShowingRoot
Definition: editor.h:655
void SelectQuadPoint(int QuadIndex, int Index)
Definition: editor.cpp:540
CUi m_UI
Definition: editor.h:289
IGraphics::CTextureHandle m_TeleTexture
Definition: editor.h:301
static bool CallbackSaveCopyMap(const char *pFileName, int StorageType, void *pUser)
Definition: editor.cpp:870
std::vector< const CFilelistItem * > m_vpFilteredFileList
Definition: editor.h:678
unsigned char m_SwitchNum
Definition: editor.h:1178
float m_MouseWorldScale
Definition: editor.h:752
static CUi::EPopupMenuFunctionResult PopupSelectConfigAutoMap(void *pContext, CUIRect View, bool Active)
Definition: popups.cpp:2472
EShowEnvelope m_ShowEnvelopePreview
Definition: editor.h:793
void ResetMentions() override
Definition: editor.h:500
void DrawAxis(EAxis Axis, CPoint &OriginalPoint, CPoint &Point) const
Definition: editor.cpp:1590
void RenderFileDialog()
Definition: editor.cpp:5136
Definition: editor_trackers.h:73
EType
Definition: envelope.h:15
Definition: image.h:12
Definition: layer_group.h:10
Definition: layer_selector.h:7
Definition: layer_tiles.h:35
Definition: layer.h:16
class ITextRender * TextRender()
Definition: editor.h:1202
class CEditor * m_pEditor
Definition: layer.h:18
class IGraphics * Graphics()
Definition: editor.h:1201
Definition: lineinput.h:25
Definition: editor_server_settings.h:227
Definition: editor_server_settings.h:195
Definition: map_view.h:14
Definition: prompt.h:11
Definition: editor.h:223
int m_Max
Definition: editor.h:235
int m_Value
Definition: editor.h:232
int m_Type
Definition: editor.h:233
CProperty(std::nullptr_t)
Definition: editor.h:228
CProperty(const char *pName, int Value, int Type, int Min, int Max)
Definition: editor.h:225
const char * m_pName
Definition: editor.h:231
int m_Min
Definition: editor.h:234
Definition: editor_trackers.h:19
Definition: mapitems.h:223
Definition: render.h:188
Definition: smooth_value.h:12
Definition: mapitems.h:472
Definition: mapitems.h:237
Definition: ui_rect.h:11
Definition: ui.h:283
EPopupMenuFunctionResult
Definition: ui.h:289
Definition: color.h:173
Definition: color.h:210
Definition: client.h:36
Definition: config.h:9
Definition: console.h:18
Definition: editor.h:8
Definition: engine.h:15
Definition: graphics.h:201
void Invalidate()
Definition: graphics.h:214
Definition: graphics.h:184
@ CORNER_ALL
Definition: graphics.h:416
Definition: input.h:18
Definition: jobs.h:20
Definition: sound.h:12
Definition: storage.h:20
Definition: textrender.h:314
std::function< void(int *pIndex)> FIndexModifyFunction
Definition: editor.h:52
#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description)
Definition: editor.h:356
std::function< void(const T &, char(&aOutput)[128], std::vector< STextColorSplit > &)> FDropdownRenderCallback
Definition: editor.h:54
@ PROPTYPE_NULL
Definition: editor.h:240
@ PROPTYPE_AUTOMAPPER_REFERENCE
Definition: editor.h:250
@ PROPTYPE_BOOL
Definition: editor.h:241
@ PROPTYPE_SHIFT
Definition: editor.h:247
@ PROPTYPE_COLOR
Definition: editor.h:244
@ PROPTYPE_ENVELOPE
Definition: editor.h:246
@ PROPTYPE_AUTOMAPPER
Definition: editor.h:249
@ PROPTYPE_ANGLE_SCROLL
Definition: editor.h:243
@ PROPTYPE_IMAGE
Definition: editor.h:245
@ PROPTYPE_SOUND
Definition: editor.h:248
@ PROPTYPE_INT
Definition: editor.h:242
@ DIALOG_NONE
Definition: editor.h:64
@ DIALOG_QUICK_PROMPT
Definition: editor.h:67
@ DIALOG_FILE
Definition: editor.h:65
@ MODE_SOUNDS
Definition: editor.h:61
@ MODE_LAYERS
Definition: editor.h:59
@ DIALOG_MAPSETTINGS_ERROR
Definition: editor.h:66
@ NUM_MODES
Definition: editor.h:62
@ MODE_IMAGES
Definition: editor.h:60
EGameTileOp
Definition: enums.h:20
#define E(buf, str)
void mem_zero(T *block, size_t size)
Definition: system.h:178
int str_comp_filenames(const char *a, const char *b)
Definition: system.cpp:2983
int str_comp(const char *a, const char *b)
Definition: system.cpp:2973
int str_copy(char *dst, const char *src, int dst_size)
Definition: system.cpp:2760
#define GNUC_ATTRIBUTE(x)
Definition: log.h:10
static MAYBE_UNUSED constexpr float MENU
Definition: editor_ui.h:19
Definition: editor.h:669
bool m_IsLink
Definition: editor.h:673
bool m_IsDir
Definition: editor.h:672
int m_StorageType
Definition: editor.h:674
time_t m_TimeModified
Definition: editor.h:675
char m_aName[IO_MAX_PATH_LENGTH]
Definition: editor.h:671
char m_aFilename[IO_MAX_PATH_LENGTH]
Definition: editor.h:670
Definition: editor.h:995
int m_Diff
Definition: editor.h:1006
CPoint m_AlignedPoint
Definition: editor.h:996
int m_X
Definition: editor.h:1001
int m_Y
Definition: editor.h:1002
int m_PointIndex
Definition: editor.h:1005
EAxis m_Axis
Definition: editor.h:1004
Definition: editor.h:966
CPoint m_aPoints[NUM_POINTS]
Definition: editor.h:976
@ NUM_POINTS
Definition: editor.h:974
@ POINT_CENTER
Definition: editor.h:973
@ POINT_TR
Definition: editor.h:970
@ POINT_TL
Definition: editor.h:969
@ POINT_BL
Definition: editor.h:971
@ POINT_BR
Definition: editor.h:972
Definition: editor.h:890
std::vector< int > m_vLayerIndices
Definition: editor.h:893
std::vector< std::shared_ptr< CLayerTiles > > m_vpLayers
Definition: editor.h:892
CLayerTiles::SCommonPropState m_CommonPropState
Definition: editor.h:894
CEditor * m_pEditor
Definition: editor.h:891
Definition: editor.h:516
bool operator()(const char *pLhs, const char *pRhs) const
Definition: editor.h:517
Definition: layer_tiles.h:140
Definition: ui.h:727
Definition: editor_ui.h:7
Definition: ui.h:33
Definition: ui.h:272
Definition: editor_server_settings.h:47
#define B(i, j)
@ TEXTALIGN_MC
Definition: textrender.h:35
@ IO_MAX_PATH_LENGTH
Definition: types.h:43
vector2_base< float > vec2
Definition: vmath.h:158