コード例 #1
0
ファイル: Profile.cs プロジェクト: hentaikun1156/Sanara
        public async Task ProgressAchievementAsync(AchievementID id, IUserMessage msg, int progression, string key)
        {
            if (!_achievements.ContainsKey(id))
            {
                _achievements.Add(id, new UserAchievement(AchievementList.GetAchievement(id), 0, new List <string>()));
            }
            var achievement = _achievements[id];
            int oldLevel    = achievement.GetLevel();

            achievement.AddProgression(progression, key);
            int newLevel = achievement.GetLevel();

            if (newLevel > oldLevel)
            {
                IEmote emote;
                if (newLevel == 3)
                {
                    emote = new Emoji("🥇");                // Gold
                }
                else if (newLevel == 2)
                {
                    emote = new Emoji("🥈");                     // Silver
                }
                else
                {
                    emote = new Emoji("🥉");  // Copper
                }
                await msg?.AddReactionAsync(emote);

                Program.p.db.UpdateProfile(this);
            }
        }
コード例 #2
0
 public Achievement(string achievementID, string name = "", string desc = "")
 {
     this.achievementID = (AchievementID)Enum.Parse(typeof(AchievementID), achievementID);
     this.name          = name;
     description        = desc;
     achieved           = false;
 }
コード例 #3
0
    /// <summary>
    /// This method unlocks achievements, if found - and not already unlocked.
    /// </summary>
    /// <param name="id">The achievement ID of the achievement to be unlocked.</param>
    private void UnlockAchievement(AchievementID id)
    {
        Achievement ach;
        bool        found = achievements.TryGetValue(id, out ach);

        if (found && !ach.achieved)
        {
            ach.achieved = true;

            // mark it down
            SteamUserStats.SetAchievement(id.ToString());
            achievementCounter++;

            //unlock meta-achievement
            if (achievementCounter == 15)
            {
                UnlockAchievement(AchievementID.ACH_HALF_OF_ALL_ACHIEVEMENTS);
            }

            // store stats
            storeStats = true;
        }
        else if (!found)
        {
            Debug.Log("AchievementID not found in Dictionary");
        }
    }
コード例 #4
0
 public static void ReportAchievement(AchievementID id)
 {
     if (Social.localUser.authenticated && id != 0)
     {
         Social.ReportProgress(TankAchievement.GetAchievement(id), 100.0, delegate
         {
         });
     }
 }
コード例 #5
0
ファイル: CommunityManager.cs プロジェクト: TheIndra55/Sanara
        public async Task ProgressAchievementAsync(AchievementID achievementID, int progression, string key, Discord.IUserMessage msg, ulong userId)
        {
            var profile = GetProfile(userId);

            if (profile != null) // Achievements don't progress if we don't have a profile
            {
                await profile.ProgressAchievementAsync(achievementID, msg, progression, key);
            }
        }
コード例 #6
0
        protected void assignAchievementToMember(Member member, AchievementID achievementID)
        {
            Achievement achievement = _achievementsRepo.Achievements.FirstOrDefault(x => x.ID == (long)achievementID);

            if (achievement != null)
            {
                assignAchievementToMember(member, achievement);
            }
        }
コード例 #7
0
    public Achievement GetAchievementData(AchievementID achv)
    {
        for (int i = 0; i < allAchievements.Length; i++)
        {
            if (allAchievements[i].id == achv)
            {
                return(allAchievements[i]);
            }
        }

        return(null);
    }
コード例 #8
0
    public void AwardEventAchievement(AchievementID achv, bool awardShop)
    {
        Achievement data = GetAchievementData(achv);

        if (!data.isEventAchievement)
        {
            Debug.LogError("Tried to award an achievement that's not an event! " + achv);
            return; // Not an event achievement (either you got it or not).
        }

        PlayerPrefs.SetInt(data.playerPrefsKey, 0); // The key exists, you got the achievement.
        UpdateProgressAll(awardShop);
    }
コード例 #9
0
    public void UnlockAchievement(AchievementID achievement)
    {
        AchievementItemController item = achievementItems[(int)achievement];

        if (item.unlocked)
        {
            return;
        }

        ShowNotification();
        PlayerPrefs.SetInt(item.achievement.id, 1);
        item.unlocked = true;
        item.RefreshView();
    }
コード例 #10
0
    public void UnlockAchievement(AchievementID achievementID)
    {
        if (!SteamManager.Initialized && !debugMode)
        {
            return;
        }

        bool achivementFound = false;

        foreach (var a in Achievements)
        {
            if (a.achievementID == achievementID)
            {
                achivementFound = true;

                if (a.achieved)
                {
                    if (debugMode)
                    {
                        Debug.Log("Already unlocked: " + a.achievementID.ToString());
                    }
                    return;
                }

                a.achieved = true;

                LastAchievement();

                if (debugMode)
                {
                    Debug.Log("Unlocked: " + a.achievementID.ToString());
                    return;
                }
                break;
            }
        }

        if (!achivementFound)
        {
            Debug.LogWarning("Achievement Not Found " + achievementID + " !");
            return;
        }

        // mark it down
        SteamUserStats.SetAchievement(achievementID.ToString());

        StartCoroutine(StoreSteamData());
    }
