feat: Implemented full inv warning
This commit is contained in:
@ -5,6 +5,7 @@ import cz.jzitnik.chronos.entities.Player;
|
||||
import cz.jzitnik.chronos.payload.errors.ItemNotUsableException;
|
||||
import cz.jzitnik.chronos.payload.errors.NotFoundError;
|
||||
import cz.jzitnik.chronos.payload.requests.PlayerNameRequest;
|
||||
import cz.jzitnik.chronos.payload.responses.InventoryFullResponse;
|
||||
import cz.jzitnik.chronos.payload.responses.UnifiedResponse;
|
||||
import cz.jzitnik.chronos.repository.GameRepository;
|
||||
import cz.jzitnik.chronos.repository.ItemRepository;
|
||||
@ -59,6 +60,14 @@ public class PlayerController {
|
||||
return ResponseEntity.ok(UnifiedResponse.success(player));
|
||||
}
|
||||
|
||||
@GetMapping("/me/inv_full")
|
||||
@CheckUser
|
||||
public ResponseEntity<UnifiedResponse<InventoryFullResponse, Error>> inventoryIsFull(@RequestParam String playerKey) {
|
||||
var player = playerRepository.findByPlayerKey(playerKey).get();
|
||||
|
||||
return ResponseEntity.ok(UnifiedResponse.success(new InventoryFullResponse(player.getInventory().size() >= 3)));
|
||||
}
|
||||
|
||||
@PostMapping("/use_item")
|
||||
@CheckUser
|
||||
public ResponseEntity<UnifiedResponse<Object, Error>> useItem(@RequestParam String playerKey, @RequestParam Long itemId) {
|
||||
|
@ -4,5 +4,6 @@ public enum MessageType {
|
||||
CUSTOM,
|
||||
MOVE_TO_ROOM,
|
||||
GOT_ITEM,
|
||||
LOST_ITEM,
|
||||
JOINED,
|
||||
}
|
||||
|
@ -0,0 +1,12 @@
|
||||
package cz.jzitnik.chronos.payload.responses;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class InventoryFullResponse {
|
||||
private boolean full;
|
||||
}
|
@ -1,8 +1,6 @@
|
||||
package cz.jzitnik.chronos.services;
|
||||
|
||||
import cz.jzitnik.chronos.entities.Game;
|
||||
import cz.jzitnik.chronos.entities.Player;
|
||||
import cz.jzitnik.chronos.entities.Room;
|
||||
import cz.jzitnik.chronos.entities.*;
|
||||
import cz.jzitnik.chronos.repository.GameRepository;
|
||||
import cz.jzitnik.chronos.repository.PlayerRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -72,6 +70,7 @@ public class GameService {
|
||||
player.setPlayerKey(generateUniquePlayerKey());
|
||||
player.setGame(game);
|
||||
player.setCurrentRoom(game.getDefaultRoom());
|
||||
player.getMessages().add(new Message(player, "", MessageType.JOINED));
|
||||
|
||||
if (game.getPlayers().isEmpty()) {
|
||||
game.setAdminPlayer(player);
|
||||
|
@ -1,5 +1,7 @@
|
||||
package cz.jzitnik.chronos.services;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import cz.jzitnik.chronos.entities.Message;
|
||||
import cz.jzitnik.chronos.entities.MessageType;
|
||||
import cz.jzitnik.chronos.entities.Player;
|
||||
@ -18,6 +20,23 @@ public class ItemService {
|
||||
private ItemRepository itemRepository;
|
||||
|
||||
public void addItem(Player player, Item item) {
|
||||
if (player.getInventory().size() >= 3) {
|
||||
// Inv full
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
try {
|
||||
String json = objectMapper.writeValueAsString(item);
|
||||
|
||||
var message = new Message(player, json, MessageType.LOST_ITEM);
|
||||
|
||||
player.getMessages().add(message);
|
||||
playerRepository.save(player);
|
||||
|
||||
return;
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
var itemSaved = itemRepository.save(item);
|
||||
|
||||
var message = new Message(player, String.valueOf(itemSaved.getId()), MessageType.GOT_ITEM);
|
||||
|
Reference in New Issue
Block a user