private void CalculateRank(StageCompletedData data)
        {
            var ranks = new string[] { "D", "C", "B", "A", "S" };

            if (GameMap.Instance.CurrentMapId == 5 && data.HeartsLost == 0 && data.EnemiesDefeated >= data.MaxEnemies)
            {
                _rank = "S";
                return;
            }
            var count = 0;

            if (data.CoinsCollected >= data.MaxCoins)
            {
                count++;
            }
            if (data.HeartsLost == 0)
            {
                count++;
            }
            if (data.EnemiesDefeated >= data.MaxEnemies)
            {
                count++;
            }
            if (data.Time <= data.MaxTime)
            {
                count++;
            }
            _rank = ranks[count];
        }
Beispiel #2
0
        private void CalculateRank(StageCompletedData data)
        {
            var ranks = new string[] { "D", "C", "B", "A", "S" };
            var count = 0;

            if (data.CoinsCollected >= data.MaxCoins)
            {
                count++;
            }
            if (data.HeartsLost == 0)
            {
                count++;
            }
            if (data.EnemiesDefeated >= data.MaxEnemies)
            {
                count++;
            }
            if (data.Time <= data.MaxTime)
            {
                count++;
            }
            _rank = ranks[count];
        }
Beispiel #3
0
        public void Initialize(StageCompletedData data)
        {
            _data = data;
            var screenSize = SceneManager.Instance.VirtualSize;
            var font       = SceneManager.Instance.GameFont;
            var format     = "{0}/{1}";

            var coins   = data.CoinsCollected;
            var hearts  = data.HeartsLost;
            var enemies = data.EnemiesDefeated;
            var time    = data.Time;
            var failed  = data.Failed;

            var titleMesured = SceneManager.Instance.GameFontBig.MeasureString(failed ? TitleFailed : TitleCompleted);

            _titlePosition = new Vector2((screenSize.X - titleMesured.X) / 2, -titleMesured.Y);

            var l1 = font.MeasureString(CoinsEarned);
            var l2 = font.MeasureString(HeartsLost);
            var l3 = font.MeasureString(EnemiesDefeated);
            var l4 = font.MeasureString(Time);

            _rowsInnerPositionsRight = new float[]
            {
                -font.MeasureString(String.Format(format, 0, data.MaxCoins)).X - 10,
                -font.MeasureString(String.Format(format, 0, data.HeartsLost)).X - 10,
                -font.MeasureString(String.Format(format, 0, data.MaxEnemies)).X - 10,
                -font.MeasureString(FormatTime(data.Time)).X - 10
            };

            _rowsInnerPositionsLeft = new float[, ]
            {
                // Current, Initial
                { -l1.X, -l1.X },
                { -l2.X, -l2.X },
                { -l3.X, -l3.X },
                { -l4.X, -l4.X },
            };

            _values = new int[, ]
            {
                { 0, coins },
                { 0, hearts },
                { 0, enemies }
            };

            _timeValues = new TimeSpan[] { new TimeSpan(), time };

            if (failed)
            {
                _rank = "F";
            }
            else
            {
                _completed = true;
                CalculateRank(data);
            }

            if (_rank == "S")
            {
                var texture = ImageManager.loadScene(SceneResFolder, "rank" + _rank);
                var frames  = new Rectangle[]
                {
                    new Rectangle(0, 0, 80, 80),
                    new Rectangle(80, 0, 80, 80),
                    new Rectangle(160, 0, 80, 80)
                };
                _rankSprite        = new AnimatedSprite(texture, frames, 100, Vector2.Zero);
                _rankSprite.Origin = new Vector2(40, 40);
            }
            else
            {
                _rankSprite = new Sprite(ImageManager.loadScene(SceneResFolder, "rank" + _rank));
            }

            _rankSprite.Position  = new Vector2(315, 199);
            _rankSprite.IsVisible = false;
            _rankSprite.Scale     = new Vector2(3, 3);
            var rm = font.MeasureString(_rankSentences[_rank]);

            _rankSentencePosition = new Vector2(270 - rm.X, 199 - rm.Y / 2);
        }
 private void CalculateRank(StageCompletedData data)
 {
     var ranks = new string[] { "D", "C", "B", "A", "S" };
     var count = 0;
     if (data.CoinsCollected >= data.MaxCoins)
         count++;
     if (data.HeartsLost == 0)
         count++;
     if (data.EnemiesDefeated >= data.MaxEnemies)
         count++;
     if (data.Time <= data.MaxTime)
         count++;
     _rank = ranks[count];
 }
        public void Initialize(StageCompletedData data)
        {
            _data = data;
            var screenSize = SceneManager.Instance.VirtualSize;
            var font = SceneManager.Instance.GameFont;
            var format = "{0}/{1}";

            var coins = data.CoinsCollected;
            var hearts = data.HeartsLost;
            var enemies = data.EnemiesDefeated;
            var time = data.Time;
            var failed = data.Failed;

            var titleMesured = SceneManager.Instance.GameFontBig.MeasureString(failed ? TitleFailed : TitleCompleted);
            _titlePosition = new Vector2((screenSize.X - titleMesured.X) / 2, -titleMesured.Y);

            var l1 = font.MeasureString(CoinsEarned);
            var l2 = font.MeasureString(HeartsLost);
            var l3 = font.MeasureString(EnemiesDefeated);
            var l4 = font.MeasureString(Time);
            
            _rowsInnerPositionsRight = new float[]
            {
                -font.MeasureString(String.Format(format, 0, data.MaxCoins)).X - 10,
                -font.MeasureString(String.Format(format, 0, data.HeartsLost)).X - 10,
                -font.MeasureString(String.Format(format, 0, data.MaxEnemies)).X - 10,
                -font.MeasureString(FormatTime(data.Time)).X - 10
            };

            _rowsInnerPositionsLeft = new float[,]
            {
                // Current, Initial
                { -l1.X, -l1.X },
                { -l2.X, -l2.X },
                { -l3.X, -l3.X },
                { -l4.X, -l4.X },
            };

            _values = new int[,]
            {
                { 0, coins },
                { 0, hearts },
                { 0, enemies }
            };

            _timeValues = new TimeSpan[] { new TimeSpan(), time };

            if (failed)
            {
                _rank = "F";
            }
            else
            {
                _completed = true;
                CalculateRank(data);
            }
            
            if (_rank == "S")
            {
                var texture = ImageManager.loadScene(SceneResFolder, "rank" + _rank);
                var frames = new Rectangle[]
                {
                    new Rectangle(0, 0, 80, 80),
                    new Rectangle(80, 0, 80, 80),
                    new Rectangle(160, 0, 80, 80)
                };
                _rankSprite = new AnimatedSprite(texture, frames, 100, Vector2.Zero);
                _rankSprite.Origin = new Vector2(40, 40);
            }
            else
            {
                _rankSprite = new Sprite(ImageManager.loadScene(SceneResFolder, "rank" + _rank));
            }

            _rankSprite.Position = new Vector2(315, 199);
            _rankSprite.IsVisible = false;
            _rankSprite.Scale = new Vector2(3, 3);
            var rm = font.MeasureString(_rankSentences[_rank]);
            _rankSentencePosition = new Vector2(270 - rm.X, 199 - rm.Y / 2);
        }