diff --git a/Controllers/PlayerController.cs b/Controllers/PlayerController.cs index 164c2fd..f58baf4 100644 --- a/Controllers/PlayerController.cs +++ b/Controllers/PlayerController.cs @@ -94,7 +94,7 @@ public class PlayerController : ControllerBase } [HttpPut] - [Authorize(Roles = "SUPER")] + [Authorize(Roles = "USER,SUPER")] public async Task Update([FromBody] UpdatePlayerRequest req) { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); @@ -109,7 +109,7 @@ public class PlayerController : ControllerBase } [HttpDelete] - [Authorize(Roles = "SUPER")] + [Authorize(Roles = "USER,SUPER")] public async Task Delete() { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); diff --git a/Controllers/SpawnableController.cs b/Controllers/SpawnableController.cs index 75256da..331e535 100644 --- a/Controllers/SpawnableController.cs +++ b/Controllers/SpawnableController.cs @@ -26,7 +26,8 @@ public class SpawnableController : ControllerBase Name = req.Name.ToLower(), SpawnRate = req.SpawnRate, CollectAction = req.CollectAction, - CollectResults = req.CollectResults + CollectResults = req.CollectResults, + ConsumeOnSuccess = req.ConsumeOnSuccess }; await _spawnableService.CreateAsync(spawnable); @@ -45,6 +46,7 @@ public class SpawnableController : ControllerBase spawnable.SpawnRate = req.SpawnRate; spawnable.CollectAction = req.CollectAction; spawnable.CollectResults = req.CollectResults; + spawnable.ConsumeOnSuccess = req.ConsumeOnSuccess; await _spawnableService.UpdateAsync(spawnable); return Ok(spawnable); diff --git a/GameAuthApi.Tests/SpawnableControllerTests.cs b/GameAuthApi.Tests/SpawnableControllerTests.cs index 70d0926..e876573 100644 --- a/GameAuthApi.Tests/SpawnableControllerTests.cs +++ b/GameAuthApi.Tests/SpawnableControllerTests.cs @@ -21,7 +21,8 @@ public class SpawnableControllerTests sp.CollectAction == "gather" && sp.CollectResults.Count == 2 && sp.CollectResults[0].Result == "resource" && - sp.CollectResults[0].SuccessRate == 75))) + sp.CollectResults[0].SuccessRate == 75 && + sp.ConsumeOnSuccess))) .Returns(Task.CompletedTask).Verifiable(); var controller = new SpawnableController(svc.Object); @@ -34,7 +35,8 @@ public class SpawnableControllerTests { new() { Result = "resource", SuccessRate = 75 }, new() { Result = "nothing", SuccessRate = 25 } - } + }, + ConsumeOnSuccess = true }); Assert.IsType(result); @@ -74,7 +76,7 @@ public class SpawnableControllerTests svc.Setup(s => s.GetByIdAsync("id")).ReturnsAsync((Spawnable)null); var controller = new SpawnableController(svc.Object); - var result = await controller.Update("id", new UpdateSpawnableRequest { Name="n", SpawnRate=1, CollectAction="a" }); + var result = await controller.Update("id", new UpdateSpawnableRequest { Name="n", SpawnRate=1, CollectAction="a", ConsumeOnSuccess = false }); Assert.IsType(result); } diff --git a/Models/DTOs/CreateSpawnableRequest.cs b/Models/DTOs/CreateSpawnableRequest.cs index 6d4ddcb..83c64ad 100644 --- a/Models/DTOs/CreateSpawnableRequest.cs +++ b/Models/DTOs/CreateSpawnableRequest.cs @@ -12,4 +12,7 @@ public class CreateSpawnableRequest // Possible outcomes of collecting the item public List CollectResults { get; set; } = []; + + // Should the spawnable be removed after a successful action? + public bool ConsumeOnSuccess { get; set; } = false; } diff --git a/Models/DTOs/UpdateSpawnableRequest.cs b/Models/DTOs/UpdateSpawnableRequest.cs index f1170c7..ce03fd7 100644 --- a/Models/DTOs/UpdateSpawnableRequest.cs +++ b/Models/DTOs/UpdateSpawnableRequest.cs @@ -8,4 +8,7 @@ public class UpdateSpawnableRequest public int SpawnRate { get; set; } public string CollectAction { get; set; } public List CollectResults { get; set; } = []; + + // Should the spawnable be removed after a successful action? + public bool ConsumeOnSuccess { get; set; } = false; }