コード例 #11
0
 public bool Achieved(AchievementID id)
 {
     foreach (var a in Achievements)
     {
         if (a.achievementID == id)
         {
             if (a.achieved)
             {
                 return(true);
             }
             else
             {
                 return(false);
             }
         }
     }
     return(false);
 }
コード例 #12
0
    public override void LogAchievementData(AchievementID id)
    {
        switch (id)
        {
        case AchievementID.ACH_CREDITS_VIEWED:
            UnlockAchievement(AchievementID.ACH_CREDITS_VIEWED);
            break;

        case AchievementID.ACH_PICK_SPACETIME_MANGO:
            UnlockAchievement(AchievementID.ACH_PICK_SPACETIME_MANGO);
            break;

        case AchievementID.ACH_A_MILLION_SHOTS:
            bulletsShot++;
            break;

        case AchievementID.ACH_LAST_MAN_STANDING:
            if (currentMode.Equals("normal"))
            {
                UnlockAchievement(AchievementID.ACH_LAST_MAN_STANDING);
            }
            break;

        case AchievementID.ACH_NO_DAMAGE_UNTIL_W10:
            if (currentMode.Equals("normal"))
            {
                UnlockAchievement(AchievementID.ACH_NO_DAMAGE_UNTIL_W10);
            }
            break;

        case AchievementID.ACH_SMART_ENOUGH_FOR_THE_MENU:
            UnlockAchievement(AchievementID.ACH_SMART_ENOUGH_FOR_THE_MENU);
            break;

        case AchievementID.ACH_SMARTPHONE_JOIN:
            UnlockAchievement(AchievementID.ACH_SMARTPHONE_JOIN);
            break;
        }
    }
コード例 #13
0
 public static string GetAchievement(AchievementID id)
 {
     return(achievementIds[(int)id]);
 }
コード例 #14
0
 public static Achievement GetAchievement(AchievementID id)
 {
     return(_achievements[id]);
 }
コード例 #15
0
 private void HandleAchievementDropdownValueChanged(AchievementID achievement)
 {
     achievementToShow = achievement;
 }
コード例 #16
0
 public virtual void LogAchievementData(AchievementID id)
 {
 }
コード例 #17
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        AchievementController ac = (AchievementController)target;

        GUILayout.Space(10f);

        idToMove   = (AchievementID)EditorGUILayout.EnumPopup("ID To Move:", idToMove);
        placeBelow = (AchievementID)EditorGUILayout.EnumPopup("Place Below:", placeBelow);

        if (GUILayout.Button("Move Achievement"))
        {
            if (idToMove != placeBelow)
            {
                int moveAchvIndex   = -1;
                int placeBelowIndex = -1;

                for (int i = 0; i < ac.allAchievements.Length; i++)
                {
                    if (ac.allAchievements[i].id == idToMove)
                    {
                        moveAchvIndex = i;
                        break;
                    }
                }

                if (moveAchvIndex >= 0)
                {
                    for (int i = 0; i < ac.allAchievements.Length; i++)
                    {
                        if (ac.allAchievements[i].id == placeBelow)
                        {
                            placeBelowIndex = i;
                            break;
                        }
                    }

                    int targetIndex = placeBelowIndex + 1;

                    // Check if we are already below this target ID.
                    if (placeBelowIndex > -1 && moveAchvIndex != targetIndex)
                    {
                        List <Achievement> achvList = new List <Achievement>(ac.allAchievements);
                        bool movedUp = false;

                        if (moveAchvIndex > ac.allAchievements.Length - 1)
                        {
                            achvList.Add(ac.allAchievements[moveAchvIndex]); // Place at the end.
                        }
                        else
                        {
                            achvList.Insert(targetIndex, achvList[moveAchvIndex]);
                            movedUp = (targetIndex < moveAchvIndex);
                        }

                        if (movedUp)
                        {
                            achvList.RemoveAt(moveAchvIndex + 1);
                        }
                        else
                        {
                            achvList.RemoveAt(moveAchvIndex);
                        }

                        // Apply array changes.
                        ac.allAchievements = achvList.ToArray();
                        LutonUtils.Editor.SetDirty(ac);
                    }
                }
            }
        }
    }
コード例 #18
0
        public void DisplayAchievement(AchievementID id)
        {
            var go = Instantiate(_gameObject, transform);

            _achievements = new Dictionary <AchievementID, Achievement>();
        }
コード例 #19
0
ファイル: Profile.cs プロジェクト: hentaikun1156/Sanara
 public bool HaveAchievement(AchievementID id)
 => _achievements.ContainsKey(id);