From c72dbf44c74a0869050173a5bc6c1c0494e30f6c Mon Sep 17 00:00:00 2001 From: Coolroo Date: Mon, 20 Feb 2023 01:49:51 -0400 Subject: [PATCH] save --- .../plagueinc/managers/GameStateManager.java | 15 ++++++ .../plagueinc/models/events/EventCard.java | 7 ++- .../models/gamestate/ConditionalAction.java | 25 ++++++---- .../plagueinc/models/gamestate/GameState.java | 47 ++++++++++++++++++- .../models/gamestate/GameStateAction.java | 2 +- .../selection_objects/SelectionObject.java | 5 -- .../plagueinc/models/plague/Plague.java | 2 +- .../models/plague/abilities/Ability.java | 4 +- .../plague/abilities/GeneticSwitch.java | 4 +- .../models/plague/abilities/Outbreak.java | 2 +- .../plague/abilities/RandomMutation.java | 2 +- .../models/plague/trait_slot/TraitSlot.java | 2 +- .../rest_controllers/DTOs/DoActionDTO.java | 10 ++++ .../selection_objects/CitySelection.java | 2 +- .../selection_objects/ContinentSelection.java | 2 +- .../selection_objects/CountrySelection.java | 2 +- .../selection_objects/SelectionObject.java | 5 ++ .../selection_objects/TraitCardSelection.java | 2 +- .../selection_objects/TraitSlotSelection.java | 2 +- .../rest_controllers/GameStateEndpoints.java | 13 +++++ 20 files changed, 126 insertions(+), 29 deletions(-) delete mode 100644 backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/SelectionObject.java create mode 100644 backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/DoActionDTO.java rename backend/src/main/java/com/softdesign/plagueinc/{models/gamestate => rest_controllers/DTOs}/selection_objects/CitySelection.java (72%) rename backend/src/main/java/com/softdesign/plagueinc/{models/gamestate => rest_controllers/DTOs}/selection_objects/ContinentSelection.java (76%) rename backend/src/main/java/com/softdesign/plagueinc/{models/gamestate => rest_controllers/DTOs}/selection_objects/CountrySelection.java (70%) create mode 100644 backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/SelectionObject.java rename backend/src/main/java/com/softdesign/plagueinc/{models/gamestate => rest_controllers/DTOs}/selection_objects/TraitCardSelection.java (70%) rename backend/src/main/java/com/softdesign/plagueinc/{models/gamestate => rest_controllers/DTOs}/selection_objects/TraitSlotSelection.java (70%) diff --git a/backend/src/main/java/com/softdesign/plagueinc/managers/GameStateManager.java b/backend/src/main/java/com/softdesign/plagueinc/managers/GameStateManager.java index 3989749..edc679b 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/managers/GameStateManager.java +++ b/backend/src/main/java/com/softdesign/plagueinc/managers/GameStateManager.java @@ -1,6 +1,7 @@ package com.softdesign.plagueinc.managers; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.UUID; @@ -14,6 +15,7 @@ import com.softdesign.plagueinc.models.gamestate.GameState; import com.softdesign.plagueinc.models.plague.DiseaseType; import com.softdesign.plagueinc.models.plague.PlagueColor; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; @Component public class GameStateManager { @@ -150,6 +152,19 @@ public void playEventCard(String gameStateId, UUID plagueId, int eventCardIndex) games.get(gameStateId).playEventCard(eventCardIndex, plagueId); } + public void doAction(String gameStateId, UUID plagueId, List inputs){ + if(plagueId == null){ + throw new IllegalArgumentException("must provide plague ID"); + } + if(gameStateId == null){ + throw new IllegalArgumentException("Must provide gameStateId"); + } + if(inputs == null){ + throw new IllegalArgumentException("Must provide inputs"); + } + games.get(gameStateId).doAction(plagueId, inputs); + } + public GameState getGameState(String gameStateId){ if(gameStateId == null){ throw new IllegalArgumentException("Must provide gameStateId"); diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/events/EventCard.java b/backend/src/main/java/com/softdesign/plagueinc/models/events/EventCard.java index 0189cc9..db94963 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/events/EventCard.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/events/EventCard.java @@ -14,7 +14,12 @@ public class EventCard extends ConditionalAction { private String name; public EventCard(String name, GameStateAction condition, GameStateAction effect, List requiredInputs){ - super(effect, effect, requiredInputs); + super(effect, effect, requiredInputs, (dummy, dum, dumo) -> {}); + this.name = name; + } + + public EventCard(String name, GameStateAction condition, GameStateAction effect, List requiredInputs, GameStateAction handleFail){ + super(effect, effect, requiredInputs, handleFail); this.name = name; } diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/ConditionalAction.java b/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/ConditionalAction.java index 8645e5c..bf91455 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/ConditionalAction.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/ConditionalAction.java @@ -6,13 +6,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.softdesign.plagueinc.models.gamestate.selection_objects.CitySelection; -import com.softdesign.plagueinc.models.gamestate.selection_objects.ContinentSelection; -import com.softdesign.plagueinc.models.gamestate.selection_objects.CountrySelection; -import com.softdesign.plagueinc.models.gamestate.selection_objects.SelectionObject; -import com.softdesign.plagueinc.models.gamestate.selection_objects.TraitCardSelection; -import com.softdesign.plagueinc.models.gamestate.selection_objects.TraitSlotSelection; import com.softdesign.plagueinc.models.plague.Plague; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.CitySelection; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.ContinentSelection; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.CountrySelection; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.TraitCardSelection; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.TraitSlotSelection; import lombok.Getter; import lombok.NonNull; @@ -30,6 +30,8 @@ public class ConditionalAction { private GameStateAction action; @NonNull private List requiredInputs; + @NonNull + private GameStateAction handleFail; public void condition(Plague plague, GameState gameState){ @@ -37,8 +39,15 @@ public void condition(Plague plague, GameState gameState){ } public void resolveEffect(Plague plague, GameState gameState, List inputs){ - validateInput(inputs); - action.op(plague, gameState, inputs); + try{ + validateInput(inputs); + action.op(plague, gameState, inputs); + } + catch(Exception e){ + handleFail.op(plague, gameState, List.of()); + throw e; + } + } protected void validateInput(List inputSelection){ diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameState.java b/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameState.java index 44c3f2b..cf45195 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameState.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameState.java @@ -45,6 +45,8 @@ import com.softdesign.plagueinc.models.traits.TraitType; import com.softdesign.plagueinc.models.traits.travel.AirborneTrait; import com.softdesign.plagueinc.models.traits.travel.WaterborneTrait; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.CountrySelection; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; import com.softdesign.plagueinc.util.CountryReference; import com.softdesign.plagueinc.util.EventReference; import com.softdesign.plagueinc.util.TraitReference; @@ -359,11 +361,35 @@ private void respawnPlague(Plague plague){ else{ placeCountry(respawnCountry); } - //TODO: Respawn ConditionalAction plague.spendDnaPoints(RESPAWN_PENALTY); + respawnConditionalAction(plague); } + private void respawnConditionalAction(Plague plague){ + GameStateAction condition = (val, gameState, list) -> {}; + GameStateAction action = (val, gameState, list) -> { + CountrySelection countrySelection = ((CountrySelection)list.get(0)); + Country country = getCountry(countrySelection.getCountryName()); + + if(country.isFull()){ + logger.warn("[DNA] Plague ({}) attempted to respawn in a full country", plague.getColor()); + throw new IllegalStateException(); + } + + country.infectCountry(plague); + }; + + GameStateAction handleFail = (val, gameState, list) -> { + logger.info("[DNA] Plague ({}) failed to respawn", plague.getColor()); + respawnConditionalAction(plague); + + }; + + this.action = Optional.of(new ConditionalAction(condition, action, List.of(InputSelection.COUNTRY), handleFail)); + this.eventPlayer = Optional.of(this.currTurn); + } + //DNA PHASE public void scoreDNAPoints(){ @@ -737,6 +763,25 @@ private Plague shiftTurnOrder(){ return this.turnOrder.peek(); } + //Event & Actions + + public void doAction(UUID playerId, List inputs){ + + if(this.eventPlayer.isEmpty()){ + logger.warn("Player ({}) attempted to do an action when there was no event player", playerId); + throw new IllegalStateException(); + } + Plague plague = getPlague(playerId); + if(!plague.equals(this.eventPlayer.get())){ + logger.warn("Player ({}) attempted to do an action when they are not the event player", plague.getColor()); + throw new IllegalStateException(); + } + + action.get().resolveEffect(plague, this, inputs); + this.eventPlayer = Optional.empty(); + this.action = Optional.empty(); + } + //End of game private void endGame(){ diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameStateAction.java b/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameStateAction.java index 921925f..d5f78b6 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameStateAction.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/GameStateAction.java @@ -16,8 +16,8 @@ import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.softdesign.plagueinc.models.gamestate.selection_objects.SelectionObject; import com.softdesign.plagueinc.models.plague.Plague; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; @JsonSerialize(using = LambdaJsonSerializer.class) @JsonDeserialize(using = LambdaJsonDeserializer.class) diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/SelectionObject.java b/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/SelectionObject.java deleted file mode 100644 index 07abb3d..0000000 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/SelectionObject.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.softdesign.plagueinc.models.gamestate.selection_objects; - -public abstract class SelectionObject { - -} diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/plague/Plague.java b/backend/src/main/java/com/softdesign/plagueinc/models/plague/Plague.java index eea1b71..3f4936c 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/plague/Plague.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/plague/Plague.java @@ -20,11 +20,11 @@ import com.softdesign.plagueinc.models.countries.Country; import com.softdesign.plagueinc.models.events.EventCard; import com.softdesign.plagueinc.models.gamestate.GameState; -import com.softdesign.plagueinc.models.gamestate.selection_objects.SelectionObject; import com.softdesign.plagueinc.models.plague.trait_slot.TraitSlot; import com.softdesign.plagueinc.models.traits.Trait; import com.softdesign.plagueinc.models.traits.TraitCard; import com.softdesign.plagueinc.models.traits.TraitType; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; import com.softdesign.plagueinc.util.PlagueReference; import lombok.Getter; diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Ability.java b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Ability.java index 95055cb..d461c2b 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Ability.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Ability.java @@ -11,8 +11,8 @@ import com.softdesign.plagueinc.models.gamestate.GameState; import com.softdesign.plagueinc.models.gamestate.GameStateAction; import com.softdesign.plagueinc.models.gamestate.InputSelection; -import com.softdesign.plagueinc.models.gamestate.selection_objects.SelectionObject; import com.softdesign.plagueinc.models.plague.Plague; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; import lombok.Getter; @@ -27,7 +27,7 @@ public abstract class Ability extends ConditionalAction { protected String name; protected Ability(String name, GameStateAction condition, GameStateAction action, List requiredInputs){ - super(condition, action, requiredInputs); + super(condition, action, requiredInputs, (plague, gameState, inputs) -> {}); this.activated = false; this.name = name; } diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/GeneticSwitch.java b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/GeneticSwitch.java index 5fa324c..193e872 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/GeneticSwitch.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/GeneticSwitch.java @@ -4,10 +4,10 @@ import com.softdesign.plagueinc.models.gamestate.GameStateAction; import com.softdesign.plagueinc.models.gamestate.InputSelection; import com.softdesign.plagueinc.models.gamestate.PlayState; -import com.softdesign.plagueinc.models.gamestate.selection_objects.TraitCardSelection; -import com.softdesign.plagueinc.models.gamestate.selection_objects.TraitSlotSelection; import com.softdesign.plagueinc.models.plague.trait_slot.TraitSlot; import com.softdesign.plagueinc.models.traits.TraitCard; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.TraitCardSelection; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.TraitSlotSelection; public class GeneticSwitch extends Ability { private GeneticSwitch(GameStateAction condition, GameStateAction action) { diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Outbreak.java b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Outbreak.java index 3121ff0..98d8dab 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Outbreak.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/Outbreak.java @@ -5,7 +5,7 @@ import com.softdesign.plagueinc.models.gamestate.GameStateAction; import com.softdesign.plagueinc.models.gamestate.InputSelection; import com.softdesign.plagueinc.models.gamestate.PlayState; -import com.softdesign.plagueinc.models.gamestate.selection_objects.CountrySelection; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.CountrySelection; public class Outbreak extends Ability { diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/RandomMutation.java b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/RandomMutation.java index a3256b2..457c303 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/RandomMutation.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/plague/abilities/RandomMutation.java @@ -4,9 +4,9 @@ import com.softdesign.plagueinc.models.gamestate.GameStateAction; import com.softdesign.plagueinc.models.gamestate.InputSelection; -import com.softdesign.plagueinc.models.gamestate.selection_objects.TraitSlotSelection; import com.softdesign.plagueinc.models.plague.trait_slot.TraitSlot; import com.softdesign.plagueinc.models.traits.TraitCard; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.TraitSlotSelection; public class RandomMutation extends Ability { diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/plague/trait_slot/TraitSlot.java b/backend/src/main/java/com/softdesign/plagueinc/models/plague/trait_slot/TraitSlot.java index 630abc6..6516e59 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/plague/trait_slot/TraitSlot.java +++ b/backend/src/main/java/com/softdesign/plagueinc/models/plague/trait_slot/TraitSlot.java @@ -15,10 +15,10 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.softdesign.plagueinc.exceptions.TraitSlotFullException; import com.softdesign.plagueinc.models.gamestate.GameState; -import com.softdesign.plagueinc.models.gamestate.selection_objects.SelectionObject; import com.softdesign.plagueinc.models.plague.Plague; import com.softdesign.plagueinc.models.plague.abilities.Ability; import com.softdesign.plagueinc.models.traits.TraitCard; +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; @JsonInclude(JsonInclude.Include.NON_NULL) public class TraitSlot { diff --git a/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/DoActionDTO.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/DoActionDTO.java new file mode 100644 index 0000000..9431589 --- /dev/null +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/DoActionDTO.java @@ -0,0 +1,10 @@ +package com.softdesign.plagueinc.rest_controllers.DTOs; + +import java.util.List; +import java.util.UUID; + +import com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects.SelectionObject; + +public record DoActionDTO(UUID playerId, List inputs) { + +} diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/CitySelection.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/CitySelection.java similarity index 72% rename from backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/CitySelection.java rename to backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/CitySelection.java index 7597840..96b98f4 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/CitySelection.java +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/CitySelection.java @@ -1,4 +1,4 @@ -package com.softdesign.plagueinc.models.gamestate.selection_objects; +package com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/ContinentSelection.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/ContinentSelection.java similarity index 76% rename from backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/ContinentSelection.java rename to backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/ContinentSelection.java index 11ca5db..bf365fe 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/ContinentSelection.java +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/ContinentSelection.java @@ -1,4 +1,4 @@ -package com.softdesign.plagueinc.models.gamestate.selection_objects; +package com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects; import com.softdesign.plagueinc.models.countries.Continent; diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/CountrySelection.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/CountrySelection.java similarity index 70% rename from backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/CountrySelection.java rename to backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/CountrySelection.java index d7169f2..a726719 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/CountrySelection.java +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/CountrySelection.java @@ -1,4 +1,4 @@ -package com.softdesign.plagueinc.models.gamestate.selection_objects; +package com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/SelectionObject.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/SelectionObject.java new file mode 100644 index 0000000..277e8b1 --- /dev/null +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/SelectionObject.java @@ -0,0 +1,5 @@ +package com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects; + +public abstract class SelectionObject { + +} diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/TraitCardSelection.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/TraitCardSelection.java similarity index 70% rename from backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/TraitCardSelection.java rename to backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/TraitCardSelection.java index 0f2f679..96ef95e 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/TraitCardSelection.java +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/TraitCardSelection.java @@ -1,4 +1,4 @@ -package com.softdesign.plagueinc.models.gamestate.selection_objects; +package com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/TraitSlotSelection.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/TraitSlotSelection.java similarity index 70% rename from backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/TraitSlotSelection.java rename to backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/TraitSlotSelection.java index 0466649..c1ac59f 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/models/gamestate/selection_objects/TraitSlotSelection.java +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/DTOs/selection_objects/TraitSlotSelection.java @@ -1,4 +1,4 @@ -package com.softdesign.plagueinc.models.gamestate.selection_objects; +package com.softdesign.plagueinc.rest_controllers.DTOs.selection_objects; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/GameStateEndpoints.java b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/GameStateEndpoints.java index 0cb3240..de9c1b8 100644 --- a/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/GameStateEndpoints.java +++ b/backend/src/main/java/com/softdesign/plagueinc/rest_controllers/GameStateEndpoints.java @@ -27,6 +27,7 @@ import com.softdesign.plagueinc.rest_controllers.DTOs.ChangePlagueDTO; import com.softdesign.plagueinc.rest_controllers.DTOs.ChooseCountryDTO; import com.softdesign.plagueinc.rest_controllers.DTOs.CountryChoiceDTO; +import com.softdesign.plagueinc.rest_controllers.DTOs.DoActionDTO; import com.softdesign.plagueinc.rest_controllers.DTOs.EvolveDTO; import com.softdesign.plagueinc.rest_controllers.DTOs.JoinGameDTO; import com.softdesign.plagueinc.rest_controllers.DTOs.PlayEventCardDTO; @@ -302,6 +303,18 @@ public ResponseEntity playEventCard(@RequestParam("gameStateId") String ga return new ResponseEntity<>(HttpStatus.OK); } + @PatchMapping("/doAction") + public ResponseEntity doAction(@RequestParam("gameStateId") String gameStateId, @RequestBody DoActionDTO doActionDTO){ + try{ + gameStateManager.doAction(gameStateId, doActionDTO.playerId(), doActionDTO.inputs()); + broadcastGameState(gameStateId); + } + catch(Exception e){ + throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage(), e); + } + return new ResponseEntity<>(HttpStatus.OK); + } + /**