mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-16 13:59:39 -04:00
ad53af5c78
* WIP touch controls * Action icons * Updates * Don't mutate freeCamera config; allow switching between touch and controller cam * Wow * Fix build & add Skip button * Fix build & add settings * RCSS cleanup * Dpad and fishing, might redo * Add menu mouse controls * More pointer & fix icons * Optimizations & introduce layout system * Update aurora * Implement touch controls layout editor * Cleanup & fixes * Allow disabling mouse/touch in menus * More fixes
61 lines
1.5 KiB
C++
61 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "dolphin/types.h"
|
|
|
|
class CPaneMgr;
|
|
|
|
namespace dusk::menu_pointer {
|
|
|
|
enum class Context {
|
|
None,
|
|
FileSelect,
|
|
Save,
|
|
ItemWheel,
|
|
Collection,
|
|
Options,
|
|
Dialog,
|
|
};
|
|
|
|
enum class Phase {
|
|
Move,
|
|
Press,
|
|
Release,
|
|
Cancel,
|
|
};
|
|
|
|
struct State {
|
|
f32 x = 0.0f;
|
|
f32 y = 0.0f;
|
|
bool valid = false;
|
|
bool down = false;
|
|
bool pressed = false;
|
|
bool released = false;
|
|
bool clicked = false;
|
|
bool touch = false;
|
|
};
|
|
|
|
void begin_game_frame() noexcept;
|
|
void end_game_frame() noexcept;
|
|
void begin_context(Context context) noexcept;
|
|
bool handle_fallthrough_pointer(f32 x, f32 y, Phase phase, bool touch, s32 mouseButton = -1) noexcept;
|
|
|
|
bool active() noexcept;
|
|
bool enabled() noexcept;
|
|
bool mouse_capture_active() noexcept;
|
|
const State& state() noexcept;
|
|
bool consume_click() noexcept;
|
|
void set_dialog_choice(u8 choice, bool clicked) noexcept;
|
|
bool get_dialog_choice(u8& choice) noexcept;
|
|
bool consume_dialog_click(u8& choice) noexcept;
|
|
void defer_activation(Context context, u8 target) noexcept;
|
|
bool consume_deferred_activation(Context context, u8 target) noexcept;
|
|
void clear_deferred_activation(Context context) noexcept;
|
|
u32 suppressed_pad_buttons(u32 port) noexcept;
|
|
void finish_pad_suppression_read(u32 port) noexcept;
|
|
|
|
bool hit_rect(f32 left, f32 top, f32 right, f32 bottom, f32 padding = 0.0f) noexcept;
|
|
bool hit_pane(CPaneMgr* pane, f32 padding = 0.0f) noexcept;
|
|
bool hit_pane(J2DPane* pane, f32 padding = 0.0f) noexcept;
|
|
|
|
} // namespace dusk::menu_pointer
|