package net.sourceforge.pain.tinylib.data.prototype;
import net.sourceforge.pain.data.role.*;
import net.sourceforge.pain.db.*;
import net.sourceforge.pain.tinylib.data.type.*;
public final class ReceptivePrototype extends Prototype {
private static final int HEAR = 1 + LAST_BASE_FIELD_INDEX;
private static final int SEE = 2 + LAST_BASE_FIELD_INDEX;
private static final int FEEL = 3 + LAST_BASE_FIELD_INDEX; //touches...
private static final int NFIELDS = 4 + LAST_BASE_FIELD_INDEX;
private final static Class superroles[] = new Class[]{LocatedPrototype.class};
public ReceptivePrototype(PainDB db) {
super(db);
setCanHear(true);
setCanSee(true);
setCanFeel(true);
}
public ReceptivePrototype() {
}
public DbClassSchema provideSchema() {
byte types[] = new byte[NFIELDS];
String names[] = new String[NFIELDS];
fillSuperSchema(types, names);
types[HEAR] = DbType.BOOLEAN;
names[HEAR] = "can_hear";
types[SEE] = DbType.BOOLEAN;
names[SEE] = "can_see";
types[FEEL] = DbType.BOOLEAN;
names[FEEL] = "can_feel";
return new DbClassSchema(types, names);
}
public Class[] getSuperroles() {
return superroles;
}
public boolean canHear() {
return getBoolean(HEAR);
}
public void setCanHear(boolean canHear) {
setBoolean(HEAR, canHear);
}
public boolean canSee() {
return getBoolean(SEE);
}
public void setCanSee(boolean canSee) {
setBoolean(SEE, canSee);
}
public boolean canFeel() {
return getBoolean(FEEL);
}
public void setCanFeel(boolean canFeel) {
setBoolean(FEEL, canFeel);
}
public boolean has(int receptionType) {
switch (receptionType) {
case FEEL:
return canFeel();
case SEE:
return canSee();
case HEAR:
return canHear();
default:
throw new RuntimeException("Unknown reception receptionType!:" + receptionType);
}
}
public Class getPrototypedRoleClass() {
return Receptive.class;
}
public String toString() {
return "can_hear=" + canHear() + " can_feel=" + canFeel() + " can_see=" + canSee();
}
}