/**
 * Copyright © 2010, Res Interactive, LLC. All Rights Reserved.
 */
package com.tootsville.game;

import org.json.JSONObject;
import org.starhope.appius.except.GameLogicException;
import org.starhope.appius.except.NotFoundException;
import org.starhope.appius.game.AppiusClaudiusCaecus;
import org.starhope.appius.game.GameEvent;
import org.starhope.appius.game.Zone;
import org.starhope.appius.room.Room;
import org.starhope.appius.user.AbstractNonPlayerCharacter;
import org.starhope.appius.user.AbstractUser;

import com.tootsville.npc.ShortOrderCook;

/**
 * WRITEME: Document this type.
 *
 * @author brpocock@star-hope.org
 */
public class TootBurger extends GameEvent {

	/**
	 * the cook
	 */
	private AbstractNonPlayerCharacter cook;

	/**
	 * WRITEME: Document this constructor brpocock@star-hope.org
	 * 
	 * @param z zone
	 */
	public TootBurger (final Zone z) {
		super (z, 'T');
		try {
			cook = new ShortOrderCook (z.getRoomByName ("tootBurger"));
		} catch (NotFoundException e) {
			AppiusClaudiusCaecus
					.reportBug (
							"Caught a NotFoundException in TootBurger.TootBurger ",
							e);
		} catch (GameLogicException e) {
			AppiusClaudiusCaecus
					.reportBug (
							"Caught a GameLogicException in TootBurger.TootBurger ",
							e);
		}
	}

	/**
	 * @see org.starhope.appius.room.RoomListener#acceptGameAction(org.starhope.appius.user.AbstractUser,
	 *      org.json.JSONObject)
	 */
	@Override
	public void acceptGameAction (final AbstractUser u,
			final JSONObject action) {
		// no op
	}

	/**
	 * @see org.starhope.appius.room.RoomListener#acceptOutOfBandMessage(org.starhope.appius.user.AbstractUser,
	 *      org.starhope.appius.room.Room, org.json.JSONObject)
	 */
	@Override
	public void acceptOutOfBandMessage (final AbstractUser sender,
			final Room room, final JSONObject body) {
		// no op
	}

	/**
	 * @see org.starhope.appius.room.RoomListener#acceptPublicMessage(org.starhope.appius.user.AbstractUser,
	 *      java.lang.String)
	 */
	@Override
	public void acceptPublicMessage (final AbstractUser from,
			final String message) {
		// no op
	}

	/**
	 * @see org.starhope.appius.room.RoomListener#acceptUserAction(org.starhope.appius.room.Room, org.starhope.appius.user.AbstractUser)
	 */
	@Override
	public void acceptUserAction (final Room r, final AbstractUser u) {
		// no op
	}

	/**
	 * @see org.starhope.appius.game.GameEvent#destroySelf()
	 */
	@Override
	public void destroySelf () {
		cook.destroy ();
		super.destroySelf ();
	}

	/**
	 * @see org.starhope.appius.game.GameEvent#getGameCode()
	 */
	@Override
	public char getGameCode () {
		return 'T';
	}

	/**
	 * @see org.starhope.appius.game.GameEvent#getGameEventPrefix()
	 */
	@Override
	public String getGameEventPrefix () {
		return "TootBurger";
	}

	/**
	 * @see org.starhope.appius.util.HasName#getName()
	 */
	@Override
	public String getName () {
		return "TootBurger";
	}

}
