diff --git a/web_backend/src/main/java/haw/teamagochi/backend/device/logic/devicemanager/MemoryDeviceManager.java b/web_backend/src/main/java/haw/teamagochi/backend/device/logic/devicemanager/MemoryDeviceManager.java index 7a56b67..aa90155 100644 --- a/web_backend/src/main/java/haw/teamagochi/backend/device/logic/devicemanager/MemoryDeviceManager.java +++ b/web_backend/src/main/java/haw/teamagochi/backend/device/logic/devicemanager/MemoryDeviceManager.java @@ -107,12 +107,14 @@ public void add(String endpoint, Long deviceId) { public void remove(String endpoint) { devices.remove(endpoint); activeDevices.remove(endpoint); + pets.remove(endpoint); } @Override public void removeAll() { devices.clear(); activeDevices.clear(); + pets.clear(); } /** diff --git a/web_backend/src/main/java/haw/teamagochi/backend/pet/logic/game/GameCycleImpl.java b/web_backend/src/main/java/haw/teamagochi/backend/pet/logic/game/GameCycleImpl.java index 6696af7..69db4d2 100644 --- a/web_backend/src/main/java/haw/teamagochi/backend/pet/logic/game/GameCycleImpl.java +++ b/web_backend/src/main/java/haw/teamagochi/backend/pet/logic/game/GameCycleImpl.java @@ -21,6 +21,7 @@ import jakarta.inject.Inject; import jakarta.transaction.Transactional; import java.util.List; +import java.util.function.Consumer; import lombok.Getter; import lombok.Setter; import org.jboss.logging.Logger; @@ -93,7 +94,7 @@ public void doWork() { PetEntity pet = device.getPet(); if (pet != null) { - processPetInteractions(pet); + processPetInteractions(pet, device.getIdentifier()); deteriorate(pet); if (activeDevices.contains(device.getId())) { @@ -105,26 +106,34 @@ public void doWork() { } } - private void processPetInteractions(PetEntity pet) { + private void processPetInteractions(PetEntity pet, String endpoint) { InteractionRecord interactionRecord = petManager.getCurrentInteraction(pet.getId()); if (interactionRecord != null && !interactionRecord.isEvaluated()) { + Consumer logInteractionFn = (action) -> + LOGGER.info( + "Interaction with " + pet.getName() + " on device " + endpoint + ": " + action); + if (interactionRecord.getClean() > 0) { ucPetInteractions.cleanPet(pet); interactionRecord.setClean(0); + logInteractionFn.accept("clean"); } if (interactionRecord.getFeed() > 0) { ucPetInteractions.feedPet(pet); interactionRecord.setFeed(0); + logInteractionFn.accept("feed"); } if (interactionRecord.getPlay() > 0) { ucPetInteractions.playWithPet(pet); interactionRecord.setPlay(0); + logInteractionFn.accept("play"); } if (interactionRecord.getMedicate() > 0) { ucPetInteractions.medicatePet(pet); interactionRecord.setMedicate(0); + logInteractionFn.accept("medicate"); } interactionRecord.setEvaluated(true);