/* date = December 9th 2023 0:37 pm */

#ifndef VN_DEBUG_INFO_H
#define VN_DEBUG_INFO_H

////////////////////////////////
//~ sixten: Debug Info Types

struct debug_info_node
{
	debug_info_node *Next;
	debug_info_node *Prev;
	string Message;
};

struct debug_info
{
	arena *Arena;
	temp FrameTemp;
	debug_info_node *First;
	debug_info_node *Last;
	v2_r32 RelativeP;
	b32 Open;
	r32 OpenT;
};


////////////////////////////////
//~ sixten: Debug Info Functions

//- sixten: manage state
static debug_info *DI_DebugInfoAlloc(void);
static void DI_BeginFrame(debug_info *DebugInfo);
static void DI_EndFrame(void);

//- sixten: user interface
static void DI_Info(string Message);
static void DI_InfoF(char *Format, ...);
static void DI_BuildInfo(void);

#endif //VN_DEBUG_INFO_H
