diff --git a/ProjectLighthouse/Levels/Categories/CategoryHelper.cs b/ProjectLighthouse/Levels/Categories/CategoryHelper.cs index 2440402e..db7a38b9 100644 --- a/ProjectLighthouse/Levels/Categories/CategoryHelper.cs +++ b/ProjectLighthouse/Levels/Categories/CategoryHelper.cs @@ -12,6 +12,7 @@ public static class CategoryHelper Categories.Add(new NewestLevelsCategory()); Categories.Add(new QueueCategory()); Categories.Add(new HeartedCategory()); + Categories.Add(new LuckyDipCategory()); using Database database = new(); foreach (DatabaseCategory category in database.CustomCategories) Categories.Add(new CustomCategory(category)); diff --git a/ProjectLighthouse/Levels/Categories/HeartedCategory.cs b/ProjectLighthouse/Levels/Categories/HeartedCategory.cs index b7e344d9..a7939746 100644 --- a/ProjectLighthouse/Levels/Categories/HeartedCategory.cs +++ b/ProjectLighthouse/Levels/Categories/HeartedCategory.cs @@ -12,8 +12,8 @@ namespace LBPUnion.ProjectLighthouse.Levels.Categories; public class HeartedCategory : CategoryWithUser { public override string Name { get; set; } = "My Hearted Levels"; - public override string Description { get; set; } = "Levels you've hearted in the past"; - public override string IconHash { get; set; } = "g820607"; + public override string Description { get; set; } = "Content you've hearted"; + public override string IconHash { get; set; } = "g820611"; public override string Endpoint { get; set; } = "hearted"; public override Slot? GetPreviewSlot(Database database, User user) // note: developer slots act up in LBP3 when listed here, so I omitted it => database.HeartedLevels.Where(h => h.UserId == user.UserId) diff --git a/ProjectLighthouse/Levels/Categories/LuckyDipCategory.cs b/ProjectLighthouse/Levels/Categories/LuckyDipCategory.cs new file mode 100644 index 00000000..e49b8f88 --- /dev/null +++ b/ProjectLighthouse/Levels/Categories/LuckyDipCategory.cs @@ -0,0 +1,25 @@ +#nullable enable +using System; +using System.Collections.Generic; +using System.Linq; +using LBPUnion.ProjectLighthouse.Extensions; +using LBPUnion.ProjectLighthouse.PlayerData; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Levels.Categories; + +public class LuckyDipCategory : Category +{ + public override string Name { get; set; } = "Lucky Dip"; + public override string Description { get; set; } = "Randomized uploaded content"; + public override string IconHash { get; set; } = "g820605"; + public override string Endpoint { get; set; } = "lbp2luckydip"; + public override Slot? GetPreviewSlot(Database database) => database.Slots.Where(s => s.Type == SlotType.User).OrderByDescending(_ => EF.Functions.Random()).FirstOrDefault(); + public override IEnumerable GetSlots + (Database database, int pageStart, int pageSize) + => database.Slots.ByGameVersion(GameVersion.LittleBigPlanet3, false, true) + .OrderByDescending(_ => EF.Functions.Random()) + .Skip(Math.Max(0, pageStart - 1)) + .Take(Math.Min(pageSize, 20)); + public override int GetTotalSlots(Database database) => database.Slots.Count(s => s.Type == SlotType.User); +} \ No newline at end of file diff --git a/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs b/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs index 198dfe3a..12fe8fa6 100644 --- a/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs +++ b/ProjectLighthouse/Levels/Categories/NewestLevelsCategory.cs @@ -10,7 +10,7 @@ namespace LBPUnion.ProjectLighthouse.Levels.Categories; public class NewestLevelsCategory : Category { public override string Name { get; set; } = "Newest Levels"; - public override string Description { get; set; } = "Levels recently published"; + public override string Description { get; set; } = "The most recently published content"; public override string IconHash { get; set; } = "g820623"; public override string Endpoint { get; set; } = "newest"; public override Slot? GetPreviewSlot(Database database) => database.Slots.Where(s => s.Type == SlotType.User).OrderByDescending(s => s.FirstUploaded).FirstOrDefault(); diff --git a/ProjectLighthouse/Levels/Categories/QueueCategory.cs b/ProjectLighthouse/Levels/Categories/QueueCategory.cs index 231ef8a3..a3eb9151 100644 --- a/ProjectLighthouse/Levels/Categories/QueueCategory.cs +++ b/ProjectLighthouse/Levels/Categories/QueueCategory.cs @@ -12,7 +12,7 @@ namespace LBPUnion.ProjectLighthouse.Levels.Categories; public class QueueCategory : CategoryWithUser { public override string Name { get; set; } = "My Queue"; - public override string Description { get; set; } = "Your queued levels"; + public override string Description { get; set; } = "Your queued content"; public override string IconHash { get; set; } = "g820614"; public override string Endpoint { get; set; } = "queue"; public override Slot? GetPreviewSlot(Database database, User user) diff --git a/ProjectLighthouse/Levels/Categories/TeamPicksCategory.cs b/ProjectLighthouse/Levels/Categories/TeamPicksCategory.cs index 35e992bb..3288e6a1 100644 --- a/ProjectLighthouse/Levels/Categories/TeamPicksCategory.cs +++ b/ProjectLighthouse/Levels/Categories/TeamPicksCategory.cs @@ -10,7 +10,7 @@ namespace LBPUnion.ProjectLighthouse.Levels.Categories; public class TeamPicksCategory : Category { public override string Name { get; set; } = "Team Picks"; - public override string Description { get; set; } = "Levels given awards by your instance admin"; + public override string Description { get; set; } = "Community Team Picks"; public override string IconHash { get; set; } = "g820626"; public override string Endpoint { get; set; } = "team_picks"; public override Slot? GetPreviewSlot(Database database) => database.Slots.OrderByDescending(s => s.FirstUploaded).FirstOrDefault(s => s.TeamPick);