Kernel: Input callbacks use the new BAN::Function

This commit is contained in:
Bananymous 2023-01-16 15:15:02 +02:00
parent 3561257286
commit 1545850be3
3 changed files with 15 additions and 14 deletions

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <BAN/Function.h>
#include <stdint.h> #include <stdint.h>
namespace Input namespace Input
@ -57,9 +58,9 @@ namespace Input
void update(); void update();
bool is_key_down(Key); bool is_key_down(Key);
void register_key_event_callback(void (*callback)(KeyEvent)); void register_key_event_callback(const BAN::Function<void(KeyEvent)>&);
void register_mouse_button_event_callback(void (*callback)(MouseButtonEvent)); void register_mouse_button_event_callback(const BAN::Function<void(MouseButtonEvent)>&);
void register_mouse_move_event_callback(void (*callback)(MouseMoveEvent)); void register_mouse_move_event_callback(const BAN::Function<void(MouseMoveEvent)>&);
const char* key_event_to_utf8(KeyEvent); const char* key_event_to_utf8(KeyEvent);

View File

@ -106,9 +106,9 @@ namespace Input
static uint8_t s_led_states = 0b000; static uint8_t s_led_states = 0b000;
static uint8_t s_modifiers = 0x00; static uint8_t s_modifiers = 0x00;
static void (*s_key_event_callback)(KeyEvent) = nullptr; static BAN::Function<void(KeyEvent)> s_key_event_callback;
static void (*s_mouse_button_event_callback)(MouseButtonEvent) = nullptr; static BAN::Function<void(MouseButtonEvent)> s_mouse_button_event_callback;
static void (*s_mouse_move_event_callback)(MouseMoveEvent) = nullptr; static BAN::Function<void(MouseMoveEvent)> s_mouse_move_event_callback;
static const char* s_key_to_utf8_lower[] static const char* s_key_to_utf8_lower[]
{ {
@ -385,21 +385,21 @@ namespace Input
while (!s_key_event_queue.Empty()) while (!s_key_event_queue.Empty())
{ {
if (s_key_event_callback) if (s_key_event_callback.HasFunction())
s_key_event_callback(s_key_event_queue.Front()); s_key_event_callback(s_key_event_queue.Front());
s_key_event_queue.Pop(); s_key_event_queue.Pop();
} }
while (!s_mouse_button_event_queue.Empty()) while (!s_mouse_button_event_queue.Empty())
{ {
if (s_mouse_button_event_callback) if (s_mouse_button_event_callback.HasFunction())
s_mouse_button_event_callback(s_mouse_button_event_queue.Front()); s_mouse_button_event_callback(s_mouse_button_event_queue.Front());
s_mouse_button_event_queue.Pop(); s_mouse_button_event_queue.Pop();
} }
while (!s_mouse_move_event_queue.Empty()) while (!s_mouse_move_event_queue.Empty())
{ {
if (s_mouse_move_event_callback) if (s_mouse_move_event_callback.HasFunction())
s_mouse_move_event_callback(s_mouse_move_event_queue.Front()); s_mouse_move_event_callback(s_mouse_move_event_queue.Front());
s_mouse_move_event_queue.Pop(); s_mouse_move_event_queue.Pop();
} }
@ -663,17 +663,17 @@ namespace Input
return true; return true;
} }
void register_key_event_callback(void (*callback)(KeyEvent)) void register_key_event_callback(const BAN::Function<void(KeyEvent)>& callback)
{ {
s_key_event_callback = callback; s_key_event_callback = callback;
} }
void register_mouse_button_event_callback(void (*callback)(MouseButtonEvent)) void register_mouse_button_event_callback(const BAN::Function<void(MouseButtonEvent)>& callback)
{ {
s_mouse_button_event_callback = callback; s_mouse_button_event_callback = callback;
} }
void register_mouse_move_event_callback(void (*callback)(MouseMoveEvent)) void register_mouse_move_event_callback(const BAN::Function<void(MouseMoveEvent)>& callback)
{ {
s_mouse_move_event_callback = callback; s_mouse_move_event_callback = callback;
} }

View File

@ -48,9 +48,9 @@ namespace Kernel
Shell::Shell() Shell::Shell()
{ {
Input::register_key_event_callback([](Input::KeyEvent event) { Shell::Get().KeyEventCallback(event); });
Input::register_mouse_move_event_callback([](Input::MouseMoveEvent event) { Shell::Get().MouseMoveEventCallback(event); });
SetPrompt("\\[\e[32m\\]user\\[\e[m\\]# "_sv); SetPrompt("\\[\e[32m\\]user\\[\e[m\\]# "_sv);
Input::register_key_event_callback({ &Shell::KeyEventCallback, this });
Input::register_mouse_move_event_callback({ &Shell::MouseMoveEventCallback, this });
MUST(m_buffer.PushBack(""_sv)); MUST(m_buffer.PushBack(""_sv));
} }