// Path: src/main/java/edu/brown/cs/h2r/burlapcraft/state/BCAgent.java
// @DeepCopyState
// public class BCAgent implements ObjectInstance {
// 
// 	public int x;
// 	public int y;
// 	public int z;
// 	public int rdir;
// 	public int vdir;
// 	public int selected;
// 
// 	private static final List<Object> keys = Arrays.<Object>asList(VAR_X, VAR_Y, VAR_Z, VAR_R_DIR, VAR_V_DIR, VAR_SEL);
// 
// 	public BCAgent() {
// 	}
// 
// 	public BCAgent(int x, int y, int z, int rdir, int vdir, int selected) {
// 		this.x = x;
// 		this.y = y;
// 		this.z = z;
// 		this.rdir = rdir;
// 		this.vdir = vdir;
// 		this.selected = selected;
// 	}
// 
// 	@Override
// 	public List<Object> variableKeys() {
// 		return keys;
// 	}
// 
// 	@Override
// 	public Object get(Object variableKey) {
// 		if(variableKey.equals(VAR_X)){
// 			return x;
// 		}
// 		else if(variableKey.equals(VAR_Y)){
// 			return y;
// 		}
// 		else if(variableKey.equals(VAR_Z)){
// 			return z;
// 		}
// 		else if(variableKey.equals(VAR_R_DIR)){
// 			return rdir;
// 		}
// 		else if(variableKey.equals(VAR_V_DIR)){
// 			return vdir;
// 		}
// 		else if(variableKey.equals(VAR_SEL)){
// 			return selected;
// 		}
// 		throw new UnknownKeyException(variableKey);
// 	}
// 
// 	@Override
// 	public String className() {
// 		return CLASS_AGENT;
// 	}
// 
// 	@Override
// 	public String name() {
// 		return CLASS_AGENT;
// 	}
// 
// 	@Override
// 	public BCAgent copyWithName(String objectName) {
// 		if(!objectName.equals(CLASS_AGENT)){
// 			throw new RuntimeException("Agent object must be named " + CLASS_AGENT);
// 		}
// 		return copy();
// 	}
// 
// 	@Override
// 	public BCAgent copy() {
// 		return new BCAgent(x, y, z, rdir, vdir, selected);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return OOStateUtilities.objectInstanceToString(this);
// 	}
// }
// 
// Path: src/main/java/edu/brown/cs/h2r/burlapcraft/state/BCBlock.java
// @DeepCopyState
// public class BCBlock implements ObjectInstance {
// 
// 	public int x;
// 	public int y;
// 	public int z;
// 	public int type;
// 
// 	protected String name;
// 
// 	private static final List<Object> keys = Arrays.<Object>asList(VAR_X, VAR_Y, VAR_Z, VAR_BT);
// 
// 	public BCBlock() {
// 	}
// 
// 	public BCBlock(int x, int y, int z, int type, String name) {
// 		this.x = x;
// 		this.y = y;
// 		this.z = z;
// 		this.type = type;
// 		this.name = name;
// 	}
// 
// 	@Override
// 	public String className() {
// 		return CLASS_BLOCK;
// 	}
// 
// 	@Override
// 	public String name() {
// 		return name;
// 	}
// 
// 	@Override
// 	public BCBlock copyWithName(String objectName) {
// 		return new BCBlock(x, y, z, type, objectName);
// 	}
// 
// 	@Override
// 	public List<Object> variableKeys() {
// 		return keys;
// 	}
// 
// 	@Override
// 	public Object get(Object variableKey) {
// 		if(variableKey.equals(VAR_X)){
// 			return x;
// 		}
// 		else if(variableKey.equals(VAR_Y)){
// 			return y;
// 		}
// 		else if(variableKey.equals(VAR_Z)){
// 			return z;
// 		}
// 		else if(variableKey.equals(VAR_BT)){
// 			return type;
// 		}
// 		throw new UnknownKeyException(variableKey);
// 	}
// 
// 	@Override
// 	public BCBlock copy() {
// 		return new BCBlock(x, y, z, type, name);
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return OOStateUtilities.objectInstanceToString(this);
// 	}
// }


import burlap.mdp.core.oo.propositional.PropositionalFunction;
import burlap.mdp.core.oo.state.OOState;
import edu.brown.cs.h2r.burlapcraft.state.BCAgent;
import edu.brown.cs.h2r.burlapcraft.state.BCBlock;
package edu.brown.cs.h2r.burlapcraft.domaingenerator.propositionalfunction;



public class PFAgentOnBlock extends PropositionalFunction {

	public PFAgentOnBlock(String name, String[] parameterClasses) {
		super(name, parameterClasses);

	}

