コード例 #1
0
        public ISharedData Clone()
        {
            LevelStateData c = new LevelStateData();

            c.id               = id;
            c.score            = score;
            c.xpGained         = xpGained;
            c.status           = status;
            c.progress         = new List <GameElementData>(progress.Clone());
            c.currenciesEarned = new List <GameElementData>(currenciesEarned.Clone());
            c.properties       = new List <GameElementData>(properties.Clone());

            return(c);
        }
コード例 #2
0
        /// <summary>
        /// Updates level summary when the player achieved a new top score for a specific level
        /// </summary>
        private void UpdateLevelState()
        {
            string level = GetLevel();

            // Will not update state in case there is no concept of level
            if (string.IsNullOrEmpty(level))
            {
                return;
            }

            LevelStateData levelSummary = levelStateModel.GetLevel(level);

            bool shouldUpdatePlayerProgress = false;

            bool hasLeadingProgressType = (_leadingProgressType != null);

            if (hasLeadingProgressType)
            {
                int curProgress   = GetProgress(_leadingProgressType).value;
                int savedProgress = levelStateModel.GetLevelProgress(GetLevel(), _leadingProgressType).value;

                if (curProgress == savedProgress)
                {
                    shouldUpdatePlayerProgress = Player.score >= levelSummary.score;
                }
                if (curProgress > savedProgress)
                {
                    shouldUpdatePlayerProgress = true;
                }
            }
            else
            {
                shouldUpdatePlayerProgress = Player.score >= levelSummary.score;
            }

            if (shouldUpdatePlayerProgress)
            {
                levelSummary.id               = level;
                levelSummary.score            = Player.score;
                levelSummary.xpGained         = Player.xpGained;
                levelSummary.itemsInUse       = Player.itemsInUse;
                levelSummary.status           = Player.matchStatus;
                levelSummary.progress         = Player.progress.Select(p => p.Clone() as GameElementData).ToList();
                levelSummary.properties       = Player.properties.Select(p => p.Clone() as GameElementData).ToList();
                levelSummary.currenciesEarned = Player.currenciesEarned.Select(c => c.Clone() as GameElementData).ToList();

                levelStateModel.SetLevel(levelSummary);
            }
        }