diff --git a/frontend/src/components/CardDeckShowcase.svelte b/frontend/src/components/CardDeckShowcase.svelte
new file mode 100644
index 0000000..f2197a8
--- /dev/null
+++ b/frontend/src/components/CardDeckShowcase.svelte
@@ -0,0 +1,29 @@
+
+
+
diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json
index f8a9941..32e884f 100644
--- a/frontend/src/i18n/de.json
+++ b/frontend/src/i18n/de.json
@@ -69,7 +69,13 @@
"player_name": "Spielername",
"status": "Status",
"host": "Host",
- "you": "Du"
+ "you": "Du",
+ "player": "Spieler",
+ "return_to_game": "Zurück zum Spiel",
+ "selected_card_deck": "Ausgewähltes Kartendeck:",
+ "change_card_deck": "Ändern",
+ "choose_card_deck": "Auswählen",
+ "card_deck_modal": "Wähle ein Kartendeck aus"
},
"end_screen": {
"game_has_ended": "Das Spiel ist vorbei",
diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json
index 8b896d7..1b7b5c3 100644
--- a/frontend/src/i18n/en.json
+++ b/frontend/src/i18n/en.json
@@ -71,7 +71,11 @@
"host": "Host",
"you": "You",
"player": "Player",
- "return_to_game": "Return to game"
+ "return_to_game": "Return to game",
+ "selected_card_deck": "Selected card deck:",
+ "change_card_deck": "Change",
+ "choose_card_deck": "Choose",
+ "card_deck_modal": "Select a card deck"
},
"end_screen": {
"game_has_ended": "The game has ended",
diff --git a/frontend/src/routes/Game.svelte b/frontend/src/routes/Game.svelte
index 5a18df4..aac716a 100644
--- a/frontend/src/routes/Game.svelte
+++ b/frontend/src/routes/Game.svelte
@@ -10,6 +10,11 @@
import { requestJoinRoom } from "../stores/roomStore";
import gameStore from "../stores/gameStore";
+ let maxRotationDeg = 20;
+ let centerDistancePx = 200;
+ let cardWidth = 100;
+ let cardHeight = 150;
+
onMount(async () => {
// TODO: check if already connected to room, currently its overwriting the session
const params = new URLSearchParams(window.location.search);
@@ -51,7 +56,7 @@
{#if $sessionStore.gameState == GameState.Lobby}
-
+
{/if}
@@ -59,11 +64,11 @@
{#if $gameStore.isLobbyOverlayShown}
-
+
{/if}
-
+
{:else if $sessionStore.gameState == GameState.Ended}
diff --git a/frontend/src/routes/_module.svelte b/frontend/src/routes/_module.svelte
index 1f27cd9..f46c237 100644
--- a/frontend/src/routes/_module.svelte
+++ b/frontend/src/routes/_module.svelte
@@ -65,7 +65,7 @@
-
diff --git a/frontend/src/stores/cardDeck.ts b/frontend/src/stores/cardDeck.ts
new file mode 100644
index 0000000..659451d
--- /dev/null
+++ b/frontend/src/stores/cardDeck.ts
@@ -0,0 +1,13 @@
+import ClassicCard from "../components/Cards/ClassicCard.svelte";
+import HexV1Card from "../components/Cards/HexV1Card.svelte";
+
+interface CardDeck {
+ id: number;
+ name: string;
+ cardComponent: any;
+}
+
+export const CardDecks: CardDeck[] = [
+ { id: 0, name: "Classic", cardComponent: ClassicCard },
+ { id: 1, name: "HexV1", cardComponent: HexV1Card },
+];
diff --git a/frontend/src/stores/sessionStore.ts b/frontend/src/stores/sessionStore.ts
index 7c1a12e..809be5d 100644
--- a/frontend/src/stores/sessionStore.ts
+++ b/frontend/src/stores/sessionStore.ts
@@ -80,6 +80,10 @@ interface PlayedCardUpdateObj {
Card: Card;
}
+interface SetCardDeckReq {
+ CardDeckId: number;
+}
+
interface PlayCardReq {
CardIndex?: number;
CardData: any;
@@ -367,6 +371,13 @@ class SessionManager {
}
}
+ setCardDeck(id: number) {
+ let request: SetCardDeckReq = {
+ CardDeckId: id,
+ };
+ this.sendMessage("SetCardDeck", JSON.stringify(request));
+ }
+
drawCard() {
this.sendMessage("DrawCard", "");
}
diff --git a/frontend/src/views/Game/Lobby.svelte b/frontend/src/views/Game/Lobby.svelte
index 6d40839..cc00282 100644
--- a/frontend/src/views/Game/Lobby.svelte
+++ b/frontend/src/views/Game/Lobby.svelte
@@ -1,10 +1,12 @@