package net.sf.odinms.net.channel.handler;
import net.sf.odinms.client.MapleCharacter;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.server.partyquest.mcpq.MCField;
import net.sf.odinms.server.partyquest.mcpq.MCTracker;
import net.sf.odinms.server.partyquest.mcpq.MonsterCarnival;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;

/**
 * Packet handler for Monster Carnival.
 * @author s4nta
 */
public class MonsterCarnivalHandler extends AbstractMaplePacketHandler {

    @Override
    public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
        int tab = slea.readByte();
        int num = slea.readByte();
        MapleCharacter chr = c.getPlayer();

        if (MonsterCarnival.DEBUG) {
            MCTracker.log("[MCHandler] " + chr.getName() + " used tab "  + tab + " num " + num);
            System.out.println("[MCHandler] " + chr.getName() + " used tab "  + tab + " num " + num);
        }

        if (chr.getMCPQField() == null || chr.getMCPQParty() == null) {
            MCTracker.log("[MCHandler] " + chr.getName() + " attempting to use Monster Carnival handler without being in Monster Carnival");
            return;
        }

        MCField field = chr.getMCPQField();
        if (tab == 0) {
            field.onAddSpawn(c.getPlayer(), num);
        } else if (tab == 1) {
            field.onUseSkill(c.getPlayer(), num);
        } else if (tab == 2) { // status
            field.onGuardianSummon(c.getPlayer(), num);
        }
    }
}