Clean up more of the FSM so that it's almost nothing.Now I'll try to make a stand-alone 'dnd' state machine to handle drag and drop functionality.
This commit is contained in:
parent
06a843f169
commit
1ab708c4eb
3 changed files with 43 additions and 50 deletions
74
gui/fsm.cpp
74
gui/fsm.cpp
|
@ -133,23 +133,17 @@ namespace gui {
|
|||
$loot_ui.active = false;
|
||||
state(State::IDLE);
|
||||
break;
|
||||
case LOOT_SELECT: {
|
||||
auto gui_id = std::any_cast<guecs::Entity>(data);
|
||||
$grab_source = UISystem::loot_grab($loot_ui.$gui, gui_id);
|
||||
if(!$grab_source) state(State::LOOTING);
|
||||
} break;
|
||||
case INV_SELECT: {
|
||||
if($grab_source) {
|
||||
auto gui_id = std::any_cast<guecs::Entity>(data);
|
||||
bool dropped = UISystem::loot_drop(
|
||||
$loot_ui.$gui, $status_ui.$gui,
|
||||
*$grab_source, gui_id);
|
||||
|
||||
if(dropped) {
|
||||
state(State::LOOTING);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case LOOT_SELECT:
|
||||
$grab_source = UISystem::loot_grab($loot_ui.$gui, data);
|
||||
if($grab_source) state(State::LOOTING);
|
||||
break;
|
||||
case INV_SELECT:
|
||||
if(UISystem::loot_drop($loot_ui.$gui,
|
||||
$status_ui.$gui, $grab_source, data))
|
||||
{
|
||||
state(State::LOOTING);
|
||||
}
|
||||
break;
|
||||
case MOUSE_CLICK:
|
||||
mouse_action(false);
|
||||
break;
|
||||
|
@ -183,23 +177,17 @@ namespace gui {
|
|||
$loot_ui.active = false;
|
||||
state(State::IDLE);
|
||||
break;
|
||||
case LOOT_SELECT: {
|
||||
if($grab_source) {
|
||||
auto gui_id = std::any_cast<guecs::Entity>(data);
|
||||
bool dropped = UISystem::loot_drop(
|
||||
$status_ui.$gui, $loot_ui.$gui,
|
||||
*$grab_source, gui_id);
|
||||
|
||||
if(dropped) {
|
||||
state(State::LOOTING);
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case INV_SELECT: {
|
||||
auto gui_id = std::any_cast<DinkyECS::Entity>(data);
|
||||
$grab_source = UISystem::loot_grab($status_ui.$gui, gui_id);
|
||||
if(!$grab_source) state(State::LOOTING);
|
||||
} break;
|
||||
case LOOT_SELECT:
|
||||
if(UISystem::loot_drop($status_ui.$gui,
|
||||
$loot_ui.$gui, $grab_source, data))
|
||||
{
|
||||
state(State::LOOTING);
|
||||
}
|
||||
break;
|
||||
case INV_SELECT:
|
||||
$grab_source = UISystem::loot_grab($status_ui.$gui, data);
|
||||
state(State::LOOTING);
|
||||
break;
|
||||
case MOUSE_CLICK:
|
||||
mouse_action(false);
|
||||
break;
|
||||
|
@ -230,16 +218,14 @@ namespace gui {
|
|||
$loot_ui.active = false;
|
||||
state(State::IDLE);
|
||||
break;
|
||||
case LOOT_SELECT: {
|
||||
auto gui_id = std::any_cast<guecs::Entity>(data);
|
||||
$grab_source = UISystem::loot_grab($loot_ui.$gui, gui_id);
|
||||
if($grab_source) state(State::LOOT_GRAB);
|
||||
} break;
|
||||
case INV_SELECT: {
|
||||
auto gui_id = std::any_cast<DinkyECS::Entity>(data);
|
||||
$grab_source = UISystem::loot_grab($status_ui.$gui, gui_id);
|
||||
if($grab_source) state(State::INV_GRAB);
|
||||
} break;
|
||||
case LOOT_SELECT:
|
||||
$grab_source = UISystem::loot_grab($loot_ui.$gui, data);
|
||||
if($grab_source) state(State::LOOT_GRAB);
|
||||
break;
|
||||
case INV_SELECT:
|
||||
$grab_source = UISystem::loot_grab($status_ui.$gui, data);
|
||||
if($grab_source) state(State::INV_GRAB);
|
||||
break;
|
||||
case MOUSE_DRAG_START:
|
||||
case MOUSE_CLICK:
|
||||
mouse_action(false);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue