maidraw 0.7.0 → 0.7.1

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 (214) hide show
  1. package/assets/themes/maimai/chart/common/prism/jp/background.png +0 -0
  2. package/assets/themes/maimai/chart/common/versionless/logo/cn/200.png +0 -0
  3. package/assets/themes/maimai/chart/common/versionless/logo/cn/210.png +0 -0
  4. package/assets/themes/maimai/chart/common/versionless/logo/cn/220.png +0 -0
  5. package/assets/themes/maimai/chart/common/versionless/logo/cn/230.png +0 -0
  6. package/assets/themes/maimai/chart/common/versionless/logo/cn/240.png +0 -0
  7. package/assets/themes/maimai/chart/common/versionless/logo/intl/210.png +0 -0
  8. package/assets/themes/maimai/chart/common/versionless/logo/intl/215.png +0 -0
  9. package/assets/themes/maimai/chart/common/versionless/logo/jp/100.png +0 -0
  10. package/assets/themes/maimai/chart/common/versionless/logo/jp/110.png +0 -0
  11. package/assets/themes/maimai/chart/common/versionless/logo/jp/120.png +0 -0
  12. package/assets/themes/maimai/chart/common/versionless/logo/jp/130.png +0 -0
  13. package/assets/themes/maimai/chart/common/versionless/logo/jp/140.png +0 -0
  14. package/assets/themes/maimai/chart/common/versionless/logo/jp/150.png +0 -0
  15. package/assets/themes/maimai/chart/common/versionless/logo/jp/160.png +0 -0
  16. package/assets/themes/maimai/chart/common/versionless/logo/jp/170.png +0 -0
  17. package/assets/themes/maimai/chart/common/versionless/logo/jp/180.png +0 -0
  18. package/assets/themes/maimai/chart/common/versionless/logo/jp/185.png +0 -0
  19. package/assets/themes/maimai/chart/common/versionless/logo/jp/190.png +0 -0
  20. package/assets/themes/maimai/chart/common/versionless/logo/jp/195.png +0 -0
  21. package/assets/themes/maimai/chart/common/versionless/logo/jp/199.png +0 -0
  22. package/assets/themes/maimai/chart/common/versionless/logo/jp/200.png +0 -0
  23. package/assets/themes/maimai/chart/common/versionless/logo/jp/205.png +0 -0
  24. package/assets/themes/maimai/chart/common/versionless/logo/jp/210.png +0 -0
  25. package/assets/themes/maimai/chart/common/versionless/logo/jp/215.png +0 -0
  26. package/assets/themes/maimai/chart/common/versionless/logo/jp/220.png +0 -0
  27. package/assets/themes/maimai/chart/common/versionless/logo/jp/225.png +0 -0
  28. package/assets/themes/maimai/chart/common/versionless/logo/jp/230.png +0 -0
  29. package/assets/themes/maimai/chart/common/versionless/logo/jp/235.png +0 -0
  30. package/assets/themes/maimai/chart/common/versionless/logo/jp/240.png +0 -0
  31. package/assets/themes/maimai/chart/common/versionless/logo/jp/245.png +0 -0
  32. package/assets/themes/maimai/chart/common/versionless/logo/jp/250.png +0 -0
  33. package/assets/themes/maimai/chart/common/versionless/logo/jp/255.png +0 -0
  34. package/assets/themes/maimai/chart/jp/prism/manifest.json +167 -0
  35. package/dist/chu/bests/best50.d.ts +0 -2
  36. package/dist/chu/bests/best50.js +14 -61
  37. package/dist/chu/bests/best50.js.map +1 -1
  38. package/dist/chu/bests/type.d.ts +1 -1
  39. package/dist/geki/bests/best50.d.ts +0 -2
  40. package/dist/geki/bests/best50.js +14 -61
  41. package/dist/geki/bests/best50.js.map +1 -1
  42. package/dist/geki/bests/type.d.ts +1 -1
  43. package/dist/geki/chart/database.js +0 -1
  44. package/dist/geki/chart/database.js.map +1 -1
  45. package/dist/lib/util.d.ts +32 -0
  46. package/dist/lib/util.js +119 -0
  47. package/dist/lib/util.js.map +1 -0
  48. package/dist/mai/best50/index.d.ts +231 -38
  49. package/dist/mai/best50/index.js +115 -161
  50. package/dist/mai/best50/index.js.map +1 -1
  51. package/dist/mai/chart/index.d.ts +224 -0
  52. package/dist/mai/chart/index.js +1152 -1
  53. package/dist/mai/chart/index.js.map +1 -1
  54. package/dist/mai/{best50/lib → lib}/divingFish/index.d.ts +14 -6
  55. package/dist/mai/{best50/lib → lib}/divingFish/index.js +38 -27
  56. package/dist/mai/lib/divingFish/index.js.map +1 -0
  57. package/dist/mai/{best50/lib → lib}/index.d.ts +12 -4
  58. package/dist/mai/{best50/lib → lib}/index.js +2 -2
  59. package/dist/mai/lib/index.js.map +1 -0
  60. package/dist/mai/{best50/lib → lib}/kamaiTachi/index.d.ts +37 -29
  61. package/dist/mai/{best50/lib → lib}/kamaiTachi/index.js +74 -21
  62. package/dist/mai/lib/kamaiTachi/index.js.map +1 -0
  63. package/dist/mai/{best50/lib → lib}/lxns/index.d.ts +14 -6
  64. package/dist/mai/{best50/lib → lib}/lxns/index.js +37 -27
  65. package/dist/mai/lib/lxns/index.js.map +1 -0
  66. package/dist/mai/type.d.ts +0 -51
  67. package/dist/mai/type.js +1 -35
  68. package/dist/mai/type.js.map +1 -1
  69. package/package.json +5 -2
  70. package/dist/mai/best50/lib/divingFish/index.js.map +0 -1
  71. package/dist/mai/best50/lib/index.js.map +0 -1
  72. package/dist/mai/best50/lib/kamaiTachi/index.js.map +0 -1
  73. package/dist/mai/best50/lib/lxns/index.js.map +0 -1
  74. package/dist/mai/best50/type.d.ts +0 -145
  75. package/dist/mai/best50/type.js +0 -3
  76. package/dist/mai/best50/type.js.map +0 -1
  77. /package/assets/themes/maimai/{cn → best50/cn}/2024Landscape/manifest.json +0 -0
  78. /package/assets/themes/maimai/{cn → best50/cn}/2024Portrait/manifest.json +0 -0
  79. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/a.png +0 -0
  80. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/aa.png +0 -0
  81. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/aaa.png +0 -0
  82. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/b.png +0 -0
  83. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/bb.png +0 -0
  84. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/bbb.png +0 -0
  85. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/c.png +0 -0
  86. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/d.png +0 -0
  87. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/s.png +0 -0
  88. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/sp.png +0 -0
  89. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/ss.png +0 -0
  90. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/ssp.png +0 -0
  91. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/sss.png +0 -0
  92. /package/assets/themes/maimai/{common → best50/common}/buddies/achievement/sssp.png +0 -0
  93. /package/assets/themes/maimai/{common → best50/common}/buddies/cn/logo.png +0 -0
  94. /package/assets/themes/maimai/{common → best50/common}/buddies/jp/background.png +0 -0
  95. /package/assets/themes/maimai/{common → best50/common}/buddies/jp/chara.png +0 -0
  96. /package/assets/themes/maimai/{common → best50/common}/buddies/jp/laundry.png +0 -0
  97. /package/assets/themes/maimai/{common → best50/common}/buddies/jp/logo.png +0 -0
  98. /package/assets/themes/maimai/{common → best50/common}/buddies/plus/chara.png +0 -0
  99. /package/assets/themes/maimai/{common → best50/common}/buddies/plus/laundry.png +0 -0
  100. /package/assets/themes/maimai/{common → best50/common}/buddies/plus/logo.png +0 -0
  101. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/a.png +0 -0
  102. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/aa.png +0 -0
  103. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/aaa.png +0 -0
  104. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/b.png +0 -0
  105. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/c.png +0 -0
  106. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/d.png +0 -0
  107. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/e.png +0 -0
  108. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/f.png +0 -0
  109. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/s.png +0 -0
  110. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/sp.png +0 -0
  111. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/ss.png +0 -0
  112. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/ssp.png +0 -0
  113. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/sss.png +0 -0
  114. /package/assets/themes/maimai/{common → best50/common}/finale/achievement/sssp.png +0 -0
  115. /package/assets/themes/maimai/{common → best50/common}/finale/background.png +0 -0
  116. /package/assets/themes/maimai/{common → best50/common}/finale/background2.png +0 -0
  117. /package/assets/themes/maimai/{common → best50/common}/finale/logo.png +0 -0
  118. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/ap.png +0 -0
  119. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/app.png +0 -0
  120. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/fc.png +0 -0
  121. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/fcp.png +0 -0
  122. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/fdx.png +0 -0
  123. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/fdxp.png +0 -0
  124. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/fsp.png +0 -0
  125. /package/assets/themes/maimai/{common → best50/common}/finale/milestone/sync.png +0 -0
  126. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/a.png +0 -0
  127. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/aa.png +0 -0
  128. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/aaa.png +0 -0
  129. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/b.png +0 -0
  130. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/bb.png +0 -0
  131. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/bbb.png +0 -0
  132. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/c.png +0 -0
  133. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/d.png +0 -0
  134. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/s.png +0 -0
  135. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/sp.png +0 -0
  136. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/ss.png +0 -0
  137. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/ssp.png +0 -0
  138. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/sss.png +0 -0
  139. /package/assets/themes/maimai/{common → best50/common}/prism/achievement/sssp.png +0 -0
  140. /package/assets/themes/maimai/{common → best50/common}/prism/jp/background.png +0 -0
  141. /package/assets/themes/maimai/{common → best50/common}/prism/jp/chara.png +0 -0
  142. /package/assets/themes/maimai/{common → best50/common}/prism/jp/laundry.png +0 -0
  143. /package/assets/themes/maimai/{common → best50/common}/prism/jp/logo.png +0 -0
  144. /package/assets/themes/maimai/{common → best50/common}/prism/plus/chara.png +0 -0
  145. /package/assets/themes/maimai/{common → best50/common}/prism/plus/laundry.png +0 -0
  146. /package/assets/themes/maimai/{common → best50/common}/prism/plus/logo.png +0 -0
  147. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/blue.png +0 -0
  148. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/bronze.png +0 -0
  149. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/gold.png +0 -0
  150. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/green.png +0 -0
  151. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/platinum.png +0 -0
  152. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/purple.png +0 -0
  153. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/rainbow.png +0 -0
  154. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/red.png +0 -0
  155. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/silver.png +0 -0
  156. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/white.png +0 -0
  157. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/cn/yellow.png +0 -0
  158. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/blue.png +0 -0
  159. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/bronze.png +0 -0
  160. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/gold.png +0 -0
  161. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/green.png +0 -0
  162. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/platinum.png +0 -0
  163. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/purple.png +0 -0
  164. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/rainbow.png +0 -0
  165. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/red.png +0 -0
  166. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/silver.png +0 -0
  167. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/white.png +0 -0
  168. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/jp/yellow.png +0 -0
  169. /package/assets/themes/maimai/{common → best50/common}/versionless/dxRating/numberMap.png +0 -0
  170. /package/assets/themes/maimai/{common → best50/common}/versionless/icon.png +0 -0
  171. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/ap.png +0 -0
  172. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/app.png +0 -0
  173. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/fc.png +0 -0
  174. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/fcp.png +0 -0
  175. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/fdx.png +0 -0
  176. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/fdxp.png +0 -0
  177. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/fs.png +0 -0
  178. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/fsp.png +0 -0
  179. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/none.png +0 -0
  180. /package/assets/themes/maimai/{common → best50/common}/versionless/milestone/sync.png +0 -0
  181. /package/assets/themes/maimai/{common → best50/common}/versionless/mode/cn/dx.png +0 -0
  182. /package/assets/themes/maimai/{common → best50/common}/versionless/mode/cn/standard.png +0 -0
  183. /package/assets/themes/maimai/{common → best50/common}/versionless/mode/jp/dx.png +0 -0
  184. /package/assets/themes/maimai/{common → best50/common}/versionless/mode/jp/standard.png +0 -0
  185. /package/assets/themes/maimai/{common → best50/common}/versionless/nameplate.png +0 -0
  186. /package/assets/themes/maimai/{common → best50/common}/versionless/void.png +0 -0
  187. /package/assets/themes/maimai/{jp → best50/jp}/buddiesLandscape/manifest.json +0 -0
  188. /package/assets/themes/maimai/{jp → best50/jp}/buddiesPlusLandscape/manifest.json +0 -0
  189. /package/assets/themes/maimai/{jp → best50/jp}/buddiesPlusPortrait/manifest.json +0 -0
  190. /package/assets/themes/maimai/{jp → best50/jp}/buddiesPortrait/manifest.json +0 -0
  191. /package/assets/themes/maimai/{jp → best50/jp}/finaleLandscape/manifest.json +0 -0
  192. /package/assets/themes/maimai/{jp → best50/jp}/finalePortrait/manifest.json +0 -0
  193. /package/assets/themes/maimai/{jp → best50/jp}/prismLandscape/manifest.json +0 -0
  194. /package/assets/themes/maimai/{jp → best50/jp}/prismPlusLandscape/manifest.json +0 -0
  195. /package/assets/themes/maimai/{jp → best50/jp}/prismPlusPortrait/manifest.json +0 -0
  196. /package/assets/themes/maimai/{jp → best50/jp}/prismPortrait/manifest.json +0 -0
  197. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/a.png +0 -0
  198. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/aa.png +0 -0
  199. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/aaa.png +0 -0
  200. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/b.png +0 -0
  201. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/bb.png +0 -0
  202. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/bbb.png +0 -0
  203. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/c.png +0 -0
  204. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/d.png +0 -0
  205. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/s.png +0 -0
  206. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/sp.png +0 -0
  207. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/ss.png +0 -0
  208. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/ssp.png +0 -0
  209. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/sss.png +0 -0
  210. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/achievement/sssp.png +0 -0
  211. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/background.png +0 -0
  212. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/chara.png +0 -0
  213. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/image/logo.png +0 -0
  214. /package/assets/themes/maimai/{salt → best50/salt}/2026landscape/manifest.json +0 -0
