hn||(Ul.then(()=>hn=0),hn=Date.now());function Vl(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;de(Wl(s,n.value),t,5,[s])};return n.value=e,n.attached=Dl(),n}function Wl(e,t){if(R(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ws=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,zl=(e,t,n,s,r,o,l,c,u)=>{const d=r==="svg";t==="class"?Rl(e,s,d):t==="style"?Hl(e,n,s):Ut(t)?wn(t)||Kl(e,t,n,s,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):kl(e,t,s,d))?$l(e,t,s,o,l,c,u):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Fl(e,t,s,d))};function kl(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ws(t)&&O(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ws(t)&&Z(n)?!1:t in e}const Zl=Y({patchProp:zl},Al);let As;function Gl(){return As||(As=rl(Zl))}const ql=(...e)=>{const t=Gl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Jl(s);if(!r)return;const o=t._component;!O(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.innerHTML="";const l=n(r,!1,Yl(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},t};function Yl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Jl(e){return Z(e)?document.querySelector(e):e}const Xl=["src"],Ye=cr({__name:"CardComponent",props:{card:{}},setup(e){const t=e,n=me("/assets/card_back.png"),s=me(!1);return ar(()=>{n.value="/assets/"+t.card.toString().toLowerCase()+".png"}),It(()=>t.card,r=>{n.value=`/assets/${r.toString().toLowerCase()}.png`}),(r,o)=>(ee(),Ae("div",{onClick:o[0]||(o[0]=l=>s.value=!s.value),class:Wt([{"!scale-105 !z-10 !top-1/2 !left-1/2":s.value},"card transition overflow-hidden"])},[F("img",{class:"h-full rounded-[1rem] mx-auto",src:n.value},null,8,Xl)],2))}});var Ar=(e=>(e.EICHEL_7="EICHEL_7",e.EICHEL_8="EICHEL_8",e.EICHEL_9="EICHEL_9",e.EICHEL_X="EICHEL_X",e.EICHEL_K="EICHEL_K",e.EICHEL_A="EICHEL_A",e.BLATT_7="BLATT_7",e.BLATT_8="BLATT_8",e.BLATT_9="BLATT_9",e.BLATT_X="BLATT_X",e.BLATT_K="BLATT_K",e.BLATT_A="BLATT_A",e.SCHELL_7="SCHELL_7",e.SCHELL_8="SCHELL_8",e.SCHELL_9="SCHELL_9",e.SCHELL_X="SCHELL_X",e.SCHELL_K="SCHELL_K",e.SCHELL_A="SCHELL_A",e.HERZ_7="HERZ_7",e.HERZ_8="HERZ_8",e.HERZ_9="HERZ_9",e.HERZ_X="HERZ_X",e.HERZ_K="HERZ_K",e.HERZ_A="HERZ_A",e.SCHELL_U="SCHELL_U",e.HERZ_U="HERZ_U",e.BLATT_U="BLATT_U",e.EICHEL_U="EICHEL_U",e.SCHELL_O="SCHELL_O",e.HERZ_O="HERZ_O",e.BLATT_O="BLATT_O",e.EICHEL_O="EICHEL_O",e.BACK="CARD_BACK",e))(Ar||{}),je=(e=>(e.CHOOSE_GAME="CHOOSE_GAME",e.GAME_START="GAME_START",e.GAME_STOP="GAME_STOP",e.TRICK_START="TRICK_START",e.WAIT_FOR_CARD="WAIT_FOR_CARD",e.PLAYER_CARD="PLAYER_CARD",e.PLAYER_TRICK="PLAYER_TRICK",e))(je||{});const Ql={key:0},ei={class:"flex gap-2 place-content-center"},ti={key:1},ni={class:"top-52 text-white font-bold text-6xl absolute text-center w-full"},si={class:"top-64 text-white font-bold text-6xl absolute text-center w-full"},ri={key:0},oi={class:"absolute left-0 top-1/2 transform -translate-y-1/2"},li={class:"absolute bottom-0 w-full"},ii={class:"flex flex-row gap-3 w-fit mx-auto justify-center"},ci=cr({__name:"App",setup(e){const t=me([]),n=me("Schafkopf"),s=me(""),r=me(),o=me([]),l=me(0),c=me(),u=me(!0);function d(){j("startsimulation")}function h(){j("stopsimulation")}function y(){o.value=[],j("showtrumpf")}function T(){o.value=[],j("showfarben")}function S(I){j(I)}function j(I){r.value&&(r.value.send(I),console.log("Sent message to server:",I))}function $(I){var C;switch(I.gamePhase){case je.GAME_START:n.value="Spiel startet",u.value=!1,l.value=8;break;case je.TRICK_START:n.value="Runde startet",o.value=[],c.value=void 0,s.value="";break;case je.WAIT_FOR_CARD:n.value="Spieler "+I.currentPlayer+" muss eine Karte legen.";break;case je.PLAYER_CARD:n.value="Spieler "+I.currentPlayer+" hat eine Karte gespielt.",I.currentPlayer===0&&l.value--,I.trumpf?s.value="TRUMPF":s.value=((C=I.color)==null?void 0:C.toString())??"ERROR",o.value.push(I.card);break;case je.PLAYER_TRICK:n.value="Spieler "+I.currentPlayer+" sticht.",c.value=I.card;break;case je.GAME_STOP:u.value=!0;break;default:n.value="Fehler"}}return dr(()=>{const I="10.6.9.69";r.value=new WebSocket("ws://"+I+":8080/schafkopf-events/"),r.value.addEventListener("open",C=>{console.log("WebSocket connection opened:",C)}),r.value.addEventListener("message",C=>{const H=JSON.parse(C.data);console.log(H),"gamestate"in H?(console.log(H.gamestate),$(H.gamestate)):console.log("Invalid BackendMessage format: ",C)}),r.value.addEventListener("close",C=>{console.log("WebSocket connection closed:",C)}),r.value.addEventListener("error",C=>{console.error("WebSocket error:",C)})}),(I,C)=>(ee(),Ae("div",null,[(ee(!0),Ae(ue,null,ls(t.value,H=>(ee(),Ae("div",null,on(H),1))),256)),u.value?(ee(),Ae("div",Ql,[F("div",ei,[F("button",{onClick:C[0]||(C[0]=H=>S("setgame:sauspiel"))},"Sauspiel"),F("button",{onClick:C[1]||(C[1]=H=>S("setgame:herzsolo"))},"herzsolo"),F("button",{onClick:C[2]||(C[2]=H=>S("setgame:eichelsolo"))},"eichelsolo"),F("button",{onClick:C[3]||(C[3]=H=>S("setgame:blattsolo"))},"blattsolo"),F("button",{onClick:C[4]||(C[4]=H=>S("setgame:schellsolo"))},"schellsolo"),F("button",{onClick:C[5]||(C[5]=H=>S("setgame:eichelwenz"))},"eichelwenz"),F("button",{onClick:C[6]||(C[6]=H=>S("setgame:blattwenz"))},"blattwenz"),F("button",{onClick:C[7]||(C[7]=H=>S("setgame:herzwenz"))},"herzwenz"),F("button",{onClick:C[8]||(C[8]=H=>S("setgame:schellwenz"))},"schellwenz"),F("button",{onClick:C[9]||(C[9]=H=>S("setgame:eichelgeier"))},"eichelgeier"),F("button",{onClick:C[10]||(C[10]=H=>S("setgame:blattgeier"))},"blattgeier"),F("button",{onClick:C[11]||(C[11]=H=>S("setgame:herzgeier"))},"herzgeier"),F("button",{onClick:C[12]||(C[12]=H=>S("setgame:schellgeier"))},"schellgeier"),F("button",{onClick:C[13]||(C[13]=H=>S("setgame:geier"))},"Geier"),F("button",{onClick:C[14]||(C[14]=H=>S("setgame:wenz"))},"Wenz")]),F("div",{class:"flex gap-2 place-content-center"},[F("button",{onClick:T},"Zeige alle Farben"),F("button",{onClick:y},"Zeige alle Trumpfkarten")]),F("div",{class:"flex gap-2 place-content-center"},[F("button",{class:"v-button",onClick:d},"Starten"),F("button",{class:"v-button",onClick:h},"Stoppen")])])):(ee(),Ae("div",ti,[F("div",{class:"flex gap-2 place-content-center"},[F("button",{class:"v-button",onClick:h},"Stoppen")]),F("h1",ni,on(s.value),1),F("h1",si,on(n.value),1),o.value.length>0?(ee(),Ae("div",ri,[o.value.length>0?(ee(),Ke(Ye,{key:0,card:o.value[0],class:"absolute card1 md"},null,8,["card"])):qe("",!0),o.value.length>1?(ee(),Ke(Ye,{key:1,card:o.value[1],class:"absolute card2 md"},null,8,["card"])):qe("",!0),o.value.length>2?(ee(),Ke(Ye,{key:2,card:o.value[2],class:"absolute card3 md"},null,8,["card"])):qe("",!0),o.value.length>3?(ee(),Ke(Ye,{key:3,card:o.value[3],class:"absolute card4 md"},null,8,["card"])):qe("",!0)])):qe("",!0),F("div",oi,[c.value?(ee(),Ke(Ye,{key:0,card:c.value,class:"xl"},null,8,["card"])):qe("",!0)]),F("div",li,[F("div",ii,[(ee(!0),Ae(ue,null,ls(l.value,H=>(ee(),Ke(Ye,{card:Xs(Ar).BACK,class:"sm"},null,8,["card"]))),256))])])]))]))}});ql(ci).mount("#app");
diff --git a/Backend/src/main/resources/web-content/assets/vue.svg b/Backend/src/main/resources/web-content/assets/vue.svg
deleted file mode 100644
index 770e9d3..0000000
--- a/Backend/src/main/resources/web-content/assets/vue.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/Backend/src/main/resources/web-content/index.html b/Backend/src/main/resources/web-content/index.html
deleted file mode 100644
index 07c4915..0000000
--- a/Backend/src/main/resources/web-content/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
- Vite + Vue
-
-
-
-
-
-
-
-
diff --git a/Frontend/package.json b/Frontend/package.json
index 04226c4..bdb8f57 100644
--- a/Frontend/package.json
+++ b/Frontend/package.json
@@ -5,7 +5,7 @@
"type": "module",
"scripts": {
"dev": "vite",
- "build": "vue-tsc && vite build",
+ "build": "vue-tsc && vite build --emptyOutDir",
"preview": "vite preview"
},
"dependencies": {
diff --git a/Frontend/src/App.vue b/Frontend/src/App.vue
index b188aba..748687f 100644
--- a/Frontend/src/App.vue
+++ b/Frontend/src/App.vue
@@ -134,20 +134,20 @@ onMounted(() => {
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/Frontend/vite.config.ts b/Frontend/vite.config.ts
index 05c1740..2c3b0a6 100644
--- a/Frontend/vite.config.ts
+++ b/Frontend/vite.config.ts
@@ -1,7 +1,10 @@
-import { defineConfig } from 'vite'
+import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
export default defineConfig({
- plugins: [vue()],
+ plugins: [vue()],
+ build: {
+ outDir: '../Backend/src/main/resources/web-content',
+ },
})