DDNet documentation
Loading...
Searching...
No Matches
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 "editor_history.h"
8#include "editor_trackers.h"
9#include "editor_ui.h"
10#include "font_typer.h"
11#include "layer_selector.h"
12#include "map_view.h"
13#include "quad_art.h"
14
15#include <base/bezier.h>
16#include <base/fs.h>
17
18#include <engine/editor.h>
20
21#include <game/client/ui.h>
23#include <game/editor/enums.h>
39#include <game/editor/prompt.h>
41#include <game/mapitems.h>
42
43#include <deque>
44#include <functional>
45#include <map>
46#include <memory>
47#include <string>
48#include <vector>
49
50template<typename T>
51using FDropdownRenderCallback = std::function<void(const T &, char (&aOutput)[128], std::vector<STextColorSplit> &)>;
52
53// CEditor SPECIFIC
54enum
55{
59
61};
62
63enum
69
70 // The font typer component sets m_Dialog
71 // while it is active to make sure no other component
72 // interprets the key presses
74};
75
77{
78public:
79 CProperty(const char *pName, int Value, int Type, int Min, int Max) :
80 m_pName(pName), m_Value(Value), m_Type(Type), m_Min(Min), m_Max(Max) {}
81
82 CProperty(std::nullptr_t) :
83 m_pName(nullptr), m_Value(0), m_Type(0), m_Min(0), m_Max(0) {}
84
85 const char *m_pName;
87 int m_Type;
88 int m_Min;
89 int m_Max;
90};
91
92enum
93{
105};
106
107class CEditor : public IEditor
108{
109 class IInput *m_pInput = nullptr;
110 class IClient *m_pClient = nullptr;
112 class CConfig *m_pConfig = nullptr;
113 class IEngine *m_pEngine = nullptr;
114 class IGraphics *m_pGraphics = nullptr;
115 class ITextRender *m_pTextRender = nullptr;
116 class ISound *m_pSound = nullptr;
117 class IStorage *m_pStorage = nullptr;
121 std::vector<std::reference_wrapper<CEditorComponent>> m_vComponents;
129
131
137
145 std::shared_ptr<CLayerGroup> m_apSavedBrushes[10];
146 static constexpr ColorRGBA ms_DefaultPropColor = ColorRGBA(1, 1, 1, 0.5f);
147
148public:
149 class IInput *Input() const { return m_pInput; }
150 class IClient *Client() const { return m_pClient; }
152 class CConfig *Config() const { return m_pConfig; }
153 class IEngine *Engine() const { return m_pEngine; }
154 class IGraphics *Graphics() const { return m_pGraphics; }
155 class ISound *Sound() const { return m_pSound; }
156 class ITextRender *TextRender() const { return m_pTextRender; }
157 class IStorage *Storage() const { return m_pStorage; }
158 CUi *Ui() { return &m_UI; }
161 CEditorMap *Map();
162 const CEditorMap *Map() const;
163 CMapView *MapView() { return &m_MapView; }
164 const CMapView *MapView() const { return &m_MapView; }
166 const CQuadKnife *QuadKnife() const { return &m_QuadKnife; }
169 void FillGameTiles(EGameTileOp FillTile) const;
170 bool CanFillGameTiles() const;
171 void AddQuadOrSound();
172 void AddGroup();
173 void AddSoundLayer();
174 void AddTileLayer();
175 void AddQuadsLayer();
177 void AddFrontLayer();
178 void AddTuneLayer();
179 void AddSpeedupLayer();
180 void AddTeleLayer();
181 void DeleteSelectedLayer();
182 void LayerSelectImage();
183 bool IsNonGameTileLayerSelected() const;
185 void TestMapLocally();
186 void GotoPosition();
187#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description) CQuickAction m_QuickAction##name;
189#undef REGISTER_QUICK_ACTION
190
192#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description) m_QuickAction##name(text, description, callback, disabled, active, button_color),
193#include <game/editor/quick_actions.h>
196 {
203
205
206 m_BrushColorEnabled = true;
207
212
213 m_SelectEntitiesImage = "DDNet";
214
215 m_ShowMousePointer = true;
216
217 m_GuiActive = true;
220
221 for(size_t i = 0; i < std::size(m_aSavedColors); ++i)
222 {
223 m_aSavedColors[i] = color_cast<ColorRGBA>(ColorHSLA(i / (float)std::size(m_aSavedColors), 1.0f, 0.5f));
224 }
225
227 for(auto &CursorTexture : m_aCursorTextures)
228 CursorTexture.Invalidate();
229
231
232 // DDRace
233
237
238 m_TuningNumber = 1;
239 m_ViewTuning = 0;
240
241 m_SwitchNumber = 1;
243 m_SpeedupForce = 50;
245 m_SpeedupAngle = 0;
246 m_LargeLayerWasWarned = false;
251
252 void Init() override;
253 void OnUpdate() override;
254 void OnRender() override;
255 void OnActivate() override;
256 void OnWindowResize() override;
257 void OnClose() override;
258 void OnDialogClose();
259 bool HasUnsavedData() const override;
260 void UpdateMentions() override { m_Mentions++; }
261 void ResetMentions() override { m_Mentions = 0; }
262 void OnIngameMoved() override { m_IngameMoved = true; }
263 void ResetIngameMoved() override { m_IngameMoved = false; }
264
266 void OnInput(const IInput::CEvent &Event);
267 void MouseAxisLock(vec2 &CursorRel);
268 vec2 m_MouseAxisInitialPos = vec2(0.0f, 0.0f);
269 enum class EAxisLock
270 {
271 START,
272 NONE,
273 HORIZONTAL,
274 VERTICAL,
276
283 void HandleAutosave();
284 std::deque<std::shared_ptr<CDataFileWriterFinishJob>> m_WriterFinishJobs;
286 bool IsSaving(const char *pFilename) const;
288
289 // TODO: The name of the ShowFileDialogError function is not accurate anymore, this is used for generic error messages.
290 // Popups in UI should be shared_ptrs to make this even more generic.
293 public:
294 bool operator()(const char *pLhs, const char *pRhs) const;
295 };
296 std::map<const char *, CUi::SMessagePopupContext *, CStringKeyComparator> m_PopupMessageContexts;
297 [[gnu::format(printf, 2, 3)]] void ShowFileDialogError(const char *pFormat, ...);
298
299 void Reset();
300 void AddDefaultMap();
301 void CloseMap(size_t Index, bool Confirm);
302 bool Save(const char *pFilename) override;
303 bool Load(const char *pFilename, int StorageType) override;
304 bool HandleMapDrop(const char *pFilename, int StorageType) override;
305 void LoadIngameMap();
306 void Render();
307
308 void UpdateBrushPicker();
309 void RenderPressedKeys(CUIRect View);
313 void RenderMousePointer();
314 void RenderIngameEntities(const CLayerGroup &Group, const CLayerTiles &TilesLayer);
315
316 template<typename E>
317 SEditResult<E> DoPropertiesWithState(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
318 int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector<ColorRGBA> &vColors = {});
319
320 CUi::SColorPickerPopupContext m_ColorPickerPopupContext;
321 const void *m_pColorPickerPopupActiveId = nullptr;
322 void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function<void(ColorRGBA Color)> &SetColor);
323
324 int m_Mode;
325 int m_Dialog;
326 bool m_CloseMapAfterSave = false;
327 char m_aTooltip[256] = "";
328
330
331 enum
333 POPEVENT_EXIT = 0,
349 };
350
357 enum class EUnusedEntities
358 {
359 ALLOWED_IMPLICIT = -1,
360 NOT_ALLOWED = 0,
361 ALLOWED_EXPLICIT = 1,
362 };
365
367
368 int m_Mentions = 0;
369 bool m_IngameMoved = false;
370
373 std::vector<std::string> m_vSelectEntitiesFiles;
374 std::string m_SelectEntitiesImage;
375
377 bool m_GuiActive;
378
379 const void *m_pContainerPanned;
381
382 enum EShowTile
383 {
387 };
389
391 {
392 EXTRAEDITOR_NONE = -1,
397 };
399 float m_aExtraEditorSplits[NUM_EXTRAEDITORS] = {250.0f, 250.0f, 250.0f};
400 float m_ToolBoxWidth = 100.0f;
401
402 bool m_ShowEnvelopePreview = false;
403 enum class EEnvelopePreview
404 {
405 NONE,
406 SELECTED,
407 ALL,
408 };
411 {
412 NONE = 0,
413 MOVE,
414 ROTATE,
415 };
417
418 bool m_ShowPicker = false;
419 bool m_ShowPickerToggle = false;
420
421 // Color palette and pipette
423 ColorRGBA m_PipetteColor = ColorRGBA(1.0f, 1.0f, 1.0f, 1.0f);
424 bool m_ColorPipetteActive = false;
425
427
428 enum ECursorType
429 {
434 };
437
439
440 std::unique_ptr<CEditorMap> m_pToolsMap;
441 std::shared_ptr<CLayerGroup> m_pBrush;
442 std::shared_ptr<CLayerTiles> m_pTilesetPicker;
443 std::shared_ptr<CLayerQuads> m_pQuadsetPicker;
444
445 const void *m_pUiGotContext = nullptr;
446
448
449 // editor_ui.cpp
450 void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip);
451 ColorRGBA GetButtonColor(const void *pId, int Checked);
452 int DoButtonLogic(const void *pId, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
453 int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip);
454 int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners);
455 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);
456 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);
457 int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags = BUTTONFLAG_LEFT, const char *pToolTip = nullptr);
458 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);
459 bool DoEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
460 bool DoClearableEditBox(CLineInput *pLineInput, const CUIRect *pRect, float FontSize, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr, const std::vector<STextColorSplit> &vColorSplits = {});
461 SEditResult<int> UiDoValueSelector(const 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);
462 void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const;
464 // editor_server_settings.cpp
465 void DoMapSettingsEditBox(CMapSettingsBackend::CContextWithInput *pContext, const CUIRect *pRect, float FontSize, float DropdownMaxHeight, int Corners = IGraphics::CORNER_ALL, const char *pToolTip = nullptr);
466 template<typename T>
467 int DoEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CLineInput *pLineInput, const CUIRect *pEditBoxRect, int x, float MaxHeight, bool AutoWidth, const std::vector<T> &vData, const FDropdownRenderCallback<T> &pfnMatchCallback);
468 template<typename T>
469 int RenderEditBoxDropdown(SEditBoxDropdownContext *pDropdown, CUIRect View, CLineInput *pLineInput, int x, float MaxHeight, bool AutoWidth, const std::vector<T> &vData, const FDropdownRenderCallback<T> &pfnMatchCallback);
470
471 // For tile art popups
474 void TileArtCheckColors();
475
476 // For quad art popups
479
480 static CUi::EPopupMenuFunctionResult PopupMenuFile(void *pContext, CUIRect View, bool Active);
481 static CUi::EPopupMenuFunctionResult PopupMenuTools(void *pContext, CUIRect View, bool Active);
482 static CUi::EPopupMenuFunctionResult PopupMenuSettings(void *pContext, CUIRect View, bool Active);
483 class CPopupMapTab : public SPopupMenuId
485 public:
487 size_t m_SelectedMap;
488 static CUi::EPopupMenuFunctionResult Render(void *pContext, CUIRect View, bool Active);
489
490 private:
491 const char m_CloseButtonId = 0;
492 const char m_CopyNameButtonId = 0;
493 const char m_CopyPathButtonId = 0;
494 const char m_ShowFileButtonId = 0;
495 };
496 CPopupMapTab m_PopupMapTab;
497 static CUi::EPopupMenuFunctionResult PopupGroup(void *pContext, CUIRect View, bool Active);
498 struct SLayerPopupContext : public SPopupMenuId
499 {
501 std::vector<std::shared_ptr<CLayerTiles>> m_vpLayers;
502 std::vector<int> m_vLayerIndices;
504 };
505 static CUi::EPopupMenuFunctionResult PopupLayer(void *pContext, CUIRect View, bool Active);
506 class CQuadPopupContext : public SPopupMenuId
507 {
508 public:
511 int m_Color;
512 };
514 static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active);
515 static CUi::EPopupMenuFunctionResult PopupSource(void *pContext, CUIRect View, bool Active);
516 class CPointPopupContext : public SPopupMenuId
517 {
518 public:
522 };
524 static CUi::EPopupMenuFunctionResult PopupPoint(void *pContext, CUIRect View, bool Active);
525 static CUi::EPopupMenuFunctionResult PopupImage(void *pContext, CUIRect View, bool Active);
526 static CUi::EPopupMenuFunctionResult PopupSound(void *pContext, CUIRect View, bool Active);
527 static CUi::EPopupMenuFunctionResult PopupMapInfo(void *pContext, CUIRect View, bool Active);
528 static CUi::EPopupMenuFunctionResult PopupEvent(void *pContext, CUIRect View, bool Active);
529 static CUi::EPopupMenuFunctionResult PopupSelectImage(void *pContext, CUIRect View, bool Active);
530 static CUi::EPopupMenuFunctionResult PopupSelectSound(void *pContext, CUIRect View, bool Active);
531 static CUi::EPopupMenuFunctionResult PopupSelectGametileOp(void *pContext, CUIRect View, bool Active);
532 static CUi::EPopupMenuFunctionResult PopupSelectAutomapperConfig(void *pContext, CUIRect View, bool Active);
533 static CUi::EPopupMenuFunctionResult PopupSelectAutomapperReference(void *pContext, CUIRect View, bool Active);
534 static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active);
535 static CUi::EPopupMenuFunctionResult PopupSpeedup(void *pContext, CUIRect View, bool Active);
536 static CUi::EPopupMenuFunctionResult PopupSwitch(void *pContext, CUIRect View, bool Active);
537 static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active);
538 static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active);
539 static CUi::EPopupMenuFunctionResult PopupEntities(void *pContext, CUIRect View, bool Active);
540 static CUi::EPopupMenuFunctionResult PopupProofMode(void *pContext, CUIRect View, bool Active);
541 static CUi::EPopupMenuFunctionResult PopupAnimateSettings(void *pContext, CUIRect View, bool Active);
542 static CUi::EPopupMenuFunctionResult PopupQuadArt(void *pContext, CUIRect View, bool Active);
543
544 static bool CallbackOpenMap(const char *pFilename, int StorageType, void *pUser);
545 static bool CallbackAppendMap(const char *pFilename, int StorageType, void *pUser);
546 static bool CallbackSaveMap(const char *pFilename, int StorageType, void *pUser);
547 static bool CallbackSaveCopyMap(const char *pFilename, int StorageType, void *pUser);
548 static bool CallbackAddTileArt(const char *pFilepath, int StorageType, void *pUser);
549 static bool CallbackAddQuadArt(const char *pFilepath, int StorageType, void *pUser);
550 static bool CallbackSaveImage(const char *pFilename, int StorageType, void *pUser);
551 static bool CallbackSaveSound(const char *pFilename, int StorageType, void *pUser);
552 static bool CallbackCustomEntities(const char *pFilename, int StorageType, void *pUser);
553
554 void PopupSelectImageInvoke(int Current, float x, float y);
556
557 void PopupSelectGametileOpInvoke(float x, float y);
559
560 void PopupSelectAutomapperConfigInvoke(int Current, float x, float y);
562
563 void PopupSelectSoundInvoke(int Current, float x, float y);
565
566 void PopupSelectAutomapperReferenceInvoke(int Current, float x, float y);
568
569 void DoQuadEnvelopes(const CLayerQuads *pLayerQuads);
570 void DoQuadEnvPoint(const CQuad *pQuad, CEnvelope *pEnvelope, int QuadIndex, int PointIndex);
571 void DoQuadPoint(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int v);
572 void UpdateHotQuadPoint(const CLayerQuads *pLayer);
573
574 void DoSoundSource(int LayerIndex, CSoundSource *pSource, int Index);
575 void UpdateHotSoundSource(const CLayerSounds *pLayer);
576
577 enum class EAxis
578 {
579 NONE = 0,
580 X,
581 Y,
582 };
584 {
585 enum
586 {
587 POINT_TL = 0,
588 POINT_TR,
589 POINT_BL,
590 POINT_BR,
593 };
595 };
596
597 CScrollRegion m_MapTabsScrollRegion;
598 bool m_MapTabsRevealSelected = false;
599 void DoMapTabs(CUIRect MapTabs);
600
601 void DoToolbarLayers(CUIRect Toolbar);
602 void DoToolbarImages(CUIRect Toolbar);
603 void DoToolbarSounds(CUIRect Toolbar);
604 void DoQuad(int LayerIndex, const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int Index);
605 void PreparePointDrag(const CQuad *pQuad, int QuadIndex, int PointIndex);
606 void DoPointDrag(CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset);
607 EAxis GetDragAxis(ivec2 Offset) const;
608 void DrawAxis(EAxis Axis, CPoint &OriginalPoint, CPoint &Point) const;
609 void DrawAABB(const SAxisAlignedBoundingBox &AABB, ivec2 Offset) const;
610
611 // Alignment methods
612 // These methods take `OffsetX` and `OffsetY` because the calculations are made with the original positions
613 // of the quad(s), before we started dragging. This allows us to edit `OffsetX` and `OffsetY` based on the previously
614 // calculated alignments.
615 struct SAlignmentInfo
616 {
617 CPoint m_AlignedPoint; // The "aligned" point, which we want to align/snap to
618 union
619 {
620 // 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
621 // we aligned the Y values (X axis aligned => Y values are the same, Y axis aligned => X values are the same).
622 int m_X;
623 int m_Y;
624 };
625 EAxis m_Axis; // The axis we are aligning on
626 int m_PointIndex; // The point index we are aligning
627 int m_Diff; // Store the difference
628 };
629 void ComputePointAlignments(const std::shared_ptr<CLayerQuads> &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset, std::vector<SAlignmentInfo> &vAlignments, bool Append = false) const;
630 void ComputePointsAlignments(const std::shared_ptr<CLayerQuads> &pLayer, bool Pivot, ivec2 Offset, std::vector<SAlignmentInfo> &vAlignments) const;
631 void ComputeAABBAlignments(const std::shared_ptr<CLayerQuads> &pLayer, const SAxisAlignedBoundingBox &AABB, ivec2 Offset, std::vector<SAlignmentInfo> &vAlignments) const;
632 void DrawPointAlignments(const std::vector<SAlignmentInfo> &vAlignments, ivec2 Offset) const;
633 void QuadSelectionAABB(const std::shared_ptr<CLayerQuads> &pLayer, SAxisAlignedBoundingBox &OutAABB);
634 void ApplyAlignments(const std::vector<SAlignmentInfo> &vAlignments, ivec2 &Offset);
635 void ApplyAxisAlignment(ivec2 &Offset) const;
636
637 bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate);
638 static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser);
639 bool ReplaceSound(const char *pFilename, int StorageType, bool CheckDuplicate);
640 static bool ReplaceSoundCallback(const char *pFilename, int StorageType, void *pUser);
641 static bool AddImage(const char *pFilename, int StorageType, void *pUser);
642 static bool AddSound(const char *pFilename, int StorageType, void *pUser);
643
644 static bool IsVanillaImage(const char *pImage);
645
646 enum class ELayerOperation
647 {
648 NONE,
649 CLICK,
652 };
654 {
655 public:
658 const void *m_pDraggedButton;
659 float m_InitialMouseY;
660 float m_InitialCutHeight;
663 std::vector<int> m_vInitialLayerIndices;
664 const char m_AddGroupButtonId = 0;
665 const char m_CollapseAllButtonId = 0;
666 const SPopupMenuId m_PopupGroupId = {};
667 SLayerPopupContext m_LayerPopupContext;
668
669 void Reset();
670 };
672 void RenderLayers(CUIRect LayersBox);
673
674 void RenderImagesList(CUIRect Toolbox);
675 void RenderSelectedImage(CUIRect View) const;
676 void RenderSounds(CUIRect Toolbox);
677 void RenderModebar(CUIRect View);
678 void RenderStatusbar(CUIRect View, CUIRect *pTooltipRect);
679 void RenderTooltip(CUIRect TooltipRect);
680
682 void RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEditorLast);
683 static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char (&aOutput)[128], std::vector<STextColorSplit> &vColorSplits);
684
685 void RenderEditorHistory(CUIRect View);
686
687 enum class EDragSide // Which side is the drag bar on
688 {
689 BOTTOM,
690 LEFT,
691 TOP,
692 RIGHT,
693 };
694 void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue = 100.0f, float MaxValue = 400.0f);
695
696 void RenderMenubar(CUIRect Menubar);
697 void ShowHelp();
698 void Exit();
699
700 void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId);
701
702 // DDRace
703
704 IGraphics::CTextureHandle GetFrontTexture();
705 IGraphics::CTextureHandle GetTeleTexture();
706 IGraphics::CTextureHandle GetSpeedupTexture();
707 IGraphics::CTextureHandle GetSwitchTexture();
708 IGraphics::CTextureHandle GetTuneTexture();
709
710 unsigned char m_TeleNumber;
711 unsigned char m_TeleCheckpointNumber;
712 unsigned char m_ViewTeleNumber;
713
714 unsigned char m_TuningNumber;
715 unsigned char m_ViewTuning;
716
717 unsigned char m_SpeedupForce;
718 unsigned char m_SpeedupMaxSpeed;
719 short m_SpeedupAngle;
720
721 unsigned char m_SwitchNumber;
722 unsigned char m_SwitchDelay;
723 unsigned char m_ViewSwitch;
724
725 // AdjustValue must be -1, 0 or 1
726 void AdjustBrushSpecialTiles(bool UseNextFree, int AdjustModifiers, int AdjustValue);
727
728private:
729 std::vector<std::unique_ptr<CEditorMap>> m_vpMaps;
730 size_t m_SelectedMap;
731
732 CEditorHistory &ActiveHistory();
733
734 std::map<int, CPoint[5]> m_QuadDragOriginalPoints;
735};
736
737#endif
Definition config.h:30
Definition map.h:64
Definition editor.h:1004
CEditor * m_pEditor
Definition editor.h:1006
int m_SelectedQuadIndex
Definition editor.h:1008
int m_SelectedQuadPoint
Definition editor.h:1007
Definition editor.h:971
const char m_ShowFileButtonId
Definition editor.h:981
const char m_CloseButtonId
Definition editor.h:978
const char m_CopyPathButtonId
Definition editor.h:980
const char m_CopyNameButtonId
Definition editor.h:979
CEditor * m_pEditor
Definition editor.h:973
Definition editor.h:994
int m_Color
Definition editor.h:998
int m_SelectedQuadIndex
Definition editor.h:997
CEditor * m_pEditor
Definition editor.h:996
Definition editor.h:1141
float m_InitialCutHeight
Definition editor.h:1147
void Reset()
Definition editor.cpp:2323
const char m_CollapseAllButtonId
Definition editor.h:1152
const char m_AddGroupButtonId
Definition editor.h:1151
const SPopupMenuId m_PopupGroupId
Definition editor.h:1153
ELayerOperation m_Operation
Definition editor.h:1143
bool m_ScrollToSelectionNext
Definition editor.h:1148
float m_InitialMouseY
Definition editor.h:1146
SLayerPopupContext m_LayerPopupContext
Definition editor.h:1154
int m_InitialGroupIndex
Definition editor.h:1149
std::vector< int > m_vInitialLayerIndices
Definition editor.h:1150
ELayerOperation m_PreviousOperation
Definition editor.h:1144
const void * m_pDraggedButton
Definition editor.h:1145
Definition editor.h:779
bool operator()(const char *pLhs, const char *pRhs) const
Definition editor.cpp:3449
Definition editor.h:108
IGraphics::CTextureHandle GetSpeedupTexture()
Definition editor.cpp:4550
unsigned char m_SpeedupForce
Definition editor.h:1204
static CUi::EPopupMenuFunctionResult PopupSelectImage(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1987
class IStorage * m_pStorage
Definition editor.h:117
static CUi::EPopupMenuFunctionResult PopupMenuFile(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:23
void OnClose() override
Definition editor.cpp:4938
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_ui.cpp:152
void DoColorPickerButton(const void *pId, const CUIRect *pRect, ColorRGBA Color, const std::function< void(ColorRGBA Color)> &SetColor)
Definition editor.cpp:2256
int DoButton_Env(const void *pId, const char *pText, int Checked, const CUIRect *pRect, const char *pToolTip, ColorRGBA Color, int Corners)
Definition editor_ui.cpp:92
int PopupSelectGameTileOpResult()
Definition popups.cpp:2164
void PopupSelectAutomapperConfigInvoke(int Current, float x, float y)
Definition popups.cpp:2233
EEnvelopePreview m_ActiveEnvelopePreview
Definition editor.h:896
bool m_ShowMousePointer
Definition editor.h:863
std::unique_ptr< CEditorMap > m_pToolsMap
Definition editor.h:927
int m_ToolbarPreviewSound
Definition editor.h:858
void RenderPressedKeys(CUIRect View)
Definition editor.cpp:4086
static CUi::EPopupMenuFunctionResult PopupLayer(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:784
void AddDefaultMap()
Definition editor.cpp:4485
std::vector< std::unique_ptr< CEditorMap > > m_vpMaps
Definition editor.h:1216
bool IsNonGameTileLayerSelected() const
Definition quick_actions.cpp:141
CPrompt m_Prompt
Definition editor.h:126
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:463
void TestMapLocally()
Definition quick_actions.cpp:224
bool m_IngameMoved
Definition editor.h:856
EUnusedEntities
Definition editor.h:845
@ NOT_ALLOWED
Definition editor.h:847
IGraphics::CTextureHandle GetFrontTexture()
Definition editor.cpp:4536
EAxisLock
Definition editor.h:757
@ START
Definition editor.h:758
@ NONE
Definition editor.h:759
bool m_BrushColorEnabled
Definition editor.h:816
const void * m_pUiGotContext
Definition editor.h:932
void PreparePointDrag(const CQuad *pQuad, int QuadIndex, int PointIndex)
Definition editor.cpp:992
void UpdateHotQuadPoint(const CLayerQuads *pLayer)
Definition editor.cpp:2209
void AdjustBrushSpecialTiles(bool UseNextFree, int AdjustModifiers, int AdjustValue)
Definition editor.cpp:5046
void CloseMap(size_t Index, bool Confirm)
Definition editor.cpp:4495
CEnvelopeEditor m_EnvelopeEditor
Definition editor.h:123
IGraphics::CTextureHandle GetTuneTexture()
Definition editor.cpp:4564
static bool ReplaceSoundCallback(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:3223
static CUi::EPopupMenuFunctionResult PopupSource(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1168
CEditorHistory & ActiveHistory()
Definition editor.cpp:5030
bool HasUnsavedData() const override
Definition editor.cpp:4631
static bool CallbackOpenMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:87
std::shared_ptr< CLayerTiles > m_pTilesetPicker
Definition editor.h:929
IGraphics::CTextureHandle m_FrontTexture
Definition editor.h:132
int DoButton_Editor(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition editor_ui.cpp:83
unsigned char m_ViewSwitch
Definition editor.h:1210
static CUi::EPopupMenuFunctionResult PopupSelectAutomapperReference(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2257
void DeleteSelectedLayer()
Definition quick_actions.cpp:199
CLayerSelector m_LayerSelector
Definition editor.h:124
void DoQuadPoint(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int v)
Definition editor.cpp:1768
void RenderMousePointer()
Definition editor.cpp:4195
void AddGroup()
Definition quick_actions.cpp:49
void DoMapSettingsEditBox(CMapSettingsBackend::CContextWithInput *pContext, const CUIRect *pRect, float FontSize, float DropdownMaxHeight, int Corners=IGraphics::CORNER_ALL, const char *pToolTip=nullptr)
Definition editor_server_settings.cpp:290
void Init() override
Definition editor.cpp:4578
static CUi::EPopupMenuFunctionResult PopupGoto(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2682
bool m_ShowPicker
Definition editor.h:905
void ComputePointsAlignments(const std::shared_ptr< CLayerQuads > &pLayer, bool Pivot, ivec2 Offset, std::vector< SAlignmentInfo > &vAlignments) const
Definition editor.cpp:1156
void OnUpdate() override
Definition editor.cpp:4825
void PopupSelectImageInvoke(int Current, float x, float y)
Definition popups.cpp:2048
static CUi::EPopupMenuFunctionResult PopupSwitch(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2483
const void * m_pContainerPannedLast
Definition editor.h:867
unsigned char m_SpeedupMaxSpeed
Definition editor.h:1205
void OnInput(const IInput::CEvent &Event)
Definition editor.cpp:4855
bool Save(const char *pFilename) override
Definition editor.cpp:4973
IGraphics::CTextureHandle m_TuneTexture
Definition editor.h:136
CUi * Ui()
Definition editor.h:158
float m_ToolBoxWidth
Definition editor.h:887
void RenderMenubar(CUIRect Menubar)
Definition editor.cpp:3644
IGraphics::CTextureHandle GetEntitiesTexture()
Definition editor.cpp:4571
IGraphics::CTextureHandle GetTeleTexture()
Definition editor.cpp:4543
void UpdateBrushPicker()
Definition editor.cpp:4055
static bool CallbackAddQuadArt(const char *pFilepath, int StorageType, void *pUser)
Definition quad_art.cpp:201
bool m_GuiActive
Definition editor.h:864
ELayerOperation
Definition editor.h:1134
@ CLICK
Definition editor.h:1136
@ GROUP_DRAG
Definition editor.h:1138
@ LAYER_DRAG
Definition editor.h:1137
void DoPointDrag(CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset)
Definition editor.cpp:997
int DoProperties(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector< ColorRGBA > &vColors={})
Definition editor_props.cpp:9
void AddSoundLayer()
Definition quick_actions.cpp:56
unsigned char m_TeleCheckpointNumber
Definition editor.h:1198
CImageInfo m_TileArtImageInfo
Definition editor.h:959
int m_PopupEventActivated
Definition editor.h:839
bool m_LargeLayerWasWarned
Definition editor.h:841
void DoEditorDragBar(CUIRect View, CUIRect *pDragBar, EDragSide Side, float *pValue, float MinValue=100.0f, float MaxValue=400.0f)
Definition editor.cpp:3590
class ITextRender * TextRender() const
Definition editor.h:156
void HandleCursorMovement()
void OnRender() override
Definition editor.cpp:4876
static bool CallbackCustomEntities(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:225
@ POPEVENT_REMOVE_USED_IMAGE
Definition editor.h:832
@ POPEVENT_TILE_ART_BIG_IMAGE
Definition editor.h:828
@ POPEVENT_IMAGE_MAX
Definition editor.h:825
@ POPEVENT_TILE_ART_TOO_MANY_COLORS
Definition editor.h:830
@ POPEVENT_LARGELAYER
Definition editor.h:822
@ POPEVENT_TILE_ART_MANY_COLORS
Definition editor.h:829
@ POPEVENT_RESTART_SERVER
Definition editor.h:834
@ POPEVENT_EXIT
Definition editor.h:820
@ POPEVENT_SOUND_MAX
Definition editor.h:826
@ POPEVENT_RESTARTING_SERVER
Definition editor.h:835
@ POPEVENT_QUAD_ART_BIG_IMAGE
Definition editor.h:831
@ POPEVENT_REMOVE_USED_SOUND
Definition editor.h:833
@ POPEVENT_PREVENTUNUSEDTILES
Definition editor.h:823
@ POPEVENT_PLACE_BORDER_TILES
Definition editor.h:827
@ POPEVENT_CLOSE_MAP
Definition editor.h:821
@ POPEVENT_IMAGEDIV16
Definition editor.h:824
std::map< int, CPoint[5]> m_QuadDragOriginalPoints
Definition editor.h:1221
static bool CallbackAppendMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:106
void LayerSelectImage()
Definition quick_actions.cpp:160
const CQuadKnife * QuadKnife() const
Definition editor.h:166
void DoToolbarLayers(CUIRect Toolbar)
Definition editor.cpp:449
CUi::SColorPickerPopupContext m_ColorPickerPopupContext
Definition editor.h:807
static CUi::EPopupMenuFunctionResult PopupEntities(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2726
class IConfigManager * ConfigManager() const
Definition editor.h:151
void ShowFileDialogError(const char *pFormat,...)
Definition editor.cpp:3454
int DoButton_MenuItem(const void *pId, const char *pText, int Checked, const CUIRect *pRect, int Flags=BUTTONFLAG_LEFT, const char *pToolTip=nullptr)
Definition editor_ui.cpp:132
static bool CallbackSaveMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:125
static bool CallbackSaveCopyMap(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:167
void PopupSelectGametileOpInvoke(float x, float y)
Definition popups.cpp:2157
EAxis
Definition editor.h:1065
@ X
Definition editor.h:1067
@ Y
Definition editor.h:1068
static CUi::EPopupMenuFunctionResult PopupAnimateSettings(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2788
CPointPopupContext m_PointPopupContext
Definition editor.h:1010
static CUi::EPopupMenuFunctionResult PopupTune(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2586
CQuadPopupContext m_QuadPopupContext
Definition editor.h:1000
const CMapView * MapView() const
Definition editor.h:164
float m_LastAutosaveUpdateTime
Definition editor.h:769
CFontTyper m_FontTyper
Definition editor.h:127
size_t m_SelectedMap
Definition editor.h:1217
static constexpr ColorRGBA ms_DefaultPropColor
Definition editor.h:146
static CUi::EPopupMenuFunctionResult PopupSpeedup(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2443
unsigned char m_TeleNumber
Definition editor.h:1197
bool IsAllowPlaceUnusedTiles() const
Definition editor.cpp:2317
void AddTeleLayer()
Definition quick_actions.cpp:130
IGraphics::CTextureHandle m_aCursorTextures[ECursorType::NUM_CURSORS]
Definition editor.h:922
bool ReplaceImage(const char *pFilename, int StorageType, bool CheckDuplicate)
Definition editor.cpp:3011
CRenderLayersState m_RenderLayersState
Definition editor.h:1158
std::shared_ptr< CLayerGroup > m_pBrush
Definition editor.h:928
unsigned char m_SwitchNumber
Definition editor.h:1208
void HandleAutosave()
Definition editor.cpp:4676
void UpdateColorPipette()
Definition editor.cpp:4143
static bool ReplaceImageCallback(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:3056
void DoToolbarSounds(CUIRect Toolbar)
Definition editor.cpp:840
void DoToolbarImages(CUIRect Toolbar)
Definition editor.cpp:826
void RenderBackground(CUIRect View, IGraphics::CTextureHandle Texture, float Size, float Brightness) const
Definition editor_ui.cpp:324
EShowTile
Definition editor.h:870
@ SHOW_TILE_DECIMAL
Definition editor.h:872
@ SHOW_TILE_OFF
Definition editor.h:871
@ SHOW_TILE_HEXADECIMAL
Definition editor.h:873
void AddFrontLayer()
Definition quick_actions.cpp:97
int m_Mode
Definition editor.h:811
ColorRGBA m_PipetteColor
Definition editor.h:910
class IEngine * m_pEngine
Definition editor.h:113
EShowTile m_ShowTileInfo
Definition editor.h:875
void GotoPosition()
Definition quick_actions.cpp:192
CScrollRegion m_MapTabsScrollRegion
Definition editor.h:1084
IGraphics::CTextureHandle m_CheckerTexture
Definition editor.h:913
static void MapSettingsDropdownRenderCallback(const SPossibleValueMatch &Match, char(&aOutput)[128], std::vector< STextColorSplit > &vColorSplits)
Definition editor_server_settings.cpp:1016
bool HandleMapDrop(const char *pFilename, int StorageType) override
Definition editor.cpp:4987
void RenderModebar(CUIRect View)
Definition editor.cpp:3479
ECursorType m_CursorType
Definition editor.h:923
IGraphics::CTextureHandle m_SpeedupTexture
Definition editor.h:134
void AddQuadsLayer()
Definition quick_actions.cpp:76
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:402
static CUi::EPopupMenuFunctionResult PopupProofMode(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2763
void AddSpeedupLayer()
Definition quick_actions.cpp:119
bool m_ShowEnvelopePreview
Definition editor.h:889
void ApplyAxisAlignment(ivec2 &Offset) const
Definition editor.cpp:1436
char m_aTooltip[256]
Definition editor.h:814
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_ui.cpp:104
class IInput * Input() const
Definition editor.h:149
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_ui.cpp:174
CMapSettingsBackend m_MapSettingsBackend
Definition editor.h:934
void RenderServerSettingsEditor(CUIRect View, bool ShowServerSettingsEditorLast)
Definition editor_server_settings.cpp:56
static CUi::EPopupMenuFunctionResult PopupQuad(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:899
const void * m_pColorPickerPopupActiveId
Definition editor.h:808
class IStorage * Storage() const
Definition editor.h:157
class IGraphics * m_pGraphics
Definition editor.h:114
void Reset()
Definition editor.cpp:4466
class IClient * m_pClient
Definition editor.h:110
void FreeDynamicPopupMenus()
Definition editor.cpp:4127
static CUi::EPopupMenuFunctionResult PopupImage(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1447
static CUi::EPopupMenuFunctionResult PopupPoint(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1356
static CUi::EPopupMenuFunctionResult PopupQuadArt(void *pContext, CUIRect View, bool Active)
Definition quad_art.cpp:227
int PopupSelectAutomapperConfigResult()
Definition popups.cpp:2244
void DrawAABB(const SAxisAlignedBoundingBox &AABB, ivec2 Offset) const
Definition editor.cpp:1351
bool m_MapTabsRevealSelected
Definition editor.h:1085
void RenderTooltip(CUIRect TooltipRect)
Definition editor.cpp:3573
std::vector< std::reference_wrapper< CEditorComponent > > m_vComponents
Definition editor.h:121
std::vector< std::string > m_vSelectEntitiesFiles
Definition editor.h:860
static CUi::EPopupMenuFunctionResult PopupSelectSound(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2069
void RenderIngameEntities(const CLayerGroup &Group, const CLayerTiles &TilesLayer)
Definition editor.cpp:4254
static bool CallbackSaveImage(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:185
EEnvelopePreview
Definition editor.h:891
@ NONE
Definition editor.h:892
CQuadKnife m_QuadKnife
Definition editor.h:128
IGraphics::CTextureHandle m_SwitchTexture
Definition editor.h:135
EExtraEditor m_ActiveExtraEditor
Definition editor.h:885
EPreviewState
Definition editor.h:139
@ PREVIEW_UNLOADED
Definition editor.h:140
@ PREVIEW_ERROR
Definition editor.h:142
@ PREVIEW_LOADED
Definition editor.h:141
static CUi::EPopupMenuFunctionResult PopupGroup(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:522
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_ui.cpp:180
static bool AddSound(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:3112
void MapDetails()
Definition quick_actions.cpp:174
void Exit()
Definition editor.cpp:3717
SEditResult< int > UiDoValueSelector(const 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_ui.cpp:186
void RenderStatusbar(CUIRect View, CUIRect *pTooltipRect)
Definition editor.cpp:3547
void TileArtCheckColors()
Definition tile_art.cpp:171
CQuadKnife * QuadKnife()
Definition editor.h:165
int PopupSelectAutomapperReferenceResult()
Definition popups.cpp:2300
void OnIngameMoved() override
Definition editor.h:749
void QuadSelectionAABB(const std::shared_ptr< CLayerQuads > &pLayer, SAxisAlignedBoundingBox &OutAABB)
Definition editor.cpp:1375
CPopupMapTab m_PopupMapTab
Definition editor.h:983
int m_Dialog
Definition editor.h:812
class IClient * Client() const
Definition editor.h:150
void UpdateMentions() override
Definition editor.h:747
void OnActivate() override
Definition editor.cpp:4927
void UpdateHotSoundSource(const CLayerSounds *pLayer)
Definition editor.cpp:965
static bool IsVanillaImage(const char *pImage)
Definition editor.cpp:82
void OnWindowResize() override
Definition editor.cpp:4933
bool m_ColorPipetteActive
Definition editor.h:911
void RenderSavingIndicator(CUIRect View)
Definition editor.cpp:4109
int DoButtonLogic(const void *pId, int Checked, const CUIRect *pRect, int Flags, const char *pToolTip)
Definition editor_ui.cpp:71
CRenderMap * RenderMap()
Definition editor.h:159
class ISound * Sound() const
Definition editor.h:155
std::shared_ptr< CLayerGroup > m_apSavedBrushes[10]
Definition editor.h:145
class ISound * m_pSound
Definition editor.h:116
const void * m_pContainerPanned
Definition editor.h:866
EDragSide
Definition editor.h:1175
@ BOTTOM
Definition editor.h:1176
@ RIGHT
Definition editor.h:1179
@ TOP
Definition editor.h:1178
@ LEFT
Definition editor.h:1177
static CUi::EPopupMenuFunctionResult PopupEvent(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1769
bool IsSaving(const char *pFilename) const
Definition editor.cpp:4768
void DoQuad(int LayerIndex, const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int Index)
Definition editor.cpp:1458
static bool AddImage(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:3061
unsigned char m_TuningNumber
Definition editor.h:1201
static CUi::EPopupMenuFunctionResult PopupMapInfo(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1694
void MouseAxisLock(vec2 &CursorRel)
Definition editor.cpp:4636
class ITextRender * m_pTextRender
Definition editor.h:115
void PopupSelectAutomapperReferenceInvoke(int Current, float x, float y)
Definition popups.cpp:2291
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_ui.cpp:119
void DoQuadEnvPoint(const CQuad *pQuad, CEnvelope *pEnvelope, int QuadIndex, int PointIndex)
Definition editor.cpp:2138
void AddTuneLayer()
Definition quick_actions.cpp:108
enum CEditor::EAxisLock m_MouseAxisLockState
bool CanFillGameTiles() const
Definition quick_actions.cpp:16
CRenderMap m_RenderMap
Definition editor.h:118
IGraphics::CTextureHandle GetSwitchTexture()
Definition editor.cpp:4557
static CUi::EPopupMenuFunctionResult PopupMenuSettings(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:198
CEditorMap * Map()
Definition editor.cpp:5018
void ComputeAABBAlignments(const std::shared_ptr< CLayerQuads > &pLayer, const SAxisAlignedBoundingBox &AABB, ivec2 Offset, std::vector< SAlignmentInfo > &vAlignments) const
Definition editor.cpp:1217
static CUi::EPopupMenuFunctionResult PopupTele(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2312
std::string m_SelectEntitiesImage
Definition editor.h:861
bool m_ShowPickerToggle
Definition editor.h:906
class IConfigManager * m_pConfigManager
Definition editor.h:111
CImageInfo m_QuadArtImageInfo
Definition editor.h:964
class CConfig * Config() const
Definition editor.h:152
bool m_BrushDrawDestructive
Definition editor.h:853
class IInput * m_pInput
Definition editor.h:109
void DrawPointAlignments(const std::vector< SAlignmentInfo > &vAlignments, ivec2 Offset) const
Definition editor.cpp:1327
void ApplyAlignments(const std::vector< SAlignmentInfo > &vAlignments, ivec2 &Offset)
Definition editor.cpp:1409
void RenderMapSettingsErrorDialog()
Definition editor_server_settings.cpp:547
void AddSwitchLayer()
Definition quick_actions.cpp:86
ColorRGBA GetButtonColor(const void *pId, int Checked)
Definition editor_ui.cpp:16
class IEngine * Engine() const
Definition editor.h:153
int PopupSelectImageResult()
Definition popups.cpp:2056
CMapView * MapView()
Definition editor.h:163
ECursorType
Definition editor.h:916
@ NUM_CURSORS
Definition editor.h:920
@ CURSOR_NORMAL
Definition editor.h:917
@ CURSOR_RESIZE_V
Definition editor.h:918
@ CURSOR_RESIZE_H
Definition editor.h:919
void HandleWriterFinishJobs()
Definition editor.cpp:4724
void Render()
Definition editor.cpp:3731
void ResetIngameMoved() override
Definition editor.h:750
CQuadArtParameters m_QuadArtParameters
Definition editor.h:965
class CConfig * m_pConfig
Definition editor.h:112
bool m_CloseMapAfterSave
Definition editor.h:813
CMapView m_MapView
Definition editor.h:122
IGraphics::CTextureHandle m_EntitiesTexture
Definition editor.h:130
bool Load(const char *pFilename, int StorageType) override
Definition editor.cpp:4993
short m_SpeedupAngle
Definition editor.h:1206
static bool CallbackAddTileArt(const char *pFilepath, int StorageType, void *pUser)
Definition tile_art.cpp:193
unsigned char m_ViewTeleNumber
Definition editor.h:1199
void AddQuadOrSound()
Definition quick_actions.cpp:24
void ShowHelp()
Definition editor.cpp:3708
static bool CallbackSaveSound(const char *pFilename, int StorageType, void *pUser)
Definition editor.cpp:205
EExtraEditor
Definition editor.h:878
@ EXTRAEDITOR_ENVELOPES
Definition editor.h:880
@ EXTRAEDITOR_NONE
Definition editor.h:879
@ NUM_EXTRAEDITORS
Definition editor.h:883
@ EXTRAEDITOR_SERVER_SETTINGS
Definition editor.h:881
@ EXTRAEDITOR_HISTORY
Definition editor.h:882
std::shared_ptr< CLayerQuads > m_pQuadsetPicker
Definition editor.h:930
ColorRGBA m_aSavedColors[8]
Definition editor.h:909
void RenderImagesList(CUIRect Toolbox)
Definition editor.cpp:3228
void PopupSelectSoundInvoke(int Current, float x, float y)
Definition popups.cpp:2103
int m_PopupEventType
Definition editor.h:838
void UpdateTooltip(const void *pId, const CUIRect *pRect, const char *pToolTip)
Definition editor_ui.cpp:8
void DoAudioPreview(CUIRect View, const void *pPlayPauseButtonId, const void *pStopButtonId, const void *pSeekBarId, int SampleId)
Definition editor.cpp:256
EQuadEnvelopePointOperation m_QuadEnvelopePointOperation
Definition editor.h:903
static CUi::EPopupMenuFunctionResult PopupSelectGametileOp(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2139
EUnusedEntities m_AllowPlaceUnusedTiles
Definition editor.h:850
unsigned char m_ViewTuning
Definition editor.h:1202
int m_PopupEventWasActivated
Definition editor.h:840
void LoadIngameMap()
Definition editor.cpp:4955
static CUi::EPopupMenuFunctionResult PopupMenuTools(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:118
void RenderLayers(CUIRect LayersBox)
Definition editor.cpp:2336
void UpdateMapDisplayNames()
Definition editor.cpp:4775
CEditor()
Definition editor.h:191
std::map< const char *, CUi::SMessagePopupContext *, CStringKeyComparator > m_PopupMessageContexts
Definition editor.h:783
class IGraphics * Graphics() const
Definition editor.h:154
void AddTileLayer()
Definition quick_actions.cpp:66
void DoQuadEnvelopes(const CLayerQuads *pLayerQuads)
Definition editor.cpp:1979
static CUi::EPopupMenuFunctionResult PopupSelectAutomapperConfig(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:2177
int m_Mentions
Definition editor.h:855
void OnDialogClose()
Definition editor.cpp:4948
EAxis GetDragAxis(ivec2 Offset) const
Definition editor.cpp:1002
void DoMapTabs(CUIRect MapTabs)
Definition editor.cpp:343
void FillGameTiles(EGameTileOp FillTile) const
Definition quick_actions.cpp:9
static CUi::EPopupMenuFunctionResult PopupSound(void *pContext, CUIRect View, bool Active)
Definition popups.cpp:1587
void RenderSounds(CUIRect Toolbox)
Definition editor.cpp:3361
EQuadEnvelopePointOperation
Definition editor.h:898
@ NONE
Definition editor.h:899
float m_aExtraEditorSplits[NUM_EXTRAEDITORS]
Definition editor.h:886
vec2 m_MouseAxisInitialPos
Definition editor.h:755
std::deque< std::shared_ptr< CDataFileWriterFinishJob > > m_WriterFinishJobs
Definition editor.h:771
CFileBrowser m_FileBrowser
Definition editor.h:125
bool ReplaceSound(const char *pFilename, int StorageType, bool CheckDuplicate)
Definition editor.cpp:3166
CLayerSelector * LayerSelector()
Definition editor.h:167
void DoSoundSource(int LayerIndex, CSoundSource *pSource, int Index)
Definition editor.cpp:872
void RenderEditorHistory(CUIRect View)
Definition editor_history.cpp:99
int PopupSelectSoundResult()
Definition popups.cpp:2111
SEditResult< E > DoPropertiesWithState(CUIRect *pToolbox, CProperty *pProps, int *pIds, int *pNewVal, const std::vector< ColorRGBA > &vColors={})
Definition editor_props.cpp:16
unsigned char m_SwitchDelay
Definition editor.h:1209
void ComputePointAlignments(const std::shared_ptr< CLayerQuads > &pLayer, CQuad *pQuad, int QuadIndex, int PointIndex, ivec2 Offset, std::vector< SAlignmentInfo > &vAlignments, bool Append=false) const
Definition editor.cpp:1035
bool m_PreventUnusedTilesWasWarned
Definition editor.h:842
CUi m_UI
Definition editor.h:119
IGraphics::CTextureHandle m_TeleTexture
Definition editor.h:133
char m_aTileArtFilename[IO_MAX_PATH_LENGTH]
Definition editor.h:960
void RenderSelectedImage(CUIRect View) const
Definition editor.cpp:3338
void ResetMentions() override
Definition editor.h:748
void DrawAxis(EAxis Axis, CPoint &OriginalPoint, CPoint &Point) const
Definition editor.cpp:1013
Definition envelope_editor.h:19
Definition file_browser.h:17
Definition font_typer.h:20
Definition image.h:12
Definition layer_group.h:12
Definition layer_selector.h:20
Definition layer_tiles.h:44
Definition lineinput.h:25
Definition editor_server_settings.h:312
Definition editor_server_settings.h:200
Definition map_view.h:14
Definition prompt.h:12
Definition editor.h:77
int m_Max
Definition editor.h:89
int m_Value
Definition editor.h:86
int m_Type
Definition editor.h:87
CProperty(std::nullptr_t)
Definition editor.h:82
CProperty(const char *pName, int Value, int Type, int Min, int Max)
Definition editor.h:79
const char * m_pName
Definition editor.h:85
int m_Min
Definition editor.h:88
Definition quad_art.h:15
Definition quad_knife.h:7
Definition render_map.h:70
Definition ui_rect.h:12
Definition ui.h:336
EPopupMenuFunctionResult
Definition ui.h:342
constexpr ColorHSLA()=default
Definition color.h:183
constexpr ColorRGBA()=default
Definition client.h:42
Definition config.h:9
Definition editor.h:8
Definition engine.h:15
Definition graphics.h:261
void Invalidate()
Definition graphics.h:274
Definition graphics.h:240
@ CORNER_ALL
Definition graphics.h:542
Definition input.h:22
Definition input.h:18
Definition sound.h:12
Definition storage.h:21
Definition textrender.h:194
constexpr T color_cast(const F &)=delete
@ MOVE
Definition editor_trackers.h:72
#define REGISTER_QUICK_ACTION(name, text, callback, disabled, active, button_color, description)
Definition editor.h:187
@ PROPTYPE_NULL
Definition editor.h:94
@ PROPTYPE_AUTOMAPPER_REFERENCE
Definition editor.h:104
@ PROPTYPE_BOOL
Definition editor.h:95
@ PROPTYPE_SHIFT
Definition editor.h:101
@ PROPTYPE_COLOR
Definition editor.h:98
@ PROPTYPE_ENVELOPE
Definition editor.h:100
@ PROPTYPE_AUTOMAPPER
Definition editor.h:103
@ PROPTYPE_ANGLE_SCROLL
Definition editor.h:97
@ PROPTYPE_IMAGE
Definition editor.h:99
@ PROPTYPE_SOUND
Definition editor.h:102
@ PROPTYPE_INT
Definition editor.h:96
@ MODE_SOUNDS
Definition editor.h:58
@ MODE_LAYERS
Definition editor.h:56
@ NUM_MODES
Definition editor.h:60
@ MODE_IMAGES
Definition editor.h:57
@ DIALOG_NONE
Definition editor.h:65
@ DIALOG_QUICK_PROMPT
Definition editor.h:68
@ DIALOG_FILE
Definition editor.h:66
@ DIALOG_MAPSETTINGS_ERROR
Definition editor.h:67
@ DIALOG_PSEUDO_FONT_TYPER
Definition editor.h:73
std::function< void(const T &, char(&aOutput)[128], std::vector< STextColorSplit > &)> FDropdownRenderCallback
Definition editor.h:51
EGameTileOp
Definition enums.h:20
constexpr auto IO_MAX_PATH_LENGTH
Definition types.h:26
@ START
Definition io.h:56
ivec2 CPoint
Definition mapitems.h:255
Definition editor.h:1103
int m_Diff
Definition editor.h:1114
CPoint m_AlignedPoint
Definition editor.h:1104
int m_PointIndex
Definition editor.h:1113
EAxis m_Axis
Definition editor.h:1112
Definition editor.h:1071
@ NUM_POINTS
Definition editor.h:1079
@ POINT_CENTER
Definition editor.h:1078
@ POINT_TR
Definition editor.h:1075
@ POINT_TL
Definition editor.h:1074
@ POINT_BL
Definition editor.h:1076
@ POINT_BR
Definition editor.h:1077
CPoint m_aPoints[NUM_POINTS]
Definition editor.h:1081
std::vector< int > m_vLayerIndices
Definition editor.h:989
std::vector< std::shared_ptr< CLayerTiles > > m_vpLayers
Definition editor.h:988
CLayerTiles::SCommonPropState m_CommonPropState
Definition editor.h:990
CEditor * m_pEditor
Definition editor.h:987
Definition layer_tiles.h:151
Definition editor_ui.h:7
Definition ui.h:32
Definition ui.h:293
@ TEXTALIGN_MC
Definition textrender.h:35
@ ALL
Definition types.h:18
@ BUTTONFLAG_LEFT
Definition ui.h:232
vector2_base< int > ivec2
Definition vmath.h:170
vector2_base< float > vec2
Definition vmath.h:168