public virtual void InteractWith(InteractiveStatus s, PhysicalInteractionEntity i) { }
private static void Reaction(InteractiveEntity main, ChemicalElementEntity element, PhysicalInteractionEntity interaction) { InteractiveStatus status; // Calculate reaction : // 1. Result between 'current physical state' and 'possible element' // For example : Frozen * Fire = Neutral; Water status = main.physical * element; // Update entity interactive status main.physical = status.state; main.chemical = status.element; // main manage its new status && the interaction with the unknown entity main.InteractWith(status, interaction); }