protected override void OnDeath() { if (tileable is Player player) { Events.ZipCall(GameEvent.OnPlayerDeath, player); } if (tileable.Navigator.Current is DeathTile deathTile) { FallArgs args; if (deathTile.IsTop) { args = new FallArgs("Default", -2); } else { args = new FallArgs("Entities", 2); } args.onDone += OnDeathFeedbackDone; BeginSequence(fallSequencer, args); } else { BeginSequence(deathSequencer, deathArgs); } }
protected override void OnDeath() { if (tileable.Navigator.Current is DeathTile deathTile) { FallArgs args; if (deathTile.IsTop) { args = new FallArgs("Default", -2); } else { args = new FallArgs("Entities", 2); } args.onDone += OnDeathFeedbackDone; BeginSequence(fallSequencer, args); } else { StartCoroutine(WaitRoutine()); var sendback = new SendbackArgs(); sendback.onDone += OnDeathFeedbackDone; BeginSequence(explosionSequencer, sendback); } }
public ISendback Play() { var sendbackArgs = new SendbackArgs(); sendbackArgs.onDone += OnDone; Value.Play(sendbackArgs); return(sendbackArgs); }
protected override void Awake() { base.Awake(); args = new SendbackArgs(); args.onDone += OnFeedbackDone; deathArgs = new SendbackArgs(); deathArgs.onDone += OnDeathFeedbackDone; }
protected override void ApplyTo(Tile source, IEnumerable <Tile> tiles, IReadOnlyDictionary <Id, List <CastArgs> > args) { sendback = new SendbackArgs(); sendback.onDone += OnFeedbackDone; var relay = Buffer.caster.GetComponent <SequenceRelay>(); if (!relay.TryPlay(id, sendback)) { OnFeedbackDone(EventArgs.Empty); } }
protected override void ApplyTo(Tile source, IEnumerable <Tile> tiles, IReadOnlyDictionary <Id, List <CastArgs> > args) { var targets = tiles.SelectMany(tile => tile.Entities); if (!targets.Any()) { End(); return; } foreach (var entity in targets) { var component = (Component)entity; if (!component.TryGetComponent <SequenceRelay>(out var relay)) { continue; } var sendback = new SendbackArgs(); relay.TryPlay(id, sendback); } Routines.Start(Routines.DoAfter(End, duration)); }