koishi-plugin-rocom 1.0.18 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/lib/announcement-service.d.ts +21 -0
  2. package/lib/announcement-service.js +63 -0
  3. package/lib/async-control.d.ts +3 -0
  4. package/lib/async-control.js +48 -0
  5. package/lib/atlas-service.js +1 -1
  6. package/lib/client.d.ts +58 -7
  7. package/lib/client.js +282 -127
  8. package/lib/commands/egg.js +66 -4
  9. package/lib/commands/merchant.d.ts +105 -0
  10. package/lib/commands/merchant.js +600 -182
  11. package/lib/commands/query.d.ts +18 -0
  12. package/lib/commands/query.js +585 -145
  13. package/lib/commands/ranking.d.ts +2 -0
  14. package/lib/commands/ranking.js +31 -0
  15. package/lib/commands/share-code.d.ts +2 -0
  16. package/lib/commands/share-code.js +111 -0
  17. package/lib/commands/tools.js +48 -60
  18. package/lib/commands/wiki.js +1 -1
  19. package/lib/egg-service.d.ts +82 -8
  20. package/lib/egg-service.js +235 -19
  21. package/lib/element-colors.d.ts +3 -0
  22. package/lib/element-colors.js +34 -0
  23. package/lib/icon-metrics.d.ts +32 -0
  24. package/lib/icon-metrics.js +255 -0
  25. package/lib/img//345/274/202/350/211/262.png +0 -0
  26. package/lib/img//347/202/253/345/275/251.png +0 -0
  27. package/lib/index.d.ts +10 -0
  28. package/lib/index.js +11857 -175
  29. package/lib/merchant-catalog.d.ts +47 -0
  30. package/lib/merchant-catalog.js +193 -0
  31. package/lib/merchant-clock.d.ts +22 -0
  32. package/lib/merchant-clock.js +95 -0
  33. package/lib/merchant-price-log.d.ts +63 -0
  34. package/lib/merchant-price-log.js +187 -0
  35. package/lib/merchant-service.d.ts +38 -0
  36. package/lib/merchant-service.js +216 -0
  37. package/lib/permissions.d.ts +16 -0
  38. package/lib/permissions.js +66 -0
  39. package/lib/pet-data-service.d.ts +13 -0
  40. package/lib/pet-data-service.js +117 -10
  41. package/lib/pet-size.d.ts +13 -0
  42. package/lib/pet-size.js +54 -0
  43. package/lib/player-service.d.ts +37 -0
  44. package/lib/player-service.js +201 -0
  45. package/lib/ranking-service.d.ts +46 -0
  46. package/lib/ranking-service.js +137 -0
  47. package/lib/render-templates/announcement/detail.html +8 -0
  48. package/lib/render-templates/announcement/list.html +5 -0
  49. package/lib/render-templates/announcement/style.css +1 -0
  50. package/lib/render-templates/home/style.css +15 -14
  51. package/lib/render-templates/home-pets/index.html +80 -0
  52. package/lib/render-templates/home-pets/style.css +338 -0
  53. package/lib/render-templates/pet-detail-classic/index.html +151 -0
  54. package/lib/render-templates/pet-detail-classic/style.css +503 -0
  55. package/lib/render-templates/pet-detail-classic/texture2D/a_title.png +0 -0
  56. package/lib/render-templates/pet-detail-classic/texture2D/bg.jpg +0 -0
  57. package/lib/render-templates/pet-detail-classic/texture2D/footer.png +0 -0
  58. package/lib/render-templates/pet-detail-classic/texture2D/icon.png +0 -0
  59. package/lib/render-templates/pet-detail-classic/texture2D/img_head.png +0 -0
  60. package/lib/render-templates/pet-detail-classic/texture2D/jinhua_bg.png +0 -0
  61. package/lib/render-templates/pet-detail-classic/texture2D/level_icon.png +0 -0
  62. package/lib/render-templates/pet-detail-classic/texture2D/line.png +0 -0
  63. package/lib/render-templates/pet-detail-classic/texture2D/mask_bar.png +0 -0
  64. package/lib/render-templates/pet-detail-classic/texture2D/pet_bg.png +0 -0
  65. package/lib/render-templates/pet-detail-classic/texture2D/pet_rocom.png +0 -0
  66. package/lib/render-templates/pet-detail-classic/texture2D/pet_rocom_bg.png +0 -0
  67. package/lib/render-templates/pet-detail-classic/texture2D/poro_bar.png +0 -0
  68. package/lib/render-templates/pet-detail-classic/texture2D/right_jinhua.png +0 -0
  69. package/lib/render-templates/pet-detail-classic/texture2D/skill_bg.png +0 -0
  70. package/lib/render-templates/pet-detail-classic/texture2D/skill_mask.png +0 -0
  71. package/lib/render-templates/pet-detail-classic/texture2D/star.png +0 -0
  72. package/lib/render-templates/pet-detail-classic/texture2D/star_1.png +0 -0
  73. package/lib/render-templates/pet-detail-classic/texture2D/star_8.png +0 -0
  74. package/lib/render-templates/pet-detail-classic/texture2D/star_9.png +0 -0
  75. package/lib/render-templates/pet-detail-classic/texture2D/table.png +0 -0
  76. package/lib/render-templates/pet-detail-classic/texture2D/tags.png +0 -0
  77. package/lib/render-templates/pet-detail-classic/texture2D/title.png +0 -0
  78. package/lib/render-templates/pet-detail-classic/texture2D/top_bg.png +0 -0
  79. package/lib/render-templates/pet-detail-classic/texture2D/xuancai_overlay.png +0 -0
  80. package/lib/render-templates/pet-detail-classic/texture2D/yise_overlay.png +0 -0
  81. package/lib/render-templates/pet-detail-classic/texture2D/ys_bar.png +0 -0
  82. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/10.png +0 -0
  83. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/11.png +0 -0
  84. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/12.png +0 -0
  85. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/13.png +0 -0
  86. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/14.png +0 -0
  87. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/15.png +0 -0
  88. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/16.png +0 -0
  89. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/17.png +0 -0
  90. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/18.png +0 -0
  91. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/19.png +0 -0
  92. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/2.png +0 -0
  93. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/20.png +0 -0
  94. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/23.png +0 -0
  95. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/3.png +0 -0
  96. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/4.png +0 -0
  97. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/5.png +0 -0
  98. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/6.png +0 -0
  99. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/8.png +0 -0
  100. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247/9.png +0 -0
  101. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/205/211.png +0 -0
  102. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/206/260.png +0 -0
  103. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/234/260.png +0 -0
  104. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/271/273.png +0 -0
  105. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//345/271/275.png +0 -0
  106. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/201/266.png +0 -0
  107. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/227/240.png +0 -0
  108. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/231/256/351/200/232.png +0 -0
  109. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/234/272/346/242/260.png +0 -0
  110. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/255/246.png +0 -0
  111. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/257/222.png +0 -0
  112. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//346/260/264.png +0 -0
  113. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/201/253.png +0 -0
  114. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/224/265.png +0 -0
  115. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//347/277/274.png +0 -0
  116. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/215/211.png +0 -0
  117. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/220/214.png +0 -0
  118. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//350/231/253.png +0 -0
  119. package/lib/render-templates/pet-detail-classic/texture2D//345/261/236/346/200/247//351/276/231.png +0 -0
  120. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/1.png +0 -0
  121. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/10.png +0 -0
  122. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/11.png +0 -0
  123. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/12.png +0 -0
  124. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/13.png +0 -0
  125. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/14.png +0 -0
  126. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/15.png +0 -0
  127. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/16.png +0 -0
  128. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/17.png +0 -0
  129. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/18.png +0 -0
  130. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/19.png +0 -0
  131. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/2.png +0 -0
  132. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/21.png +0 -0
  133. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/23.png +0 -0
  134. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/24.png +0 -0
  135. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/3.png +0 -0
  136. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/4.png +0 -0
  137. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/5.png +0 -0
  138. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/6.png +0 -0
  139. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/7.png +0 -0
  140. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/8.png +0 -0
  141. package/lib/render-templates/pet-detail-classic/texture2D//350/241/200/350/204/211/9.png +0 -0
  142. package/lib/render-templates/pet-ranking/index.html +99 -0
  143. package/lib/render-templates/pet-ranking/style.css +338 -0
  144. package/lib/render-templates/player-search/index.html +7 -0
  145. package/lib/render-templates/searcheggs/index.html +1 -1
  146. package/lib/render-templates/searcheggs/size.html +70 -68
  147. package/lib/render-templates/share-code-classic/assets/eit-logo.png +0 -0
  148. package/lib/render-templates/share-code-classic/assets/img_xingxingdi.png +0 -0
  149. package/lib/render-templates/share-code-classic/assets/roco_icon.png +0 -0
  150. package/lib/render-templates/share-code-classic/assets//345/255/227/344/275/223/Rocofontblack-Regular .ttf +0 -0
  151. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/205/211.png +0 -0
  152. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/206/260.png +0 -0
  153. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/234/260.png +0 -0
  154. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/271/273.png +0 -0
  155. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//345/271/275.png +0 -0
  156. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/201/266.png +0 -0
  157. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/227/240.png +0 -0
  158. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/231/256/351/200/232.png +0 -0
  159. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/234/272/346/242/260.png +0 -0
  160. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/255/246.png +0 -0
  161. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/257/222.png +0 -0
  162. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//346/260/264.png +0 -0
  163. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/201/253.png +0 -0
  164. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/224/265.png +0 -0
  165. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//347/277/274.png +0 -0
  166. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/215/211.png +0 -0
  167. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/220/214.png +0 -0
  168. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//350/231/253.png +0 -0
  169. package/lib/render-templates/share-code-classic/assets//345/256/240/347/211/251/345/261/236/346/200/247//351/276/231.png +0 -0
  170. package/lib/render-templates/share-code-classic/assets//347/201/253/346/274/206/345/215/260.png +0 -0
  171. package/lib/render-templates/share-code-classic/assets//347/253/213/347/273/230/350/203/214/346/231/257/346/241/206.png +0 -0
  172. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/205/211.png +0 -0
  173. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/206/260.png +0 -0
  174. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/234/260.png +0 -0
  175. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/245/207/345/274/202.png +0 -0
  176. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/271/273.png +0 -0
  177. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//345/271/275.png +0 -0
  178. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/201/266.png +0 -0
  179. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/231/256/351/200/232.png +0 -0
  180. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/234/272/346/242/260.png +0 -0
  181. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/255/246.png +0 -0
  182. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/257/222.png +0 -0
  183. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/260/264.png +0 -0
  184. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//346/261/241/346/237/223.png +0 -0
  185. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/201/253.png +0 -0
  186. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/224/265.png +0 -0
  187. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//347/277/274.png +0 -0
  188. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/215/211.png +0 -0
  189. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/220/214.png +0 -0
  190. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//350/231/253.png +0 -0
  191. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//351/246/226/351/242/206.png +0 -0
  192. package/lib/render-templates/share-code-classic/assets//350/241/200/350/204/211//351/276/231.png +0 -0
  193. package/lib/render-templates/share-code-classic/index.html +119 -0
  194. package/lib/render-templates/share-code-classic/style.css +646 -0
  195. package/lib/render-templates/share-code-team/index.html +105 -0
  196. package/lib/render-templates/share-code-team/style.css +345 -0
  197. package/lib/render-templates/yuanxing-shangren/merchant.html +479 -461
  198. package/lib/render-templates/yuanxing-shangren/today.html +407 -461
  199. package/lib/render.d.ts +18 -2
  200. package/lib/render.js +138 -39
  201. package/lib/send-image.d.ts +1 -1
  202. package/lib/send-image.js +22 -1
  203. package/lib/share-code-service.d.ts +68 -0
  204. package/lib/share-code-service.js +257 -0
  205. package/lib/subscription-runner.d.ts +6 -0
  206. package/lib/subscription-runner.js +21 -0
  207. package/lib/subscription-send.d.ts +4 -2
  208. package/lib/subscription-send.js +45 -20
  209. package/lib/ttf/rocom_origin.ttf +0 -0
  210. package/lib/types.d.ts +14 -1
  211. package/lib/user.d.ts +11 -0
  212. package/lib/wiki-catalog.js +1 -1
  213. package/lib/wiki-service.js +1 -1
  214. package/package.json +5 -1
  215. package/readme.md +125 -124
  216. package/lib/ttf/rocom_skill_origin.ttf +0 -0