@@ -1,10 +1,234 @@
1
- import { IScore } from "../type";
2
- import ScoreTrackerAdapter from "./lib";
3
- import * as lxns from "./lib/lxns";
4
- import * as kamaiTachi from "./lib/kamaiTachi";
5
- import * as divingFish from "./lib/divingFish";
1
+ import ScoreTrackerAdapter from "../lib";
2
+ import * as lxns from "../lib/lxns";
3
+ import * as kamaiTachi from "../lib/kamaiTachi";
4
+ import * as divingFish from "../lib/divingFish";
5
+ import { EDifficulty } from "../type";
6
6
  export declare class Best50 {
7
- static readonly RATING_CONSTANTS: {
7
+ private static readonly DEFAULT_THEME;
8
+ private static get assetsPath();
9
+ private static themes;
10
+ static hasTheme(name: string): boolean;
11
+ private static validateManifest;
12
+ private static primaryTheme;
13
+ static loadTheme(path: string): boolean;
14
+ private static getTheme;
15
+ private static getThemeFile;
16
+ private static drawImageModule;
17
+ private static drawScoreGridModule;
18
+ private static drawProfileModule;
19
+ private static drawTextModule;
20
+ static draw(name: string, rating: number, newScores: Best50.IScore[], oldScores: Best50.IScore[], options?: {
21
+ scale?: number;
22
+ theme?: string;
23
+ profilePicture?: Buffer;
24
+ }): Promise<Buffer | null>;
25
+ static drawWithScoreSource(source: ScoreTrackerAdapter, username: string, options?: {
26
+ scale?: number;
27
+ theme?: string;
28
+ profilePicture?: Buffer | null;
29
+ }): Promise<Buffer | null>;
30
+ private static getRatingNumber;
31
+ }
32
+ export declare namespace Best50 {
33
+ export import LXNS = lxns.LXNS;
34
+ export import KamaiTachi = kamaiTachi.KamaiTachi;
35
+ export import DivingFish = divingFish.DivingFish;
36
+ interface IThemeManifest {
37
+ displayName: string;
38
+ name: string;
39
+ width: number;
40
+ height: number;
41
+ sprites: IThemeSprites;
42
+ elements: IThemeElements[];
43
+ }
44
+ interface IThemeSprites {
45
+ achievement: {
46
+ d: string;
47
+ c: string;
48
+ b: string;
49
+ bb: string;
50
+ bbb: string;
51
+ a: string;
52
+ aa: string;
53
+ aaa: string;
54
+ s: string;
55
+ sp: string;
56
+ ss: string;
57
+ ssp: string;
58
+ sss: string;
59
+ sssp: string;
60
+ };
61
+ mode: {
62
+ standard: string;
63
+ dx: string;
64
+ };
65
+ milestone: {
66
+ ap: string;
67
+ app: string;
68
+ fc: string;
69
+ fcp: string;
70
+ fdx: string;
71
+ fdxp: string;
72
+ fs: string;
73
+ fsp: string;
74
+ sync: string;
75
+ none: string;
76
+ };
77
+ dxRating: {
78
+ white: string;
79
+ blue: string;
80
+ green: string;
81
+ yellow: string;
82
+ red: string;
83
+ purple: string;
84
+ bronze: string;
85
+ silver: string;
86
+ gold: string;
87
+ platinum: string;
88
+ rainbow: string;
89
+ };
90
+ dxRatingNumberMap: string;
91
+ profile: {
92
+ icon: string;
93
+ nameplate: string;
94
+ };
95
+ }
96
+ type IThemeElements = IThemeProfileElement | IThemeScoreElement | IThemeImageElement | IThemeTextElement;
97
+ interface IThemeElement {
98
+ type: string;
99
+ x: number;
100
+ y: number;
101
+ }
102
+ interface IThemeProfileElement extends IThemeElement {
103
+ type: "profile";
104
+ height: number;
105
+ }
106
+ interface IThemeScoreElement extends IThemeElement {
107
+ type: "score-grid";
108
+ horizontalSize: number;
109
+ verticalSize: number;
110
+ region: "new" | "old";
111
+ index: number;
112
+ scoreBubble: {
113
+ width: number;
114
+ height: number;
115
+ margin: number;
116
+ gap: number;
117
+ color: {
118
+ basic: string;
119
+ advanced: string;
120
+ expert: string;
121
+ master: string;
122
+ remaster: string;
123
+ utage: string;
124
+ };
125
+ };
126
+ }
127
+ interface IThemeImageElement extends IThemeElement {
128
+ type: "image";
129
+ width: number;
130
+ height: number;
131
+ /**
132
+ * Relative path from the manifest file to the element file.
133
+ */
134
+ path: string;
135
+ }
136
+ interface IThemeTextElement extends IThemeElement {
137
+ type: "text";
138
+ size: number;
139
+ content: string;
140
+ /**
141
+ * If width is provied and the text is too long, it will be cut off.
142
+ */
143
+ width?: number;
144
+ /**
145
+ * If height is provied and the text is too big, it will be cut off.
146
+ */
147
+ height?: number;
148
+ /**
149
+ * If true, instead of cutting off the text, it will change to a new line.
150
+ * Height restrictions will still apply.
151
+ */
152
+ linebreak?: boolean;
153
+ /**
154
+ * Text alignment.
155
+ * Defaults to left.
156
+ */
157
+ align?: "left" | "center" | "right";
158
+ /**
159
+ * Text color.
160
+ * Defaults to white (#FFFFFF).
161
+ */
162
+ color?: string;
163
+ /**
164
+ * Text border color.
165
+ * Defaults a darker variant of `color`.
166
+ */
167
+ borderColor?: string;
168
+ /**
169
+ * Text font. Please make sure the font is available in the environment.
170
+ * Defaults to a preconfigured font macro. Check source code for more info.
171
+ */
172
+ font?: string;
173
+ }
174
+ interface IBest50 {
175
+ new: IScore[];
176
+ old: IScore[];
177
+ username: string;
178
+ rating: number;
179
+ }
180
+ enum EComboTypes {
181
+ NONE = 0,
182
+ FULL_COMBO = 1,
183
+ FULL_COMBO_PLUS = 2,
184
+ ALL_PERFECT = 3,
185
+ ALL_PERFECT_PLUS = 4
186
+ }
187
+ enum ESyncTypes {
188
+ NONE = 0,
189
+ SYNC_PLAY = 1,
190
+ FULL_SYNC = 2,
191
+ FULL_SYNC_PLUS = 3,
192
+ FULL_SYNC_DX = 4,
193
+ FULL_SYNC_DX_PLUS = 5
194
+ }
195
+ enum EAchievementTypes {
196
+ D = 0,
197
+ C = 1,
198
+ B = 2,
199
+ BB = 3,
200
+ BBB = 4,
201
+ A = 5,
202
+ AA = 6,
203
+ AAA = 7,
204
+ S = 8,
205
+ SP = 9,
206
+ SS = 10,
207
+ SSP = 11,
208
+ SSS = 12,
209
+ SSSP = 13
210
+ }
211
+ interface IScore {
212
+ chart: IChart;
213
+ combo: EComboTypes;
214
+ sync: ESyncTypes;
215
+ achievement: number;
216
+ achievementRank: EAchievementTypes;
217
+ dxRating: number;
218
+ dxScore: number;
219
+ }
220
+ interface IChart {
221
+ id: number;
222
+ name: string;
223
+ difficulty: EDifficulty;
224
+ /**
225
+ * Chart internal level.
226
+ * `7.0, 11.2, 11.7, 13.2, 14.8, 15.0`
227
+ */
228
+ level: number;
229
+ maxDxScore: number;
230
+ }
231
+ const RATING_CONSTANTS: {
8
232
  0: {
9
233
  0.4: number;
10
234
  0.3: number;
@@ -26,7 +250,7 @@ export declare class Best50 {
26
250
  12: number;
27
251
  13: number;
28
252
  };
29
- static readonly RANK_BORDERS: {
253
+ const RANK_BORDERS: {
30
254
  0: number[];
31
255
  1: number;
32
256
  2: number;
@@ -42,35 +266,4 @@ export declare class Best50 {
42
266
  12: number;
43
267
  13: number;
44
268
  };
45
- private static readonly DEFAULT_THEME;
46
- private static get assetsPath();
47
- private static themes;
48
- static hasTheme(name: string): boolean;
49
- private static validateManifest;
50
- private static primaryTheme;
51
- static loadTheme(path: string): boolean;
52
- private static getTheme;
53
- private static getThemeFile;
54
- private static findMaxFitString;
55
- private static drawText;
56
- private static drawImageModule;
57
- private static drawScoreGridModule;
58
- private static drawProfileModule;
59
- private static drawTextModule;
60
- static draw(name: string, rating: number, newScores: IScore[], oldScores: IScore[], options?: {
61
- scale?: number;
62
- theme?: string;
63
- profilePicture?: Buffer;
64
- }): Promise<Buffer | null>;
65
- static drawWithScoreSource(source: ScoreTrackerAdapter, username: string, options?: {
66
- scale?: number;
67
- theme?: string;
68
- profilePicture?: Buffer | null;
69
- }): Promise<Buffer | null>;
70
- private static getRatingNumber;
71
- }
72
- export declare namespace Best50 {
73
- export import LXNS = lxns.LXNS;
74
- export import KamaiTachi = kamaiTachi.KamaiTachi;
75
- export import DivingFish = divingFish.DivingFish;
76
269
  }