2023-06-17 17:00:55 +00:00
|
|
|
inline void Platform_ConsumeEvent(platform_event_list *EventList, platform_event *Event)
|
|
|
|
{
|
|
|
|
DLLRemove(EventList->First, EventList->Last, Event);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline b32 Platform_KeyPress(platform_event_list *EventList, platform_key Key,
|
|
|
|
platform_modifiers Modifiers = PlatformModifier_DoesNotMatter)
|
|
|
|
{
|
|
|
|
b32 Result = false;
|
|
|
|
|
|
|
|
for(platform_event *Event = EventList->First;
|
|
|
|
Event != 0;
|
|
|
|
Event = Event->Next)
|
|
|
|
{
|
|
|
|
if((Event->Type == PlatformEvent_Press) &&
|
|
|
|
(Event->Key == Key) &&
|
|
|
|
((Modifiers == PlatformModifier_DoesNotMatter) ||
|
|
|
|
(Event->Modifiers ^ Modifiers) == 0))
|
|
|
|
{
|
|
|
|
Result = true;
|
|
|
|
Platform_ConsumeEvent(EventList, Event);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return(Result);
|
|
|
|
}
|
|
|
|
|
|
|
|
inline b32 Platform_KeyRelease(platform_event_list *EventList, platform_key Key,
|
|
|
|
platform_modifiers Modifiers = PlatformModifier_DoesNotMatter)
|
|
|
|
{
|
|
|
|
b32 Result = false;
|
|
|
|
|
|
|
|
for(platform_event *Event = EventList->First;
|
|
|
|
Event != 0;
|
|
|
|
Event = Event->Next)
|
|
|
|
{
|
|
|
|
if((Event->Type == PlatformEvent_Release) &&
|
|
|
|
(Event->Key == Key) &&
|
|
|
|
((Modifiers == PlatformModifier_DoesNotMatter) ||
|
|
|
|
((Event->Modifiers & Modifiers) != 0) ||
|
|
|
|
((Event->Modifiers == 0) && (Modifiers == 0))))
|
|
|
|
{
|
|
|
|
Result = true;
|
|
|
|
Platform_ConsumeEvent(EventList, Event);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return(Result);
|
|
|
|
}
|
|
|
|
|
2023-10-29 10:00:34 +00:00
|
|
|
static string Platform_ReadEntireFile(arena *Arena, string Path)
|
2023-06-17 17:00:55 +00:00
|
|
|
{
|
|
|
|
string Result = {};
|
|
|
|
|
|
|
|
platform_file_handle File = Platform.OpenFile(Path, PlatformAccess_Read);
|
|
|
|
if(File.IsValid)
|
|
|
|
{
|
|
|
|
Result.Count = Platform.GetFileSize(File);
|
|
|
|
|
|
|
|
Result.Data = PushArray(Arena, u8, Result.Count);
|
|
|
|
Platform.ReadFile(File, Result.Data, 0, Result.Count);
|
|
|
|
|
|
|
|
Platform.CloseFile(File);
|
|
|
|
}
|
|
|
|
|
|
|
|
return(Result);
|
|
|
|
}
|