#pragma once

#include "Weapon.hpp"

namespace Components
{
	class ModelCache : public Component
	{
	public:
		static const int BASE_GMODEL_COUNT = 512;

		// Double the limit to allow loading of some heavy-duty MW3 maps
		static const int ADDITIONAL_GMODELS = 512;

		static const int G_MODELINDEX_LIMIT = (BASE_GMODEL_COUNT + Weapon::WEAPON_LIMIT - Weapon::BASEGAME_WEAPON_LIMIT + ADDITIONAL_GMODELS);

		// Server
		static Game::XModel* cached_models_reallocated[G_MODELINDEX_LIMIT];

		// Client game
		static Game::XModel* gameModels_reallocated[G_MODELINDEX_LIMIT];
		
		static bool modelsHaveBeenReallocated;

		static void R_RegisterModel_InitGraphics(const char* name, void* atAddress);
		static void R_RegisterModel_Hook();

		ModelCache();
	};
}
