/*
* This file is part of Matter Overdrive
* Copyright (c) 2015., Simeon Radivoev, All rights reserved.
*
* Matter Overdrive is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Matter Overdrive is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>.
*/
package matteroverdrive.proxy;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import matteroverdrive.MatterOverdrive;
import matteroverdrive.client.RenderHandler;
import matteroverdrive.client.render.HoloIcons;
import matteroverdrive.client.resources.data.WeaponMetadataSection;
import matteroverdrive.client.resources.data.WeaponMetadataSectionSerializer;
import matteroverdrive.compat.MatterOverdriveCompat;
import matteroverdrive.gui.GuiAndroidHud;
import matteroverdrive.gui.GuiQuestHud;
import matteroverdrive.handler.GoogleAnalyticsClient;
import matteroverdrive.handler.KeyHandler;
import matteroverdrive.handler.MouseHandler;
import matteroverdrive.handler.TooltipHandler;
import matteroverdrive.handler.weapon.ClientWeaponHandler;
import matteroverdrive.handler.weapon.CommonWeaponHandler;
import matteroverdrive.init.MatterOverdriveGuides;
import matteroverdrive.init.MatterOverdriveIcons;
import matteroverdrive.init.MatterOverdriveItems;
import matteroverdrive.starmap.GalaxyClient;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.common.MinecraftForge;
public class ClientProxy extends CommonProxy
{
private static ClientProxy clientProxy;
public static RenderHandler renderHandler;
public static KeyHandler keyHandler;
public static MouseHandler mouseHandler;
public static GuiAndroidHud androidHud;
public static HoloIcons holoIcons;
private ClientWeaponHandler weaponHandler;
public static GuiQuestHud questHud;
public ClientProxy()
{
weaponHandler = new ClientWeaponHandler();
googleAnalyticsCommon = new GoogleAnalyticsClient();
}
@Override
public void registerProxies()
{
super.registerProxies();
renderHandler = new RenderHandler(Minecraft.getMinecraft().theWorld,Minecraft.getMinecraft().getTextureManager());
androidHud = new GuiAndroidHud(Minecraft.getMinecraft());
keyHandler = new KeyHandler();
mouseHandler = new MouseHandler();
holoIcons = new HoloIcons();
weaponHandler = new ClientWeaponHandler();
questHud = new GuiQuestHud();
Minecraft.getMinecraft().getResourcePackRepository().rprMetadataSerializer.registerMetadataSectionType(new WeaponMetadataSectionSerializer(), WeaponMetadataSection.class);
registerSubscribtions();
//region Render Handler Functions
//region Create
renderHandler.createBlockRenderers();
renderHandler.createTileEntityRenderers(MatterOverdrive.configHandler);
renderHandler.createItemRenderers();
renderHandler.createEntityRenderers();
renderHandler.createBioticStatRenderers();
renderHandler.createStarmapRenderers();
renderHandler.createModels();
//endregion
//region Register
renderHandler.registerBlockRenderers();
renderHandler.registerTileEntitySpecialRenderers();
renderHandler.registerItemRenderers();
renderHandler.registerEntityRenderers();
renderHandler.registerBioticStatRenderers();
renderHandler.registerBionicPartRenderers();
renderHandler.registerStarmapRenderers();
renderHandler.registerWeaponModuleModels();
//endregion
//endregion
MatterOverdrive.configHandler.subscribe(androidHud);
}
private void registerSubscribtions()
{
FMLCommonHandler.instance().bus().register(keyHandler);
FMLCommonHandler.instance().bus().register(mouseHandler);
MinecraftForge.EVENT_BUS.register(GalaxyClient.getInstance());
MinecraftForge.EVENT_BUS.register(new MatterOverdriveIcons());
MinecraftForge.EVENT_BUS.register(renderHandler);
MinecraftForge.EVENT_BUS.register(new TooltipHandler());
MinecraftForge.EVENT_BUS.register(androidHud);
MinecraftForge.EVENT_BUS.register(mouseHandler);
MinecraftForge.EVENT_BUS.register(questHud);
FMLCommonHandler.instance().bus().register(renderHandler);
FMLCommonHandler.instance().bus().register(GalaxyClient.getInstance());
FMLCommonHandler.instance().bus().register(androidHud);
MinecraftForge.EVENT_BUS.register(weaponHandler);
}
@Override
public void registerCompatModules()
{
super.registerCompatModules();
MatterOverdriveCompat.registerClientModules();
}
@Override
public EntityPlayer getPlayerEntity(MessageContext ctx)
{
return (ctx.side.isClient() ? Minecraft.getMinecraft().thePlayer : super.getPlayerEntity(ctx));
}
@Override
public void init(FMLInitializationEvent event)
{
super.init(event);
weaponHandler.registerWeapon(MatterOverdriveItems.phaserRifle);
weaponHandler.registerWeapon(MatterOverdriveItems.phaser);
weaponHandler.registerWeapon(MatterOverdriveItems.omniTool);
weaponHandler.registerWeapon(MatterOverdriveItems.plasmaShotgun);
weaponHandler.registerWeapon(MatterOverdriveItems.ionSniper);
MatterOverdriveGuides.registerGuideElements(event);
}
@Override
public void postInit(FMLPostInitializationEvent event)
{
MatterOverdriveGuides.registerGuides(event);
}
public ClientWeaponHandler getClientWeaponHandler()
{
return weaponHandler;
}
@Override
public CommonWeaponHandler getWeaponHandler(){return weaponHandler;}
public static ClientProxy instance()
{
if (clientProxy == null)
{
clientProxy = (ClientProxy)MatterOverdrive.proxy;
}
return clientProxy;
}
}