@@ -0,0 +1,99 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=1080, initial-scale=1">
6
+ <title>{{title}}</title>
7
+ <link rel="stylesheet" href="{{_res_path}}render/pet-ranking/style.css">
8
+ </head>
9
+ <body>
10
+ <section class="pet-ranking-page theme-{{theme}}">
11
+ <header class="ranking-header">
12
+ <div class="title-icon">
13
+ {{if theme == "shining"}}
14
+ <img src="{{_res_path}}img/异色.png" alt="">
15
+ {{else}}
16
+ <img src="{{_res_path}}img/炫彩.png" alt="">
17
+ {{/if}}
18
+ </div>
19
+ <div class="title-copy">
20
+ <h1>{{title}}</h1>
21
+ <p>{{subtitle}} · 当前收录 {{total}} 名玩家</p>
22
+ </div>
23
+ <div class="header-stat">
24
+ <span>TOP</span>
25
+ <strong>{{shownCount}}</strong>
26
+ </div>
27
+ </header>
28
+
29
+ {{if current}}
30
+ <section class="current-rank">
31
+ <div class="current-label">{{current.titleText || '该玩家名次'}}</div>
32
+ <div class="current-rank-value">#{{current.rank}}</div>
33
+ <div class="avatar-shell current-avatar">
34
+ <img class="avatar-fallback" src="{{_res_path}}img/头像黑色圆底.png" alt="">
35
+ {{if current.avatar}}
36
+ <img class="avatar-image" src="{{current.avatar}}" alt="" onerror="this.style.display='none'">
37
+ {{/if}}
38
+ </div>
39
+ <div class="current-player">
40
+ <strong>{{current.playerName}}</strong>
41
+ <span>UID {{current.uid}}</span>
42
+ </div>
43
+ <div class="current-count">
44
+ <strong>{{current.primaryCount}}</strong>
45
+ <span>{{label}}精灵</span>
46
+ </div>
47
+ <div class="current-count secondary">
48
+ <strong>{{current.secondaryCount}}</strong>
49
+ <span>{{otherLabel}}精灵</span>
50
+ </div>
51
+ </section>
52
+ {{else if requestedUid}}
53
+ <section class="current-rank current-empty">
54
+ <div class="current-label">该玩家名次</div>
55
+ <div class="empty-copy">UID {{requestedUid}} 暂无排行榜记录</div>
56
+ </section>
57
+ {{/if}}
58
+
59
+ <main class="ranking-list">
60
+ <div class="ranking-columns">
61
+ <span>名次 / 玩家</span>
62
+ <span>收集统计</span>
63
+ </div>
64
+ {{each items item}}
65
+ <article class="ranking-row {{item.podiumClass}}">
66
+ <div class="rank-number">{{item.rank}}</div>
67
+ <div class="avatar-shell">
68
+ <img class="avatar-fallback" src="{{_res_path}}img/头像黑色圆底.png" alt="">
69
+ {{if item.avatar}}
70
+ <img class="avatar-image" src="{{item.avatar}}" alt="" onerror="this.style.display='none'">
71
+ {{/if}}
72
+ </div>
73
+ <div class="player-copy">
74
+ <div class="player-name">{{item.playerName}}</div>
75
+ <div class="player-signature">{{item.signature}}</div>
76
+ <div class="player-meta">更新 {{item.lastSeen}} · 样本 {{item.sampleCount}}</div>
77
+ </div>
78
+ <div class="count-block primary-count">
79
+ <strong>{{item.primaryCount}}</strong>
80
+ <span>{{label}}</span>
81
+ </div>
82
+ <div class="count-block secondary-count">
83
+ <strong>{{item.secondaryCount}}</strong>
84
+ <span>{{otherLabel}}</span>
85
+ </div>
86
+ </article>
87
+ {{/each}}
88
+ {{if !items.length && !current}}
89
+ <div class="ranking-empty">当前排行榜暂无记录。</div>
90
+ {{/if}}
91
+ </main>
92
+
93
+ <footer class="ranking-footer">
94
+ <span>{{commandHint}}</span>
95
+ <span>{{updatedAt}} · {{copyright}}</span>
96
+ </footer>
97
+ </section>
98
+ </body>
99
+ </html>
@@ -0,0 +1,338 @@
1
+ @font-face {
2
+ font-family: "rocom-ranking";
3
+ src: url("../../ttf/HYWenHei-85W-1.ttf") format("truetype");
4
+ font-display: swap;
5
+ }
6
+
7
+ :root {
8
+ --ink: #292621;
9
+ --muted: #80786c;
10
+ --paper: rgba(249, 245, 235, 0.96);
11
+ --row: rgba(255, 255, 255, 0.76);
12
+ --line: rgba(58, 49, 38, 0.12);
13
+ --accent: #a85c79;
14
+ --accent-soft: #f1dce6;
15
+ --secondary: #4e8274;
16
+ }
17
+
18
+ html,
19
+ body {
20
+ margin: 0;
21
+ padding: 24px;
22
+ background: url("../../img/bg.C8CUoi7I.jpg") no-repeat center top;
23
+ background-size: cover;
24
+ font-family: "rocom-ranking", "Microsoft YaHei", sans-serif;
25
+ letter-spacing: 0;
26
+ }
27
+
28
+ .pet-ranking-page {
29
+ width: 1000px;
30
+ box-sizing: border-box;
31
+ padding: 34px 38px 28px;
32
+ margin: 0 auto;
33
+ color: var(--ink);
34
+ background: var(--paper);
35
+ border: 1px solid rgba(255, 255, 255, 0.7);
36
+ border-radius: 8px;
37
+ box-shadow: 0 18px 46px rgba(31, 24, 17, 0.18);
38
+ }
39
+
40
+ .theme-glass {
41
+ --accent: #3f8f92;
42
+ --accent-soft: #d7ece9;
43
+ --secondary: #a45c79;
44
+ }
45
+
46
+ .ranking-header {
47
+ min-height: 88px;
48
+ display: grid;
49
+ grid-template-columns: 72px 1fr 110px;
50
+ gap: 18px;
51
+ align-items: center;
52
+ padding-bottom: 24px;
53
+ border-bottom: 2px solid var(--accent);
54
+ }
55
+
56
+ .title-icon {
57
+ width: 68px;
58
+ height: 68px;
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: center;
62
+ background: var(--accent-soft);
63
+ border: 1px solid rgba(38, 31, 26, 0.08);
64
+ border-radius: 8px;
65
+ }
66
+
67
+ .title-icon img {
68
+ width: 58px;
69
+ height: 58px;
70
+ object-fit: contain;
71
+ }
72
+
73
+ .title-copy h1 {
74
+ margin: 0;
75
+ font-size: 38px;
76
+ line-height: 1.15;
77
+ color: var(--ink);
78
+ }
79
+
80
+ .title-copy p {
81
+ margin: 8px 0 0;
82
+ font-size: 17px;
83
+ line-height: 1.35;
84
+ color: var(--muted);
85
+ }
86
+
87
+ .header-stat {
88
+ height: 64px;
89
+ display: flex;
90
+ flex-direction: column;
91
+ align-items: flex-end;
92
+ justify-content: center;
93
+ color: var(--accent);
94
+ }
95
+
96
+ .header-stat span {
97
+ font-size: 14px;
98
+ }
99
+
100
+ .header-stat strong {
101
+ margin-top: 2px;
102
+ font-size: 34px;
103
+ line-height: 1;
104
+ }
105
+
106
+ .current-rank {
107
+ min-height: 88px;
108
+ display: grid;
109
+ grid-template-columns: 92px 72px 58px 1fr 118px 118px;
110
+ gap: 14px;
111
+ align-items: center;
112
+ margin: 22px 0;
113
+ padding: 16px 20px;
114
+ box-sizing: border-box;
115
+ background: var(--accent-soft);
116
+ border-left: 5px solid var(--accent);
117
+ border-radius: 6px;
118
+ }
119
+
120
+ .current-label {
121
+ font-size: 16px;
122
+ color: var(--muted);
123
+ }
124
+
125
+ .current-rank-value {
126
+ font-size: 28px;
127
+ color: var(--accent);
128
+ font-weight: 700;
129
+ }
130
+
131
+ .current-player {
132
+ min-width: 0;
133
+ display: flex;
134
+ flex-direction: column;
135
+ gap: 4px;
136
+ }
137
+
138
+ .current-player strong {
139
+ overflow-wrap: anywhere;
140
+ font-size: 22px;
141
+ }
142
+
143
+ .current-player span {
144
+ font-size: 13px;
145
+ color: var(--muted);
146
+ }
147
+
148
+ .current-count {
149
+ display: flex;
150
+ flex-direction: column;
151
+ align-items: flex-end;
152
+ }
153
+
154
+ .current-count strong {
155
+ font-size: 28px;
156
+ color: var(--accent);
157
+ }
158
+
159
+ .current-count span {
160
+ font-size: 13px;
161
+ color: var(--muted);
162
+ }
163
+
164
+ .current-count.secondary strong {
165
+ color: var(--secondary);
166
+ }
167
+
168
+ .current-empty {
169
+ grid-template-columns: 92px 1fr;
170
+ }
171
+
172
+ .empty-copy {
173
+ font-size: 18px;
174
+ color: var(--muted);
175
+ }
176
+
177
+ .ranking-columns {
178
+ height: 32px;
179
+ display: flex;
180
+ align-items: center;
181
+ justify-content: space-between;
182
+ padding: 0 18px 0 106px;
183
+ color: var(--muted);
184
+ font-size: 13px;
185
+ }
186
+
187
+ .ranking-list {
188
+ display: flex;
189
+ flex-direction: column;
190
+ gap: 9px;
191
+ }
192
+
193
+ .ranking-row {
194
+ min-height: 92px;
195
+ display: grid;
196
+ grid-template-columns: 58px 64px 1fr 110px 92px;
197
+ gap: 14px;
198
+ align-items: center;
199
+ padding: 12px 18px;
200
+ box-sizing: border-box;
201
+ background: var(--row);
202
+ border: 1px solid var(--line);
203
+ border-radius: 6px;
204
+ }
205
+
206
+ .ranking-row.podium-1,
207
+ .ranking-row.podium-2,
208
+ .ranking-row.podium-3 {
209
+ border-left: 5px solid var(--accent);
210
+ }
211
+
212
+ .rank-number {
213
+ width: 42px;
214
+ height: 42px;
215
+ display: flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ border-radius: 50%;
219
+ background: #ece7dc;
220
+ color: #686055;
221
+ font-size: 18px;
222
+ font-weight: 700;
223
+ }
224
+
225
+ .podium-1 .rank-number {
226
+ background: #e2bd58;
227
+ color: #3d2c0d;
228
+ }
229
+
230
+ .podium-2 .rank-number {
231
+ background: #c8c9cb;
232
+ color: #34373a;
233
+ }
234
+
235
+ .podium-3 .rank-number {
236
+ background: #c88f62;
237
+ color: #3f2818;
238
+ }
239
+
240
+ .avatar-shell {
241
+ position: relative;
242
+ width: 58px;
243
+ height: 58px;
244
+ overflow: hidden;
245
+ flex: 0 0 58px;
246
+ background: #e8e1d6;
247
+ border: 1px solid var(--line);
248
+ border-radius: 50%;
249
+ }
250
+
251
+ .current-avatar {
252
+ width: 52px;
253
+ height: 52px;
254
+ }
255
+
256
+ .avatar-fallback,
257
+ .avatar-image {
258
+ position: absolute;
259
+ inset: 0;
260
+ width: 100%;
261
+ height: 100%;
262
+ object-fit: cover;
263
+ }
264
+
265
+ .avatar-image {
266
+ z-index: 1;
267
+ }
268
+
269
+ .player-copy {
270
+ min-width: 0;
271
+ }
272
+
273
+ .player-name {
274
+ overflow-wrap: anywhere;
275
+ font-size: 20px;
276
+ line-height: 1.2;
277
+ font-weight: 700;
278
+ }
279
+
280
+ .player-signature {
281
+ margin-top: 4px;
282
+ overflow: hidden;
283
+ text-overflow: ellipsis;
284
+ white-space: nowrap;
285
+ font-size: 14px;
286
+ color: #655f56;
287
+ }
288
+
289
+ .player-meta {
290
+ margin-top: 5px;
291
+ font-size: 12px;
292
+ color: var(--muted);
293
+ }
294
+
295
+ .count-block {
296
+ display: flex;
297
+ flex-direction: column;
298
+ align-items: flex-end;
299
+ }
300
+
301
+ .count-block strong {
302
+ font-size: 28px;
303
+ line-height: 1;
304
+ }
305
+
306
+ .count-block span {
307
+ margin-top: 5px;
308
+ font-size: 12px;
309
+ color: var(--muted);
310
+ }
311
+
312
+ .primary-count strong {
313
+ color: var(--accent);
314
+ }
315
+
316
+ .secondary-count strong {
317
+ color: var(--secondary);
318
+ }
319
+
320
+ .ranking-empty {
321
+ padding: 24px;
322
+ text-align: center;
323
+ color: var(--muted);
324
+ background: var(--row);
325
+ border: 1px dashed var(--line);
326
+ border-radius: 6px;
327
+ }
328
+
329
+ .ranking-footer {
330
+ display: flex;
331
+ justify-content: space-between;
332
+ gap: 24px;
333
+ margin-top: 22px;
334
+ padding-top: 18px;
335
+ border-top: 1px solid var(--line);
336
+ font-size: 13px;
337
+ color: var(--muted);
338
+ }
@@ -39,6 +39,13 @@
39
39
  </section>
