chore: Some minor changes

This commit is contained in:
jzitnik-dev 2024-12-23 23:25:22 +01:00
parent 143c4761f5
commit 47e3a1dec5
Signed by: jzitnik
GPG Key ID: C577A802A6AF4EF3
4 changed files with 43 additions and 52 deletions

25
README.md Normal file
View File

@ -0,0 +1,25 @@
# Chronos
Jednoduchá multiplayer hra napsaná v Javě.
## Backend
Backend je napsaný v Javě pomocí Spring. Jedná se o jednoduchý HTTP server.
**Ano jsem debil, využít relační databázi nebyl rozhodě dobrý nápad. Došlo mi to uprostřed programování a už se mi nechtělo vracet zpět.**
### Enviromental variables
Nějaké env variables se musí nastavit pro připojení k databázi:
- `DATASOURCE_URL`: Jdbc url pro databázi. Např. `jdbc:mysql://localhost:3306/chronos`
- `DB_USERNAME`: Uživatelské jméno k přístupu k databázi. Např. `root`
- `DB_PASSWORD`: Heslo k přístupu k databázi. Např. `root`
## Frontend
Frontend je napsaný ve Vanilla Javě. Config soubor se automaticky ukládá v následujících lokacích:
- Unix-like operační systémy: `~/.config/Chronos/config.json`
- Windows: `C:\Users\<username>\AppData\Chronos\config.json`
- MaxOS: `~/Library/Application Support/Chronos/config.json`

View File

@ -4,6 +4,7 @@ import cz.jzitnik.game.Chronos;
import cz.jzitnik.utils.Cli; import cz.jzitnik.utils.Cli;
import java.io.IOException; import java.io.IOException;
import java.util.List;
public class Main { public class Main {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
@ -27,16 +28,16 @@ public class Main {
System.out.println(); System.out.println();
String[] options = {"Vytvořit novou hru", "Připojit se do již existující hry"}; String[] options = {"Vytvořit novou hru", "Připojit se do již existující hry"};
var option = Cli.selectOption(options); var option = Cli.selectOptionIndex(List.of(options));
switch (option) { switch (option) {
case "Vytvořit novou hru": case 0:
chronos.createNewGame(); chronos.createNewGame();
chronos.addUser(); chronos.addUser();
Cli.success("Byl jste úspěšně zaregistrován jako první hráč!"); Cli.success("Byl jste úspěšně zaregistrován jako první hráč!");
chronos.adminPanel(); chronos.adminPanel();
break; break;
case "Připojit se do hry": case 1:
chronos.connectToExisting(); chronos.connectToExisting();
chronos.addUser(); chronos.addUser();
Cli.success("Byl jste úspěšně zaregistrován jako hráč!"); Cli.success("Byl jste úspěšně zaregistrován jako hráč!");

View File

@ -162,25 +162,21 @@ public class Chronos {
var testGameKeyResponse = apiService.testGameKey(code).execute().body().getData().get(); var testGameKeyResponse = apiService.testGameKey(code).execute().body().getData().get();
if (testGameKeyResponse == TestGameKeyResponse.INVALID_KEY) { switch (testGameKeyResponse) {
Cli.error("Nebyla nalezena hra s tímto kódem!"); case INVALID_KEY -> {
connectToExisting(); Cli.error("Nebyla nalezena hra s tímto kódem!");
return; connectToExisting();
}
case GAME_STARTED -> {
Cli.error("Tato hra již začala!");
connectToExisting();
}
case MAXIUM_PLAYERS -> {
Cli.error("V této hře je již maximální počet hráčů!");
connectToExisting();
}
case WORKING -> localData.setGameKey(code);
} }
if (testGameKeyResponse == TestGameKeyResponse.GAME_STARTED) {
Cli.error("Tato hra již začala!");
connectToExisting();
return;
}
if (testGameKeyResponse == TestGameKeyResponse.MAXIUM_PLAYERS) {
Cli.error("V této hře je již maximální počet hráčů!");
connectToExisting();
return;
}
localData.setGameKey(code);
} }
public void waitForStart() throws IOException { public void waitForStart() throws IOException {

View File

@ -147,37 +147,6 @@ public class Cli {
} }
/**
* Displays a menu with the provided options and returns the selected option.
*
* @param options Array of options to display to the user.
* @return The selected option as a String.
*/
public static String selectOption(String[] options) {
Scanner scanner = new Scanner(System.in);
int choice;
System.out.println("Vyberte možnost:");
for (int i = 0; i < options.length; i++) {
System.out.println((i + 1) + ". " + options[i]);
}
while (true) {
System.out.print("Vložte číslo možnosti: ");
if (scanner.hasNextInt()) {
choice = scanner.nextInt();
if (choice >= 1 && choice <= options.length) {
return options[choice - 1];
} else {
System.out.println("Neplatní možnost, vyberte číslo mezi 1 a " + options.length);
}
} else {
System.out.println("Neplatný vstup, vložte číslo.");
scanner.next();
}
}
}
/** /**
* Displays a menu with the provided options and returns the selected option. * Displays a menu with the provided options and returns the selected option.
* *