Skip to content
This repository has been archived by the owner on Feb 16, 2023. It is now read-only.

Commit

Permalink
feat: characters can have avatars
Browse files Browse the repository at this point in the history
  • Loading branch information
villetakanen committed Nov 27, 2021
1 parent 8894363 commit 199a365
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
15 changes: 13 additions & 2 deletions src/components/character/CharacterMetaForm.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
v-model="name"
:label="$t('character.meta.name')"
/>
<AvatarSelector v-model="avatarURL" />
</Column>
</template>

Expand All @@ -12,10 +13,11 @@ import { computed, defineComponent } from 'vue'
import { Character, useCharacters } from '@/state/characters'
import Column from '../layout/Column.vue'
import Textfield from '../form/Textfield.vue'
import AvatarSelector from '../avatar/AvatarSelector.vue'
export default defineComponent({
name: 'CharacterMetaForm',
components: { Column, Textfield },
components: { Column, Textfield, AvatarSelector },
props: {
characterId: {
type: String,
Expand All @@ -35,7 +37,16 @@ export default defineComponent({
}
})
return { character, name }
const avatarURL = computed({
get: () => {
return character.value.avatarURL
},
set: (value) => {
character.value.avatarURL = value
}
})
return { character, name, avatarURL }
}
})
</script>
11 changes: 11 additions & 0 deletions src/components/profile/characters/CharacterListCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
{{ character.name }}
</router-link>
</h3>
<div
v-if="character.avatarURL"
class="characterAvatar rise-1"
:style="`background-image: url(${character.avatarURL})`"
/>
</Card>
</template>

Expand Down Expand Up @@ -33,4 +38,10 @@ export default defineComponent({
<style lang="sass" scoped>
.CharacterListCard.card+.CharacterListCard.card
margin-top: 0
.characterAvatar
height: 72px
width: 72px
border-radius: 50%
background-size: cover
</style>
5 changes: 4 additions & 1 deletion src/state/characters/Character.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export class Character {
public stats: Map<string, number>
private math = create(all)
public characterSheetType: string
public avatarURL: string|undefined

constructor (id?: string, data?:DocumentData) {
this.id = id || ''
Expand All @@ -51,6 +52,7 @@ export class Character {
if (data?.characterSheetType) {
this.applyCharacterSheet(data?.characterSheetType as string)
}
this.avatarURL = data?.avatarURL || undefined
}

private static parseStats (stats:{ [key: string]: number }): Map<string, number> {
Expand Down Expand Up @@ -145,7 +147,8 @@ export class Character {
site: this.site,
characterSheetType: this.characterSheetType,
player: this.player,
stats: Object.fromEntries(this.stats.entries()) as { [key: string]: number|string|boolean }
stats: Object.fromEntries(this.stats.entries()) as { [key: string]: number|string|boolean },
avatarURL: this.avatarURL
}
Object.keys(dry).forEach(k => dry[k] === undefined ? delete dry[k] : null)
return dry as { [x: string]: string|CharacterStat }
Expand Down

0 comments on commit 199a365

Please sign in to comment.