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..7c2f6fd 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt @@ -17,13 +17,18 @@ 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) .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() }, @@ -38,13 +43,18 @@ 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) .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() }, @@ -59,13 +69,18 @@ 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) .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() }, @@ -80,13 +95,18 @@ 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) .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() }, @@ -101,13 +121,18 @@ 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) .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() }, @@ -122,13 +147,18 @@ 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) .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() }, @@ -143,13 +173,18 @@ 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) .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 +205,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() }, @@ -185,13 +220,18 @@ 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) .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() }, @@ -206,13 +246,18 @@ 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) .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() }, @@ -227,13 +272,18 @@ 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) .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() }, @@ -248,13 +298,18 @@ 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) .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() }, @@ -269,13 +324,18 @@ 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) .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() }, @@ -290,13 +350,18 @@ 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) .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() }, @@ -311,13 +376,18 @@ 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) .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() }, @@ -332,13 +402,18 @@ 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) .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() }, @@ -353,13 +428,18 @@ 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) .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() }, @@ -374,13 +454,18 @@ 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) .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() }, @@ -394,13 +479,18 @@ 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) .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() }, @@ -415,9 +505,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 6, 22.5) .toString() }, @@ -432,9 +527,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 6, 22.5) .toString() }, @@ -449,9 +549,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -466,9 +571,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -483,9 +593,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -500,9 +615,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -517,9 +637,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -534,9 +659,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -551,9 +681,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("penguin", id, 10, "180s", 10, 22.5) .toString() }, @@ -568,9 +703,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -585,9 +725,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -602,9 +747,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -619,9 +769,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -636,9 +791,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -653,9 +813,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -670,9 +835,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -687,9 +857,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -704,9 +879,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -721,9 +901,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fig", id, 5, "180s", 10, 60.5) .toString() }, @@ -737,9 +922,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -753,9 +943,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -769,9 +964,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -785,9 +985,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -801,9 +1006,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -817,9 +1027,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -833,9 +1048,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -849,9 +1069,19 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -865,9 +1095,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -881,9 +1116,14 @@ 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): String { + override fun act(id: Long, flippedWidth: Double): String { val x = Random.nextInt(25, 75) val y = Random.nextInt(0, 50) val scale = 1 @@ -900,9 +1140,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("tenmm", id, 15, "180s", 5, 28.5) .toString() }, @@ -916,9 +1161,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("goblin", id, 15, "180s", 5, 14.5) .toString() }, @@ -932,9 +1182,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("goblin-bag", id, 15, "180s", 5, 14.5) .toString() }, @@ -948,9 +1203,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("bbibbi", id, 15, "180s", 5, 31.5) .toString() }, @@ -964,9 +1224,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -980,9 +1245,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -996,9 +1266,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1012,9 +1287,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1028,9 +1308,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1044,9 +1329,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("cat", id, 15, "180s", 5, 17.5) .toString() }, @@ -1060,9 +1350,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fishman", id, 15, "180s", 5, 16.5) .toString() }, @@ -1075,9 +1370,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("fishman", id, 15, "180s", 5, 16.5) .toString() }, @@ -1090,9 +1390,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("quokka", id, 40, "180s", 5, 10.0) .toString() }, @@ -1105,9 +1410,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("quokka", id, 40, "180s", 5, 10.0) .toString() }, @@ -1120,9 +1430,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("quokka", id, 40, "180s", 5, 10.0) .toString() }, @@ -1135,9 +1450,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("mole", id, 40, "180s", 5, 14.0) .toString() }, @@ -1150,9 +1470,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("mole", id, 40, "180s", 5, 14.0) .toString() }, @@ -1165,9 +1490,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("rabbit", id, 40, "180s", 5, 10.0) .toString() }, @@ -1180,9 +1510,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("rabbit", id, 40, "180s", 5, 10.0) .toString() }, @@ -1195,9 +1530,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("rabbit", id, 40, "180s", 5, 10.0) .toString() }, @@ -1210,9 +1550,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("dessert-fox", id, 40, "180s", 5, 26.0) .toString() }, @@ -1225,9 +1570,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("dessert-fox", id, 40, "180s", 5, 26.0) .toString() }, @@ -1240,9 +1590,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("dessert-fox", id, 40, "180s", 5, 28.0) .toString() }, @@ -1255,9 +1610,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("sloth", id, 5, "180s", 5, 16.5) .toString() }, @@ -1270,9 +1630,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("sloth", id, 5, "180s", 5, 16.5) .toString() }, @@ -1283,11 +1648,16 @@ 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() ) } - override fun act(id: Long): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("sloth", id, 5, "180s", 5, 16.5) .toString() }, @@ -1300,9 +1670,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("turtle", id, 5, "180s", 5, 33.5) .toString() }, @@ -1315,9 +1690,14 @@ 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): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("ghost", id, 20, "180s", 7, 26.0) .toString() }, @@ -1330,9 +1710,14 @@ 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): String = StringBuilder() + override fun act(id: Long, flippedWidth: Double): String = StringBuilder() .moveRandomly("ghost", id, 20, "180s", 7, 26.0) .toString() }, @@ -1345,9 +1730,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("scream", id, 10, "180s", 5, 17.5) .toString() }, @@ -1360,9 +1750,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("scream", id, 10, "180s", 5, 17.5) .toString() }, @@ -1375,9 +1770,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -1390,9 +1790,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("slime", id, 15, "180s", 5, 21.0) .toString() }, @@ -1405,9 +1810,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1420,9 +1830,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1435,9 +1850,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1450,9 +1870,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1465,9 +1890,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1480,9 +1910,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("hamster", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1495,9 +1930,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("snowman", id, 5, "1000s", 5, 17.0) .toString() }, @@ -1510,9 +1950,14 @@ 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): String = + override fun act(id: Long, flippedWidth: Double): String = StringBuilder().moveRandomly("snowman", id, 5, "1000s", 5, 21.0) .toString() }, @@ -1546,7 +1991,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 +1999,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 +2013,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 +2126,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 +2187,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/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-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/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} + + + + 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 )