コード例 #1
0
        void updateHUDAfterHeroDeathFor(Player player)
        {
            int playerIndex = players.IndexOf(player);

            // Fade out the relevant heart - one-based livesLeft has already been decremented.
            int heartNumber = player.LivesLeft;

            List <SKSpriteNode> heartArray = hudLifeHeartArrays [playerIndex];
            var heart = heartArray [heartNumber];

            heart.RunAction(SKAction.FadeAlphaTo(0, 3));
        }
コード例 #2
0
        void updateHUDFor(Player player, HUDState state, string message = null)
        {
            int playerIndex = players.IndexOf(player);

            SKSpriteNode avatar = hudAvatars [playerIndex];

            avatar.RunAction(SKAction.Sequence(new [] {
                SKAction.FadeAlphaTo(1f, 1),
                SKAction.FadeAlphaTo(0.2f, 1),
                SKAction.FadeAlphaTo(1f, 1)
            }));

            SKLabelNode label      = hudLabels [playerIndex];
            float       heartAlpha = 1f;

            switch (state)
            {
            case HUDState.Local:
                label.Text = "ME";
                break;

            case HUDState.Connecting:
                heartAlpha = 0.25f;
                label.Text = message ?? "AVAILABLE";
                break;

            case HUDState.Disconnected:
                avatar.Alpha = 0.5f;
                heartAlpha   = 0.1f;
                label.Text   = "NO PLAYER";
                break;

            case HUDState.Connected:
                label.Text = message ?? "CONNECTED";
                break;

            default:
                throw new NotImplementedException();
            }

            for (int i = 0; i < player.LivesLeft; i++)
            {
                SKSpriteNode heart = hudLifeHeartArrays [playerIndex] [i];
                heart.Alpha = heartAlpha;
            }
        }
コード例 #3
0
        /// <summary>
        /// Анимация разрушения цепочек
        /// </summary>
        /// <param name="chains">Список цепочек на разрушение.</param>
        public void AnimateTheDstructionOf(List <GemList> chains)
        {
            // маркер проверки на наличие в разрушенных цепочках разрушителя
            // если был разрушитель - звук разрушения будет другой
            bool hadDestroyers = false;
            bool hadBombs      = false;

            if (chains == null)
            {
                return;
            }

            foreach (GemList chain in chains)
            {
                foreach (Gem gem in chain)
                {
                    SKSpriteNode sprite       = gem.Sprite;
                    SKAction     sprtieAction = SKAction.FadeAlphaTo(0.0f, Properties.DestructionAnimationDuration / 1000f);
                    sprite.RunAction(SKAction.Sequence(sprtieAction, SKAction.RemoveFromParent()));

                    AnimateScore(chain);

                    hadDestroyers |= gem.IsALineDestroyer;
                    hadBombs      |= gem.IsABomb;
                }
            }

            if (hadBombs)
            {
                RunAction(explosionSound);
            }
            else if (hadDestroyers)
            {
                RunAction(destroySound);
            }
            else
            {
                RunAction(dingSound);
            }
        }
コード例 #4
0
        public override void PerformDeath()
        {
            base.PerformDeath();

            var splort = (SKNode)DeathSplort.Copy();

            splort.ZPosition = -1;
            splort.ZRotation = VirtualZRotation;
            splort.Position  = Position;
            splort.Alpha     = 0.1f;
            splort.RunAction(SKAction.FadeAlphaTo(1, 0.5));

            MultiplayerLayeredCharacterScene scene = CharacterScene;

            scene.AddNode(splort, WorldLayer.BelowCharacter);

            RunAction(SKAction.Sequence(new [] {
                SKAction.FadeAlphaTo(0, 0.5f),
                SKAction.RemoveFromParent()
            }));

            smokeEmitter.RunAction(SKAction.Sequence(new [] {
                SKAction.WaitForDuration(2),
                SKAction.Run(() => {
                    smokeEmitter.ParticleBirthRate = 2;
                }),

                SKAction.WaitForDuration(2),
                SKAction.Run(() => {
                    smokeEmitter.ParticleBirthRate = 0;
                }),

                SKAction.WaitForDuration(10),
                SKAction.FadeAlphaTo(0, 0.5),
                SKAction.RemoveFromParent()
            }));

            inactiveGoblins.Clear();
        }
コード例 #5
0
        // Do SKActions in a sequence on the given Sprite Node (wait, fade in, wait, fade out)
        private void DoActionSequenceOnNode(SKNode node, double waitSec, double fadeInSec, double waitSecMiddle, double fadeOutSec, nfloat maxAlpha)
        {
            SKAction sequence = SKAction.Sequence(SKAction.WaitForDuration(waitSec), SKAction.FadeAlphaTo(maxAlpha, fadeInSec), SKAction.WaitForDuration(waitSecMiddle), SKAction.FadeOutWithDuration(fadeOutSec));

            node.RunAction(sequence);
        }