46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
#define FOLDHAUS_INPUT_COMMAND_PROC(name) void name(app_state* State, input_entry Event, mouse_state Mouse)
|
|
typedef FOLDHAUS_INPUT_COMMAND_PROC(input_command_proc);
|
|
|
|
// NOTE(Peter): Helper function so I don't have to remember the parameters to this define
|
|
#define ExecFoldhausCommand(cmd) cmd(State, Event, Mouse)
|
|
|
|
enum input_command_flags
|
|
{
|
|
Command_Began = 1 << 0,
|
|
Command_Held = 1 << 1,
|
|
Command_Ended = 1 << 2,
|
|
};
|
|
|
|
#define Command_Any Command_Began | Command_Held | Command_Ended
|
|
|
|
// TODO(Peter): At the moment these are all key press commands. Need a way to differentiate between
|
|
// press and hold. Probably add a second array to input_command_Registry
|
|
struct input_command
|
|
{
|
|
key_code Key;
|
|
key_code Mdfr;
|
|
b32 Flags;
|
|
input_command_proc* Proc;
|
|
};
|
|
|
|
struct input_command_registry
|
|
{
|
|
input_command* Commands;
|
|
s32 Size;
|
|
s32 Used;
|
|
|
|
input_command_proc* MouseWheelCommand;
|
|
};
|
|
|
|
struct command_queue_entry
|
|
{
|
|
input_command Command;
|
|
input_entry Event;
|
|
};
|
|
|
|
struct input_command_queue
|
|
{
|
|
s32 Size;
|
|
s32 Used;
|
|
command_queue_entry* Commands;
|
|
}; |