コード例 #1
0
ファイル: GameManager.cs プロジェクト: psdartist/grosfp
    /// <summary>
    /// Called when the current active board is completed by the player (ie. they found the last word)
    /// </summary>
    private void BoardComplete()
    {
        string boardId     = Utilities.FormatBoardId(ActiveCategory, ActiveLevelIndex);
        int    awardNumber = 0;

        // Check if the completed category was a daily puzzle, if so check if we want to award a hint
        if (ActiveCategory != dailyPuzzleId)
        {
            bool awardHint = !CompletedLevels.ContainsKey(boardId) || !CompletedLevels[boardId];
            awardNumber = awardHint ? GameConfig.instance.completeNormalLevelAward : 0;
        }
        else
        {
            awardNumber = GameConfig.instance.completeDailyPuzzleAward;
            // Set the next daily puzzle to start at the start of the next day
            NextDailyPuzzleAt = new System.DateTime(System.DateTime.Now.Year, System.DateTime.Now.Month, System.DateTime.Now.Day).AddDays(1);
        }

        // Award hints for completing the level or daily puzzle
        AddHint(awardNumber);

        // Set the completed flag on the level
        CompletedLevels[boardId] = true;

        // The board has been completed, we no longer need to save it
        ActiveBoardState = null;

        // Remove the BoardState from the list of saved BoardStates
        SavedBoardStates.Remove(boardId);

        Save();

        UIScreenController.Instance.Show(UIScreenController.CompleteScreenId, false, true, true, Tween.TweenStyle.EaseOut, OnCompleteScreenShown, awardNumber);
        GoogleAnalyticsV3.instance.LogEvent("Level", "Complete Level", boardId, 0);
    }
コード例 #2
0
ファイル: GameManager.cs プロジェクト: psdartist/grosfp
    /// <summary>
    /// Starts the daily puzzle.
    /// </summary>
    public void StartDailyPuzzle()
    {
        if (dailyPuzzles.Count == 0)
        {
            return;
        }

        // Check if we need to pick a new daily puzzle
        if (ActiveDailyPuzzleIndex == -1 || System.DateTime.Now >= NextDailyPuzzleAt)
        {
            if (ActiveDailyPuzzleIndex != -1)
            {
                string boardId = Utilities.FormatBoardId(dailyPuzzleId, ActiveDailyPuzzleIndex);

                // Remove any save data for the previous daily puzzle
                SavedBoardStates.Remove(boardId);
                CompletedLevels.Remove(boardId);
            }

            // Get a new random daily puzzle level index to use
            ActiveDailyPuzzleIndex = Random.Range(0, dailyPuzzles.Count);
        }

        // Start the daily puzzle
        StartLevel(dailyPuzzleId, ActiveDailyPuzzleIndex);
    }
コード例 #3
0
    /// <summary>
    /// Called when the current active board is completed by the player (ie. they found the last word)
    /// </summary>
    private void BoardComplete()
    {
        string boardId   = Utilities.FormatBoardId(ActiveCategory, ActiveLevelIndex);
        bool   awardHint = true;

        // Check if the completed category was a daily puzzle, if so check if we want to award a hint
        if (ActiveCategory != dailyPuzzleId)
        {
            // Get the CategoryInfo for the active category
            CategoryInfo categoryInfo = GetCategoryInfo(ActiveCategory);

            bool categoryCompleted = (GetCompletedLevelCount(categoryInfo) == categoryInfo.levelInfos.Count);

            // Award a hint if the category was just completed
            awardHint = ((!CompletedLevels.ContainsKey(boardId) || !CompletedLevels[boardId]) && categoryCompleted);
        }
        else
        {
            // Set the next daily puzzle to start at the start of the next day
            NextDailyPuzzleAt = new System.DateTime(System.DateTime.Now.Year, System.DateTime.Now.Month, System.DateTime.Now.Day).AddDays(1);
        }

        // Award a hint for completing the category or daily puzzle
        if (awardHint)
        {
            AddHint();
        }

        // Set the completed flag on the level
        CompletedLevels[boardId] = true;

        // The board has been completed, we no longer need to save it
        ActiveBoardState = null;

        // Remove the BoardState from the list of saved BoardStates
        SavedBoardStates.Remove(boardId);

        Save();

        LevelsToCompleteBeforeAd -= 1;

        UIScreenController.Instance.Show(UIScreenController.CompleteScreenId, false, true, true, Tween.TweenStyle.EaseOut, OnCompleteScreenShown, awardHint);
    }
コード例 #4
0
ファイル: GameManager.cs プロジェクト: psdartist/grosfp
    /// <summary>
    /// Returns true if the given category and level is completed
    /// </summary>
    public bool IsLevelCompleted(CategoryInfo categoryInfo, int levelIndex)
    {
        string boardId = Utilities.FormatBoardId(categoryInfo.name, levelIndex);

        return(CompletedLevels.ContainsKey(boardId) && CompletedLevels[boardId]);
    }