Exemple #1
0
 public bool AddInstantly(UserWrapper user, string achievementId)
 {
     if (AllowedAchievements.ContainsKey(achievementId))
     {
         var            achievement   = AllowedAchievements[achievementId];
         DB.Achievement dbAchievement = DB.Achievement.FindUserAchievement(user.Id, achievementId);
         if (dbAchievement == null)
         {
             dbAchievement               = new DB.Achievement();
             dbAchievement.UserId        = user.Id;
             dbAchievement.AchievementId = achievementId;
             dbAchievement.AchievedAt    = DateTime.Now;
             var result = dbAchievement.Save();
             if (result)
             {
                 var messageBuilder  = Game.messageBuilder;
                 var message         = messageBuilder.GetText("AchievementUnlocked");
                 var achievementText = $"<b>{achievement.Icon} {achievement.Name}</b>";
                 var replaces        = new Dictionary <string, object> {
                     { "name", messageBuilder.FormatName(user) }, { "achievement", achievementText }
                 };
                 messageBuilder
                 .Text(messageBuilder.Format(message, replaces), false)
                 .SendPublic(Game.gameChannel);
             }
             return(result);
         }
     }
     return(false);
 }
        public bool AddInstantly(UserWrapper user, string achievementId)
        {
            if (AllowedAchievements.ContainsKey(achievementId))
            {
                var achievement = AllowedAchievements[achievementId];
                using (var gameContext = new GameContext())
                {
                    var dbAchievement = gameContext.Achievements
                                        .Where(a => a.UserId == user.Id).SingleOrDefault(a => a.AchievementId == achievementId);

                    if (dbAchievement == null)
                    {
                        dbAchievement = new DB.Achievement()
                        {
                            UserId        = user.Id,
                            AchievementId = achievementId,
                            AchievedAt    = DateTime.Now
                        };
                        gameContext.Achievements.Add(dbAchievement);
                        try
                        {
                            gameContext.SaveChanges();
                            var messageBuilder  = Game.MessageBuilder;
                            var achievementText = $"<b>{achievement.Icon} {achievement.GetName(messageBuilder.Language)}</b>";
                            messageBuilder
                            .PrepareTextReplacePlayer("AchievementUnlocked", new InGamePlayerInfo(user, Game), additionalReplaceDictionary: new ReplaceDictionary {
                                ["achievement"] = achievementText
                            })
                            .SendPublic(Game.GameChannel);
                            return(true);
                        }
                        catch (Exception)
                        {
                            // ignored
                        }
                    }
                }
            }
            return(false);
        }