mirror of
https://github.com/AquaMorph/Droplets.git
synced 2025-04-30 01:35:34 +00:00
Merge keeps currently selected droplet
This commit is contained in:
parent
af3bf7bcf5
commit
8618675c2d
10
src/main.cpp
10
src/main.cpp
@ -40,10 +40,18 @@ void ProcessControls() {
|
|||||||
droplet_right = GetDroplet(DropletState::kRight,
|
droplet_right = GetDroplet(DropletState::kRight,
|
||||||
left_menu->GetBufferState());
|
left_menu->GetBufferState());
|
||||||
}
|
}
|
||||||
// Disable split
|
// Merge
|
||||||
else {
|
else {
|
||||||
|
if (selected_menu == left_menu) {
|
||||||
droplet_left->UpdateState(DropletState::kFull);
|
droplet_left->UpdateState(DropletState::kFull);
|
||||||
delete droplet_right;
|
delete droplet_right;
|
||||||
|
} else {
|
||||||
|
droplet_right->UpdateState(DropletState::kFull);
|
||||||
|
delete droplet_left;
|
||||||
|
droplet_left = droplet_right;
|
||||||
|
left_menu->SetState(right_menu->GetBufferState());
|
||||||
|
selected_menu = left_menu;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Switch side
|
// Switch side
|
||||||
|
17
src/menu.cpp
17
src/menu.cpp
@ -109,6 +109,17 @@ MenuState Menu::GetState() {
|
|||||||
return highlighted->GetState();
|
return highlighted->GetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Menu::SetState(MenuState state) {
|
||||||
|
MenuItem* ptr = head;
|
||||||
|
while(ptr != NULL) {
|
||||||
|
if (ptr->GetState() == state) {
|
||||||
|
Select(ptr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ptr = ptr->GetNext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MenuState Menu::GetBufferState() {
|
MenuState Menu::GetBufferState() {
|
||||||
return buffer->GetState();
|
return buffer->GetState();
|
||||||
}
|
}
|
||||||
@ -124,8 +135,12 @@ void Menu::UpdateMenuState() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Menu::Select() {
|
void Menu::Select() {
|
||||||
|
Select(highlighted);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Menu::Select(MenuItem* item) {
|
||||||
if (selected->GetState() != MenuState::kSplit) {
|
if (selected->GetState() != MenuState::kSplit) {
|
||||||
buffer = selected;
|
buffer = selected;
|
||||||
}
|
}
|
||||||
selected = highlighted;
|
selected = item;
|
||||||
}
|
}
|
||||||
|
14
src/menu.h
14
src/menu.h
@ -85,6 +85,13 @@ class Menu {
|
|||||||
*/
|
*/
|
||||||
MenuState GetState();
|
MenuState GetState();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the menu state.
|
||||||
|
*
|
||||||
|
* @param state menu state
|
||||||
|
*/
|
||||||
|
void SetState(MenuState state);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns the previously selected menu item.
|
* Returns the previously selected menu item.
|
||||||
*
|
*
|
||||||
@ -102,6 +109,13 @@ class Menu {
|
|||||||
* Select the currently highlighted menu item.
|
* Select the currently highlighted menu item.
|
||||||
*/
|
*/
|
||||||
void Select();
|
void Select();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Select the given menu item.
|
||||||
|
*
|
||||||
|
* @param item menu item to select
|
||||||
|
*/
|
||||||
|
void Select(MenuItem* item);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DROPLETS_MENU_H_
|
#endif // DROPLETS_MENU_H_
|
||||||
|
Loading…
x
Reference in New Issue
Block a user