Exemplo n.º 1
0
        public static AreaDataContainer CreateFromXml(XElement dataSource)
        {
            AreaDataContainer container = new AreaDataContainer(
                dataSource.Attribute("name").Value,
                dataSource.Attribute("selection-texture").Value,
                dataSource.Attribute("difficulty-tag").Value,
                (int)dataSource.Attribute("speed-step"),
                (int)dataSource.Attribute("level-count"));

            if (dataSource.Attribute("last-level") != null)
            {
                container.LastSelectedLevel = (int)dataSource.Attribute("last-level");
            }
            if (dataSource.Attribute("locked") != null)
            {
                container.Locked = (bool)dataSource.Attribute("locked");
            }
            if (dataSource.Attribute("no-race") != null)
            {
                container.DoesNotHaveRaceCourse = (bool)dataSource.Attribute("no-race");
            }

            if (dataSource.Element("completion-unlockables") != null)
            {
                container.SetAreaCompletionUnlockables(dataSource.Element("completion-unlockables"));
            }

            if ((dataSource.Element("scores") != null) && (dataSource.Element("scores").Elements("score") != null))
            {
                foreach (XElement s in dataSource.Element("scores").Elements("score"))
                {
                    container.LevelScores.Add((int)s);
                }
            }
            if ((dataSource.Element("rankings") != null) && (dataSource.Element("rankings").Elements("rank") != null))
            {
                foreach (XElement r in dataSource.Element("rankings").Elements("rank"))
                {
                    Definitions.SurvivalRank rank = (Definitions.SurvivalRank)Enum.Parse(typeof(Definitions.SurvivalRank), r.Value);
                    container.LevelRanks.Add(rank);
                }
            }

            if (dataSource.Element("tickets-from-level") != null)
            {
                container.SetCollectedTicketsFromLevel(dataSource.Element("tickets-from-level"));
            }
            if (dataSource.Element("tickets-from-crates") != null)
            {
                container.SetCollectedTicketsFromCrates(dataSource.Element("tickets-from-crates"));
            }

            return(container);
        }
Exemplo n.º 2
0
        public Definitions.SurvivalRank GetRankForLevel(SurvivalLevelData levelData)
        {
            Definitions.SurvivalRank rank = Definitions.SurvivalRank.C;

            if ((levelData.CandyCollectionFraction >= levelData.RankACandyFraction) && (levelData.AttemptsAtLevel < Rank_A_Lives_Used))
            {
                rank = Definitions.SurvivalRank.A;
            }
            else if ((levelData.CandyCollectionFraction >= levelData.RankBCandyFraction) && (levelData.AttemptsAtLevel < Rank_B_Lives_Used))
            {
                rank = Definitions.SurvivalRank.B;
            }

            return(rank);
        }
Exemplo n.º 3
0
        public void DisplayRanking(Definitions.SurvivalRank rank)
        {
            _rankingLetter.FrameOffset = (int)rank;

            switch (rank)
            {
            case Definitions.SurvivalRank.A: DisplayForRankA(); break;

            case Definitions.SurvivalRank.B: DisplayForRankB(); break;

            default: DisplayForRankC(); break;
            }

            Visible = true;

            _rankingStars[0].Activate();
        }
Exemplo n.º 4
0
        public void UpdateCurrentLevelResults(int score, Definitions.SurvivalRank rank)
        {
            while (LevelScores.Count <= LastSelectedLevel)
            {
                LevelScores.Add(0);
            }
            LevelScores[LastSelectedLevel] = score;

            while (LevelRanks.Count <= LastSelectedLevel)
            {
                LevelRanks.Add(Definitions.SurvivalRank.NotSet);
            }
            if ((LevelRanks[LastSelectedLevel] == Definitions.SurvivalRank.NotSet) || ((int)LevelRanks[LastSelectedLevel] > (int)rank))
            {
                LevelRanks[LastSelectedLevel] = rank;
            }
        }
        private void HandleLevelCleared()
        {
            StatusDisplay.FreezeDisplayedScore = true;
            _rankingCoordinator.LevelCompleted = true;

            Definitions.SurvivalRank rank = _rankingCoordinator.GetRankForLevel(_levelData);
            Profile.CurrentAreaData.UpdateCurrentLevelResults(_levelData.PointsScoredThisLevel, rank);
            Profile.Save();

            if (Profile.CurrentAreaData.Name == "Tutorial")
            {
                CloseCurrentLevel();
            }
            else
            {
                _rankingCoordinator.DisplayRanking(rank);
            }
        }
Exemplo n.º 6
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);
        }