diff --git a/ProjectLighthouse/Controllers/PublishController.cs b/ProjectLighthouse/Controllers/PublishController.cs index 0f6499dd..98f490e2 100644 --- a/ProjectLighthouse/Controllers/PublishController.cs +++ b/ProjectLighthouse/Controllers/PublishController.cs @@ -117,6 +117,12 @@ namespace LBPUnion.ProjectLighthouse.Controllers slot.GameVersion = gameToken.GameVersion; + if (slot.MinimumPlayers == 0 || slot.MaximumPlayers == 0) + { + slot.MinimumPlayers = 1; + slot.MaximumPlayers = 4; + } + this.database.Entry(oldSlot).CurrentValues.SetValues(slot); await this.database.SaveChangesAsync(); return this.Ok(oldSlot.Serialize()); diff --git a/ProjectLighthouse/Maintenance/MaintenanceJobs/FixAllBrokenPlayerRequirementsMaintenanceJob.cs b/ProjectLighthouse/Maintenance/MaintenanceJobs/FixAllBrokenPlayerRequirementsMaintenanceJob.cs new file mode 100644 index 00000000..4fae2b5e --- /dev/null +++ b/ProjectLighthouse/Maintenance/MaintenanceJobs/FixAllBrokenPlayerRequirementsMaintenanceJob.cs @@ -0,0 +1,33 @@ +using System; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Types.Levels; + +namespace LBPUnion.ProjectLighthouse.Maintenance.MaintenanceJobs +{ + public class FixAllBrokenPlayerRequirementsMaintenanceJob : IMaintenanceJob + { + private readonly Database database = new(); + + public string Name() => "Fix All Broken Player Requirements"; + public string Description() => "Some LBP1 levels may report that they are designed for 0 players. This job will fix that."; + public async Task Run() + { + int count = 0; + await foreach (Slot slot in this.database.Slots) + { + if (slot.MinimumPlayers == 0 || slot.MaximumPlayers == 0) + { + slot.MinimumPlayers = 1; + slot.MaximumPlayers = 4; + + Console.WriteLine($"Fixed slotId {slot.SlotId}"); + count++; + } + } + + await this.database.SaveChangesAsync(); + + Console.WriteLine($"Fixed {count} broken player requirements."); + } + } +} \ No newline at end of file