diff --git a/README.md b/README.md index ce7872b..7d0d312 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ ## +
@@ -38,31 +39,32 @@ line mode는 자신이 갖고있는 펫중 하나를 지정해서, 지정한 width, height범위에서 움직이게 해요. line mode를 사용할때, markdown 방식으로 이미지를 요청하면, width, height를 설정할 수 없어서 펫이 보이지 않을 수 있으니, HTMl방식을 -사용해주세요. +사용해주세요. > [!TIP] > **Img의 width와 height를 조절해서 펫의 이동영역을 조절할 수 있어요.** > width를 길게 height를 작게하면 (width = 1000, height = 60) 가로로 길게 움직이게 할 수 있어요. > 반대로, width를 작게 height를 길게하면 (width = 60, height = 1000) 세로로 길게 움직이게 할 수 있어요. > 만약, 펫이 보이지 않는다면, img의 height를 펫의 세로 길이보다 충분히 크게 적용해주세요. - + - + ```html ``` -_pet-id에 아무값도 입력하지 않으면, 첫번째 펫이 가져와져요._ - -변경 가능한 pet-id는 `https://render.gitanimals.org/users/{username}` 의 {username}을 자신의 깃허브 아이디로 변경 후 API를 요청하면 확인할 수 있어요. +_pet-id에 아무값도 입력하지 않으면, 첫번째 펫이 가져와져요._ + +변경 가능한 pet-id는 `https://render.gitanimals.org/users/{username}` 의 {username}을 자신의 깃허브 아이디로 변경 후 API를 +요청하면 확인할 수 있어요. API 응답의 `$.personas.[].id` 에 해당하는 값을 pet-id에 입력하면 돼요. -lines모드에서는 펫 레벨 위에 총 contributions수를 보여줘요. 원하지 않을경우, 쿼리 파라미터로 `contribution-view=false`를 담아 요청하세요. +lines모드에서는 펫 레벨 위에 총 contributions수를 보여줘요. 원하지 않을경우, 쿼리 파라미터로 `contribution-view=false`를 담아 요청하세요. ### farm mode @@ -100,54 +102,56 @@ _새로운 contribtuion은 반영은 최대 1시간이 소요될 수 있어요. ### 등장 가능한 펫들 -| name | ratio | -|---------------------------------------------------------------------------------------|-------| -| goose | 1.0 | -| goose_sunglasses | 0.05 | -| goose_kotlin | 0.01 | -| goose_java | 0.01 | -| goose_js | 0.01 | -| goose_node | 0.01 | -| goose_swift | 0.01 | -| goose_linux | 0.01 | -| goose_spring | 0.01 | -| little_chick | 0.9 | -| little_chick_suglasses | 0.4 | -| little_chick_kotlin | 0.01 | -| little_chick_java | 0.01 | -| little_chick_js | 0.01 | -| little_chick_node | 0.01 | -| little_chick_swift | 0.01 | -| little_chick_linux | 0.01 | -| little_chick_spring | 0.01 | -| penguin | 0.5 | -| penguin_sunglasses | 0.2 | -| penguin_kotlin | 0.01 | -| penguin_java | 0.01 | -| penguin_js | 0.01 | -| penguin_node | 0.01 | -| penguin_swift | 0.01 | -| penguin_linux | 0.01 | -| penguin_spring | 0.01 | -| pig | 0.2 | -| pig_sunglasses | 0.08 | -| pig_kotlin | 0.01 | -| pig_java | 0.01 | -| pig_js | 0.01 | -| pig_node | 0.01 | -| pig_swift | 0.01 | -| pig_linux | 0.01 | -| pig_spring | 0.01 | -| slime_red | 0.1 | -| slime_red_kotlin | 0.001 | -| slime_red_java | 0.001 | -| slime_red_js | 0.001 | -| slime_red_node | 0.001 | -| slime_red_swift | 0.001 | -| slime_red_linux | 0.001 | -| slime_green | 0.1 | -| slime_blue | 0.1 | -| flamingo
| 0.08 | +| name | ratio | Description | +|------------------------------------------------------------------------|-------|--------------------------------------------------------------------------------------------------------------------------------------| +| goose | 1.0 | | +| goose_sunglasses | 0.05 | | +| | | | +| goose_kotlin | 0.01 | | +| goose_java | 0.01 | | +| goose_js | 0.01 | | +| goose_node | 0.01 | | +| goose_swift | 0.01 | | +| goose_linux | 0.01 | | +| goose_spring | 0.01 | | +| little_chick | 0.9 | | +| little_chick_suglasses | 0.4 | | +| little_chick_kotlin | 0.01 | | +| little_chick_java | 0.01 | | +| little_chick_js | 0.01 | | +| little_chick_node | 0.01 | | +| little_chick_swift | 0.01 | | +| little_chick_linux | 0.01 | | +| little_chick_spring | 0.01 | | +| penguin | 0.5 | | +| penguin_sunglasses | 0.2 | | +| penguin_kotlin | 0.01 | | +| penguin_java | 0.01 | | +| penguin_js | 0.01 | | +| penguin_node | 0.01 | | +| penguin_swift | 0.01 | | +| penguin_linux | 0.01 | | +| penguin_spring | 0.01 | | +| pig | 0.2 | | +| pig_sunglasses | 0.08 | | +| pig_kotlin | 0.01 | | +| pig_java | 0.01 | | +| pig_js | 0.01 | | +| pig_node | 0.01 | | +| pig_swift | 0.01 | | +| pig_linux | 0.01 | | +| pig_spring | 0.01 | | +| slime_red | 0.1 | | +| slime_red_kotlin | 0.001 | | +| slime_red_java | 0.001 | | +| slime_red_js | 0.001 | | +| slime_red_node | 0.001 | | +| slime_red_swift | 0.001 | | +| slime_red_linux | 0.001 | | +| slime_green | 0.1 | | +| slime_blue | 0.1 | | +| flamingo
| 0.08 | | +| TEN_MM
| 0.00 | Character created with `10MM` donations
Only buy in shop
10MM | ## diff --git a/docs/tenmm.svg b/docs/tenmm.svg new file mode 100644 index 0000000..0fec26b --- /dev/null +++ b/docs/tenmm.svg @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt b/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt index f88adb6..e7730d4 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/PersonaType.kt @@ -937,11 +937,29 @@ enum class PersonaType(private val weight: Double) { } return "translate(${x}%, ${y}%) scaleX($scale)" } - } + }, + + TEN_MM(0.000) { + override fun loadSvg(user: User, persona: Persona, mode: Mode): String { + check(persona.id != null) { "Save persona first before call load()" } + + return tenmmSvg.replace("*{act}", act(persona.id)) + .replace("*{id}", persona.id.toString()) + .replace("*{level}", persona.level.value.toSvg(14.0, 2.0)) + .replace( + "*{levelx}", + (-2 + (-1 * (persona.level.value.toString().length))).toString() + ) + } + + override fun act(id: Long): String = + StringBuilder().moveRandomly("tenmm", id, 15, "180s", 5) + .toString() + }, ; init { - require(weight in 0.001..1.0) { "PersonaType's weight should be between 0.01 to 1.0" } + require(weight in 0.000..1.0) { "PersonaType's weight should be between 0.000 to 1.0" } } fun load(user: User, persona: Persona, mode: Mode): String = diff --git a/src/main/kotlin/org/gitanimals/render/domain/Svgs.kt b/src/main/kotlin/org/gitanimals/render/domain/Svgs.kt index 5c36ad6..4db4360 100644 --- a/src/main/kotlin/org/gitanimals/render/domain/Svgs.kt +++ b/src/main/kotlin/org/gitanimals/render/domain/Svgs.kt @@ -1,7 +1,6 @@ package org.gitanimals.render.domain import org.springframework.core.io.ClassPathResource -import org.springframework.util.ClassUtils import java.nio.charset.Charset val whiteFieldSvg: String = ClassPathResource("persona/field/white-field.svg") @@ -148,6 +147,9 @@ val slimeGreenSvg: String = ClassPathResource("persona/animal/slime-green.svg") val flamingoSvg: String = ClassPathResource("persona/animal/flamingo.svg") .getContentAsString(Charset.defaultCharset()) +val tenmmSvg: String = ClassPathResource("persona/animal/tenmm.svg") + .getContentAsString(Charset.defaultCharset()) + val largeTextSvgs = lazy { val map = mutableMapOf() for (i in 'A'..'Z') { diff --git a/src/main/resources/persona/animal/tenmm.svg b/src/main/resources/persona/animal/tenmm.svg new file mode 100644 index 0000000..be86fdd --- /dev/null +++ b/src/main/resources/persona/animal/tenmm.svg @@ -0,0 +1,196 @@ + + + + + + + + *{contribution} + + + + + + + + + + + *{level} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/persona/goose/test.svg b/src/test/resources/persona/goose/test.svg index 763d1db..98d6b28 100644 --- a/src/test/resources/persona/goose/test.svg +++ b/src/test/resources/persona/goose/test.svg @@ -1,382 +1,193 @@ - - - - - - *{contribution} + + + + + + + + + + + + - - - + + - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -384,5 +195,4 @@ - - +