Beispiel #1
0
        private async Task AddEnergyAndParticles(TweetUi tweetUi, PackedScene particlesPackedScene, Vector2 particlesEndPosition, Action <int> addEnergy)
        {
            if (!(particlesPackedScene.Instance() is Node2D buffParticles))
            {
                return;
            }
            GetOwner <Control>().AddChild(buffParticles);
            buffParticles.SetGlobalPosition(tweetUi.GetGlobalPosition() + tweetUi.GetSize() / 2);
            buffAnimationTween.InterpolateMethod(buffParticles, "set_global_position", buffParticles.GetGlobalPosition(), particlesEndPosition, 1f, Tween.TransitionType.Sine, Tween.EaseType.InOut);
            buffAnimationTween.Start();
            await ToSignal(buffAnimationTween, "tween_completed");

            addEnergy.Invoke(GameValues.tweetEnergy);
            var timer = new Timer {
                OneShot = true
            };

            AddChild(timer);
            timer.Start(1);
            await ToSignal(timer, "timeout");

            buffParticles.GetNode <Particles2D>("Particles2D").Emitting = false;
            timer.Start(1);
            await ToSignal(timer, "timeout");

            buffParticles.QueueFree();
            timer.QueueFree();
        }
Beispiel #2
0
        private async void AddBuff(Tweet tweet, TweetUi tweetUi)
        {
            var isPositive = tweet.entities.hashtags.Any(hashTag => positiveHashTags.Contains(hashTag.text.ToLower()));
            var isNegative = tweet.entities.hashtags.Any(hashTag => negativeHashTags.Contains(hashTag.text.ToLower()));

            if (isPositive && !isNegative)
            {
                await AddEnergyAndParticles(tweetUi, playerBuffParticlesPackedScene, playerEnergy.GetGlobalPosition() + playerEnergy.GetSize() / 2, gameState.AddPlayerEnergy);
            }
            else if (!isPositive && isNegative)
            {
                gameState.negativeTweetCount++;
                await AddEnergyAndParticles(tweetUi, demonBuffParticlesPackedScene, demonEnergy.GetGlobalPosition() + demonEnergy.GetSize() / 2, gameState.AddDemonEnergy);
            }
            else if (isPositive && isNegative)
            {
                gameState.negativeTweetCount++;
                await AddEnergyAndParticles(tweetUi, playerBuffParticlesPackedScene, playerEnergy.GetGlobalPosition() + playerEnergy.GetSize() / 2, gameState.AddPlayerEnergy);
                await AddEnergyAndParticles(tweetUi, demonBuffParticlesPackedScene, demonEnergy.GetGlobalPosition() + demonEnergy.GetSize() / 2, gameState.AddDemonEnergy);
            }
        }