40
40
  {{/if}}
41
41
 
42
+ {{if collectedShining !== undefined || collectedGlass !== undefined}}
43
+ <section class="summary-strip">
44
+ <div class="summary-item">异色收集:{{collectedShining || '0'}}</div>
45
+ <div class="summary-item">炫彩收集:{{collectedGlass || '0'}}</div>
46
+ </section>
47
+ {{/if}}
48
+ {{if cardImageUrl}}<section class="signature-strip"><img src="{{cardImageUrl}}" style="max-width:100%;height:auto" onerror="this.style.display='none'" alt="名片"></section>{{/if}}
42
49
  <main class="content-grid">
43
50
  {{each sections section}}
44
51
  <section class="panel">
@@ -76,7 +76,7 @@
76
76
  <div class="info-value">{{total_stats}}</div>
77
77
  </div>
78
78
  <div class="info-item">
79
- <div class="info-label">可配种数</div>
79
+ <div class="info-label">{{if compatible_total_known === false}}当前预览数{{else}}可配种数{{/if}}</div>
80
80
  <div class="info-value">{{total_compatible}}</div>
81
81
  </div>
82
82
  <div class="info-item">
@@ -1,82 +1,84 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8">
5
- <link rel="stylesheet" href="{{_res_path}}render/searcheggs/style.css">
6
- <style>
7
- .result-group { margin-top: 20px; }
8
- .result-group-title { font-size: 28px; font-weight: 800; color: #4b3423; margin-bottom: 14px; }
9
- .result-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
10
- .result-card { background: rgba(255,255,255,0.94); border-radius: 18px; padding: 18px; box-shadow: 0 10px 24px rgba(40, 31, 23, 0.08); }
11
- .result-card-icon { width: 64px; height: 64px; border-radius: 16px; background: rgba(248, 244, 236, 0.92); display: flex; align-items: center; justify-content: center; margin-bottom: 12px; border: 1px solid rgba(75, 52, 35, 0.08); }
12
- .result-card-icon img { width: 56px; height: 56px; object-fit: contain; }
13
- .result-card-name { font-size: 26px; font-weight: 700; color: #4d3624; }
14
- .result-card-meta { margin-top: 8px; color: #75563d; font-size: 18px; line-height: 1.7; }
15
- .result-empty { text-align: center; color: #6f5845; padding: 44px 20px; font-size: 24px; }
16
- .pagination-footer { margin-top: 22px; display: flex; justify-content: space-between; gap: 14px; color: #8c7a61; font-size: 14px; }
17
- .pagination-hint { max-width: 70%; }
18
- .copyright { white-space: nowrap; }
19
- </style>
20
- </head>
21
- <body>
22
- <div class="searcheggs-cont page-section-main">
23
- <div class="header-card">
24
- <div class="header-main">
25
- <div class="header-title">尺寸反查</div>
26
- <div class="header-subtitle">查询条件:{{query_label}}</div>
27
- </div>
28
- </div>
29
-
30
- {{if !has_results}}
31
- <div class="result-empty">没有找到匹配当前尺寸的精灵,注意身高要使用 m,例如 0.18m。</div>
32
- {{/if}}
33
-
34
- {{if perfect_matches && perfect_matches.length}}
35
- <section class="result-group">
36
- <div class="result-group-title">完美匹配</div>
37
- <div class="result-grid">
38
- {{each perfect_matches item}}
39
- <div class="result-card">
40
- {{if item.icon}}
41
- <div class="result-card-icon"><img src="{{item.icon}}" alt="{{item.name}}" onerror="this.style.display='none'"></div>
42
- {{/if}}
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <link rel="stylesheet" href="{{_res_path}}render/searcheggs/style.css">
6
+ <style>
7
+ .result-group { margin-top: 20px; }
8
+ .result-group-title { font-size: 28px; font-weight: 800; color: #4b3423; margin-bottom: 14px; }
9
+ .result-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
10
+ .result-card { background: rgba(255,255,255,0.94); border-radius: 18px; padding: 18px; box-shadow: 0 10px 24px rgba(40, 31, 23, 0.08); }
11
+ .result-card-icon { width: 64px; height: 64px; border-radius: 16px; background: rgba(248, 244, 236, 0.92); display: flex; align-items: center; justify-content: center; margin-bottom: 12px; border: 1px solid rgba(75, 52, 35, 0.08); }
12
+ .result-card-icon img { width: 56px; height: 56px; object-fit: contain; }
13
+ .result-card-name { font-size: 26px; font-weight: 700; color: #4d3624; }
14
+ .result-card-meta { margin-top: 8px; color: #75563d; font-size: 18px; line-height: 1.7; }
15
+ .result-empty { text-align: center; color: #6f5845; padding: 44px 20px; font-size: 24px; }
16
+ .pagination-footer { margin-top: 22px; display: flex; justify-content: space-between; gap: 14px; color: #8c7a61; font-size: 14px; }
17
+ .pagination-hint { max-width: 70%; }
18
+ .copyright { white-space: nowrap; }
19
+ </style>
20
+ </head>
21
+ <body>
22
+ <div class="searcheggs-cont page-section-main">
23
+ <div class="header-card">
24
+ <div class="header-main">
25
+ <div class="header-title">尺寸反查</div>
26
+ <div class="header-subtitle">查询条件:{{query_label}}</div>
27
+ </div>
28
+ </div>
29
+
30
+ {{if !has_results}}
31
+ <div class="result-empty">没有找到匹配当前尺寸的精灵,注意身高要使用 m,例如 0.18m。</div>
32
+ {{/if}}
33
+
34
+ {{if perfect_matches && perfect_matches.length}}
35
+ <section class="result-group">
36
+ <div class="result-group-title">完美匹配</div>
37
+ <div class="result-grid">
38
+ {{each perfect_matches item}}
39
+ <div class="result-card">
40
+ {{if item.icon}}
41
+ <div class="result-card-icon"><img src="{{item.icon}}" alt="{{item.name}}" onerror="this.style.display='none'"></div>
42
+ {{/if}}
43
43
  <div class="result-card-name">{{item.name}} #{{item.id}}</div>
44
44
  <div class="result-card-meta">
45
45
  属性:{{item.type_label}}<br>
46
46
  蛋组:{{item.egg_groups_label}}{{if item.match_info_label}} | 匹配:{{item.match_info_label}}{{/if}}<br>
47
47
  身高:{{item.height_label}} | 体重:{{item.weight_label}}
48
+ {{if item.size_variant_label}}<br><strong>{{item.size_variant_label}}</strong> · {{item.size_variant_hint}}{{/if}}
48
49
  </div>
49
50
  </div>
50
- {{/each}}
51
- </div>
52
- </section>
53
- {{/if}}
54
-
55
- {{if range_matches && range_matches.length}}
56
- <section class="result-group">
57
- <div class="result-group-title">范围匹配</div>
58
- <div class="result-grid">
59
- {{each range_matches item}}
60
- <div class="result-card">
61
- {{if item.icon}}
62
- <div class="result-card-icon"><img src="{{item.icon}}" alt="{{item.name}}" onerror="this.style.display='none'"></div>
63
- {{/if}}
51
+ {{/each}}
52
+ </div>
53
+ </section>
54
+ {{/if}}
55
+
56
+ {{if range_matches && range_matches.length}}
57
+ <section class="result-group">
58
+ <div class="result-group-title">范围匹配</div>
59
+ <div class="result-grid">
60
+ {{each range_matches item}}
61
+ <div class="result-card">
62
+ {{if item.icon}}
63
+ <div class="result-card-icon"><img src="{{item.icon}}" alt="{{item.name}}" onerror="this.style.display='none'"></div>
64
+ {{/if}}
64
65
  <div class="result-card-name">{{item.name}} #{{item.id}}</div>
65
66
  <div class="result-card-meta">
66
67
  属性:{{item.type_label}}<br>
67
68
  蛋组:{{item.egg_groups_label}}{{if item.match_info_label}} | 匹配:{{item.match_info_label}}{{/if}}<br>
68
69
  身高:{{item.height_label}} | 体重:{{item.weight_label}}
70
+ {{if item.size_variant_label}}<br><strong>{{item.size_variant_label}}</strong> · {{item.size_variant_hint}}{{/if}}
69
71
  </div>
70
72
  </div>
71
- {{/each}}
72
- </div>
73
- </section>
74
- {{/if}}
75
-
76
- <div class="pagination-footer">
77
- <span class="pagination-hint">{{commandHint}}</span>
78
- <span class="copyright">{{copyright}}</span>
79
- </div>
80
- </div>
81
- </body>
82
- </html>
73
+ {{/each}}
74
+ </div>
75
+ </section>
76
+ {{/if}}
77
+
78
+ <div class="pagination-footer">
79
+ <span class="pagination-hint">{{commandHint}}</span>
80
+ <span class="copyright">{{copyright}}</span>
81
+ </div>
82
+ </div>
83
+ </body>
84
+ </html>