/// <summary> /// Picks the given sense or sense-act from the given agent. /// /// The method uses the agent's behaviour dictionary to get the /// sense / sense-act method. /// /// The log domain is set to "[AgentId].Sense.[sense_name]". /// /// The sense name is set to "[BehaviourName].[sense_name]". /// </summary> /// <param name="agent">The agent that can use the sense.</param> /// <param name="senseName">The name of the sense</param> /// <param name="value">The value to compare it to. This is given as a string, /// but will be converted to an integer or float or boolean, or /// left as a string, whatever is possible. If None is given /// then the sense has to evaluate to True.</param> /// <param name="predicate">"==", "!=", "<", ">", "<=", ">=". If null is /// given, then "==" is assumed.</param> public POSHSense(Agent agent, string senseName, string value = null, string predicate = null) :base(string.Format("Sense.{0}",senseName),agent) { behaviourDict = agent.getBehaviourDict(); sense = behaviourDict.getSense(senseName); behaviour = behaviourDict.getSenseBehaviour(senseName); name = string.Format("{0}.{1}", behaviour.GetName(), senseName); this.value = (value is string) ? AgentInitParser.strToValue(value) : null; this.predicate = (predicate is string) ? predicate : "=="; log.Debug("Created"); }
/// <summary> /// Picks the given sense or sense-act from the given agent. /// /// The method uses the agent's behaviour dictionary to get the /// sense / sense-act method. /// /// The log domain is set to "[AgentId].Sense.[sense_name]". /// /// The sense name is set to "[BehaviourName].[sense_name]". /// </summary> /// <param name="agent">The agent that can use the sense.</param> /// <param name="senseName">The name of the sense</param> /// <param name="value">The value to compare it to. This is given as a string, /// but will be converted to an integer or float or boolean, or /// left as a string, whatever is possible. If None is given /// then the sense has to evaluate to True.</param> /// <param name="predicate">"==", "!=", "<", ">", "<=", ">=". If null is /// given, then "==" is assumed.</param> public POSHSense(Agent agent, string senseName, string value, string predicate) : base(string.Format("Sense.{0}", senseName), agent) { this.senseName = senseName; behaviourDict = agent.getBehaviourDict(); sense = behaviourDict.getSense(senseName); behaviour = behaviourDict.getSenseBehaviour(senseName); name = string.Format("{0}.{1}", behaviour.GetName(), senseName); this.value = (value is string) ? AgentInitParser.strToValue(value) : null; this.predicate = (predicate is string) ? predicate : "=="; log.Debug("Created"); //hook up to a listener for fire events if (agent.HasListenerForTyp(EventType.Fire)) { agent.SubscribeToListeners(this, EventType.Fire); } }