Implementation

The generic form a Predicate is materialized by a generic interface that allows Predicates to be evaluated. Since Predicates can be used to guard the execution of Actions, their evaluation must take at least the same parameters defined by the Action interface. We thus define the following interface:
				public interface Predicate {
				  boolean evaluate(Entity[] sources, 
				  Entity[] targets,
				  Object[] parameters);
				}
			

This interface is associated with Predicable objects. This interface defines the methods needed by Predicable and Predicate objects to communicate efficiently. Obvious Predicables are Actions but they are not restricted to these. We can also imagine that spells, Quests, IAs or other concepts could be implemented as Predicables.
(to be defined)