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); }
//---[Registration]-------------------------------------------------------------------------------------------------/ public void AssignTarget(ITurnbound target) { Target = target; target.onIntendedTurnStop += OnTargetIntendedStop; }
public DeathMotive(ITurnbound target) => this.target = target;