|
|
|
@@ -1,53 +1,59 @@ |
|
|
|
<template> |
|
|
|
<div @click="$emit('select')" class="statblock"> |
|
|
|
<h2 class="name" v-if="subject.perspective === firstperson"> |
|
|
|
You |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ subject.title }}</div> |
|
|
|
<div class="tooltip-body">{{ subject.desc }}</div> |
|
|
|
</div> |
|
|
|
</h2> |
|
|
|
<h2 class="name" v-if="subject.perspective !== firstperson"> |
|
|
|
{{subject.name.all.capital}} |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ subject.title }}</div> |
|
|
|
<div class="tooltip-body">{{ subject.desc }}</div> |
|
|
|
</div> |
|
|
|
</h2> |
|
|
|
<div class="stat-entry" v-for="vigor in Object.keys(subject.vigors)" v-bind:key="vigor"> |
|
|
|
<div class="healthbar" v-bind:style="{'--fullness': (subject.vigors[vigor]/subject.maxVigors[vigor]*100) + '%', '--color': vigorColor(subject.vigors[vigor], subject.maxVigors[vigor]) }"> |
|
|
|
<i :class="vigorIcons[vigor]" /> |
|
|
|
<div class="healthbar-value"> {{ subject.vigors[vigor].toFixed(0) + '/' + subject.maxVigors[vigor].toFixed(0) }}</div> |
|
|
|
</div> |
|
|
|
<div class="statblock-shader statblock-shader-selected"></div> |
|
|
|
<div class="statblock-shader statblock-shader-dead"></div> |
|
|
|
<div class="statblock-shader statblock-shader-eaten"></div> |
|
|
|
<div class="statblock-shader statblock-shader-hover"></div> |
|
|
|
<div class="statblock-content"> |
|
|
|
<h2 class="name" v-if="subject.perspective === firstperson"> |
|
|
|
You |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ vigor }}</div> |
|
|
|
<div class="tooltip-body">{{ vigorDescs[vigor] }}</div> |
|
|
|
<div class="tooltip-title">{{ subject.title }}</div> |
|
|
|
<div class="tooltip-body">{{ subject.desc }}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="stat-line stats"> |
|
|
|
<div :class="statClass(subject.stats[stat], subject.baseStats[stat])" v-for="stat in Object.keys(subject.stats)" v-bind:key="stat"> |
|
|
|
<i :class="statIcons[stat]" /> |
|
|
|
<div class="stat-value">{{subject.stats[stat].toFixed(0)}}</div> |
|
|
|
</h2> |
|
|
|
<h2 class="name" v-if="subject.perspective !== firstperson"> |
|
|
|
{{subject.name.all.capital}} |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ stat }}</div> |
|
|
|
<div class="tooltip-body">{{ statDescs[stat] }}</div> |
|
|
|
<div class="tooltip-title">{{ subject.title }}</div> |
|
|
|
<div class="tooltip-body">{{ subject.desc }}</div> |
|
|
|
</div> |
|
|
|
</h2> |
|
|
|
<div class="stat-entry" v-for="vigor in Object.keys(subject.vigors)" v-bind:key="vigor"> |
|
|
|
<div class="healthbar" v-bind:style="{'--fullness': (subject.vigors[vigor]/subject.maxVigors[vigor]*100) + '%', '--color': vigorColor(subject.vigors[vigor], subject.maxVigors[vigor]) }"> |
|
|
|
<i :class="vigorIcons[vigor]" /> |
|
|
|
<div class="healthbar-value"> {{ subject.vigors[vigor].toFixed(0) + '/' + subject.maxVigors[vigor].toFixed(0) }}</div> |
|
|
|
</div> |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ vigor }}</div> |
|
|
|
<div class="tooltip-body">{{ vigorDescs[vigor] }}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="stat-line stats"> |
|
|
|
<div :class="statClass(subject.stats[stat], subject.baseStats[stat])" v-for="stat in Object.keys(subject.stats)" v-bind:key="stat"> |
|
|
|
<i :class="statIcons[stat]" /> |
|
|
|
<div class="stat-value">{{subject.stats[stat].toFixed(0)}}</div> |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ stat }}</div> |
|
|
|
<div class="tooltip-body">{{ statDescs[stat] }}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="stat-line vore-stats"> |
|
|
|
<div class="stat-entry" v-for="stat in Object.keys(subject.voreStats)" v-bind:key="stat"> |
|
|
|
<i :class="voreStatIcons[stat]" /> |
|
|
|
<div class="stat-value">{{subject.voreStats[stat].toFixed(0)}}</div> |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ stat }}</div> |
|
|
|
<div class="tooltip-body">{{ voreStatDescs[stat] }}</div> |
|
|
|
<div class="stat-line vore-stats"> |
|
|
|
<div class="stat-entry" v-for="stat in Object.keys(subject.voreStats)" v-bind:key="stat"> |
|
|
|
<i :class="voreStatIcons[stat]" /> |
|
|
|
<div class="stat-value">{{subject.voreStats[stat].toFixed(0)}}</div> |
|
|
|
<div class="tooltip-template"> |
|
|
|
<div class="tooltip-title">{{ stat }}</div> |
|
|
|
<div class="tooltip-body">{{ voreStatDescs[stat] }}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div>Status: {{subject.status}}</div> |
|
|
|
<button v-if="subject.perspective !== firstperson" @click="subject.perspective = firstperson">First-person</button> |
|
|
|
<button v-if="subject.perspective !== thirdperson" @click="subject.perspective = thirdperson">Third-person</button> |
|
|
|
<button class="if-not-selected" @click.stop="$emit('selectAlly')">Select ally as target</button> |
|
|
|
</div> |
|
|
|
<div>Status: {{subject.status}}</div> |
|
|
|
<button v-if="subject.perspective !== firstperson" @click="subject.perspective = firstperson">First-person</button> |
|
|
|
<button v-if="subject.perspective !== thirdperson" @click="subject.perspective = thirdperson">Third-person</button> |
|
|
|
<button class="if-not-selected" @click.stop="$emit('selectAlly')">Select ally as target</button> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
@@ -137,6 +143,9 @@ a { |
|
|
|
flex-basis: 100pt; |
|
|
|
margin: 0pt 4pt 0pt; |
|
|
|
user-select: none; |
|
|
|
position: relative; |
|
|
|
overflow: hidden; |
|
|
|
background: none; |
|
|
|
} |
|
|
|
|
|
|
|
.stat-line { |
|
|
|
@@ -213,19 +222,45 @@ a { |
|
|
|
color: green; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock[data-active] { |
|
|
|
background: #444; |
|
|
|
border-radius: 4px; |
|
|
|
.statblock-content { |
|
|
|
position: relative; |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
background: none; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock-shader { |
|
|
|
position: absolute; |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
opacity: 0%; |
|
|
|
pointer-events: none; |
|
|
|
z-index: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock[data-active-ally] { |
|
|
|
background: #744; |
|
|
|
border-radius: 4px; |
|
|
|
.statblock[data-eaten] .statblock-shader-eaten { |
|
|
|
background: green; |
|
|
|
opacity: 35%; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock[data-active] .stats, |
|
|
|
.statblock[data-active] .vore-stats { |
|
|
|
display: flex; |
|
|
|
.statblock[data-active] .statblock-shader-selected { |
|
|
|
background: white; |
|
|
|
opacity: 15%; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock[data-active-ally] .statblock-shader-selected-ally { |
|
|
|
background: #f88; |
|
|
|
opacity: 20%; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock[data-dead] .statblock-shader-dead { |
|
|
|
background: red; |
|
|
|
opacity: 50%; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock:hover .statblock-shader-hover { |
|
|
|
background: white; |
|
|
|
opacity: 10%; |
|
|
|
} |
|
|
|
|
|
|
|
.statblock[data-active] .if-not-selected { |
|
|
|
|