package matteroverdrive.network.packet.client.starmap;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import matteroverdrive.gui.GuiStarMap;
import matteroverdrive.network.packet.PacketAbstract;
import matteroverdrive.network.packet.client.AbstractClientPacketHandler;
import matteroverdrive.starmap.GalaxyClient;
import matteroverdrive.starmap.data.Galaxy;
import matteroverdrive.starmap.data.TravelEvent;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Simeon on 6/28/2015.
*/
public class PacketUpdateTravelEvents extends PacketAbstract
{
List<TravelEvent> travelEvents;
public PacketUpdateTravelEvents()
{
}
public PacketUpdateTravelEvents(Galaxy galaxy)
{
travelEvents = galaxy.getTravelEvents();
}
@Override
public void fromBytes(ByteBuf buf)
{
if (travelEvents == null)
travelEvents = new ArrayList<TravelEvent>();
int size = buf.readInt();
for (int i = 0;i < size;i++)
{
travelEvents.add(new TravelEvent(buf));
}
}
@Override
public void toBytes(ByteBuf buf)
{
buf.writeInt(travelEvents.size());
for (int i = 0;i < travelEvents.size();i++)
{
travelEvents.get(i).writeToBuffer(buf);
}
}
public static class ClientHandler extends AbstractClientPacketHandler<PacketUpdateTravelEvents>
{
@Override
public IMessage handleClientMessage(EntityPlayer player, PacketUpdateTravelEvents message, MessageContext ctx)
{
GalaxyClient.getInstance().getTheGalaxy().setTravelEvents(message.travelEvents);
notifyChange();
return null;
}
@SideOnly(Side.CLIENT)
private void notifyChange()
{
if (Minecraft.getMinecraft().currentScreen instanceof GuiStarMap)
{
GuiStarMap guiStarMap = (GuiStarMap)Minecraft.getMinecraft().currentScreen;
guiStarMap.onTravelEventsChange(GalaxyClient.getInstance().getTheGalaxy().getTravelEvents());
}
}
}
}