2021-08-15 16:52:15 +00:00
|
|
|
<template>
|
|
|
|
<div class="play">
|
2021-08-26 10:23:32 +00:00
|
|
|
<div class="play__layout">
|
2021-09-03 19:53:58 +00:00
|
|
|
<div :class="['play__layout-playground', cssLayoutClass ]">
|
2021-08-26 10:23:32 +00:00
|
|
|
<Quote :text="quote" />
|
2021-08-30 16:21:14 +00:00
|
|
|
<Sources :sources="sources" :selectable="selectable" />
|
2021-08-26 10:23:32 +00:00
|
|
|
</div>
|
|
|
|
<div class="play__layout-right-column">
|
|
|
|
<PlayerList :players="players" />
|
2021-09-03 21:00:06 +00:00
|
|
|
<ConfirmButton v-if="selectable"/>
|
2021-08-26 10:23:32 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2021-08-15 16:52:15 +00:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
computed: {
|
2021-09-03 19:53:58 +00:00
|
|
|
cssLayoutClass() {
|
2021-09-04 23:51:10 +00:00
|
|
|
if (this.$store.state.game.phase === 'reveal-start') {
|
2021-09-05 18:46:29 +00:00
|
|
|
return 'play__layout-playground__fade-out'
|
2021-09-04 23:51:10 +00:00
|
|
|
} else if (this.$store.state.game.phase === 'reveal-show-count') {
|
2021-09-05 18:46:29 +00:00
|
|
|
return 'play__layout-playground__fade-in'
|
2021-09-03 19:53:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return
|
|
|
|
},
|
2021-08-15 16:52:15 +00:00
|
|
|
gamePhase() {
|
|
|
|
return this.$store.state.game.phase
|
|
|
|
},
|
|
|
|
quote() {
|
|
|
|
return this.$store.state.round.quote
|
|
|
|
},
|
2021-08-15 20:04:24 +00:00
|
|
|
sources() {
|
|
|
|
return this.$store.state.round.sources
|
|
|
|
},
|
2021-08-26 10:23:32 +00:00
|
|
|
players() {
|
|
|
|
return this.$store.state.players.players
|
|
|
|
},
|
2021-08-30 16:21:14 +00:00
|
|
|
selectable() {
|
|
|
|
const userId = this.$store.state.engine.user.id
|
|
|
|
const selection = this.$store.state.round.selections[userId]
|
|
|
|
|
|
|
|
if (this.$store.state.game.phase != 'select-quote') return false
|
|
|
|
if (typeof selection === 'undefined') return true
|
|
|
|
return !selection
|
|
|
|
},
|
2021-08-15 16:52:15 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
html,
|
|
|
|
body,
|
|
|
|
#__nuxt,
|
|
|
|
#__layout,
|
|
|
|
.layout-default,
|
|
|
|
.page-play {
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.play {
|
|
|
|
position: relative;
|
2021-08-15 20:04:24 +00:00
|
|
|
width: 100%;
|
2021-08-15 16:52:15 +00:00
|
|
|
height: 100%;
|
2021-08-26 10:23:32 +00:00
|
|
|
|
|
|
|
&__layout {
|
|
|
|
display: flex;
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
2021-09-03 19:53:58 +00:00
|
|
|
perspective: 1200px;
|
2021-08-26 10:23:32 +00:00
|
|
|
|
|
|
|
&-playground {
|
|
|
|
position: relative;
|
|
|
|
flex-grow: 1;
|
2021-09-03 19:53:58 +00:00
|
|
|
|
2021-09-05 18:46:29 +00:00
|
|
|
&__fade-out {
|
2021-09-06 20:20:47 +00:00
|
|
|
animation: play-fade-out .5s ease-in-out;
|
2021-09-03 19:53:58 +00:00
|
|
|
animation-fill-mode: forwards;
|
|
|
|
}
|
|
|
|
|
2021-09-05 18:46:29 +00:00
|
|
|
&__fade-in {
|
2021-09-06 20:20:47 +00:00
|
|
|
animation: play-fade-in .5s linear;
|
2021-09-03 19:53:58 +00:00
|
|
|
animation-fill-mode: forwards;
|
|
|
|
}
|
2021-08-26 10:23:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
&-right-column {
|
|
|
|
width: 200px;
|
|
|
|
margin: 16px 16px 0 0;
|
|
|
|
}
|
2021-09-03 19:53:58 +00:00
|
|
|
|
2021-08-26 10:23:32 +00:00
|
|
|
}
|
2021-09-03 19:53:58 +00:00
|
|
|
|
|
|
|
}
|
2021-09-06 20:20:47 +00:00
|
|
|
@keyframes play-fade-out {
|
2021-09-05 18:46:29 +00:00
|
|
|
to { opacity: 0; }
|
2021-09-03 19:53:58 +00:00
|
|
|
}
|
2021-09-06 20:20:47 +00:00
|
|
|
@keyframes play-fade-in {
|
2021-09-05 18:46:29 +00:00
|
|
|
0% { opacity: 0; }
|
|
|
|
90% { opacity: 100%; }
|
2021-08-15 16:52:15 +00:00
|
|
|
}
|
|
|
|
</style>
|