From 0233193bb70416fb82ffb7f15cff15c6d56b1d40 Mon Sep 17 00:00:00 2001 From: devxb Date: Wed, 25 Dec 2024 17:01:37 +0900 Subject: [PATCH 1/2] feat: guild draw and dessert fox rudolph --- .../gitanimals/guild/app/DrawGuildProxy.kt | 25 ++ .../gitanimals/guild/app/JoinGuildFacade.kt | 2 +- .../guild/controller/GuildController.kt | 6 + .../controller/response/GuildResponse.kt | 2 +- .../org/gitanimals/guild/domain/Guild.kt | 2 +- .../gitanimals/guild/domain/GuildFarmType.kt | 137 +++++++++- .../org/gitanimals/guild/domain/Svgs.kt | 54 ++++ .../gitanimals/render/app/DrawGuildFacade.kt | 49 ++++ .../org/gitanimals/render/domain/Mode.kt | 1 + .../gitanimals/render/domain/PersonaType.kt | 243 +++++++++++------- .../render/domain/UserRepository.kt | 9 + .../gitanimals/render/domain/UserService.kt | 4 + .../persona/animal/dessert-fox-rudolph.svg | 21 +- .../guild/domain/GuildServiceTest.kt | 2 +- 14 files changed, 454 insertions(+), 103 deletions(-) create mode 100644 src/main/kotlin/org/gitanimals/guild/app/DrawGuildProxy.kt create mode 100644 src/main/kotlin/org/gitanimals/guild/domain/Svgs.kt create mode 100644 src/main/kotlin/org/gitanimals/render/app/DrawGuildFacade.kt diff --git a/src/main/kotlin/org/gitanimals/guild/app/DrawGuildProxy.kt b/src/main/kotlin/org/gitanimals/guild/app/DrawGuildProxy.kt new file mode 100644 index 0000000..c38c224 --- /dev/null +++ b/src/main/kotlin/org/gitanimals/guild/app/DrawGuildProxy.kt @@ -0,0 +1,25 @@ +package org.gitanimals.guild.app + +import org.gitanimals.guild.domain.GuildService +import org.gitanimals.guild.domain.GuildService.Companion.loadMembers +import org.gitanimals.render.app.DrawGuildFacade +import org.springframework.stereotype.Service + +@Service +class DrawGuildProxy( + private val guildService: GuildService, + private val renderDrawGuildFacade: DrawGuildFacade, +) { + + fun drawGuild(id: Long): String { + val guild = guildService.getGuildById(id, loadMembers) + + return renderDrawGuildFacade.drawGuild( + title = guild.getTitle(), + totalContributions = guild.getTotalContributions(), + guildFarmType = guild.getGuildFarmType(), + userIds = guild.getMembers().map { it.userId } + guild.getLeaderUserId(), + personaIds = guild.getMembers().map { it.personaId } + guild.getLeaderPersonaId(), + ) + } +} diff --git a/src/main/kotlin/org/gitanimals/guild/app/JoinGuildFacade.kt b/src/main/kotlin/org/gitanimals/guild/app/JoinGuildFacade.kt index 91f4397..d7a0d21 100644 --- a/src/main/kotlin/org/gitanimals/guild/app/JoinGuildFacade.kt +++ b/src/main/kotlin/org/gitanimals/guild/app/JoinGuildFacade.kt @@ -69,7 +69,7 @@ class JoinGuildFacade( ) { sagaManager.startSync( InboxInputEvent.guildJoinRequest( - userId = guild.getLeaderId(), + userId = guild.getLeaderUserId(), newUserImage = member.profileImage, newUserName = member.username, guildTitle = guild.getTitle(), diff --git a/src/main/kotlin/org/gitanimals/guild/controller/GuildController.kt b/src/main/kotlin/org/gitanimals/guild/controller/GuildController.kt index 383e3c5..f3357c5 100644 --- a/src/main/kotlin/org/gitanimals/guild/controller/GuildController.kt +++ b/src/main/kotlin/org/gitanimals/guild/controller/GuildController.kt @@ -27,6 +27,7 @@ class GuildController( private val searchGuildFacade: SearchGuildFacade, private val changeMainPersonaFacade: ChangeMainPersonaFacade, private val leaveGuildFacade: LeaveGuildFacade, + private val drawGuildProxy: DrawGuildProxy, ) { @ResponseStatus(HttpStatus.OK) @@ -135,4 +136,9 @@ class GuildController( @RequestHeader(HttpHeaders.AUTHORIZATION) token: String, @PathVariable("guildId") guildId: Long, ) = leaveGuildFacade.leave(token, guildId) + + @GetMapping("/guilds/{guildId}/draw") + fun draw( + @PathVariable("guildId") guildId: Long, + ) = drawGuildProxy.drawGuild(guildId) } diff --git a/src/main/kotlin/org/gitanimals/guild/controller/response/GuildResponse.kt b/src/main/kotlin/org/gitanimals/guild/controller/response/GuildResponse.kt index c03a8c9..d0b8282 100644 --- a/src/main/kotlin/org/gitanimals/guild/controller/response/GuildResponse.kt +++ b/src/main/kotlin/org/gitanimals/guild/controller/response/GuildResponse.kt @@ -56,7 +56,7 @@ data class GuildResponse( body = guild.getBody(), guildIcon = guild.getGuildIcon(), leader = Leader( - userId = guild.getLeaderId().toString(), + userId = guild.getLeaderUserId().toString(), name = guild.getLeaderName(), contributions = guild.getContributions().toString(), personaId = guild.getLeaderPersonaId().toString(), diff --git a/src/main/kotlin/org/gitanimals/guild/domain/Guild.kt b/src/main/kotlin/org/gitanimals/guild/domain/Guild.kt index bc907a1..3ee647c 100644 --- a/src/main/kotlin/org/gitanimals/guild/domain/Guild.kt +++ b/src/main/kotlin/org/gitanimals/guild/domain/Guild.kt @@ -101,7 +101,7 @@ class Guild( waitMembers.add(waitMember) } - fun getLeaderId(): Long = leader.userId + fun getLeaderUserId(): Long = leader.userId fun accept(acceptUserId: Long) { val acceptUser = waitMembers.firstOrNull { it.userId == acceptUserId } ?: return diff --git a/src/main/kotlin/org/gitanimals/guild/domain/GuildFarmType.kt b/src/main/kotlin/org/gitanimals/guild/domain/GuildFarmType.kt index 85c494a..b58f1db 100644 --- a/src/main/kotlin/org/gitanimals/guild/domain/GuildFarmType.kt +++ b/src/main/kotlin/org/gitanimals/guild/domain/GuildFarmType.kt @@ -2,6 +2,141 @@ package org.gitanimals.guild.domain enum class GuildFarmType { - DUMMY, + DUMMY { + override fun loadComponent(name: String, commit: Long): String { + return dummyGuildFieldSvg.replace(NAME_FIX, name.toSvg(0.0, 3.0)) + .replace(COMMIT_FIX, commit.toSvg("commit", 260.0, 4.0)) + } + + override fun fillBackground(): String = + "" + + override fun drawBorder(): String = + "" + }, ; + + abstract fun loadComponent(name: String, commit: Long): String + + abstract fun fillBackground(): String + + abstract fun drawBorder(): String + + private companion object { + private const val NAME_FIX = "*{username}" + private const val COMMIT_FIX = "*{commit-count}" + private const val VISIT_FIX = "*{visit-count}" + + private val largeTextWidth = mapOf( + "A" to 20.0, + "B" to 20.0, + "C" to 20.0, + "D" to 20.0, + "E" to 20.0, + "F" to 20.0, + "G" to 20.0, + "H" to 20.0, + "I" to 14.0, + "J" to 20.0, + "K" to 20.0, + "L" to 20.0, + "M" to 23.0, + "N" to 23.0, + "O" to 20.0, + "P" to 20.0, + "Q" to 20.0, + "R" to 20.0, + "S" to 20.0, + "T" to 20.0, + "U" to 20.0, + "V" to 20.0, + "W" to 23.0, + "X" to 20.0, + "Y" to 20.0, + "Z" to 20.0, + "-" to 20.0, + "a" to 20.0, + "b" to 20.0, + "c" to 20.0, + "d" to 20.0, + "e" to 20.0, + "f" to 20.0, + "g" to 20.0, + "h" to 20.0, + "i" to 20.0, + "j" to 17.0, + "k" to 20.0, + "l" to 20.0, + "m" to 23.0, + "n" to 20.0, + "o" to 20.0, + "p" to 20.0, + "q" to 20.0, + "r" to 20.0, + "s" to 20.0, + "t" to 20.0, + "u" to 20.0, + "v" to 20.0, + "w" to 23.0, + "x" to 20.0, + "y" to 23.0, + "z" to 20.0, + "0" to 20.0, + "1" to 17.0, + "2" to 20.0, + "3" to 20.0, + "4" to 23.0, + "5" to 20.0, + "6" to 20.0, + "7" to 20.0, + "8" to 20.0, + "9" to 20.0, + ) + + private val mediumNumberWidth = listOf( + 11.0, + 9.0, + 11.0, + 11.0, + 12.0, + 11.0, + 11.0, + 11.0, + 11.0, + 11.0, + ) + + private fun String.toSvg(startX: Double, xIncrease: Double): String { + val builder = StringBuilder() + var currentX = startX + this.forEach { char -> + val largeTextSvg = largeTextSvgs[char.toString()] + val index = char - 'A' + + val charWidth = largeTextWidth[char.toString()] + ?: throw IllegalArgumentException("Cannot find matched charWidth by \"$char\"") + + builder.append("") + .append(largeTextSvg) + .append("") + + currentX += xIncrease + charWidth + } + return builder.toString() + } + + private fun Long.toSvg(id: String, startX: Double, xIncrease: Double): String { + val builder = StringBuilder() + var currentX = startX + this.toString().forEach { char -> + val index = char.digitToInt() + val mediumNumberSvg = mediumNumberSvgs[index] + builder.append("") + .append(mediumNumberSvg) + .append("") + currentX += xIncrease + mediumNumberWidth[index] + } + return builder.toString() + } + } } diff --git a/src/main/kotlin/org/gitanimals/guild/domain/Svgs.kt b/src/main/kotlin/org/gitanimals/guild/domain/Svgs.kt new file mode 100644 index 0000000..3d7b2cd --- /dev/null +++ b/src/main/kotlin/org/gitanimals/guild/domain/Svgs.kt @@ -0,0 +1,54 @@ +package org.gitanimals.guild.domain + +import org.springframework.core.io.ClassPathResource +import java.nio.charset.Charset + +val dummyGuildFieldSvg: String = ClassPathResource("persona/field/white-field.svg") + .getContentAsString(Charset.defaultCharset()) + +val largeTextSvgs = lazy { + val map = mutableMapOf() + for (i in 'A'..'Z') { + val path = "persona/text/large/$i.svg" + map[i.toString()] = ClassPathResource(path) + .getContentAsString(Charset.defaultCharset()) + } + for (i in 'a'..'z') { + val path = "persona/text/large/_$i.svg" + map[i.toString()] = ClassPathResource(path) + .getContentAsString(Charset.defaultCharset()) + } + for (i in 0..9) { + val path = "persona/text/large/$i.svg" + map[i.toString()] = ClassPathResource(path) + .getContentAsString(Charset.defaultCharset()) + } + map["-"] = ClassPathResource("persona/text/large/hyphens.svg") + .getContentAsString(Charset.defaultCharset()) + map +}.value + +val mediumNumberSvgs = lazy { + val list = mutableListOf() + for (i in 0..9) { + val path = "persona/text/medium/$i.svg" + list.add( + ClassPathResource(path) + .getContentAsString(Charset.defaultCharset()) + ) + } + list +}.value + +val numberSvgs = lazy { + val list = mutableListOf() + for (i in 0..9) { + val path = "persona/text/small/$i.svg" + list.add( + ClassPathResource(path) + .getContentAsString(Charset.defaultCharset()) + ) + } + list +}.value + diff --git a/src/main/kotlin/org/gitanimals/render/app/DrawGuildFacade.kt b/src/main/kotlin/org/gitanimals/render/app/DrawGuildFacade.kt new file mode 100644 index 0000000..aad896b --- /dev/null +++ b/src/main/kotlin/org/gitanimals/render/app/DrawGuildFacade.kt @@ -0,0 +1,49 @@ +package org.gitanimals.render.app + +import org.gitanimals.guild.domain.GuildFarmType +import org.gitanimals.render.domain.Mode +import org.gitanimals.render.domain.UserService +import org.springframework.stereotype.Service + +@Service +class DrawGuildFacade( + private val userService: UserService, +) { + + fun drawGuild( + title: String, + totalContributions: Long, + guildFarmType: GuildFarmType, + userIds: List, + personaIds: List, + ): String { + val users = userService.findAllUsersByIdWithContributions(userIds.toSet()) + + val svgBuilder = StringBuilder().openGuild() + .append(guildFarmType.fillBackground()) + + val personaSvgs = users.flatMap { user -> + user.personas.filter { persona -> + persona.id in personaIds + }.map { persona -> + persona.toSvgForce(Mode.NAME_WITH_LEVEL) + } + } + + personaSvgs.forEach { svgBuilder.append(it) } + + return svgBuilder.append(guildFarmType.loadComponent(title, totalContributions)) + .append(guildFarmType.drawBorder()) + .closeGuild() + } + + private fun StringBuilder.openGuild(): StringBuilder = + this.append("") + + private fun StringBuilder.closeGuild(): String = this + .append("") + .toString() + +} + + diff --git a/src/main/kotlin/org/gitanimals/render/domain/Mode.kt b/src/main/kotlin/org/gitanimals/render/domain/Mode.kt index 4c08dfe..b5b5d2f 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/Mode.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/Mode.kt @@ -4,5 +4,6 @@ enum class Mode { FARM, LINE, LINE_NO_CONTRIBUTION, + NAME_WITH_LEVEL, ; } diff --git a/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt b/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt index 6a491e5..e3ab1a2 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt @@ -23,7 +23,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -44,7 +44,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -65,7 +65,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -86,7 +86,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -107,7 +107,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -128,7 +128,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -149,7 +149,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -170,7 +170,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -191,7 +191,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("goose", id, 20, "180s", 7, 33.0) .toString() }, @@ -212,7 +212,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -233,7 +233,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -254,7 +254,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -275,7 +275,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -296,7 +296,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -317,7 +317,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -338,7 +338,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -359,7 +359,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -380,7 +380,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -400,7 +400,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .toString() } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("little-chick", id, 40, "180s", 2, 16.0) .toString() }, @@ -417,7 +417,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 6, 22.5) .toString() }, @@ -434,7 +434,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 6, 22.5) .toString() }, @@ -451,7 +451,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -468,7 +468,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -485,7 +485,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -502,7 +502,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -519,7 +519,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -536,7 +536,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -553,7 +553,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -570,7 +570,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -587,7 +587,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -604,7 +604,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -621,7 +621,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -638,7 +638,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -655,7 +655,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -672,7 +672,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -689,7 +689,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -706,7 +706,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -723,7 +723,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -739,7 +739,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -755,7 +755,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -771,7 +771,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -787,7 +787,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -803,7 +803,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -819,7 +819,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -835,7 +835,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -851,7 +851,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -867,7 +867,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -883,7 +883,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String { + override fun act(id: Long, flippedWidth: Double): String { val x = Random.nextInt(25, 75) val y = Random.nextInt(0, 50) val scale = 1 @@ -902,7 +902,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("tenmm", id, 15, "180s", 5, 28.5) .toString() }, @@ -918,7 +918,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("goblin", id, 15, "180s", 5, 14.5) .toString() }, @@ -934,7 +934,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("goblin-bag", id, 15, "180s", 5, 14.5) .toString() }, @@ -950,7 +950,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("bbibbi", id, 15, "180s", 5, 31.5) .toString() }, @@ -966,7 +966,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -982,7 +982,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -998,7 +998,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1014,7 +1014,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1030,7 +1030,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1046,7 +1046,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1062,7 +1062,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fishman", id, 15, "180s", 5, 16.5) .toString() }, @@ -1077,7 +1077,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fishman", id, 15, "180s", 5, 16.5) .toString() }, @@ -1092,7 +1092,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("quokka", id, 40, "180s", 5, 10.0) .toString() }, @@ -1107,7 +1107,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("quokka", id, 40, "180s", 5, 10.0) .toString() }, @@ -1122,7 +1122,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("quokka", id, 40, "180s", 5, 10.0) .toString() }, @@ -1137,7 +1137,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("mole", id, 40, "180s", 5, 14.0) .toString() }, @@ -1152,7 +1152,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("mole", id, 40, "180s", 5, 14.0) .toString() }, @@ -1167,7 +1167,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("rabbit", id, 40, "180s", 5, 10.0) .toString() }, @@ -1182,7 +1182,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("rabbit", id, 40, "180s", 5, 10.0) .toString() }, @@ -1197,7 +1197,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("rabbit", id, 40, "180s", 5, 10.0) .toString() }, @@ -1212,7 +1212,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("dessert-fox", id, 40, "180s", 5, 26.0) .toString() }, @@ -1227,7 +1227,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("dessert-fox", id, 40, "180s", 5, 26.0) .toString() }, @@ -1236,13 +1236,28 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) return dessertFoxRudolphSvg.replace("*{act}", act(persona.id)) .replace("*{id}", persona.id.toString()) .replace("*{level}", persona.level.value.toSvg(14.0, 2.0)) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) .replace( "*{levelx}", (-3 + (-1 * (persona.level.value.toString().length))).toString() + ).replace( + "*{usernamex}", + (23 + (-3 * user.name.length)).toString() ) } - override fun act(id: Long): String = + /** + * devxb 시작 위치 : 8 -> 기댓값 왼쪽 8 우측 8 + * sjolee 시작 위치 : 9 -> 기댓값 왼쪽 9 우측 + * hyesung-oh9 + * -> 논리: 이름이 길면 더 왼쪽으로 보내야함. 이름은 하나에 -4.5byte 먹는듯..? + * f(A) = 8 + * + * flippedWith: 최대길이 * 3 / 2 + * + */ + + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("dessert-fox", id, 40, "180s", 5, 28.0) .toString() }, @@ -1257,7 +1272,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("sloth", id, 5, "180s", 5, 16.5) .toString() }, @@ -1272,7 +1287,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("sloth", id, 5, "180s", 5, 16.5) .toString() }, @@ -1287,7 +1302,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("sloth", id, 5, "180s", 5, 16.5) .toString() }, @@ -1302,7 +1317,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("turtle", id, 5, "180s", 5, 33.5) .toString() }, @@ -1317,7 +1332,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("ghost", id, 20, "180s", 7, 26.0) .toString() }, @@ -1332,7 +1347,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("ghost", id, 20, "180s", 7, 26.0) .toString() }, @@ -1347,7 +1362,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("scream", id, 10, "180s", 5, 17.5) .toString() }, @@ -1362,7 +1377,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("scream", id, 10, "180s", 5, 17.5) .toString() }, @@ -1377,7 +1392,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -1392,7 +1407,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -1407,7 +1422,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1422,7 +1437,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1437,7 +1452,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1452,7 +1467,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1467,7 +1482,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1482,7 +1497,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1497,7 +1512,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("snowman", id, 5, "1000s", 5, 17.0) .toString() }, @@ -1512,7 +1527,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("snowman", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1546,7 +1561,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) abstract fun loadSvg(user: User, persona: Persona, mode: Mode): String - protected abstract fun act(id: Long): String + protected abstract fun act(id: Long, flippedWidth: Double = 0.0): String protected fun String.drawContribution( mode: Mode, @@ -1554,10 +1569,12 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) ): String { return when (mode) { Mode.LINE -> { - this.replace( - "*{contributionx}", - (12.8 + (-1 * (user.contributionCount().toString().length))).toString() - ) + this.replace("*{username-tag-display}", "none") + .replace("*{username-display}", "none") + .replace( + "*{contributionx}", + (12.8 + (-1 * (user.contributionCount().toString().length))).toString() + ) .replace( "*{contribution}", user.contributionCount().toSvg(0.0, 2.0) @@ -1566,12 +1583,23 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) } Mode.LINE_NO_CONTRIBUTION -> { - this.replace("*{contribution-display}", "none") + this.replace("*{username-tag-display}", "none") + .replace("*{username-display}", "none") + .replace("*{contribution-display}", "none") .replace("*{level-tag-display}", "default") } + Mode.NAME_WITH_LEVEL -> { + this.replace("*{username-tag-display}", "none") + .replace("*{username-display}", "default") + .replace("*{level-tag-display}", "none") + .replace("*{contribution-display}", "none") + } + else -> { - this.replace("*{contribution-display}", "none") + this.replace("*{username-tag-display}", "none") + .replace("*{username-display}", "none") + .replace("*{contribution-display}", "none") .replace("*{level-tag-display}", "none") } } @@ -1668,7 +1696,7 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) beforeMovingPoint = movingPoint } this.append("}") - .append("#contributions-wrap-$id, #level-tag-wrap-$id, #level-wrap-$id {") + .append("#contributions-wrap-$id, #level-tag-wrap-$id, #level-wrap-$id, #username-tag-wrap-$id, #username-wrap-$id {") .append("animation-name: reverse-flip-$id;") .append("animation-duration: $duration;") .append("animation-iteration-count: 1;") @@ -1729,6 +1757,27 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) return movingPoints } + private fun String.toSvg(nameStartX: Double, xIncrease: Double): String { + return this.toSvgWithY(-1.0, nameStartX, xIncrease) + } + + private fun String.toSvgWithY(startY: Double, startX: Double, xIncrease: Double): String { + var currentX = startX + val builder = StringBuilder() + + this.withIndex().forEach { + val index = it.index + val textSvg = largeTextSvgs[it.value.toString()] + + builder.append("") + .append(textSvg) + .append("") + + currentX += xIncrease + } + return builder.toString() + } + private fun Long.toSvg(levelStartX: Double, xIncrease: Double): String { return this.toSvgWithY(-1.0, levelStartX, xIncrease) } diff --git a/src/main/kotlin/org/gitanimals/render/domain/UserRepository.kt b/src/main/kotlin/org/gitanimals/render/domain/UserRepository.kt index d29e44d..42e5d1a 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/UserRepository.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/UserRepository.kt @@ -17,5 +17,14 @@ interface UserRepository : JpaRepository { ) fun findByNameWithContributions(@Param("name") name: String): User? + @Query( + """ + select u from user as u + left join fetch u.contributions + where u.id in :userIds + """ + ) + fun findAllByIdsWithContributions(@Param("userIds") userIds: Set): List + fun existsByName(name: String): Boolean } diff --git a/src/main/kotlin/org/gitanimals/render/domain/UserService.kt b/src/main/kotlin/org/gitanimals/render/domain/UserService.kt index 3d0e46e..614309c 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/UserService.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/UserService.kt @@ -157,6 +157,10 @@ class UserService( ?: throw IllegalArgumentException("Cannot find matched persona \"$personaId\" by user name \"$name\"") } + fun findAllUsersByIdWithContributions(userIds: Set): List { + return userRepository.findAllByIdsWithContributions(userIds) + } + companion object { val loadField: (User) -> Unit = { Hibernate.initialize(it.fields) } } diff --git a/src/main/resources/persona/animal/dessert-fox-rudolph.svg b/src/main/resources/persona/animal/dessert-fox-rudolph.svg index 5513999..bbc85c0 100644 --- a/src/main/resources/persona/animal/dessert-fox-rudolph.svg +++ b/src/main/resources/persona/animal/dessert-fox-rudolph.svg @@ -122,6 +122,24 @@ + + + + + + + + + + + + + *{username} + + + + @@ -259,7 +277,8 @@ - + diff --git a/src/test/kotlin/org/gitanimals/guild/domain/GuildServiceTest.kt b/src/test/kotlin/org/gitanimals/guild/domain/GuildServiceTest.kt index ccedf29..845f554 100644 --- a/src/test/kotlin/org/gitanimals/guild/domain/GuildServiceTest.kt +++ b/src/test/kotlin/org/gitanimals/guild/domain/GuildServiceTest.kt @@ -190,7 +190,7 @@ internal class GuildServiceTest( it("멤버를 추방시킨다.") { guildService.kickMember( - kickerId = guild.getLeaderId(), + kickerId = guild.getLeaderUserId(), guildId = guild.id, kickUserId = memberId ) From 00089f96dc6c98376f35c63b1ac71d294f33b553 Mon Sep 17 00:00:00 2001 From: devxb Date: Wed, 25 Dec 2024 18:22:10 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EB=AA=A8=EB=93=A0=ED=8E=AB?= =?UTF-8?q?=EB=93=A4=EC=97=90=20=EB=8C=80=ED=95=B4=EC=84=9C=20=EA=B8=B8?= =?UTF-8?q?=EB=93=9C=20=EB=A0=8C=EB=8D=94=EB=A7=81=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=EC=9D=84=20=EC=B6=94=EA=B0=80=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gitanimals/render/domain/PersonaType.kt | 458 +++++++++++++++++- src/main/resources/persona/animal/bbibbi.svg | 17 + src/main/resources/persona/animal/cat.svg | 17 + .../animal/cheese-cat-collaborator.svg | 17 + .../resources/persona/animal/cheese-cat.svg | 17 + .../animal/dessert-fox-collaborator.svg | 18 + .../resources/persona/animal/dessert-fox.svg | 18 + .../persona/animal/fishman-glasses.svg | 17 + src/main/resources/persona/animal/fishman.svg | 17 + .../resources/persona/animal/flamingo.svg | 18 + .../resources/persona/animal/galchi-cat.svg | 17 + .../resources/persona/animal/ghost-king.svg | 18 + src/main/resources/persona/animal/ghost.svg | 18 + .../resources/persona/animal/goblin-bag.svg | 18 + src/main/resources/persona/animal/goblin.svg | 18 + .../resources/persona/animal/goose-java.svg | 18 + .../resources/persona/animal/goose-js.svg | 17 + .../resources/persona/animal/goose-kotlin.svg | 18 + .../resources/persona/animal/goose-linux.svg | 18 + .../resources/persona/animal/goose-node.svg | 18 + .../resources/persona/animal/goose-spring.svg | 18 + .../persona/animal/goose-sunglasses.svg | 17 + .../resources/persona/animal/goose-swift.svg | 18 + src/main/resources/persona/animal/goose.svg | 17 + .../resources/persona/animal/hamster-java.svg | 17 + .../resources/persona/animal/hamster-js.svg | 17 + .../persona/animal/hamster-kotlin.svg | 17 + .../persona/animal/hamster-santa.svg | 17 + .../persona/animal/hamster-spring.svg | 17 + src/main/resources/persona/animal/hamster.svg | 17 + .../persona/animal/little-chick-java.svg | 18 + .../persona/animal/little-chick-js.svg | 17 + .../persona/animal/little-chick-kotlin.svg | 17 + .../persona/animal/little-chick-linux.svg | 17 + .../persona/animal/little-chick-node.svg | 17 + .../persona/animal/little-chick-santa.svg | 18 + .../persona/animal/little-chick-spring.svg | 17 + .../animal/little-chick-sunglasses.svg | 17 + .../persona/animal/little-chick-swift.svg | 17 + .../resources/persona/animal/little-chick.svg | 18 + .../resources/persona/animal/mole-grass.svg | 17 + src/main/resources/persona/animal/mole.svg | 17 + .../resources/persona/animal/penguin-java.svg | 17 + .../resources/persona/animal/penguin-js.svg | 17 + .../persona/animal/penguin-kotlin.svg | 17 + .../persona/animal/penguin-linux.svg | 17 + .../resources/persona/animal/penguin-node.svg | 17 + .../persona/animal/penguin-spring.svg | 17 + .../persona/animal/penguin-sunglasses.svg | 17 + .../persona/animal/penguin-swift.svg | 17 + src/main/resources/persona/animal/penguin.svg | 17 + .../persona/animal/pig-collaborator.svg | 17 + .../resources/persona/animal/pig-java.svg | 17 + src/main/resources/persona/animal/pig-js.svg | 17 + .../resources/persona/animal/pig-kotlin.svg | 17 + .../resources/persona/animal/pig-linux.svg | 17 + .../resources/persona/animal/pig-node.svg | 17 + .../resources/persona/animal/pig-spring.svg | 17 + .../persona/animal/pig-sunglasses.svg | 17 + .../resources/persona/animal/pig-swift.svg | 17 + src/main/resources/persona/animal/pig.svg | 17 + .../resources/persona/animal/quokka-leaf.svg | 17 + .../persona/animal/quokka-sunglasses.svg | 17 + src/main/resources/persona/animal/quokka.svg | 17 + .../persona/animal/rabbit-brown-rudolph.svg | 17 + .../persona/animal/rabbit-collaborator.svg | 17 + src/main/resources/persona/animal/rabbit.svg | 17 + .../resources/persona/animal/scream-ghost.svg | 17 + src/main/resources/persona/animal/scream.svg | 17 + .../resources/persona/animal/slime-blue.svg | 17 + .../resources/persona/animal/slime-green.svg | 17 + .../persona/animal/slime-pumpkin-1.svg | 17 + .../persona/animal/slime-pumpkin-2.svg | 17 + .../persona/animal/slime-red-java.svg | 17 + .../resources/persona/animal/slime-red-js.svg | 17 + .../persona/animal/slime-red-kotlin.svg | 17 + .../persona/animal/slime-red-linux.svg | 17 + .../persona/animal/slime-red-node.svg | 17 + .../persona/animal/slime-red-swift.svg | 17 + .../resources/persona/animal/slime-red.svg | 17 + .../resources/persona/animal/sloth-king.svg | 17 + .../persona/animal/sloth-sunglasses.svg | 17 + src/main/resources/persona/animal/sloth.svg | 17 + .../resources/persona/animal/snowman-melt.svg | 17 + src/main/resources/persona/animal/snowman.svg | 17 + src/main/resources/persona/animal/tenmm.svg | 17 + src/main/resources/persona/animal/turtle.svg | 17 + .../persona/animal/white-cat-collaborator.svg | 17 + .../resources/persona/animal/white-cat.svg | 17 + 89 files changed, 1956 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt b/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt index e3ab1a2..7c2f6fd 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt @@ -17,6 +17,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -38,6 +43,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -59,6 +69,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -80,6 +95,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -101,6 +121,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -122,6 +147,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -143,6 +173,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -185,6 +220,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(goose) @@ -206,6 +246,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -227,6 +272,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -248,6 +298,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -269,6 +324,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -290,6 +350,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -311,6 +376,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -332,6 +402,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -353,6 +428,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -374,6 +454,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -394,6 +479,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) return StringBuilder() .append(littleChick) @@ -415,6 +505,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -432,6 +527,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -449,6 +549,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -466,6 +571,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -483,6 +593,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -500,6 +615,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -517,6 +637,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -534,6 +659,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -551,6 +681,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-4 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (20 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -568,6 +703,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -585,6 +725,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -602,6 +747,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -619,6 +769,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -636,6 +791,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -653,6 +813,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -670,6 +835,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -687,6 +857,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -704,6 +879,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -721,6 +901,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (56 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -737,6 +922,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -753,6 +943,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -769,6 +964,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -785,6 +985,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -801,6 +1006,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -817,6 +1027,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -833,6 +1048,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -849,6 +1069,16 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -865,6 +1095,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -881,6 +1116,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (32 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String { @@ -900,6 +1140,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-2 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (26 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -916,6 +1161,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6.5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (13 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -932,6 +1182,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6.5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (13 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -948,6 +1203,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1.5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (27 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -964,6 +1224,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -980,6 +1245,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -996,6 +1266,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1012,6 +1287,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1028,6 +1308,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1044,6 +1329,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1060,6 +1350,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1075,6 +1370,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1090,6 +1390,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-9 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (6 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1105,6 +1410,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-9 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (6 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1120,6 +1430,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-9 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (6 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1135,6 +1450,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (8.5 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1150,6 +1470,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-8 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (8.5 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1165,6 +1490,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-9 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (6 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1180,6 +1510,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-9 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (6 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1195,6 +1530,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-9 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (6 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1210,6 +1550,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-3 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (23 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1225,6 +1570,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-3 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (23 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1236,27 +1586,17 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) return dessertFoxRudolphSvg.replace("*{act}", act(persona.id)) .replace("*{id}", persona.id.toString()) .replace("*{level}", persona.level.value.toSvg(14.0, 2.0)) - .replace("*{username}", user.name.toSvg(14.0, 25.0)) .replace( "*{levelx}", (-3 + (-1 * (persona.level.value.toString().length))).toString() - ).replace( + ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( "*{usernamex}", (23 + (-3 * user.name.length)).toString() ) } - /** - * devxb 시작 위치 : 8 -> 기댓값 왼쪽 8 우측 8 - * sjolee 시작 위치 : 9 -> 기댓값 왼쪽 9 우측 - * hyesung-oh9 - * -> 논리: 이름이 길면 더 왼쪽으로 보내야함. 이름은 하나에 -4.5byte 먹는듯..? - * f(A) = 8 - * - * flippedWith: 최대길이 * 3 / 2 - * - */ - override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("dessert-fox", id, 40, "180s", 5, 28.0) .toString() @@ -1270,6 +1610,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1285,6 +1630,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1298,7 +1648,12 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) .replace("*{level}", persona.level.value.toSvg(14.0, 2.0)) .replace( "*{levelx}", - (-5 + (-1 * (persona.level.value.toString().length))).toString() + (-6 + (-1 * (persona.level.value.toString().length))).toString() + ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() ) } @@ -1315,6 +1670,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (29 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1330,6 +1690,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1.8 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (23 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = StringBuilder() @@ -1345,6 +1710,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-1.8 * (persona.level.value.toString().length)).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (23 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = StringBuilder() @@ -1360,6 +1730,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1375,6 +1750,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1390,6 +1770,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1405,6 +1790,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1420,6 +1810,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (17 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1435,6 +1830,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (17 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1450,6 +1850,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (17 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1465,6 +1870,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (17 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1480,6 +1890,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (17 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1495,6 +1910,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (17 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1510,6 +1930,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-6 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (15 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = @@ -1525,6 +1950,11 @@ enum class PersonaType(val weight: Double, private var dropRate: String? = null) "*{levelx}", (-5 + (-1 * (persona.level.value.toString().length))).toString() ) + .replace("*{username}", user.name.toSvg(14.0, 25.0)) + .replace( + "*{usernamex}", + (17 + (-3 * user.name.length)).toString() + ) } override fun act(id: Long, flippedWidth: Double): String = diff --git a/src/main/resources/persona/animal/bbibbi.svg b/src/main/resources/persona/animal/bbibbi.svg index 2038c72..96a1740 100644 --- a/src/main/resources/persona/animal/bbibbi.svg +++ b/src/main/resources/persona/animal/bbibbi.svg @@ -79,6 +79,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/cat.svg b/src/main/resources/persona/animal/cat.svg index 99681bd..91764c6 100644 --- a/src/main/resources/persona/animal/cat.svg +++ b/src/main/resources/persona/animal/cat.svg @@ -81,6 +81,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/cheese-cat-collaborator.svg b/src/main/resources/persona/animal/cheese-cat-collaborator.svg index 3473ec3..7e6fcaf 100644 --- a/src/main/resources/persona/animal/cheese-cat-collaborator.svg +++ b/src/main/resources/persona/animal/cheese-cat-collaborator.svg @@ -125,6 +125,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/cheese-cat.svg b/src/main/resources/persona/animal/cheese-cat.svg index 89dea51..e5409d8 100644 --- a/src/main/resources/persona/animal/cheese-cat.svg +++ b/src/main/resources/persona/animal/cheese-cat.svg @@ -125,6 +125,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/dessert-fox-collaborator.svg b/src/main/resources/persona/animal/dessert-fox-collaborator.svg index dec1add..f4e4819 100644 --- a/src/main/resources/persona/animal/dessert-fox-collaborator.svg +++ b/src/main/resources/persona/animal/dessert-fox-collaborator.svg @@ -122,6 +122,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/dessert-fox.svg b/src/main/resources/persona/animal/dessert-fox.svg index e81e0a9..b1fe90d 100644 --- a/src/main/resources/persona/animal/dessert-fox.svg +++ b/src/main/resources/persona/animal/dessert-fox.svg @@ -122,6 +122,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/fishman-glasses.svg b/src/main/resources/persona/animal/fishman-glasses.svg index fc87114..e2f4f39 100644 --- a/src/main/resources/persona/animal/fishman-glasses.svg +++ b/src/main/resources/persona/animal/fishman-glasses.svg @@ -119,6 +119,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/fishman.svg b/src/main/resources/persona/animal/fishman.svg index eed8981..77e827f 100644 --- a/src/main/resources/persona/animal/fishman.svg +++ b/src/main/resources/persona/animal/fishman.svg @@ -119,6 +119,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/flamingo.svg b/src/main/resources/persona/animal/flamingo.svg index ef1a29a..ef3e3e3 100644 --- a/src/main/resources/persona/animal/flamingo.svg +++ b/src/main/resources/persona/animal/flamingo.svg @@ -41,6 +41,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/galchi-cat.svg b/src/main/resources/persona/animal/galchi-cat.svg index 26caccb..f194e82 100644 --- a/src/main/resources/persona/animal/galchi-cat.svg +++ b/src/main/resources/persona/animal/galchi-cat.svg @@ -81,6 +81,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/ghost-king.svg b/src/main/resources/persona/animal/ghost-king.svg index 9b14009..7ff74e6 100644 --- a/src/main/resources/persona/animal/ghost-king.svg +++ b/src/main/resources/persona/animal/ghost-king.svg @@ -81,6 +81,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/ghost.svg b/src/main/resources/persona/animal/ghost.svg index 0e5dbfa..74fb30b 100644 --- a/src/main/resources/persona/animal/ghost.svg +++ b/src/main/resources/persona/animal/ghost.svg @@ -81,6 +81,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goblin-bag.svg b/src/main/resources/persona/animal/goblin-bag.svg index f6ec0c9..0b87338 100644 --- a/src/main/resources/persona/animal/goblin-bag.svg +++ b/src/main/resources/persona/animal/goblin-bag.svg @@ -78,6 +78,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goblin.svg b/src/main/resources/persona/animal/goblin.svg index f8cecf2..aa1279c 100644 --- a/src/main/resources/persona/animal/goblin.svg +++ b/src/main/resources/persona/animal/goblin.svg @@ -78,6 +78,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose-java.svg b/src/main/resources/persona/animal/goose-java.svg index f93306c..39d5d29 100644 --- a/src/main/resources/persona/animal/goose-java.svg +++ b/src/main/resources/persona/animal/goose-java.svg @@ -132,6 +132,24 @@ + + + + + + + + + + + + + *{username} + + + + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose-kotlin.svg b/src/main/resources/persona/animal/goose-kotlin.svg index 2770f0c..e8fd5d2 100644 --- a/src/main/resources/persona/animal/goose-kotlin.svg +++ b/src/main/resources/persona/animal/goose-kotlin.svg @@ -112,6 +112,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose-linux.svg b/src/main/resources/persona/animal/goose-linux.svg index 8fe495f..7057595 100644 --- a/src/main/resources/persona/animal/goose-linux.svg +++ b/src/main/resources/persona/animal/goose-linux.svg @@ -112,6 +112,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose-node.svg b/src/main/resources/persona/animal/goose-node.svg index fe3b60e..d97925c 100644 --- a/src/main/resources/persona/animal/goose-node.svg +++ b/src/main/resources/persona/animal/goose-node.svg @@ -112,6 +112,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose-spring.svg b/src/main/resources/persona/animal/goose-spring.svg index 4c793ec..54c7559 100644 --- a/src/main/resources/persona/animal/goose-spring.svg +++ b/src/main/resources/persona/animal/goose-spring.svg @@ -112,6 +112,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose-sunglasses.svg b/src/main/resources/persona/animal/goose-sunglasses.svg index 24fd132..08e6abf 100644 --- a/src/main/resources/persona/animal/goose-sunglasses.svg +++ b/src/main/resources/persona/animal/goose-sunglasses.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose-swift.svg b/src/main/resources/persona/animal/goose-swift.svg index a2fa684..ea0b3d2 100644 --- a/src/main/resources/persona/animal/goose-swift.svg +++ b/src/main/resources/persona/animal/goose-swift.svg @@ -112,6 +112,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/goose.svg b/src/main/resources/persona/animal/goose.svg index 35a6e41..3fc1cc5 100644 --- a/src/main/resources/persona/animal/goose.svg +++ b/src/main/resources/persona/animal/goose.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/hamster-java.svg b/src/main/resources/persona/animal/hamster-java.svg index 5df2e06..a426c14 100644 --- a/src/main/resources/persona/animal/hamster-java.svg +++ b/src/main/resources/persona/animal/hamster-java.svg @@ -58,6 +58,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/hamster-js.svg b/src/main/resources/persona/animal/hamster-js.svg index 2677b3d..395fe31 100644 --- a/src/main/resources/persona/animal/hamster-js.svg +++ b/src/main/resources/persona/animal/hamster-js.svg @@ -58,6 +58,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/hamster-kotlin.svg b/src/main/resources/persona/animal/hamster-kotlin.svg index 3fbebb8..821d9e1 100644 --- a/src/main/resources/persona/animal/hamster-kotlin.svg +++ b/src/main/resources/persona/animal/hamster-kotlin.svg @@ -58,6 +58,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/hamster-santa.svg b/src/main/resources/persona/animal/hamster-santa.svg index fcf3a5f..6e8416f 100644 --- a/src/main/resources/persona/animal/hamster-santa.svg +++ b/src/main/resources/persona/animal/hamster-santa.svg @@ -58,6 +58,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/hamster-spring.svg b/src/main/resources/persona/animal/hamster-spring.svg index 3819cd3..c77f930 100644 --- a/src/main/resources/persona/animal/hamster-spring.svg +++ b/src/main/resources/persona/animal/hamster-spring.svg @@ -58,6 +58,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/hamster.svg b/src/main/resources/persona/animal/hamster.svg index b547a41..3c50beb 100644 --- a/src/main/resources/persona/animal/hamster.svg +++ b/src/main/resources/persona/animal/hamster.svg @@ -58,6 +58,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-java.svg b/src/main/resources/persona/animal/little-chick-java.svg index c73c3cf..8d5a6bd 100644 --- a/src/main/resources/persona/animal/little-chick-java.svg +++ b/src/main/resources/persona/animal/little-chick-java.svg @@ -113,6 +113,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-js.svg b/src/main/resources/persona/animal/little-chick-js.svg index 1173931..1407a41 100644 --- a/src/main/resources/persona/animal/little-chick-js.svg +++ b/src/main/resources/persona/animal/little-chick-js.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-kotlin.svg b/src/main/resources/persona/animal/little-chick-kotlin.svg index 53517a4..265517a 100644 --- a/src/main/resources/persona/animal/little-chick-kotlin.svg +++ b/src/main/resources/persona/animal/little-chick-kotlin.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-linux.svg b/src/main/resources/persona/animal/little-chick-linux.svg index 504a1ae..e00a2d8 100644 --- a/src/main/resources/persona/animal/little-chick-linux.svg +++ b/src/main/resources/persona/animal/little-chick-linux.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-node.svg b/src/main/resources/persona/animal/little-chick-node.svg index 9f87e70..da6e5e6 100644 --- a/src/main/resources/persona/animal/little-chick-node.svg +++ b/src/main/resources/persona/animal/little-chick-node.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-santa.svg b/src/main/resources/persona/animal/little-chick-santa.svg index 0c04f79..4ce5968 100644 --- a/src/main/resources/persona/animal/little-chick-santa.svg +++ b/src/main/resources/persona/animal/little-chick-santa.svg @@ -83,6 +83,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-spring.svg b/src/main/resources/persona/animal/little-chick-spring.svg index d09f3ba..b7e684a 100644 --- a/src/main/resources/persona/animal/little-chick-spring.svg +++ b/src/main/resources/persona/animal/little-chick-spring.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-sunglasses.svg b/src/main/resources/persona/animal/little-chick-sunglasses.svg index d8fad66..32768af 100644 --- a/src/main/resources/persona/animal/little-chick-sunglasses.svg +++ b/src/main/resources/persona/animal/little-chick-sunglasses.svg @@ -84,6 +84,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick-swift.svg b/src/main/resources/persona/animal/little-chick-swift.svg index 5ee8d78..4970c2b 100644 --- a/src/main/resources/persona/animal/little-chick-swift.svg +++ b/src/main/resources/persona/animal/little-chick-swift.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/little-chick.svg b/src/main/resources/persona/animal/little-chick.svg index 52cd8bb..6221e4b 100644 --- a/src/main/resources/persona/animal/little-chick.svg +++ b/src/main/resources/persona/animal/little-chick.svg @@ -83,6 +83,24 @@ + + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/mole-grass.svg b/src/main/resources/persona/animal/mole-grass.svg index e497719..5ec404f 100644 --- a/src/main/resources/persona/animal/mole-grass.svg +++ b/src/main/resources/persona/animal/mole-grass.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/mole.svg b/src/main/resources/persona/animal/mole.svg index 9ab5823..ac99418 100644 --- a/src/main/resources/persona/animal/mole.svg +++ b/src/main/resources/persona/animal/mole.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-java.svg b/src/main/resources/persona/animal/penguin-java.svg index a63da87..db61bb4 100644 --- a/src/main/resources/persona/animal/penguin-java.svg +++ b/src/main/resources/persona/animal/penguin-java.svg @@ -113,6 +113,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-js.svg b/src/main/resources/persona/animal/penguin-js.svg index 526b6c1..9333efb 100644 --- a/src/main/resources/persona/animal/penguin-js.svg +++ b/src/main/resources/persona/animal/penguin-js.svg @@ -113,6 +113,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-kotlin.svg b/src/main/resources/persona/animal/penguin-kotlin.svg index 1ae9887..f672936 100644 --- a/src/main/resources/persona/animal/penguin-kotlin.svg +++ b/src/main/resources/persona/animal/penguin-kotlin.svg @@ -113,6 +113,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-linux.svg b/src/main/resources/persona/animal/penguin-linux.svg index 76cdd5e..ea16bf7 100644 --- a/src/main/resources/persona/animal/penguin-linux.svg +++ b/src/main/resources/persona/animal/penguin-linux.svg @@ -113,6 +113,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-node.svg b/src/main/resources/persona/animal/penguin-node.svg index e8a7549..ac96773 100644 --- a/src/main/resources/persona/animal/penguin-node.svg +++ b/src/main/resources/persona/animal/penguin-node.svg @@ -113,6 +113,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-spring.svg b/src/main/resources/persona/animal/penguin-spring.svg index b80c38e..714356d 100644 --- a/src/main/resources/persona/animal/penguin-spring.svg +++ b/src/main/resources/persona/animal/penguin-spring.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-sunglasses.svg b/src/main/resources/persona/animal/penguin-sunglasses.svg index 7276c67..860adba 100644 --- a/src/main/resources/persona/animal/penguin-sunglasses.svg +++ b/src/main/resources/persona/animal/penguin-sunglasses.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin-swift.svg b/src/main/resources/persona/animal/penguin-swift.svg index 6cc0280..53d2668 100644 --- a/src/main/resources/persona/animal/penguin-swift.svg +++ b/src/main/resources/persona/animal/penguin-swift.svg @@ -113,6 +113,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/penguin.svg b/src/main/resources/persona/animal/penguin.svg index 7a8332d..f551286 100644 --- a/src/main/resources/persona/animal/penguin.svg +++ b/src/main/resources/persona/animal/penguin.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-collaborator.svg b/src/main/resources/persona/animal/pig-collaborator.svg index 72eec06..24d3572 100644 --- a/src/main/resources/persona/animal/pig-collaborator.svg +++ b/src/main/resources/persona/animal/pig-collaborator.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-java.svg b/src/main/resources/persona/animal/pig-java.svg index d9e3793..c9fd28b 100644 --- a/src/main/resources/persona/animal/pig-java.svg +++ b/src/main/resources/persona/animal/pig-java.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-js.svg b/src/main/resources/persona/animal/pig-js.svg index 3c90967..6a39d01 100644 --- a/src/main/resources/persona/animal/pig-js.svg +++ b/src/main/resources/persona/animal/pig-js.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-kotlin.svg b/src/main/resources/persona/animal/pig-kotlin.svg index 62fd803..785328f 100644 --- a/src/main/resources/persona/animal/pig-kotlin.svg +++ b/src/main/resources/persona/animal/pig-kotlin.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-linux.svg b/src/main/resources/persona/animal/pig-linux.svg index 4350d92..1a8295d 100644 --- a/src/main/resources/persona/animal/pig-linux.svg +++ b/src/main/resources/persona/animal/pig-linux.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-node.svg b/src/main/resources/persona/animal/pig-node.svg index 7ba5713..79eb4b8 100644 --- a/src/main/resources/persona/animal/pig-node.svg +++ b/src/main/resources/persona/animal/pig-node.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-spring.svg b/src/main/resources/persona/animal/pig-spring.svg index 43846a7..8139500 100644 --- a/src/main/resources/persona/animal/pig-spring.svg +++ b/src/main/resources/persona/animal/pig-spring.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-sunglasses.svg b/src/main/resources/persona/animal/pig-sunglasses.svg index 000e6b2..c56c9e8 100644 --- a/src/main/resources/persona/animal/pig-sunglasses.svg +++ b/src/main/resources/persona/animal/pig-sunglasses.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig-swift.svg b/src/main/resources/persona/animal/pig-swift.svg index cd081be..bfeebd5 100644 --- a/src/main/resources/persona/animal/pig-swift.svg +++ b/src/main/resources/persona/animal/pig-swift.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/pig.svg b/src/main/resources/persona/animal/pig.svg index f3758ea..30c2678 100644 --- a/src/main/resources/persona/animal/pig.svg +++ b/src/main/resources/persona/animal/pig.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/quokka-leaf.svg b/src/main/resources/persona/animal/quokka-leaf.svg index b7cd672..8997a36 100644 --- a/src/main/resources/persona/animal/quokka-leaf.svg +++ b/src/main/resources/persona/animal/quokka-leaf.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/quokka-sunglasses.svg b/src/main/resources/persona/animal/quokka-sunglasses.svg index a2fe10a..b048ee4 100644 --- a/src/main/resources/persona/animal/quokka-sunglasses.svg +++ b/src/main/resources/persona/animal/quokka-sunglasses.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/quokka.svg b/src/main/resources/persona/animal/quokka.svg index e59d10a..cac8ccb 100644 --- a/src/main/resources/persona/animal/quokka.svg +++ b/src/main/resources/persona/animal/quokka.svg @@ -83,6 +83,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/rabbit-brown-rudolph.svg b/src/main/resources/persona/animal/rabbit-brown-rudolph.svg index b2d216c..b89634f 100644 --- a/src/main/resources/persona/animal/rabbit-brown-rudolph.svg +++ b/src/main/resources/persona/animal/rabbit-brown-rudolph.svg @@ -87,6 +87,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/rabbit-collaborator.svg b/src/main/resources/persona/animal/rabbit-collaborator.svg index 47a3379..03ebafe 100644 --- a/src/main/resources/persona/animal/rabbit-collaborator.svg +++ b/src/main/resources/persona/animal/rabbit-collaborator.svg @@ -87,6 +87,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/rabbit.svg b/src/main/resources/persona/animal/rabbit.svg index 248f5e0..7de898e 100644 --- a/src/main/resources/persona/animal/rabbit.svg +++ b/src/main/resources/persona/animal/rabbit.svg @@ -87,6 +87,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/scream-ghost.svg b/src/main/resources/persona/animal/scream-ghost.svg index f2480b2..e20f61f 100644 --- a/src/main/resources/persona/animal/scream-ghost.svg +++ b/src/main/resources/persona/animal/scream-ghost.svg @@ -98,6 +98,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/scream.svg b/src/main/resources/persona/animal/scream.svg index 466e6d7..db8aaa1 100644 --- a/src/main/resources/persona/animal/scream.svg +++ b/src/main/resources/persona/animal/scream.svg @@ -60,6 +60,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-blue.svg b/src/main/resources/persona/animal/slime-blue.svg index 740d93f..4f652d6 100644 --- a/src/main/resources/persona/animal/slime-blue.svg +++ b/src/main/resources/persona/animal/slime-blue.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-green.svg b/src/main/resources/persona/animal/slime-green.svg index 64b4afe..06be749 100644 --- a/src/main/resources/persona/animal/slime-green.svg +++ b/src/main/resources/persona/animal/slime-green.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-pumpkin-1.svg b/src/main/resources/persona/animal/slime-pumpkin-1.svg index 66a309f..3082075 100644 --- a/src/main/resources/persona/animal/slime-pumpkin-1.svg +++ b/src/main/resources/persona/animal/slime-pumpkin-1.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-pumpkin-2.svg b/src/main/resources/persona/animal/slime-pumpkin-2.svg index e937a2e..12e05c5 100644 --- a/src/main/resources/persona/animal/slime-pumpkin-2.svg +++ b/src/main/resources/persona/animal/slime-pumpkin-2.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-red-java.svg b/src/main/resources/persona/animal/slime-red-java.svg index 5d3f9a6..9781c16 100644 --- a/src/main/resources/persona/animal/slime-red-java.svg +++ b/src/main/resources/persona/animal/slime-red-java.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-red-js.svg b/src/main/resources/persona/animal/slime-red-js.svg index 4a1614e..5a9ac17 100644 --- a/src/main/resources/persona/animal/slime-red-js.svg +++ b/src/main/resources/persona/animal/slime-red-js.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-red-kotlin.svg b/src/main/resources/persona/animal/slime-red-kotlin.svg index d44a388..0852d4b 100644 --- a/src/main/resources/persona/animal/slime-red-kotlin.svg +++ b/src/main/resources/persona/animal/slime-red-kotlin.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-red-linux.svg b/src/main/resources/persona/animal/slime-red-linux.svg index 8905ed5..495f52c 100644 --- a/src/main/resources/persona/animal/slime-red-linux.svg +++ b/src/main/resources/persona/animal/slime-red-linux.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-red-node.svg b/src/main/resources/persona/animal/slime-red-node.svg index 6efc3fe..beaa69a 100644 --- a/src/main/resources/persona/animal/slime-red-node.svg +++ b/src/main/resources/persona/animal/slime-red-node.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-red-swift.svg b/src/main/resources/persona/animal/slime-red-swift.svg index 46dd4a2..172a32a 100644 --- a/src/main/resources/persona/animal/slime-red-swift.svg +++ b/src/main/resources/persona/animal/slime-red-swift.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/slime-red.svg b/src/main/resources/persona/animal/slime-red.svg index a97e99e..d3ebc1a 100644 --- a/src/main/resources/persona/animal/slime-red.svg +++ b/src/main/resources/persona/animal/slime-red.svg @@ -82,6 +82,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/sloth-king.svg b/src/main/resources/persona/animal/sloth-king.svg index acf0a44..2fb4132 100644 --- a/src/main/resources/persona/animal/sloth-king.svg +++ b/src/main/resources/persona/animal/sloth-king.svg @@ -80,6 +80,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/sloth-sunglasses.svg b/src/main/resources/persona/animal/sloth-sunglasses.svg index becf373..5802b10 100644 --- a/src/main/resources/persona/animal/sloth-sunglasses.svg +++ b/src/main/resources/persona/animal/sloth-sunglasses.svg @@ -80,6 +80,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/sloth.svg b/src/main/resources/persona/animal/sloth.svg index 53af3d6..c2e83a1 100644 --- a/src/main/resources/persona/animal/sloth.svg +++ b/src/main/resources/persona/animal/sloth.svg @@ -80,6 +80,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/snowman-melt.svg b/src/main/resources/persona/animal/snowman-melt.svg index c1b2594..86c47b8 100644 --- a/src/main/resources/persona/animal/snowman-melt.svg +++ b/src/main/resources/persona/animal/snowman-melt.svg @@ -72,6 +72,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/snowman.svg b/src/main/resources/persona/animal/snowman.svg index 47cfed1..eff1599 100644 --- a/src/main/resources/persona/animal/snowman.svg +++ b/src/main/resources/persona/animal/snowman.svg @@ -114,6 +114,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/tenmm.svg b/src/main/resources/persona/animal/tenmm.svg index 3e300dd..a21592e 100644 --- a/src/main/resources/persona/animal/tenmm.svg +++ b/src/main/resources/persona/animal/tenmm.svg @@ -84,6 +84,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/turtle.svg b/src/main/resources/persona/animal/turtle.svg index dda1d15..025216f 100644 --- a/src/main/resources/persona/animal/turtle.svg +++ b/src/main/resources/persona/animal/turtle.svg @@ -79,6 +79,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/white-cat-collaborator.svg b/src/main/resources/persona/animal/white-cat-collaborator.svg index 33e3c0b..059dc67 100644 --- a/src/main/resources/persona/animal/white-cat-collaborator.svg +++ b/src/main/resources/persona/animal/white-cat-collaborator.svg @@ -81,6 +81,23 @@ + + + + + + + + + + + + *{username} + + + + diff --git a/src/main/resources/persona/animal/white-cat.svg b/src/main/resources/persona/animal/white-cat.svg index 114c0b3..607182a 100644 --- a/src/main/resources/persona/animal/white-cat.svg +++ b/src/main/resources/persona/animal/white-cat.svg @@ -81,6 +81,23 @@ + + + + + + + + + + + + *{username} + + + +