package ckathode.archimedes.network;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import net.minecraft.entity.player.EntityPlayer;
import ckathode.archimedes.chunk.AssembleResult;
import ckathode.archimedes.gui.ContainerHelm;

public class MsgAssembleResult extends ASMessage
{
	public AssembleResult	result;
	public boolean			prevFlag;
	
	public MsgAssembleResult()
	{
		result = null;
		prevFlag = false;
	}
	
	public MsgAssembleResult(AssembleResult compileresult, boolean prev)
	{
		result = compileresult;
		prevFlag = prev;
	}
	
	@Override
	public void encodeInto(ChannelHandlerContext ctx, ByteBuf buf)
	{
		buf.writeBoolean(prevFlag);
		if (result == null)
		{
			buf.writeByte(AssembleResult.RESULT_NONE);
		} else
		{
			buf.writeByte(result.getCode());
			buf.writeInt(result.getBlockCount());
			buf.writeInt(result.getBalloonCount());
			buf.writeInt(result.getTileEntityCount());
			buf.writeFloat(result.getMass());
		}
	}
	
	@Override
	public void decodeInto(ChannelHandlerContext ctx, ByteBuf buf, EntityPlayer player)
	{
		prevFlag = buf.readBoolean();
		result = new AssembleResult(buf);
	}
	
	@Override
	public void handleClientSide(EntityPlayer player)
	{
		if (player.openContainer instanceof ContainerHelm)
		{
			if (prevFlag)
			{
				((ContainerHelm) player.openContainer).tileEntity.setPrevAssembleResult(result);
			} else
			{
				((ContainerHelm) player.openContainer).tileEntity.setAssembleResult(result);
			}
		}
	}
	
	@Override
	public void handleServerSide(EntityPlayer player)
	{
	}
	
}