package edu.calpoly.csc480.Wumpus.Agent;

import java.util.*;

import com.bcurry.www.awt.*;
import com.bcurry.www.util.*;

import edu.calpoly.csc480.Wumpus.Tile.*;

public class Husk extends Tile
{
	public static final int stenchLink = 0, breezeLink = 1, numLinks = 2;

	public Husk(BasicPoint point) {
		super(point);

		visited = false;

		facts = new Fact[Fact.numFacts];
		facts[Fact.ok]     = new Fact.OK();
		facts[Fact.wall]   = new Fact.Wall();
		facts[Fact.exit]   = new Fact.Exit();
		facts[Fact.pit]    = new Fact.Pit();
		facts[Fact.wumpus] = new Fact.Wumpus();
		facts[Fact.gold]   = new Fact.Gold();

		for (int fact = 0; fact < Fact.numFacts; fact++) {
			facts[fact].setHusk(this);
		}

		huskLinks = new FastList[numLinks];
		factLinks = new FastList[numLinks];

		for (int link = 0; link < Husk.numLinks; link++) {
			huskLinks[link] = new FastList();
			factLinks[link] = new FastList();
		}
	}

	public final boolean isVisited()		{return visited;}
	public final Fact getFact(int type)	{return facts[type];}

	public final java.util.List getHuskLinks(int type) {
		return huskLinks[(type == Fact.wumpus ? stenchLink : breezeLink)];
	}

	public final java.util.List getFactLinks(int type) {
		return factLinks[(type == Fact.wumpus ? stenchLink : breezeLink)];
	}

	public void setVisited(boolean visited) {
		this.visited = visited;
	}

	public void setKnowledgeBase(KnowledgeBase kb) {
		for (int fact = 0; fact < Fact.numFacts; fact++) {
			facts[fact].setKnowledgeBase(kb);
		}
	}

	protected boolean visited;
	protected Fact facts[];
	protected java.util.List huskLinks[], factLinks[];
}