@Override public float getValue(Agent a) { Object state = getParamObject(a); if (state == null) return 0; Object v = propertyAccessor.get(state); if (propertyAccessor.getType().equals(float.class)) return (float) v; if (propertyAccessor.getType().equals(int.class)) return (int) v; else throw new IllegalArgumentException("Field is not one of the acceptible types"); }
protected Object getParamObject(Agent a) { AgentState state = ((ComplexAgent) a).getState(type); if (state == null) return null; return stateParamAccessor.get(state); }