#pragma once

#include "Player.h"
#include "BlockSource.h"
#include "Minecraft.h"
#include "MinecraftGame.h"
#include "LevelRender.h"
#include "LoopbackPacketSender.h"
#include "Matrix.h"
#include "GuiData.h"
#include "ContainerManagerModel.h"
#include "Camera.h"

class ClientInstance {
public:
	auto getLocalPlayer() -> Player*;
	auto getBlockSource() -> BlockSource*;

	auto releaseMouse() -> void;
	auto grabMouse() -> void;
	auto playUI(std::string, float, float) -> void;

	auto getMinecraftGame() -> MinecraftGame*;
	auto getMinecraft() -> Minecraft*;
	auto getLevelRender() -> LevelRender*;
	auto getLoopbackPacketSender() -> LoopbackPacketSender*;
	auto getCamera() -> mce::Camera&;
	auto getMatrix() -> GLMatrix;
	auto getGuiData() -> GuiData*;

	auto getFovX() -> float;
	auto getFovY() -> float;
	auto getScreenName() -> std::string;
};
