add more conditions to menu rendering

This commit is contained in:
Andrii 2020-05-15 19:51:14 +03:00 committed by heinrich5991
parent c9afec083d
commit d3df450715

View file

@ -1299,6 +1299,7 @@ void CEditor::DoToolbar(CUIRect ToolBar)
} }
// refocus button // refocus button
{
TB_Bottom.VSplitLeft(45.0f, &Button, &TB_Bottom); TB_Bottom.VSplitLeft(45.0f, &Button, &TB_Bottom);
static int s_RefocusButton = 0; static int s_RefocusButton = 0;
if(DoButton_Editor(&s_RefocusButton, "Refocus", m_WorldOffsetX&&m_WorldOffsetY ? 0 : -1, &Button, 0, "[HOME] Restore map focus") || (m_EditBoxActive == 0 && Input()->KeyPress(KEY_HOME))) if(DoButton_Editor(&s_RefocusButton, "Refocus", m_WorldOffsetX&&m_WorldOffsetY ? 0 : -1, &Button, 0, "[HOME] Restore map focus") || (m_EditBoxActive == 0 && Input()->KeyPress(KEY_HOME)))
@ -1306,12 +1307,11 @@ void CEditor::DoToolbar(CUIRect ToolBar)
m_WorldOffsetX = 0; m_WorldOffsetX = 0;
m_WorldOffsetY = 0; m_WorldOffsetY = 0;
} }
TB_Bottom.VSplitLeft(5.0f, 0, &TB_Bottom); TB_Bottom.VSplitLeft(5.0f, 0, &TB_Bottom);
}
// tile manipulation // tile manipulation
{ {
TB_Bottom.VSplitLeft(45.0f, &Button, &TB_Bottom);
static int s_BorderBut = 0; static int s_BorderBut = 0;
CLayerTiles *pT = (CLayerTiles *)GetSelectedLayerType(0, LAYERTYPE_TILES); CLayerTiles *pT = (CLayerTiles *)GetSelectedLayerType(0, LAYERTYPE_TILES);
@ -1319,17 +1319,18 @@ void CEditor::DoToolbar(CUIRect ToolBar)
if(pT && (pT->m_Tele || pT->m_Speedup || pT->m_Switch || pT->m_Front || pT->m_Tune)) if(pT && (pT->m_Tele || pT->m_Speedup || pT->m_Switch || pT->m_Front || pT->m_Tune))
pT = 0; pT = 0;
if(DoButton_Editor(&s_BorderBut, "Border", pT ? 0 : -1, &Button, 0, "Adds border tiles"))
{
if(pT) if(pT)
DoMapBorder();
}
TB_Bottom.VSplitLeft(5.0f, &Button, &TB_Bottom);
// do tele/tune/switch/speedup button
{ {
TB_Bottom.VSplitLeft(60.0f, &Button, &TB_Bottom); TB_Bottom.VSplitLeft(60.0f, &Button, &TB_Bottom);
if(DoButton_Ex(&s_BorderBut, "Border", 0, &Button, 0, "Adds border tiles", CUI::CORNER_ALL))
{
DoMapBorder();
}
TB_Bottom.VSplitLeft(5.0f, &Button, &TB_Bottom);
}
// do tele/tune/switch/speedup button
{ {
int (*pPopupFunc)(CEditor *peditor, CUIRect View, void *pContext) = NULL; int (*pPopupFunc)(CEditor *peditor, CUIRect View, void *pContext) = NULL;
const char *aButtonName = "Modifier"; const char *aButtonName = "Modifier";
@ -1366,20 +1367,27 @@ void CEditor::DoToolbar(CUIRect ToolBar)
Height = 23; Height = 23;
Checked = 0; Checked = 0;
} }
}
if(Checked == 0)
{
TB_Bottom.VSplitLeft(60.0f, &Button, &TB_Bottom);
static int s_ModifierButton = 0; static int s_ModifierButton = 0;
if(DoButton_Ex(&s_ModifierButton, aButtonName, Checked, &Button, 0, aButtonName, CUI::CORNER_ALL)) if(DoButton_Ex(&s_ModifierButton, aButtonName, Checked, &Button, 0, aButtonName, CUI::CORNER_ALL))
{ {
static int s_ModifierPopupID = 0; static int s_ModifierPopupID = 0;
UiInvokePopupMenu(&s_ModifierPopupID, 0, UI()->MouseX(), UI()->MouseY(), 120, Height, pPopupFunc); UiInvokePopupMenu(&s_ModifierPopupID, 0, UI()->MouseX(), UI()->MouseY(), 120, Height, pPopupFunc);
} }
} TB_Bottom.VSplitLeft(5.0f, 0, &TB_Bottom);
}
}
} }
} }
TB_Bottom.VSplitLeft(5.0f, 0, &TB_Bottom);
// grid zoom // grid zoom
if(m_GridActive)
{
TB_Bottom.VSplitLeft(30.0f, &Button, &TB_Bottom); TB_Bottom.VSplitLeft(30.0f, &Button, &TB_Bottom);
static int s_GridIncreaseButton = 0; static int s_GridIncreaseButton = 0;
if(DoButton_Ex(&s_GridIncreaseButton, "G-", 0, &Button, 0, "Decrease grid", CUI::CORNER_L)) if(DoButton_Ex(&s_GridIncreaseButton, "G-", 0, &Button, 0, "Decrease grid", CUI::CORNER_L))
@ -1401,38 +1409,31 @@ void CEditor::DoToolbar(CUIRect ToolBar)
if(m_GridFactor < 15) if(m_GridFactor < 15)
m_GridFactor++; m_GridFactor++;
} }
TB_Bottom.VSplitLeft(5.0f, &Button, &TB_Bottom); TB_Bottom.VSplitLeft(5.0f, &Button, &TB_Bottom);
}
// do add quad/sound button // do add quad/sound button
TB_Bottom.VSplitLeft(60.0f, &Button, &TB_Bottom);
{
const char *pButtonText = "Add Item";
const char *pButtonToolTip = "[ctrl+q] Add a new item";
int Checked = -1;
CLayer *pLayer = GetSelectedLayer(0); CLayer *pLayer = GetSelectedLayer(0);
if(pLayer) if(pLayer && (pLayer->m_Type == LAYERTYPE_QUADS || pLayer->m_Type == LAYERTYPE_SOUNDS))
{ {
TB_Bottom.VSplitLeft(60.0f, &Button, &TB_Bottom);
bool invoked = false;
static int s_AddItemButton = 0;
if(pLayer->m_Type == LAYERTYPE_QUADS) if(pLayer->m_Type == LAYERTYPE_QUADS)
{ {
pButtonText = "Add Quad"; invoked = DoButton_Editor(&s_AddItemButton, "Add Quad", 0, &Button, 0, "[ctrl+q] Add a new quad") ||
pButtonToolTip = "[ctrl+q] Add a new quad"; (Input()->KeyPress(KEY_Q) && ctrlPressed);
Checked = 0;
} }
else if(pLayer->m_Type == LAYERTYPE_SOUNDS) else if(pLayer->m_Type == LAYERTYPE_SOUNDS)
{ {
pButtonText = "Add Sound"; invoked = DoButton_Editor(&s_AddItemButton, "Add Sound", 0, &Button, 0, "[ctrl+q] Add a new sound source") ||
pButtonToolTip = "[ctrl+q] Add a new sound source"; (Input()->KeyPress(KEY_Q) && ctrlPressed);
Checked = 0;
}
} }
static int s_AddItemButton = 0; if(invoked)
if(DoButton_Editor(&s_AddItemButton, pButtonText, Checked, &Button, 0, pButtonToolTip) ||
(Input()->KeyPress(KEY_Q) && ctrlPressed))
{
if(pLayer)
{ {
CLayerGroup *pGroup = GetSelectedGroup(); CLayerGroup *pGroup = GetSelectedGroup();
@ -1466,17 +1467,18 @@ void CEditor::DoToolbar(CUIRect ToolBar)
pSoundLayer->NewSource(x, y); pSoundLayer->NewSource(x, y);
} }
} }
} TB_Bottom.VSplitLeft(5.0f, &Button, &TB_Bottom);
} }
TB_Bottom.VSplitLeft(5.0f, &Button, &TB_Bottom);
// Brush draw mode button // Brush draw mode button
{
TB_Bottom.VSplitLeft(65.0f, &Button, &TB_Bottom); TB_Bottom.VSplitLeft(65.0f, &Button, &TB_Bottom);
static int s_BrushDrawModeButton = 0; static int s_BrushDrawModeButton = 0;
if(DoButton_Editor(&s_BrushDrawModeButton, "Destructive", m_BrushDrawDestructive, &Button, 0, "[ctrl+d] Toggle brush draw mode") || if(DoButton_Editor(&s_BrushDrawModeButton, "Destructive", m_BrushDrawDestructive, &Button, 0, "[ctrl+d] Toggle brush draw mode") ||
(Input()->KeyPress(KEY_D) && ctrlPressed)) (Input()->KeyPress(KEY_D) && ctrlPressed))
m_BrushDrawDestructive = !m_BrushDrawDestructive; m_BrushDrawDestructive = !m_BrushDrawDestructive;
}
} }
static void Rotate(const CPoint *pCenter, CPoint *pPoint, float Rotation) static void Rotate(const CPoint *pCenter, CPoint *pPoint, float Rotation)