#pragma once
#include <Array.h>
#include <DLLRegister.h>
#include <Font.h>
#include <HashMap.h>
#include <RCPointer.h>
#include <Screen.h>
#include <UIInitialization.h>
#include <Window.h>

#include "ItemType.h"
#include "Menu.h"
#include "World.h"

#ifndef variable
#    define variable extern
#endif

variable Framework::HashMap<Framework::Text, Framework::RCPointer<Menu>>*
    menuRegister;
variable UIInit uiFactory;
variable Framework::HashMap<Framework::Text, Framework::RCPointer<Font>>*
    fontRegister;
variable DLLRegister* dlls;
variable Framework::NativeWindow* window;
variable BlockType** blockTypes;
variable int blockTypeCount;
variable ItemType** itemTypes;
variable int itemTypeCount;
variable EntityType** entityTypes;
variable int entityTypeCount;

void initVariables();
void initMenus();
void releaseVariables();

const ItemType* zItemType(int id);