package com.arkcraft.module.core.client.gui.book.proxy;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
import com.arkcraft.lib.LogHelper;
import com.arkcraft.module.core.ARKCraft;
import com.arkcraft.module.core.client.gui.book.BookDocument;
import com.arkcraft.module.core.client.gui.book.DossierInfo;
import com.arkcraft.module.core.client.gui.book.deserialization.EntityLivingBaseDeserializer;
import com.arkcraft.module.core.client.gui.book.deserialization.PageDeserializer;
import com.arkcraft.module.core.client.gui.book.fonts.SmallFontRenderer;
import com.arkcraft.module.core.client.gui.book.pages.Page;
import com.arkcraft.module.core.client.gui.book.pages.PageChapter;
import com.arkcraft.module.core.client.gui.book.pages.PageData;
import com.arkcraft.module.core.client.gui.book.pages.PageDino;
import com.arkcraft.module.core.client.gui.book.pages.PageText;
import com.arkcraft.module.core.client.gui.book.pages.PageTitle;
import com.arkcraft.module.creature.common.entity.aggressive.EntityRaptor;
import com.arkcraft.module.creature.common.entity.neutral.EntityBrontosaurus;
import com.arkcraft.module.creature.common.entity.passive.EntityDodo;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**
* @author Vastatio
*/
public class DClient extends DCommon
{
public static Minecraft mc;
public static SmallFontRenderer fonts;
public static BookDocument dossier;
public static DossierInfo info;
public void init()
{
info = new DossierInfo();
mc = Minecraft.getMinecraft();
fonts = new SmallFontRenderer(mc.gameSettings, new ResourceLocation("textures/font/ascii.png"), mc.renderEngine, false);
registerPageClasses();
registerModelClasses();
GsonBuilder gBuilder = info.data.getGsonBuilder();
gBuilder.registerTypeAdapter(Page.class, new PageDeserializer());
gBuilder.registerTypeAdapter(EntityLivingBase.class, new EntityLivingBaseDeserializer());
String lang = mc.getLanguageManager().getCurrentLanguage().getLanguageCode();
BookDocument dossier_cl = readManual(gBuilder, "dossier/" + lang + "/dossier.json");
dossier = dossier_cl != null ? dossier_cl : readManual(gBuilder, "dossier/en_US/dossier.json");
if (dossier != null)
{
info.data.doc = dossier;
}
}
public BookDocument readManual(GsonBuilder gBuilder, String location)
{
Gson gson = gBuilder.create();
ResourceLocation rloc = new ResourceLocation(ARKCraft.MODID, location);
try
{
InputStream stream = Minecraft.getMinecraft().getResourceManager().getResource(rloc).getInputStream();
Reader reader = new InputStreamReader(stream, "UTF-8");
BookDocument doc = gson.fromJson(reader, BookDocument.class);
return doc;
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
@Override
public void registerPageClasses()
{
LogHelper.info("Registering page classes!");
PageData.addBookPage("dino", PageDino.class);
PageData.addBookPage("text", PageText.class);
PageData.addBookPage("title", PageTitle.class);
PageData.addBookPage("chapter", PageChapter.class);
}
@Override
public void registerModelClasses()
{
LogHelper.info("Registering model classes!");
PageData.addModel("raptor", EntityRaptor.class);
PageData.addModel("brontosaurus", EntityBrontosaurus.class);
PageData.addModel("dodo", EntityDodo.class);
}
}