	@Override
	public boolean isTrue(OOState s, String... params) {
// Path: src/main/java/edu/brown/cs/h2r/burlapcraft/state/BCAgent.java
// @DeepCopyState
// public class BCAgent implements ObjectInstance {
// 
// 	public int x;
// 	public int y;
// 	public int z;
// 	public int rdir;
// 	public int vdir;
// 	public int selected;
// 
// 	private static final List<Object> keys = Arrays.<Object>asList(VAR_X, VAR_Y, VAR_Z, VAR_R_DIR, VAR_V_DIR, VAR_SEL);
// 
// 	public BCAgent() {
// 	}
// 
// 	public BCAgent(int x, int y, int z, int rdir, int vdir, int selected) {
// 		this.x = x;
// 		this.y = y;
// 		this.z = z;
// 		this.rdir = rdir;
// 		this.vdir = vdir;
// 		this.selected = selected;
// 	}
// 
// 	@Override
// 	public List<Object> variableKeys() {
// 		return keys;
// 	}
// 
// 	@Override
// 	public Object get(Object variableKey) {
// 		if(variableKey.equals(VAR_X)){
// 			return x;
// 		}
// 		else if(variableKey.equals(VAR_Y)){
// 			return y;
// 		}
// 		else if(variableKey.equals(VAR_Z)){
// 			return z;
// 		}
// 		else if(variableKey.equals(VAR_R_DIR)){
// 			return rdir;
// 		}
// 		else if(variableKey.equals(VAR_V_DIR)){
// 			return vdir;
// 		}
// 		else if(variableKey.equals(VAR_SEL)){
// 			return selected;
// 		}
// 		throw new UnknownKeyException(variableKey);
// 	}
// 
// 	@Override
// 	public String className() {
// 		return CLASS_AGENT;
// 	}
// 
// 	@Override
// 	public String name() {
// 		return CLASS_AGENT;
// 	}
// 
// 	@Override
// 	public BCAgent copyWithName(String objectName) {
// 		if(!objectName.equals(CLASS_AGENT)){
// 			throw new RuntimeException("Agent object must be named " + CLASS_AGENT);
// 		}
// 		return copy();
// 	}
// 
// 	@Override
// 	public BCAgent copy() {
// 		return new BCAgent(x, y, z, rdir, vdir, selected);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return OOStateUtilities.objectInstanceToString(this);
// 	}
// }
// 
// Path: src/main/java/edu/brown/cs/h2r/burlapcraft/state/BCBlock.java
// @DeepCopyState
// public class BCBlock implements ObjectInstance {
// 
// 	public int x;
// 	public int y;
// 	public int z;
// 	public int type;
// 
// 	protected String name;
// 
// 	private static final List<Object> keys = Arrays.<Object>asList(VAR_X, VAR_Y, VAR_Z, VAR_BT);
// 
// 	public BCBlock() {
// 	}
// 
// 	public BCBlock(int x, int y, int z, int type, String name) {
// 		this.x = x;
// 		this.y = y;
// 		this.z = z;
// 		this.type = type;
// 		this.name = name;
// 	}
// 
// 	@Override
// 	public String className() {
// 		return CLASS_BLOCK;
// 	}
// 
// 	@Override
// 	public String name() {
// 		return name;
// 	}
// 
// 	@Override
// 	public BCBlock copyWithName(String objectName) {
// 		return new BCBlock(x, y, z, type, objectName);
// 	}
// 
// 	@Override
// 	public List<Object> variableKeys() {
// 		return keys;
// 	}
// 
// 	@Override
// 	public Object get(Object variableKey) {
// 		if(variableKey.equals(VAR_X)){
// 			return x;
// 		}
// 		else if(variableKey.equals(VAR_Y)){
// 			return y;
// 		}
// 		else if(variableKey.equals(VAR_Z)){
// 			return z;
// 		}
// 		else if(variableKey.equals(VAR_BT)){
// 			return type;
// 		}
// 		throw new UnknownKeyException(variableKey);
// 	}
// 
// 	@Override
// 	public BCBlock copy() {
// 		return new BCBlock(x, y, z, type, name);
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return OOStateUtilities.objectInstanceToString(this);
// 	}
// }


// Path: src/main/java/edu/brown/cs/h2r/burlapcraft/domaingenerator/propositionalfunction/PFAgentOnBlock.java
import burlap.mdp.core.oo.propositional.PropositionalFunction;
import burlap.mdp.core.oo.state.OOState;
import edu.brown.cs.h2r.burlapcraft.state.BCAgent;
import edu.brown.cs.h2r.burlapcraft.state.BCBlock;

package edu.brown.cs.h2r.burlapcraft.domaingenerator.propositionalfunction;



public class PFAgentOnBlock extends PropositionalFunction {

	public PFAgentOnBlock(String name, String[] parameterClasses) {
		super(name, parameterClasses);

	}

	@Override
	public boolean isTrue(OOState s, String... params) {
		BCAgent a = (BCAgent)s.object(params[0]);