Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    public ISendback Play()
    {
        var sendbackArgs = new SendbackArgs();

        sendbackArgs.onDone += OnDone;

        Value.Play(sendbackArgs);
        return(sendbackArgs);
    }
Exemplo n.º 4
0
    protected override void Awake()
    {
        base.Awake();

        args         = new SendbackArgs();
        args.onDone += OnFeedbackDone;

        deathArgs         = new SendbackArgs();
        deathArgs.onDone += OnDeathFeedbackDone;
    }
Exemplo n.º 5
0
    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);
        }
    }
Exemplo n.º 6
0
    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));
    }