card locking and event triggering WIP

This commit is contained in:
2024-04-25 00:32:40 +02:00
parent cb3a470f53
commit 56cbe9bab4
6 changed files with 81 additions and 72 deletions
+38 -35
View File
@@ -1,11 +1,15 @@
<script setup lang="ts">
const props = defineProps(['player', 'current_team'])
const teams = useState<{ [key: string]: any }>('teams')
const effects = useState<{ [key: string]: any }>('effects')
const self = useState<string>('self')
const turns = useState<{ [key: string]: any }>('turns')
const socket = useState<WebSocket>('socket')
const isTurn = computed(() => props.player.team == props.current_team)
const isSelf = computed(() => props.player.uuid == self.value)
const selfTurn = computed(() => turns.value[props.player?.turn as string])
const discard_wrapped = ref(false)
@@ -19,27 +23,27 @@ function playAllCards() {
function playCard(cardId: string) {
socket.value.send(JSON.stringify({
type: "action",
data_type: "play_cards",
data_type: "play_card",
data: cardId
}))
}
function draw() {
function lockCard(cardId: string) {
socket.value.send(JSON.stringify({
type: "action",
data_type: "draw",
data: 1
}))
}
function play_from_discard(cardId: string) {
socket.value.send(JSON.stringify({
type: "temp_action",
data_type: "play_from_discard",
data_type: "lock_card",
data: cardId
}))
}
function useEffect(effectId: string, target?: string) {
console.log({ effect_id: effectId, target })
socket.value.send(JSON.stringify({
type: "action",
data_type: "use_effect",
data: { effect_id: effectId, target }
}))
}
function discard(cardId: string) {
socket.value.send(JSON.stringify({
type: "action",
@@ -48,21 +52,6 @@ function discard(cardId: string) {
}))
}
function sacrifice(cardId: any) {
socket.value.send(JSON.stringify({
type: "action",
data_type: "sacrifice",
data: cardId
}))
}
function put_on_stack_from_discard(cardId: any) {
socket.value.send(JSON.stringify({
type: "temp_action",
data_type: "put_on_stack_from_discard",
data: cardId
}))
}
function setHealth(event: Event) {
socket.value.send(JSON.stringify({
type: "temp_action",
@@ -74,6 +63,19 @@ function setHealth(event: Event) {
<template>
<div :class="'player ' + (isTurn ? 'turn' : '')">
<div id="turn" v-if="turns[props.player?.turn]">
champions_health = {{ turns[props.player?.turn].champions_health }} <br>
heal_reserve = {{ turns[props.player?.turn].heal_reserve }} <br>
damage_reserve = {{ turns[props.player?.turn].damage_reserve }} <br>
gold_reserve = {{ turns[props.player?.turn].gold_reserve }} <br>
discard_markers = {{ turns[props.player?.turn].discard_markers }} <br>
effects_availables = <div v-for="e in turns[props.player?.turn].effects_availables" :key="e"
@click="useEffect(e)">
{{ effects[e].effect + '*' + 1 }}
</div>
</div>
<div v-if="isSelf"><b>YOU</b></div>
username = <b>{{ props.player.username }}</b>
<br>
@@ -85,7 +87,7 @@ function setHealth(event: Event) {
<div class="cards_container">
<CardPreview :data="c" v-for="c in props.player.hand">
<button v-if="isSelf && isTurn" @click="playCard(c)">PLAY</button>
<button v-if="isSelf && isTurn" @click="discard(c)">DISCARD</button>
<button v-if="isSelf && isTurn && selfTurn.discard_markers > 0" @click="discard(c)">DISCARD</button>
</CardPreview>
</div>
<button v-if="isSelf && isTurn && props.player.hand.length > 1" @click="playAllCards">PLAY
@@ -93,15 +95,16 @@ function setHealth(event: Event) {
<br>
board =
<div class="cards_container">
<CardPreview :data="c" v-for="c in props.player.board">
<button v-if="isSelf && isTurn" @click="discard(c)">DISCARD</button>
<button v-if="isSelf && isTurn" @click="sacrifice(c)">SACRIFICE</button>
<CardPreview :data="c" v-for="c in props.player.board"
:locked="turns[props.player?.turn].cards_locked.includes(c)">
<button v-if="isSelf && isTurn && selfTurn.discard_markers > 0" @click="discard(c)">DISCARD</button>
<button v-if="isSelf && isTurn && selfTurn.discard_markers == 0" @click="lockCard(c)">LOCK</button>
</CardPreview>
</div>
<br>
stack =
<CardSlot :stack="props.player.stack_pile">
<button v-if="isSelf && isTurn" @click="draw">DRAW</button>
<!-- <button v-if="isSelf && isTurn" @click="draw">DRAW</button> -->
</CardSlot>
<br>
discard =
@@ -110,17 +113,17 @@ function setHealth(event: Event) {
<input type="checkbox" v-model="discard_wrapped" />
<CardPreview v-if="!discard_wrapped" :data="props.player.discard_pile.at(-1)">
<button v-if="isSelf && isTurn" @click="play_from_discard(props.player.discard_pile.at(-1))">DRAW</button>
<!-- <button v-if="isSelf && isTurn" @click="play_from_discard(props.player.discard_pile.at(-1))">DRAW</button>
<button v-if="isSelf && isTurn" @click="put_on_stack_from_discard(props.player.discard_pile.at(-1))">PUT ON
STACK</button>
<button v-if="isSelf && isTurn" @click="sacrifice(props.player.discard_pile.at(-1))">SACRIFICE</button>
<button v-if="isSelf && isTurn" @click="sacrifice(props.player.discard_pile.at(-1))">SACRIFICE</button> -->
</CardPreview>
<template v-if="discard_wrapped" v-for="c in props.player.discard_pile">
<CardPreview :data="c">
<button v-if="isSelf && isTurn" @click="play_from_discard(c)">DRAW</button>
<!-- <button v-if="isSelf && isTurn" @click="play_from_discard(c)">DRAW</button>
<button v-if="isSelf && isTurn" @click="put_on_stack_from_discard(c)">PUT ON STACK</button>
<button v-if="isSelf && isTurn" @click="sacrifice(c)">SACRIFICE</button>
<button v-if="isSelf && isTurn" @click="sacrifice(c)">SACRIFICE</button> -->
</CardPreview>
</template>