feat: Started working on game dialogs

This commit is contained in:
jzitnik-dev 2025-01-03 21:48:59 +01:00
parent fdce5f2a62
commit fc432caa58
Signed by: jzitnik
GPG Key ID: C577A802A6AF4EF3
7 changed files with 27 additions and 12 deletions

View File

@ -122,7 +122,7 @@ public class GameController {
playerRepository.save(player);
if (game.getKeyFragmentsAmount() >= 4) {
if (game.getKeyFragmentsAmount() >= 5) {
// All key fragments were found
game.setWon(true);
}

View File

@ -46,6 +46,7 @@ public class Character {
@JoinColumn(name = "interaction_data_id", referencedColumnName = "id")
private cz.jzitnik.chronos.entities.Interaction interactionData;
@Lob
private String dialog;
public Character(String name, Room room, String dialog) {

View File

@ -80,6 +80,6 @@ public class Game {
var unplayedCharacters = characters.stream().filter(character -> !character.isInteractedWith()).toList().size();
return (roomItems + unplayedCharacters + ownedFragments) >= (4 - keyFragmentsAmount);
return (roomItems + unplayedCharacters + ownedFragments) >= (5 - keyFragmentsAmount);
}
}

View File

@ -61,7 +61,7 @@ public class RockPaperScissors implements InteractionPlayer {
} else {
character.setInteractedWith(true);
characterRepository.save(character);
return new InteractionResponse(false, "Prohrál jsi. Žádný fragment klíče ode mě nedostaneš. Zkus to u někoho jiného.", new ArrayList<>());
return new InteractionResponse(false, "Prohrál jsi. Žádný fragment klíče ode mě nedostaneš. Zkus to u někoho jiného.", new ArrayList<>());
}
} else {
// Standard rock-paper-scissors game logic

View File

@ -201,13 +201,16 @@ public class TicTacToe implements InteractionPlayer {
characterRepository.save(character);
}
var items = new ArrayList<Item>();
if (type == TicTacToeResponse.Type.GAME_WON) {
var item = new Item(ItemType.KEY_FRAGMENT, character.getInteractionData().getPlayer());
items.add(item);
itemService.addItem(character.getInteractionData().getPlayer(), item);
}
var response = new TicTacToeResponse(type, board, false);
ObjectMapper objectMapper = new ObjectMapper();
return new InteractionResponse(true, objectMapper.writeValueAsString(response), new ArrayList<>());
return new InteractionResponse(true, objectMapper.writeValueAsString(response), items);
}
}

View File

@ -22,7 +22,13 @@ public class InitGameService {
var elf = new Character(
"Skřítek",
outside,
"Ahoj já jsem skřítek... Můj dialog doplnit"
"Ahoj, vím že se teď asi ptáš co tu děláš a tak dále a tak dále, ale teď na to není prostor. "
+ "Zastavil se tu totiž čas a já potřebuji abys mi pomohl ho dát zpět do pochodu. "
+ "Musíš najít 5 fragmentů klíče a přinést je zpět na náměstí, kde je vhodíš do brány času, a vše znovu obživne. "
+ "Čeká tě spousta úkolů které musíš splnit na to aby jsi dostal/a fragmenty klíče. "
+ "Taky ode mě dostaneš lektvar štěstí který ti pomůže u farmáře. "
+ "Ale nezapomeň, v batohu můžeš nést maximálně jen tři věci. "
+ "No nic, jdi udělat to co máš. Hodně štěstí!"
);
elf_items.add(new Item(ItemType.LUCK_POTION, elf));
elf.setInventory(elf_items);
@ -38,12 +44,15 @@ public class InitGameService {
var farmar = new Character(
"Farmář",
stodola,
"Ahoj já jsem farmář a budeš se mnou hrát kámen nůžky papír. Dialog doplnit."
"Ahoj! Určitě už víš co se stalo, zastavil se čas a skřítek ho potřebuje znovu obnovit. "
+ "Ale mně se to takhle líbí, proto ti fragment klíče nedám jen tak zadarmo. "
+ "Musíš si semnou zahrát kámen, nůžky papír. Pokud vyhraješ, dám ti fragment klíče. "
+ "Pokud ne, tak ti fragment klíče už nikdy nedám. Hodně štěstí, budeš ho potřebovat."
);
farmar.setInteraction(Interaction.Farmer);
farmar.setInteractionData(new cz.jzitnik.chronos.entities.Interaction(
"Tak si zahrajeme kámen nůžky papír",
"Se mnou někdo již hrál kámen nůžky papír. Další fragment klíče nemám.",
"",
"Už si semnou zahrát nemůžeš, někdo tu byl před tebou a dostal ode mě fragment klíče.",
farmar
));
stodola_characters.add(farmar);
@ -58,12 +67,14 @@ public class InitGameService {
var cashier = new Character(
"Prodavač",
shop,
"Ahoj já jsem prodavač a budeš se mnou hrát šibenici."
"Dobrý den přejete si něco? Ne? Co teda chcete? Joo fragment klíče. To ale nepůjde jen tak snadno. "
+ "Nejdřív si se mnou musíš zahrát šibenici, jestli vyhraješ tak ti samozřejmě dám fragment klíče ale pokud ne... "
+ "tak tě na tu šibenici pověsím! Ne dělám si srandu. Pojď si zahrát."
);
cashier.setInteraction(Interaction.Cashier);
cashier.setInteractionData(new cz.jzitnik.chronos.entities.Interaction(
"Tak si zahrajeme šibenici",
"Se mnou někdo již hrál šibenici. Další fragment klíče nemám.",
"",
"Už si semnou zahrát nemůžeš, někdo tu byl před tebou a dostal ode mě fragment klíče.",
cashier
));
shop_characters.add(cashier);

View File

@ -111,7 +111,7 @@ public class TicTacToe {
return askForMove(board);
}
if (!board[move].equals("_")) {
if (!board[move - 1].equals("_")) {
Cli.error("Toto pole již bylo obsazeno!");
return askForMove(board);
}