public void AbsorptionReady(IAbsorbableEntity entity) { AbsorptionReadyEvent evt = CreateEvent <AbsorptionReadyEvent>(); evt.Name = entity.Name; evt.Coords = entity.Coords; AddEvent(evt); }
public void AbsorptionHappened(IAbsorbableEntity absorbed, IAbsorbingEntity absorber, string[] attrs) { AbsorptionEvent evt = CreateEvent <AbsorptionEvent>(); evt.AbsorberName = absorber.Name; evt.AbsorberCoords = absorber.Coords; evt.Attributes = attrs; evt.AbsorbedName = absorbed.Name; evt.AbsorbedCoords = absorbed.Coords; AddEvent(evt); }
public bool TryAbsorb(IAbsorbableEntity target) { if (target.AbsorptionData == null || target.AbsorptionData == _data.NoAbsorption) { _absorbEvents.SendAbsorbFailed(_owner, false); return(false); } if (!IsAbsorbing && target.CanBeAbsorbedBy(_owner)) { _activeAbsorptionData = target.AbsorptionData; _owner.StartAbsorption(target); target.BeAbsorbed(_owner); _elapsed = 0.0f; _absorbEvents.SendAbsorptionHappened(target, _owner, _owner.Attributes); return(true); } if (IsAbsorbing) { _absorbEvents.SendAbsorbFailed(_owner, true); } return(false); }
public void SendAbsorptionHappened(IAbsorbableEntity target, IAbsorbingEntity absorber, string[] traitsGained) { WasAbsorbed?.Invoke(target, absorber, traitsGained); }
public void SendAbsorbReady(IAbsorbableEntity entity) { CanBeAbsorbed?.Invoke(entity); }