mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-08-09 02:07:04 +08:00
fix(event): delegate error UI events to each handler
Move error UI event check from top of handle_event into each individual event handler (mouse_move, mouse_button, mouse_wheel, key, text_input). Also flatten window resize dispatch: all sub-handlers are called regardless of previous handler return values, and the method always returns false.
This commit is contained in:
@@ -70,9 +70,7 @@ void WorldScene::render(Renderer& renderer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool WorldScene::handle_event(const Event& e) {
|
bool WorldScene::handle_event(const Event& e) {
|
||||||
if (m_error_ui.has_error()) {
|
|
||||||
return m_error_ui.handle_event(e);
|
|
||||||
}
|
|
||||||
return std::visit(
|
return std::visit(
|
||||||
Overloaded{[this](const MouseMoveEvent& e) {
|
Overloaded{[this](const MouseMoveEvent& e) {
|
||||||
if (handle_mouse_move_event(e)) {
|
if (handle_mouse_move_event(e)) {
|
||||||
@@ -186,6 +184,9 @@ void WorldScene::load_config() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool WorldScene::handle_mouse_move_event(const MouseMoveEvent& e) {
|
bool WorldScene::handle_mouse_move_event(const MouseMoveEvent& e) {
|
||||||
|
if (m_error_ui.has_error()) {
|
||||||
|
return m_error_ui.handle_event(e);
|
||||||
|
}
|
||||||
if (m_chatting) {
|
if (m_chatting) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -209,6 +210,9 @@ bool WorldScene::handle_mouse_move_event(const MouseMoveEvent& e) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool WorldScene::handle_mouse_button_event(const MouseButtonEvent& e) {
|
bool WorldScene::handle_mouse_button_event(const MouseButtonEvent& e) {
|
||||||
|
if (m_error_ui.has_error()) {
|
||||||
|
return m_error_ui.handle_event(e);
|
||||||
|
}
|
||||||
if (m_chatting) {
|
if (m_chatting) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -232,23 +236,23 @@ bool WorldScene::handle_mouse_button_event(const MouseButtonEvent& e) {
|
|||||||
}
|
}
|
||||||
bool WorldScene::handle_window_resize_event(const WindowResizeEvent& e) {
|
bool WorldScene::handle_window_resize_event(const WindowResizeEvent& e) {
|
||||||
|
|
||||||
if (m_pasue_menu.handle_event(e)) {
|
m_error_ui.handle_event(e);
|
||||||
return true;
|
|
||||||
}
|
m_pasue_menu.handle_event(e);
|
||||||
if (m_hud_ui.handle_event(e)) {
|
|
||||||
return true;
|
m_hud_ui.handle_event(e);
|
||||||
}
|
|
||||||
if (m_camera.handle_event(e)) {
|
m_camera.handle_event(e);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// world event needs to be processed last
|
// world event needs to be processed last
|
||||||
if (m_client_world.handle_event(e)) {
|
m_client_world.handle_event(e);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool WorldScene::handle_mouse_wheel_event(const MouseWheelEvent& e) {
|
bool WorldScene::handle_mouse_wheel_event(const MouseWheelEvent& e) {
|
||||||
|
if (m_error_ui.has_error()) {
|
||||||
|
return m_error_ui.handle_event(e);
|
||||||
|
}
|
||||||
if (m_chatting) {
|
if (m_chatting) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -271,6 +275,9 @@ bool WorldScene::handle_mouse_wheel_event(const MouseWheelEvent& e) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool WorldScene::handle_key_event(const KeyEvent& e) {
|
bool WorldScene::handle_key_event(const KeyEvent& e) {
|
||||||
|
if (m_error_ui.has_error()) {
|
||||||
|
return m_error_ui.handle_event(e);
|
||||||
|
}
|
||||||
|
|
||||||
if (e.key == Key::ESCAPE && e.action == KeyAction::PRESS) {
|
if (e.key == Key::ESCAPE && e.action == KeyAction::PRESS) {
|
||||||
if (m_chatting && !m_paused) {
|
if (m_chatting && !m_paused) {
|
||||||
@@ -342,6 +349,9 @@ bool WorldScene::handle_key_event(const KeyEvent& e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool WorldScene::handle_text_input_event(const TextInputEvent& e) {
|
bool WorldScene::handle_text_input_event(const TextInputEvent& e) {
|
||||||
|
if (m_error_ui.has_error()) {
|
||||||
|
return m_error_ui.handle_event(e);
|
||||||
|
}
|
||||||
if (m_paused) {
|
if (m_paused) {
|
||||||
return m_pasue_menu.handle_text_input_event(e);
|
return m_pasue_menu.handle_text_input_event(e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user