Exemplo n.º 1
0
    public void AbsorptionReady(IAbsorbableEntity entity)
    {
        AbsorptionReadyEvent evt = CreateEvent <AbsorptionReadyEvent>();

        evt.Name   = entity.Name;
        evt.Coords = entity.Coords;
        AddEvent(evt);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
 public void SendAbsorptionHappened(IAbsorbableEntity target, IAbsorbingEntity absorber, string[] traitsGained)
 {
     WasAbsorbed?.Invoke(target, absorber, traitsGained);
 }
Exemplo n.º 5
0
 public void SendAbsorbReady(IAbsorbableEntity entity)
 {
     CanBeAbsorbed?.Invoke(entity);
 }