/
codebase/src/net/sourceforge/pain/admin/console/command/
codebase/src/net/sourceforge/pain/data/role/
codebase/src/net/sourceforge/pain/network/console/telnet/
codebase/src/net/sourceforge/pain/network/guitool/
codebase/src/net/sourceforge/pain/plugin/
codebase/src/net/sourceforge/pain/util/
db/src/net/sourceforge/pain/util/
gui/
gui/lib/
gui/src/net/sourceforge/pain/tools/guitool/dbbrowse/
gui/src/net/sourceforge/pain/tools/guitool/dialog/
gui/src/net/sourceforge/pain/tools/guitool/menu/
gui/src/net/sourceforge/pain/tools/guitool/resources/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/
gui/src/net/sourceforge/pain/tools/guitool/resources/images/explorer/
mudlibs/tinylib/
mudlibs/tinylib/area/
mudlibs/tinylib/etc/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/data/affect/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/data/prototype/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/data/trigger/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/affect/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/deploy/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/guitool/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/event/guitool/event/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/fn/util/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/trigger/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/logic/trigger/impl/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/command/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/reset/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/shutdown/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/plugin/social/
mudlibs/tinylib/src/net/sourceforge/pain/tinylib/util/
tests/
tests/src/
tests/src/net/sourceforge/pain/db/data/
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();
    }
}