public void Insert(MoveableAtom a) { if (a.Physical) { if (a.Unblockable || CanMoveTo(a.Position) || a.IsNotBlockedFromType(table[a.Position])) { buffer[a.Position] = table[a.Position]; table[a.Position] = a; } } else { untangibles[a.Position].Add(a); } }
public virtual bool CanHappenTriggerEvent(MoveableAtom triggerer, Atom triggerable) { var immediate = false; var typeOfStepped = triggerable.GetType(); if (typeof(ITriggerable).IsAssignableFrom(triggerable.GetType())) { if (typeof(ITriggerActor).IsAssignableFrom(triggerer.GetType())) { var _triggerable = (ITriggerable)triggerable; var _triggerer = (ITriggerActor)triggerer; _triggerer.RegisterTriggerable(_triggerable); _triggerable.RegisterTriggeringSubject(triggerer); immediate = _triggerable.ImmediateTrigger; } } return(immediate); }