Updating art

This commit is contained in:
thepaperpilot 2023-02-18 20:16:13 -06:00
parent 4d548f1a5d
commit 9c48a7658d
18 changed files with 91 additions and 136 deletions

View file

@ -14,6 +14,22 @@
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Mynerve&display=swap" rel="stylesheet">
<link rel="prefetch" href="Heart.png" />
<link rel="prefetch" href="Lvl 1_0.png" />
<link rel="prefetch" href="Lvl 1_1.png" />
<link rel="prefetch" href="Lvl 2_0.png" />
<link rel="prefetch" href="Lvl 2_1.png" />
<link rel="prefetch" href="Lvl 2_2.png" />
<link rel="prefetch" href="Lvl 3.png" />
<link rel="prefetch" href="Ludwig Coots.png" />
<link rel="prefetch" href="Maid Coots.png" />
<link rel="prefetch" href="Mogul Mail Coots.png" />
<link rel="prefetch" href="Mogul Money Coots.png" />
<link rel="prefetch" href="Normal Coots.png" />
<link rel="prefetch" href="QT Coots.png" />
<link rel="prefetch" href="Stanz Coots.png" />
<link rel="prefetch" href="Vespa Coots.png" />
<title>Profectus</title>
<meta name="description" content="A project made in Profectus"/>

BIN
public/Ludwig Coots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
public/Lvl 1_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

BIN
public/Lvl 1_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 B

BIN
public/Lvl 2_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 B

BIN
public/Lvl 2_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

BIN
public/Lvl 2_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

BIN
public/Lvl 3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 B

BIN
public/Maid Coots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
public/Mogul Mail Coots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
public/Normal Coots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
public/QT Coots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/Stanz Coots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/Vespa Coots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
public/heart.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

View file

