feat: show quote and sources in play mode
This commit is contained in:
parent
142f2e289c
commit
cc12d27c46
@ -1,9 +1,66 @@
|
|||||||
<template>
|
<template>
|
||||||
<p>Playground.vue</p>
|
<div class="playground__container">
|
||||||
|
<div class="playground__area">
|
||||||
|
<div class="playground__sources">
|
||||||
|
<SourceCard v-for="source in round.sources" :key="source.id" :source="source" />
|
||||||
|
</div>
|
||||||
|
<div class="playground__spacer" />
|
||||||
|
<div class="playground__quote">
|
||||||
|
<QuoteCard :quote="quote" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="playground__players-list">
|
||||||
|
<PlayerList :players="players" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { usePlayersStore } from '@/stores/PlayersStore'
|
||||||
|
import { useRoundStore } from '@/stores/RoundStore'
|
||||||
|
|
||||||
|
const players = usePlayersStore().players
|
||||||
|
const round = useRoundStore().round
|
||||||
|
const quote = {
|
||||||
|
quote: round.quote,
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
.playground {
|
||||||
|
&__container {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__area {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
flex-grow: 1;
|
||||||
|
margin: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__sources {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
gap: 24px 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__spacer {
|
||||||
|
flex-grow: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__quote {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
flex-grow: 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__players-list {
|
||||||
|
width: 200px;
|
||||||
|
margin: 16px 16px 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
28
client/src/components/SourceCard.vue
Normal file
28
client/src/components/SourceCard.vue
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div class="source-card__container">
|
||||||
|
{{ source.name }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
defineProps<{
|
||||||
|
source: {
|
||||||
|
id: string
|
||||||
|
name: string
|
||||||
|
},
|
||||||
|
}>()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.source-card {
|
||||||
|
&__container {
|
||||||
|
display: flex;
|
||||||
|
width: 180px;
|
||||||
|
height: 40px;
|
||||||
|
border: 3px solid white;
|
||||||
|
border-radius: 8px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,6 +1,7 @@
|
|||||||
import { useEngineStore } from "@/stores/EngineStore"
|
import { useEngineStore } from "@/stores/EngineStore"
|
||||||
import { useUserinfoStore } from "@/stores/UserinfoStore"
|
import { useUserinfoStore } from "@/stores/UserinfoStore"
|
||||||
import { useGameinfoStore } from "@/stores/GameinfoStore"
|
import { useGameinfoStore } from "@/stores/GameinfoStore"
|
||||||
|
import { useRoundStore } from "@/stores/RoundStore"
|
||||||
import { usePlayersStore } from "@/stores/PlayersStore"
|
import { usePlayersStore } from "@/stores/PlayersStore"
|
||||||
|
|
||||||
export async function fetchUpdate() {
|
export async function fetchUpdate() {
|
||||||
@ -29,6 +30,7 @@ export async function fetchUpdate() {
|
|||||||
|
|
||||||
useEngineStore().setJson(response)
|
useEngineStore().setJson(response)
|
||||||
useGameinfoStore().setGameinfo(response.game)
|
useGameinfoStore().setGameinfo(response.game)
|
||||||
|
useRoundStore().setRound(response.game.round)
|
||||||
usePlayersStore().setPlayers(response.game.players)
|
usePlayersStore().setPlayers(response.game.players)
|
||||||
|
|
||||||
// apply rate limit
|
// apply rate limit
|
||||||
|
29
client/src/stores/RoundStore.ts
Normal file
29
client/src/stores/RoundStore.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import { defineStore } from 'pinia'
|
||||||
|
|
||||||
|
export type Source = {
|
||||||
|
id: string
|
||||||
|
name: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Round = {
|
||||||
|
quote: string
|
||||||
|
sources: Array<Source>
|
||||||
|
}
|
||||||
|
|
||||||
|
export const useRoundStore = defineStore('RoundStore', {
|
||||||
|
state: () => {
|
||||||
|
return {
|
||||||
|
round: {
|
||||||
|
quote: '',
|
||||||
|
sources: [],
|
||||||
|
} as Round,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
setRound(round: Round): void {
|
||||||
|
round = round || {} as Round
|
||||||
|
this.round.quote = round.quote
|
||||||
|
this.round.sources = round.sources
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user