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); }