@ -28,24 +28,20 @@
<img :src="characters[character.type].display" />
</span>
<span class="relevancy-display" v-if="character != null">
<span class="material-icons"> extension </span>
{{ character?.relevancy }}
<img :src="heart" />
<span>{{ character?.relevancy }}</span>
</span>
<span class="presence-display" v-if="character != null">
<span class="material-icons"> extension </span>
{{ character?.presence }}
<span>{{ character?.presence }}</span>
</span>
<span class="level-display" v-if="character != null">
<span class="level">{{ level }}</span>
<span class="segments">
<span
v-for="i in segments"
:key="i"
class="segment"
:class="{ filled: filledSegments >= i }"
>
</span>
</span>
<img :src="level1_0" v-if="character.exp === 1" />
<img :src="level1_1" v-if="character.exp === 2" />
<img :src="level2_0" v-if="character.exp === 3" />
<img :src="level2_1" v-if="character.exp === 4" />
<img :src="level2_2" v-if="character.exp === 5" />
<img :src="level3" v-if="character.exp === 6" />
</span>
</div>
</Tooltip>
@ -54,39 +50,20 @@
<script setup lang="ts">
import Tooltip from "features/tooltips/Tooltip.vue";
import { Direction } from "util/common";
import { computed, watch } from "vue";
import { characters } from "./projEntry";
import heart from "../../public/Heart.png";
import level1_0 from "../../public/Lvl 1_0.png";
import level1_1 from "../../public/Lvl 1_1.png";
import level2_0 from "../../public/Lvl 2_0.png";
import level2_1 from "../../public/Lvl 2_1.png";
import level2_2 from "../../public/Lvl 2_2.png";
import level3 from "../../public/Lvl 3.png";
const props = defineProps<{
defineProps<{
character?: Character | null;
isSelected?: boolean;
selected?: Character | null;
}>();
const level = computed(() => {
const exp = props.character?.exp ?? 0;
if (exp < 3) {
return 1;
}
if (exp < 6) {
return 2;
}
return 3;
});
const segments = computed(() => {
const exp = props.character?.exp ?? 0;
if (exp < 3) {
return 2;
}
return 3;
});
const filledSegments = computed(() => {
const exp = props.character?.exp ?? 0;
if (exp < 3) {
return exp - 1;
}
return exp - 3;
});
</script>
<style scoped>
@ -104,26 +81,20 @@ const filledSegments = computed(() => {
cursor: pointer;
}
.character-display {
text-shadow: 3px 3px 5px black;
width: 100%;
height: 100%;
}
.character-display img {
max-width: 100%;
max-height: 100%;
aspect-ratio: 1/1;
image-rendering: pixelated;
width: 8vw;
height: 8vw;
}
.character::after {
content: "";
background: grey;
position: absolute;
top: 50%;
top: 67.5%;
left: 0;
right: 0;
bottom: 0;
bottom: -12.5%;
border-radius: 50%;
z-index: -1;
}
@ -136,7 +107,7 @@ const filledSegments = computed(() => {
left: 0;
right: 0;
background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%2388C0D0' stroke-width='8' stroke-dasharray='10%25%2c90%25' stroke-dashoffset='5' stroke-linecap='square'/%3e%3c/svg%3e");
transform: scale(1.5);
z-index: 1;
}
.character:not(.selected):not(.empty):hover::before {
@ -146,31 +117,42 @@ const filledSegments = computed(() => {
bottom: 0;
left: 0;
right: 0;
background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%2388C0D0' stroke-width='2' stroke-dasharray='10%25%2c90%25' stroke-dashoffset='5' stroke-linecap='square'/%3e%3c/svg%3e");
transform: scale(1.5);
background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%2388C0D0' stroke-width='4' stroke-dasharray='10%25%2c90%25' stroke-dashoffset='5' stroke-linecap='square'/%3e%3c/svg%3e");
z-index: 1;
}
.relevancy-display {
position: absolute;
top: 0;
top: -15%;
left: 0;
color: var(--feature-foreground);
transform: translate(-50%, -50%);
}
.relevancy-display .material-icons {
.relevancy-display img {
position: absolute;
transform: translate(-45%, -45%);
z-index: -1;
width: 8vw;
height: 8vw;
image-rendering: pixelated;
}
.relevancy-display span {
font-family: "Roboto Mono";
font-size: large;
color: white;
text-shadow: -1px 1px 0 black, 1px 1px 0 black, 1px -1px 0 black, -1px -1px 0 black;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: var(--accent1);
font-size: 200%;
z-index: -1;
}
.presence-display {
position: absolute;
top: 0;
right: 0;
transform: translate(-50%, -50%);
color: var(--feature-foreground);
}
@ -186,58 +168,14 @@ const filledSegments = computed(() => {
.level-display {
position: absolute;
bottom: -10%;
right: -20%;
color: var(--accent2);
font-size: xx-large;
text-shadow: -1px 1px 0 var(--outline), 1px 1px 0 var(--outline), 1px -1px 0 var(--outline),
-1px -1px 0 var(--outline);
bottom: -15%;
right: -5%;
transform: translate(50%, 50%);
}
.level {
background: var(--locked);
border-radius: 4px;
border-top-left-radius: 50%;
border-bottom-left-radius: 0;
border: solid 2px var(--raised-background);
padding-left: 4px;
padding-right: 4px;
}
.level,
.level::before {
font-family: "Mynerve", cursive;
}
.level::before {
content: "lv";
font-size: large;
}
.segments {
position: absolute;
right: calc(100% - 2px);
width: 100%;
height: 25%;
bottom: -2px;
background: var(--locked);
border-radius: 20px 0 0 0;
border: solid 2px var(--raised-background);
display: flex;
overflow: hidden;
}
.segment {
width: 100%;
height: 100%;
}
.segment:not(:last-child) {
border-right: solid 3px var(--raised-background);
}
.segment.filled {
background-color: var(--accent2);
.level-display img {
width: 8vw;
height: 8vw;
}
.move-indicator {

View file

@ -9,63 +9,64 @@ import CharacterSlot from "./CharacterSlot.vue";
import "./socket";
import "./common.css";
import { emit, nickname } from "./socket";
import coots from "../../public/coots.png";
import ludwig from "../../public/Ludwig Coots.png";
import maid from "../../public/Maid Coots.png";
import mail from "../../public/Mogul Mail Coots.png";
import money from "../../public/Mogul Money Coots.png";
import coots from "../../public/Normal Coots.png";
import qt from "../../public/QT Coots.png";
import stanz from "../../public/Stanz Coots.png";
import vespa from "../../public/Vespa Coots.png";
import { createReset } from "features/reset";
export const characters: Record<string, CharacterInfo> = {
coots: {
nickname: "Coots Prime",
nickname: "Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
},
ludwig: {
nickname: "Ludwig",
nickname: "Ludwig Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
display: ludwig
},
qt: {
nickname: "QtCinderella",
nickname: "Qt Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
display: qt
},
ders: {
nickname: "Ders",
maid: {
nickname: "Maid Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
display: maid
},
slime: {
nickname: "Slime",
mail: {
nickname: "Mogul Mail Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
display: mail
},
stanz: {
nickname: "Stanz",
nickname: "Stanz Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
display: stanz
},
beast: {
nickname: "Mr.Beast",
money: {
nickname: "Mogul Money Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
display: money
},
car: {
nickname: "Red Car",
vespa: {
nickname: "Vespa Coots",
initialRelevancy: 1,
initialPresence: 1,
display: coots
},
hasan: {
nickname: "Hasanabi",
initialRelevancy: 1,
initialPresence: 1,
display: coots
display: vespa
}
};