Ejemplo n.º 1
0
        private void DrawCurrentLevelSelection(SpriteBatch spriteBatch)
        {
            int   rankValue    = 0;
            float rankingSpace = Star_Dest_Frame_Side_Length;

            if ((Data.Profile.CurrentAreaData.Name != "Tutorial") &&
                (Data.Profile.CurrentAreaData.LevelRanks != null) &&
                (Data.Profile.CurrentAreaData.LevelRanks.Count > Data.Profile.CurrentAreaData.LastSelectedLevel))
            {
                Definitions.SurvivalRank rank = Data.Profile.CurrentAreaData.LevelRanks[Data.Profile.CurrentAreaData.LastSelectedLevel];
                rankValue    = rank < 0 ? 0 : 3 - (int)rank;
                rankingSpace = rank < 0 ? Star_Dest_Frame_Side_Length : ((rankValue + 0.5f) * Star_Dest_Frame_Side_Length * 2.0f);
            }

            string currentLevelText      = Translator.Translation("Level [N]").Replace("[N]", (Data.Profile.CurrentAreaData.LastSelectedLevel + 1).ToString());
            float  currentLevelTextWidth = TextWriter.CalculateTextDimensions(currentLevelText, 0.75f).X;

            string availableLevelsText = Translator.Translation("([N] unlocked)").Replace("[N]", Data.Profile.CurrentAreaData.UnlockedLevelCount.ToString());

            float totalWidth = currentLevelTextWidth + TextWriter.CalculateTextDimensions(availableLevelsText, 0.75f).X + rankingSpace;

            float leftSideX = Definitions.Back_Buffer_Center.X - (totalWidth / 2.0f);
            float starsX    = leftSideX + currentLevelTextWidth + (Star_Dest_Frame_Side_Length / 2.0f);

            TextWriter.Write(currentLevelText, spriteBatch, new Vector2(leftSideX, WorldPosition.Y + 350.0f),
                             TransitionTint(_textTint), TransitionTint(Color.Black), 3.0f, 0.75f, 0.1f, TextWriter.Alignment.Left);

            TextWriter.Write(availableLevelsText, spriteBatch, new Vector2(Definitions.Back_Buffer_Center.X + (totalWidth / 2.0f), WorldPosition.Y + 350.0f),
                             TransitionTint(_textTint), TransitionTint(Color.Black), 3.0f, 0.75f, 0.1f, TextWriter.Alignment.Right);

            Vector2 topLeft = GameBase.ScreenPosition(starsX, WorldPosition.Y + 365.0f);

            Rectangle destination = new Rectangle((int)(topLeft.X), (int)(topLeft.Y), Star_Dest_Frame_Side_Length * rankValue, Star_Dest_Frame_Side_Length);
            Rectangle source      = new Rectangle(0, 0, Star_Source_Frame_Side_Length * rankValue, Star_Source_Frame_Side_Length);

            spriteBatch.Draw(TextureManager.Textures["ranking-stars"], destination, source, TransitionTint(_textTint), 0.0f, Vector2.Zero, SpriteEffects.None, 0.1f);
        }