mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
Cleanup select layer UI element handling
Expose UI element ID for the main map editor as member variable so the select layer by tile funtionality can correctly be enabled when the map editor is the hot item.
This commit is contained in:
parent
5cb37c2e4a
commit
0a776b9062
|
@ -3054,7 +3054,6 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
View.w = View.h = Max;
|
View.w = View.h = Max;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *s_pEditorID = (void *)&s_pEditorID;
|
|
||||||
const bool Inside = UI()->MouseInside(&View);
|
const bool Inside = UI()->MouseInside(&View);
|
||||||
|
|
||||||
// fetch mouse position
|
// fetch mouse position
|
||||||
|
@ -3179,7 +3178,7 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool ShouldPan = (Input()->ModifierIsPressed() && UI()->MouseButton(0)) || UI()->MouseButton(2);
|
const bool ShouldPan = (Input()->ModifierIsPressed() && UI()->MouseButton(0)) || UI()->MouseButton(2);
|
||||||
if(m_pContainerPanned == &s_pEditorID)
|
if(m_pContainerPanned == &m_MapEditorId)
|
||||||
{
|
{
|
||||||
// do panning
|
// do panning
|
||||||
if(ShouldPan)
|
if(ShouldPan)
|
||||||
|
@ -3203,7 +3202,7 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
|
|
||||||
if(Inside)
|
if(Inside)
|
||||||
{
|
{
|
||||||
UI()->SetHotItem(s_pEditorID);
|
UI()->SetHotItem(&m_MapEditorId);
|
||||||
|
|
||||||
// do global operations like pan and zoom
|
// do global operations like pan and zoom
|
||||||
if(UI()->CheckActiveItem(nullptr) && (UI()->MouseButton(0) || UI()->MouseButton(2)))
|
if(UI()->CheckActiveItem(nullptr) && (UI()->MouseButton(0) || UI()->MouseButton(2)))
|
||||||
|
@ -3212,11 +3211,11 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
s_StartWy = wy;
|
s_StartWy = wy;
|
||||||
|
|
||||||
if(ShouldPan && m_pContainerPanned == nullptr)
|
if(ShouldPan && m_pContainerPanned == nullptr)
|
||||||
m_pContainerPanned = &s_pEditorID;
|
m_pContainerPanned = &m_MapEditorId;
|
||||||
}
|
}
|
||||||
|
|
||||||
// brush editing
|
// brush editing
|
||||||
if(UI()->HotItem() == s_pEditorID)
|
if(UI()->HotItem() == &m_MapEditorId)
|
||||||
{
|
{
|
||||||
if(m_ShowPicker)
|
if(m_ShowPicker)
|
||||||
{
|
{
|
||||||
|
@ -3265,7 +3264,7 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
else
|
else
|
||||||
str_copy(m_aTooltip, "Use left mouse button to paint with the brush. Right button clears the brush.");
|
str_copy(m_aTooltip, "Use left mouse button to paint with the brush. Right button clears the brush.");
|
||||||
|
|
||||||
if(UI()->CheckActiveItem(s_pEditorID))
|
if(UI()->CheckActiveItem(&m_MapEditorId))
|
||||||
{
|
{
|
||||||
CUIRect r;
|
CUIRect r;
|
||||||
r.x = s_StartWx;
|
r.x = s_StartWx;
|
||||||
|
@ -3385,7 +3384,7 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
|
|
||||||
if(!Input()->ModifierIsPressed() && UI()->MouseButton(0) && s_Operation == OP_NONE && !m_QuadKnifeActive)
|
if(!Input()->ModifierIsPressed() && UI()->MouseButton(0) && s_Operation == OP_NONE && !m_QuadKnifeActive)
|
||||||
{
|
{
|
||||||
UI()->SetActiveItem(s_pEditorID);
|
UI()->SetActiveItem(&m_MapEditorId);
|
||||||
|
|
||||||
if(m_pBrush->IsEmpty())
|
if(m_pBrush->IsEmpty())
|
||||||
s_Operation = OP_BRUSH_GRAB;
|
s_Operation = OP_BRUSH_GRAB;
|
||||||
|
@ -3576,7 +3575,7 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(UI()->CheckActiveItem(s_pEditorID))
|
if(UI()->CheckActiveItem(&m_MapEditorId))
|
||||||
{
|
{
|
||||||
// release mouse
|
// release mouse
|
||||||
if(!UI()->MouseButton(0))
|
if(!UI()->MouseButton(0))
|
||||||
|
@ -3606,7 +3605,7 @@ void CEditor::DoMapEditor(CUIRect View)
|
||||||
MapView()->OffsetWorld({0, PanSpeed * m_MouseWScale});
|
MapView()->OffsetWorld({0, PanSpeed * m_MouseWScale});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(UI()->CheckActiveItem(s_pEditorID))
|
else if(UI()->CheckActiveItem(&m_MapEditorId))
|
||||||
{
|
{
|
||||||
// release mouse
|
// release mouse
|
||||||
if(!UI()->MouseButton(0))
|
if(!UI()->MouseButton(0))
|
||||||
|
@ -4390,17 +4389,13 @@ void CEditor::RenderLayers(CUIRect LayersBox)
|
||||||
bool CEditor::SelectLayerByTile()
|
bool CEditor::SelectLayerByTile()
|
||||||
{
|
{
|
||||||
// ctrl+rightclick a map index to select the layer that has a tile there
|
// ctrl+rightclick a map index to select the layer that has a tile there
|
||||||
static bool s_CtrlClick = false;
|
|
||||||
static int s_Selected = 0;
|
static int s_Selected = 0;
|
||||||
int MatchedGroup = -1;
|
int MatchedGroup = -1;
|
||||||
int MatchedLayer = -1;
|
int MatchedLayer = -1;
|
||||||
int Matches = 0;
|
int Matches = 0;
|
||||||
bool IsFound = false;
|
bool IsFound = false;
|
||||||
if(UI()->MouseButton(1) && Input()->ModifierIsPressed())
|
if(Input()->ModifierIsPressed() && UI()->HotItem() == &m_MapEditorId && UI()->MouseButtonClicked(1))
|
||||||
{
|
{
|
||||||
if(s_CtrlClick)
|
|
||||||
return false;
|
|
||||||
s_CtrlClick = true;
|
|
||||||
for(size_t g = 0; g < m_Map.m_vpGroups.size(); g++)
|
for(size_t g = 0; g < m_Map.m_vpGroups.size(); g++)
|
||||||
{
|
{
|
||||||
for(size_t l = 0; l < m_Map.m_vpGroups[g]->m_vpLayers.size(); l++)
|
for(size_t l = 0; l < m_Map.m_vpGroups[g]->m_vpLayers.size(); l++)
|
||||||
|
@ -4451,8 +4446,6 @@ bool CEditor::SelectLayerByTile()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
s_CtrlClick = false;
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -694,6 +694,7 @@ public:
|
||||||
float m_MouseDeltaWy;
|
float m_MouseDeltaWy;
|
||||||
const void *m_pContainerPanned;
|
const void *m_pContainerPanned;
|
||||||
const void *m_pContainerPannedLast;
|
const void *m_pContainerPannedLast;
|
||||||
|
char m_MapEditorId; // UI element ID for the main map editor
|
||||||
|
|
||||||
enum EShowTile
|
enum EShowTile
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue