mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 01:24:18 +00:00
Select previous layer after deletion
This commit is contained in:
parent
99484080e4
commit
4874f75bc0
|
@ -738,6 +738,70 @@ std::pair<int, int> CEditor::EnvGetSelectedTimeAndValue() const
|
||||||
return std::pair<int, int>{CurrentTime, CurrentValue};
|
return std::pair<int, int>{CurrentTime, CurrentValue};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CEditor::SelectNextLayer()
|
||||||
|
{
|
||||||
|
if(Input()->ShiftIsPressed())
|
||||||
|
{
|
||||||
|
if(m_vSelectedLayers[m_vSelectedLayers.size() - 1] < (int)m_Map.m_vpGroups[m_SelectedGroup]->m_vpLayers.size() - 1)
|
||||||
|
AddSelectedLayer(m_vSelectedLayers[m_vSelectedLayers.size() - 1] + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int CurrentLayer = 0;
|
||||||
|
for(const auto &Selected : m_vSelectedLayers)
|
||||||
|
CurrentLayer = maximum(Selected, CurrentLayer);
|
||||||
|
SelectLayer(CurrentLayer);
|
||||||
|
|
||||||
|
if(m_vSelectedLayers[0] < (int)m_Map.m_vpGroups[m_SelectedGroup]->m_vpLayers.size() - 1)
|
||||||
|
{
|
||||||
|
SelectLayer(m_vSelectedLayers[0] + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(size_t Group = m_SelectedGroup + 1; Group < m_Map.m_vpGroups.size(); Group++)
|
||||||
|
{
|
||||||
|
if(!m_Map.m_vpGroups[Group]->m_vpLayers.empty())
|
||||||
|
{
|
||||||
|
SelectLayer(0, Group);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CEditor::SelectPreviousLayer()
|
||||||
|
{
|
||||||
|
if(Input()->ShiftIsPressed())
|
||||||
|
{
|
||||||
|
if(m_vSelectedLayers[m_vSelectedLayers.size() - 1] > 0)
|
||||||
|
AddSelectedLayer(m_vSelectedLayers[m_vSelectedLayers.size() - 1] - 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int CurrentLayer = std::numeric_limits<int>::max();
|
||||||
|
for(const auto &Selected : m_vSelectedLayers)
|
||||||
|
CurrentLayer = minimum(Selected, CurrentLayer);
|
||||||
|
SelectLayer(CurrentLayer);
|
||||||
|
|
||||||
|
if(m_vSelectedLayers[0] > 0)
|
||||||
|
{
|
||||||
|
SelectLayer(m_vSelectedLayers[0] - 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(int Group = m_SelectedGroup - 1; Group >= 0; Group--)
|
||||||
|
{
|
||||||
|
if(!m_Map.m_vpGroups[Group]->m_vpLayers.empty())
|
||||||
|
{
|
||||||
|
SelectLayer(m_Map.m_vpGroups[Group]->m_vpLayers.size() - 1, Group);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool CEditor::CallbackOpenMap(const char *pFileName, int StorageType, void *pUser)
|
bool CEditor::CallbackOpenMap(const char *pFileName, int StorageType, void *pUser)
|
||||||
{
|
{
|
||||||
CEditor *pEditor = (CEditor *)pUser;
|
CEditor *pEditor = (CEditor *)pUser;
|
||||||
|
@ -4204,66 +4268,12 @@ void CEditor::RenderLayers(CUIRect LayersBox)
|
||||||
|
|
||||||
if(Input()->KeyPress(KEY_DOWN) && m_Dialog == DIALOG_NONE && !Ui()->IsPopupOpen() && CLineInput::GetActiveInput() == nullptr && s_Operation == OP_NONE)
|
if(Input()->KeyPress(KEY_DOWN) && m_Dialog == DIALOG_NONE && !Ui()->IsPopupOpen() && CLineInput::GetActiveInput() == nullptr && s_Operation == OP_NONE)
|
||||||
{
|
{
|
||||||
if(Input()->ShiftIsPressed())
|
SelectNextLayer();
|
||||||
{
|
|
||||||
if(m_vSelectedLayers[m_vSelectedLayers.size() - 1] < (int)m_Map.m_vpGroups[m_SelectedGroup]->m_vpLayers.size() - 1)
|
|
||||||
AddSelectedLayer(m_vSelectedLayers[m_vSelectedLayers.size() - 1] + 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int CurrentLayer = 0;
|
|
||||||
for(const auto &Selected : m_vSelectedLayers)
|
|
||||||
CurrentLayer = maximum(Selected, CurrentLayer);
|
|
||||||
SelectLayer(CurrentLayer);
|
|
||||||
|
|
||||||
if(m_vSelectedLayers[0] < (int)m_Map.m_vpGroups[m_SelectedGroup]->m_vpLayers.size() - 1)
|
|
||||||
{
|
|
||||||
SelectLayer(m_vSelectedLayers[0] + 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for(size_t Group = m_SelectedGroup + 1; Group < m_Map.m_vpGroups.size(); Group++)
|
|
||||||
{
|
|
||||||
if(!m_Map.m_vpGroups[Group]->m_vpLayers.empty())
|
|
||||||
{
|
|
||||||
SelectLayer(0, Group);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_ScrollToSelectionNext = true;
|
s_ScrollToSelectionNext = true;
|
||||||
}
|
}
|
||||||
if(Input()->KeyPress(KEY_UP) && m_Dialog == DIALOG_NONE && !Ui()->IsPopupOpen() && CLineInput::GetActiveInput() == nullptr && s_Operation == OP_NONE)
|
if(Input()->KeyPress(KEY_UP) && m_Dialog == DIALOG_NONE && !Ui()->IsPopupOpen() && CLineInput::GetActiveInput() == nullptr && s_Operation == OP_NONE)
|
||||||
{
|
{
|
||||||
if(Input()->ShiftIsPressed())
|
SelectPreviousLayer();
|
||||||
{
|
|
||||||
if(m_vSelectedLayers[m_vSelectedLayers.size() - 1] > 0)
|
|
||||||
AddSelectedLayer(m_vSelectedLayers[m_vSelectedLayers.size() - 1] - 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int CurrentLayer = std::numeric_limits<int>::max();
|
|
||||||
for(const auto &Selected : m_vSelectedLayers)
|
|
||||||
CurrentLayer = minimum(Selected, CurrentLayer);
|
|
||||||
SelectLayer(CurrentLayer);
|
|
||||||
|
|
||||||
if(m_vSelectedLayers[0] > 0)
|
|
||||||
{
|
|
||||||
SelectLayer(m_vSelectedLayers[0] - 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for(int Group = m_SelectedGroup - 1; Group >= 0; Group--)
|
|
||||||
{
|
|
||||||
if(!m_Map.m_vpGroups[Group]->m_vpLayers.empty())
|
|
||||||
{
|
|
||||||
SelectLayer(m_Map.m_vpGroups[Group]->m_vpLayers.size() - 1, Group);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s_ScrollToSelectionNext = true;
|
s_ScrollToSelectionNext = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -324,6 +324,9 @@ public:
|
||||||
const CMapView *MapView() const { return &m_MapView; }
|
const CMapView *MapView() const { return &m_MapView; }
|
||||||
CLayerSelector *LayerSelector() { return &m_LayerSelector; }
|
CLayerSelector *LayerSelector() { return &m_LayerSelector; }
|
||||||
|
|
||||||
|
void SelectNextLayer();
|
||||||
|
void SelectPreviousLayer();
|
||||||
|
|
||||||
void FillGameTiles(EGameTileOp FillTile) const;
|
void FillGameTiles(EGameTileOp FillTile) const;
|
||||||
bool CanFillGameTiles() const;
|
bool CanFillGameTiles() const;
|
||||||
void AddGroup();
|
void AddGroup();
|
||||||
|
|
|
@ -120,4 +120,6 @@ void CEditor::DeleteSelectedLayer()
|
||||||
if(pCurrentLayer == m_Map.m_pTuneLayer)
|
if(pCurrentLayer == m_Map.m_pTuneLayer)
|
||||||
m_Map.m_pTuneLayer = nullptr;
|
m_Map.m_pTuneLayer = nullptr;
|
||||||
m_Map.m_vpGroups[m_SelectedGroup]->DeleteLayer(m_vSelectedLayers[0]);
|
m_Map.m_vpGroups[m_SelectedGroup]->DeleteLayer(m_vSelectedLayers[0]);
|
||||||
|
|
||||||
|
SelectPreviousLayer();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue