/// <summary> /// Check if User has Obtained an achievement on this Score Submission /// </summary> /// <param name="factory">Context Factory</param> /// <param name="user">Who tries to Obtain</param> /// <param name="score">Submitted Score</param> /// <param name="map">Beatmap</param> /// <param name="set">Beatmap Set</param> /// <param name="oldLb">Old LeaderBoard</param> /// <param name="newLb">New LeaderBoard</param> /// <returns>Obtained Achievements</returns> public static string ProcessAchievements(SoraDbContext ctx, DbUser user, DbScore score, Beatmap map, BeatmapSet set, DbLeaderboard oldLb, DbLeaderboard newLb ) { var l = new List <Achievement>(); /* * if ((int) newLB.PerformancePointsOsu == 4914) * { * var ach = DBAchievement.GetAchievement(factory, "oog"); * if (!user.AlreadyOptainedAchievement(ach)) * _l.Add(ach); * } */ // Insert custom achievements here. I'll implement a Plugin System later! but this will work for now. // END OF CUSTOM ACHIEVEMENTS var retVal = l.Aggregate("", (current, ach) => current + ach.ToOsuString() + "/"); retVal.TrimEnd('/'); return(retVal); }
public static DbBeatmap FromBeatmap(Beatmap beatmap, BeatmapSet parent) => new DbBeatmap { Id = beatmap.BeatmapID, SetId = parent.SetID, RankedStatus = parent.RankedStatus, FileMd5 = beatmap.FileMD5, PlayMode = beatmap.Mode, Artist = parent.Artist, Title = parent.Title, DiffName = beatmap.DiffName, FileName = $"{parent.Artist} - {parent.Title} ({parent.Creator}) [{beatmap.DiffName}].osu", Flags = DbBeatmapFlags.None, };