// Copyright (c) 2023 Alex Diener. All rights reserved.

#ifndef __Globals_H__
#define __Globals_H__

#include "font/BitmapFont2.h"
#include "gamemath/PCGRandom.h"
#include "gamemath/Vector2f.h"
#include "PROJECT_NAME/GameSession.h"
#include "renderer/Renderer.h"
#include "renderer/ShaderConfiguration.h"
#include "renderer/Texture.h"
#include "shadercollection/ShaderConfiguration2DMultitexture.h"
#include "tileset/ImageCollection.h"
#include "tileset/SpriteCollection.h"
#include "tileset/TilesetAdjacencyBlendMap.h"
#include "tileset/TilesetEditData.h"
#include "uitoolkit/UIAppearance.h"
#include "uitoolkit/UITypeface_BitmapFont2.h"
#include "uitoolkit/UIToolkitContext.h"

extern unsigned int g_viewWidth;
extern unsigned int g_viewHeight;
extern float g_viewRatio;
extern float g_scaleFactor;
extern Vector2f g_lastMousePosition;
extern Renderer * g_renderer;
extern RenderTarget * g_renderTarget;
extern unsigned int g_audioSampleRate;
extern GameSession * g_gameSession;
extern Texture * g_texture;
extern UIAppearance g_uiAppearance;
extern UIToolkitContext g_uiContext;
extern BitmapFont2 * g_font17pt;
extern UITypeface_BitmapFont2 * g_uiTypeface;
extern ImageCollection * g_imageCollection;
extern TilesetEditData * g_tileset;
extern HashTable * g_tileProperties;
extern TilesetAdjacencyBlendMap * g_blendMap;
extern SpriteCollection * g_spriteCollection;
extern Texture * g_imageCollectionTexture;
extern ShaderUniformConfiguration g_projectionUniform;
extern ShaderConfiguration2DMultitexture * g_shaderConfiguration;
extern Rect4f g_whiteAtlasEntry;
extern pcg_state g_pcgState;

#endif
