Beispiel #1
0
    public void Remove(ITurnbound target)
    {
        var index = turns.FindIndex(turn => turn.Target == target);

        if (index == -1)
        {
            return;
        }

        turns[index].onEnd -= OnTurnEnd;

        var cachedCurrent = Current;

        turns.RemoveAt(index);

        if (this.index == index)
        {
            this.index--;

            var stopMotive = new DeathMotive(target);
            cachedCurrent.Interrupt(stopMotive);

            OnTurnEnd(stopMotive);
        }
        else if (this.index > index)
        {
            this.index--;
        }
    }
    public override void Initialize(float time, IAttributeHolder owner)
    {
        base.Initialize(time, owner);

        isBounded = true;
        turnbound = Player.Active;

        Events.RelayByValue <Turn>(GameEvent.OnTurnStart, OnTurnStart);
        Events.RelayByValue <Turn>(GameEvent.OnTurnEnd, OnTurnEnd);

        state = false;
    }
    public override void Initialize(float time, IAttributeHolder owner)
    {
        base.Initialize(time, owner);

        isBounded = true;

        if (self)
        {
            turnbound = Player.Active;
        }
        else
        {
            var index    = Player.Active.Index;
            var opposite = index == 0 ? 1 : 0;
            turnbound = Repository.GetAt <Player>(References.Players, opposite);
        }


        counter = duration;
        Events.RelayByValue <Turn>(GameEvent.OnTurnEnd, OnTurnEnd);
    }
Beispiel #4
0
    //---[Registration]-------------------------------------------------------------------------------------------------/

    public void AssignTarget(ITurnbound target)
    {
        Target = target;
        target.onIntendedTurnStop += OnTargetIntendedStop;
    }
Beispiel #5
0
 public DeathMotive(ITurnbound target) => this.target = target;