@lotus-tree/fg-notation 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (275) hide show
  1. package/lib/img/basic/1.png +0 -0
  2. package/lib/img/basic/12369.png +0 -0
  3. package/lib/img/basic/1237.png +0 -0
  4. package/lib/img/basic/1632143.png +0 -0
  5. package/lib/img/basic/2.png +0 -0
  6. package/lib/img/basic/21.png +0 -0
  7. package/lib/img/basic/214.png +0 -0
  8. package/lib/img/basic/21478.png +0 -0
  9. package/lib/img/basic/23.png +0 -0
  10. package/lib/img/basic/236.png +0 -0
  11. package/lib/img/basic/23698.png +0 -0
  12. package/lib/img/basic/28.png +0 -0
  13. package/lib/img/basic/3.png +0 -0
  14. package/lib/img/basic/32147.png +0 -0
  15. package/lib/img/basic/3219.png +0 -0
  16. package/lib/img/basic/341236.png +0 -0
  17. package/lib/img/basic/346.png +0 -0
  18. package/lib/img/basic/360.png +0 -0
  19. package/lib/img/basic/4.png +0 -0
  20. package/lib/img/basic/41236.png +0 -0
  21. package/lib/img/basic/421.png +0 -0
  22. package/lib/img/basic/46.png +0 -0
  23. package/lib/img/basic/4618346.png +0 -0
  24. package/lib/img/basic/47896.png +0 -0
  25. package/lib/img/basic/5.png +0 -0
  26. package/lib/img/basic/6.png +0 -0
  27. package/lib/img/basic/623.png +0 -0
  28. package/lib/img/basic/63214.png +0 -0
  29. package/lib/img/basic/64.png +0 -0
  30. package/lib/img/basic/6428.png +0 -0
  31. package/lib/img/basic/69874.png +0 -0
  32. package/lib/img/basic/7.png +0 -0
  33. package/lib/img/basic/7891.png +0 -0
  34. package/lib/img/basic/8.png +0 -0
  35. package/lib/img/basic/81237.png +0 -0
  36. package/lib/img/basic/82.png +0 -0
  37. package/lib/img/basic/87412.png +0 -0
  38. package/lib/img/basic/89632.png +0 -0
  39. package/lib/img/basic/9.png +0 -0
  40. package/lib/img/basic/[1].png +0 -0
  41. package/lib/img/basic/[2].png +0 -0
  42. package/lib/img/basic/[2]8.png +0 -0
  43. package/lib/img/basic/[3].png +0 -0
  44. package/lib/img/basic/[4].png +0 -0
  45. package/lib/img/basic/[6].png +0 -0
  46. package/lib/img/basic/[7].png +0 -0
  47. package/lib/img/basic/[8].png +0 -0
  48. package/lib/img/basic/[9].png +0 -0
  49. package/lib/img/basic/air.png +0 -0
  50. package/lib/img/basic/doubleforward.png +0 -0
  51. package/lib/img/credits.txt +4 -0
  52. package/lib/img/games/bb/a.png +0 -0
  53. package/lib/img/games/bb/b.png +0 -0
  54. package/lib/img/games/bb/c.png +0 -0
  55. package/lib/img/games/bb/d.png +0 -0
  56. package/lib/img/games/dbz/a1.png +0 -0
  57. package/lib/img/games/dbz/a2.png +0 -0
  58. package/lib/img/games/dbz/h.png +0 -0
  59. package/lib/img/games/dbz/l.png +0 -0
  60. package/lib/img/games/dbz/m.png +0 -0
  61. package/lib/img/games/dbz/s.png +0 -0
  62. package/lib/img/games/dnf/a.png +0 -0
  63. package/lib/img/games/dnf/as.png +0 -0
  64. package/lib/img/games/dnf/b.png +0 -0
  65. package/lib/img/games/dnf/g.png +0 -0
  66. package/lib/img/games/dnf/ms.png +0 -0
  67. package/lib/img/games/dnf/s.png +0 -0
  68. package/lib/img/games/gbf/g.png +0 -0
  69. package/lib/img/games/gbf/h.png +0 -0
  70. package/lib/img/games/gbf/l.png +0 -0
  71. package/lib/img/games/gbf/m.png +0 -0
  72. package/lib/img/games/gbf/s.png +0 -0
  73. package/lib/img/games/gg/d.png +0 -0
  74. package/lib/img/games/gg/hs.png +0 -0
  75. package/lib/img/games/gg/k.png +0 -0
  76. package/lib/img/games/gg/p.png +0 -0
  77. package/lib/img/games/gg/s.png +0 -0
  78. package/lib/img/games/kof/a.png +0 -0
  79. package/lib/img/games/kof/b.png +0 -0
  80. package/lib/img/games/kof/c.png +0 -0
  81. package/lib/img/games/kof/d.png +0 -0
  82. package/lib/img/games/kof/max.png +0 -0
  83. package/lib/img/games/mk/1.png +0 -0
  84. package/lib/img/games/mk/2.png +0 -0
  85. package/lib/img/games/mk/3.png +0 -0
  86. package/lib/img/games/mk/4.png +0 -0
  87. package/lib/img/games/sc/[a].png +0 -0
  88. package/lib/img/games/sc/[b].png +0 -0
  89. package/lib/img/games/sc/[g].png +0 -0
  90. package/lib/img/games/sc/[k].png +0 -0
  91. package/lib/img/games/sc/a.png +0 -0
  92. package/lib/img/games/sc/b.png +0 -0
  93. package/lib/img/games/sc/g.png +0 -0
  94. package/lib/img/games/sc/k.png +0 -0
  95. package/lib/img/games/sf/hk.png +0 -0
  96. package/lib/img/games/sf/hp.png +0 -0
  97. package/lib/img/games/sf/j..png +0 -0
  98. package/lib/img/games/sf/lk.png +0 -0
  99. package/lib/img/games/sf/lp.png +0 -0
  100. package/lib/img/games/sf/max.png +0 -0
  101. package/lib/img/games/sf/mk.png +0 -0
  102. package/lib/img/games/sf/mp.png +0 -0
  103. package/lib/img/games/sf/tap.png +0 -0
  104. package/lib/img/games/sg/hk.png +0 -0
  105. package/lib/img/games/sg/hp.png +0 -0
  106. package/lib/img/games/sg/k.png +0 -0
  107. package/lib/img/games/sg/lk.png +0 -0
  108. package/lib/img/games/sg/lp.png +0 -0
  109. package/lib/img/games/sg/mk.png +0 -0
  110. package/lib/img/games/sg/mp.png +0 -0
  111. package/lib/img/games/sg/p.png +0 -0
  112. package/lib/img/games/tfh/a.png +0 -0
  113. package/lib/img/games/tfh/b.png +0 -0
  114. package/lib/img/games/tfh/c.png +0 -0
  115. package/lib/img/games/tfh/d.png +0 -0
  116. package/lib/img/games/tkn/1.png +0 -0
  117. package/lib/img/games/tkn/12.png +0 -0
  118. package/lib/img/games/tkn/1234.png +0 -0
  119. package/lib/img/games/tkn/13.png +0 -0
  120. package/lib/img/games/tkn/14.png +0 -0
  121. package/lib/img/games/tkn/2.png +0 -0
  122. package/lib/img/games/tkn/23.png +0 -0
  123. package/lib/img/games/tkn/24.png +0 -0
  124. package/lib/img/games/tkn/3.png +0 -0
  125. package/lib/img/games/tkn/34.png +0 -0
  126. package/lib/img/games/tkn/4.png +0 -0
  127. package/lib/img/games/tkn/b.png +0 -0
  128. package/lib/img/games/tkn/d-b.png +0 -0
  129. package/lib/img/games/tkn/d-f.png +0 -0
  130. package/lib/img/games/tkn/d.png +0 -0
  131. package/lib/img/games/tkn/f.png +0 -0
  132. package/lib/img/games/tkn/o.png +0 -0
  133. package/lib/img/games/tkn/u-b.png +0 -0
  134. package/lib/img/games/tkn/u-f.png +0 -0
  135. package/lib/img/games/tkn/u.png +0 -0
  136. package/lib/img/preview.png +0 -0
  137. package/lib/index.js +382 -0
  138. package/package.json +10 -0
  139. package/src/img/basic/1.png +0 -0
  140. package/src/img/basic/12369.png +0 -0
  141. package/src/img/basic/1237.png +0 -0
  142. package/src/img/basic/1632143.png +0 -0
  143. package/src/img/basic/2.png +0 -0
  144. package/src/img/basic/21.png +0 -0
  145. package/src/img/basic/214.png +0 -0
  146. package/src/img/basic/21478.png +0 -0
  147. package/src/img/basic/23.png +0 -0
  148. package/src/img/basic/236.png +0 -0
  149. package/src/img/basic/23698.png +0 -0
  150. package/src/img/basic/28.png +0 -0
  151. package/src/img/basic/3.png +0 -0
  152. package/src/img/basic/32147.png +0 -0
  153. package/src/img/basic/3219.png +0 -0
  154. package/src/img/basic/341236.png +0 -0
  155. package/src/img/basic/346.png +0 -0
  156. package/src/img/basic/360.png +0 -0
  157. package/src/img/basic/4.png +0 -0
  158. package/src/img/basic/41236.png +0 -0
  159. package/src/img/basic/421.png +0 -0
  160. package/src/img/basic/46.png +0 -0
  161. package/src/img/basic/4618346.png +0 -0
  162. package/src/img/basic/47896.png +0 -0
  163. package/src/img/basic/5.png +0 -0
  164. package/src/img/basic/6.png +0 -0
  165. package/src/img/basic/623.png +0 -0
  166. package/src/img/basic/63214.png +0 -0
  167. package/src/img/basic/64.png +0 -0
  168. package/src/img/basic/6428.png +0 -0
  169. package/src/img/basic/69874.png +0 -0
  170. package/src/img/basic/7.png +0 -0
  171. package/src/img/basic/7891.png +0 -0
  172. package/src/img/basic/8.png +0 -0
  173. package/src/img/basic/81237.png +0 -0
  174. package/src/img/basic/82.png +0 -0
  175. package/src/img/basic/87412.png +0 -0
  176. package/src/img/basic/89632.png +0 -0
  177. package/src/img/basic/9.png +0 -0
  178. package/src/img/basic/[1].png +0 -0
  179. package/src/img/basic/[2].png +0 -0
  180. package/src/img/basic/[2]8.png +0 -0
  181. package/src/img/basic/[3].png +0 -0
  182. package/src/img/basic/[4].png +0 -0
  183. package/src/img/basic/[6].png +0 -0
  184. package/src/img/basic/[7].png +0 -0
  185. package/src/img/basic/[8].png +0 -0
  186. package/src/img/basic/[9].png +0 -0
  187. package/src/img/basic/air.png +0 -0
  188. package/src/img/basic/doubleforward.png +0 -0
  189. package/src/img/credits.txt +4 -0
  190. package/src/img/games/bb/a.png +0 -0
  191. package/src/img/games/bb/b.png +0 -0
  192. package/src/img/games/bb/c.png +0 -0
  193. package/src/img/games/bb/d.png +0 -0
  194. package/src/img/games/dbz/a1.png +0 -0
  195. package/src/img/games/dbz/a2.png +0 -0
  196. package/src/img/games/dbz/h.png +0 -0
  197. package/src/img/games/dbz/l.png +0 -0
  198. package/src/img/games/dbz/m.png +0 -0
  199. package/src/img/games/dbz/s.png +0 -0
  200. package/src/img/games/dnf/a.png +0 -0
  201. package/src/img/games/dnf/as.png +0 -0
  202. package/src/img/games/dnf/b.png +0 -0
  203. package/src/img/games/dnf/g.png +0 -0
  204. package/src/img/games/dnf/ms.png +0 -0
  205. package/src/img/games/dnf/s.png +0 -0
  206. package/src/img/games/gbf/g.png +0 -0
  207. package/src/img/games/gbf/h.png +0 -0
  208. package/src/img/games/gbf/l.png +0 -0
  209. package/src/img/games/gbf/m.png +0 -0
  210. package/src/img/games/gbf/s.png +0 -0
  211. package/src/img/games/gg/d.png +0 -0
  212. package/src/img/games/gg/hs.png +0 -0
  213. package/src/img/games/gg/k.png +0 -0
  214. package/src/img/games/gg/p.png +0 -0
  215. package/src/img/games/gg/s.png +0 -0
  216. package/src/img/games/kof/a.png +0 -0
  217. package/src/img/games/kof/b.png +0 -0
  218. package/src/img/games/kof/c.png +0 -0
  219. package/src/img/games/kof/d.png +0 -0
  220. package/src/img/games/kof/max.png +0 -0
  221. package/src/img/games/mk/1.png +0 -0
  222. package/src/img/games/mk/2.png +0 -0
  223. package/src/img/games/mk/3.png +0 -0
  224. package/src/img/games/mk/4.png +0 -0
  225. package/src/img/games/sc/[a].png +0 -0
  226. package/src/img/games/sc/[b].png +0 -0
  227. package/src/img/games/sc/[g].png +0 -0
  228. package/src/img/games/sc/[k].png +0 -0
  229. package/src/img/games/sc/a.png +0 -0
  230. package/src/img/games/sc/b.png +0 -0
  231. package/src/img/games/sc/g.png +0 -0
  232. package/src/img/games/sc/k.png +0 -0
  233. package/src/img/games/sf/hk.png +0 -0
  234. package/src/img/games/sf/hp.png +0 -0
  235. package/src/img/games/sf/j..png +0 -0
  236. package/src/img/games/sf/lk.png +0 -0
  237. package/src/img/games/sf/lp.png +0 -0
  238. package/src/img/games/sf/max.png +0 -0
  239. package/src/img/games/sf/mk.png +0 -0
  240. package/src/img/games/sf/mp.png +0 -0
  241. package/src/img/games/sf/tap.png +0 -0
  242. package/src/img/games/sg/hk.png +0 -0
  243. package/src/img/games/sg/hp.png +0 -0
  244. package/src/img/games/sg/k.png +0 -0
  245. package/src/img/games/sg/lk.png +0 -0
  246. package/src/img/games/sg/lp.png +0 -0
  247. package/src/img/games/sg/mk.png +0 -0
  248. package/src/img/games/sg/mp.png +0 -0
  249. package/src/img/games/sg/p.png +0 -0
  250. package/src/img/games/tfh/a.png +0 -0
  251. package/src/img/games/tfh/b.png +0 -0
  252. package/src/img/games/tfh/c.png +0 -0
  253. package/src/img/games/tfh/d.png +0 -0
  254. package/src/img/games/tkn/1.png +0 -0
  255. package/src/img/games/tkn/12.png +0 -0
  256. package/src/img/games/tkn/1234.png +0 -0
  257. package/src/img/games/tkn/13.png +0 -0
  258. package/src/img/games/tkn/14.png +0 -0
  259. package/src/img/games/tkn/2.png +0 -0
  260. package/src/img/games/tkn/23.png +0 -0
  261. package/src/img/games/tkn/24.png +0 -0
  262. package/src/img/games/tkn/3.png +0 -0
  263. package/src/img/games/tkn/34.png +0 -0
  264. package/src/img/games/tkn/4.png +0 -0
  265. package/src/img/games/tkn/b.png +0 -0
  266. package/src/img/games/tkn/d-b.png +0 -0
  267. package/src/img/games/tkn/d-f.png +0 -0
  268. package/src/img/games/tkn/d.png +0 -0
  269. package/src/img/games/tkn/f.png +0 -0
  270. package/src/img/games/tkn/o.png +0 -0
  271. package/src/img/games/tkn/u-b.png +0 -0
  272. package/src/img/games/tkn/u-f.png +0 -0
  273. package/src/img/games/tkn/u.png +0 -0
  274. package/src/img/preview.png +0 -0
  275. package/src/index.js +155 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/src/index.js ADDED
@@ -0,0 +1,155 @@
1
+ import sharp from 'sharp'
2
+ import path from 'path'
3
+ import glob from 'glob'
4
+ import { DataTypes } from 'sequelize'
5
+
6
+ const imgPath = path.join(__dirname, 'img')
7
+ const basicInputs = new Map()
8
+ const gameInputs = new Map()
9
+
10
+ glob.sync(path.join(imgPath, 'basic/**'), { nodir: true })
11
+ .forEach(p => {
12
+ const input = p.split('/').pop().replace('.png', '')
13
+ basicInputs.set(input, p)
14
+ })
15
+
16
+ basicInputs.set('>>', path.join(imgPath, 'basic/doubleforward.png'))
17
+
18
+ glob.sync(path.join(imgPath, 'games/**'), { nodir: true })
19
+ .forEach(p => {
20
+ const { dir, name } = path.parse(path.relative(path.join(imgPath, 'games'), p))
21
+
22
+ if (!gameInputs.has(dir)) gameInputs.set(dir, new Map())
23
+ gameInputs.get(dir).set(name, p)
24
+ })
25
+
26
+ function solveInput (inputs, input) {
27
+ if (inputs.has(input)) return [input]
28
+
29
+ for (let i = 0; i < input.length; i++) {
30
+ const s1 = input.slice(0, 0 - i)
31
+ if (inputs.has(s1)) return [s1, ...solveInput(inputs, input.slice(0 - i))]
32
+ }
33
+
34
+ throw new Error(`Cannot find "${input}" as a recognizable input`)
35
+ }
36
+
37
+ async function sendInput (inputs, result, message, caption) {
38
+ const canvas = await sharp({ create: { width: 152 * result.length, height: 152, channels: 4, background: 'transparent' } })
39
+ .composite(result.map((it, index) =>
40
+ ({ input: inputs.get(it), left: index * 152, top: 0, width: 152, height: 152 })
41
+ ))
42
+ .png()
43
+ .toBuffer()
44
+
45
+ return message.reply({ content: caption, files: [canvas] })
46
+ }
47
+
48
+ const builtin = {
49
+ 37: {
50
+ game: 'sf',
51
+ caption: '***LETS GO JUSTIN!***',
52
+ input: '6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623 hp >> 236 236 lk'
53
+ }
54
+ }
55
+
56
+ export default {
57
+ name: 'fg-notation',
58
+ intents: ['GUILD_MESSAGES'],
59
+ partials: ['MESSAGE'],
60
+
61
+ preload: sequelize => {
62
+ sequelize.define('fginput', {
63
+ guild: {
64
+ type: DataTypes.STRING,
65
+ primaryKey: true
66
+ },
67
+ name: {
68
+ type: DataTypes.STRING,
69
+ primaryKey: true
70
+ },
71
+ createdBy: DataTypes.STRING,
72
+ game: DataTypes.STRING,
73
+ caption: DataTypes.STRING,
74
+ input: DataTypes.STRING
75
+ })
76
+ },
77
+
78
+ events: {
79
+ async messageCreate (global, message) {
80
+ const { client, config, sequelize } = global
81
+ if (message.author.id === client.user.id || !message.member) return
82
+
83
+ const guildId = message.guildId
84
+ const { prefix } = config[guildId]
85
+
86
+ if (message.content.startsWith(prefix)) {
87
+ const name = message.content.split(' ').pop().replace(prefix, '')
88
+ const row = builtin[name] || (
89
+ await sequelize.models.fginput.findOne({
90
+ where: { guild: message.guild.id, name }
91
+ })
92
+ )
93
+
94
+ if (row) {
95
+ const inputs = new Map([...basicInputs, ...gameInputs.get(row.game)])
96
+ sendInput(inputs, row.input.split(' '), message, row.caption)
97
+ }
98
+ }
99
+ }
100
+ },
101
+
102
+ commands: {
103
+ fgi: {
104
+ usage: 'fgi [game] [inputs]',
105
+ desc: 'This command displays information about a command',
106
+ example: 'help perms',
107
+ execute: async ({ param }, { message }) => {
108
+ const [, game, i1] = param
109
+ if (!game || !i1) return message.reply('Missing arguments. Example: >fgi sf 236P 214K')
110
+ if (!gameInputs.has(game)) return message.reply(`"${game}" is not a valid game. Available games: ${Array.from(gameInputs.keys()).join(' ')}`)
111
+
112
+ const inputs = new Map([...basicInputs, ...gameInputs.get(game)])
113
+ const result = param.slice(2).map(i => solveInput(inputs, i.toLowerCase())).flat()
114
+
115
+ sendInput(inputs, result, message)
116
+ }
117
+ },
118
+ fgsave: {
119
+ usage: 'fgsave [game] [name] [inputs]',
120
+ desc: 'This command displays information about a command',
121
+ example: 'help perms',
122
+ execute: async ({ param, sequelize }, { message }) => {
123
+ const [, game, name, i1] = param
124
+ if (!game || !name || !i1) return message.reply('Missing arguments. Example: >fgi sf testName 236P 214K')
125
+ if (!gameInputs.has(game)) return message.reply(`"${game}" is not a valid game. Available games: ${Array.from(gameInputs.keys()).join(' ')}`)
126
+
127
+ const inputs = new Map([...basicInputs, ...gameInputs.get(game)])
128
+ const input = param.slice(3).map(i => solveInput(inputs, i.toLowerCase())).flat().join(' ')
129
+
130
+ await sequelize.models.fginput.create({ guild: message.guild.id, name, createdBy: message.author.id, game, input })
131
+
132
+ message.channel.send(`Saved command "${input}" as "${name}"`)
133
+ }
134
+ },
135
+ fgcaption: {
136
+ usage: 'fgsave [name] [caption]',
137
+ desc: 'This command displays information about a command',
138
+ example: 'help perms',
139
+ execute: async ({ param, sequelize }, { message }) => {
140
+ const [, name, i1] = param
141
+ if (!name || !i1) return message.reply('Missing arguments. Example: >fgi testName This is a caption')
142
+
143
+ const row = await sequelize.models.fginput.findOne({
144
+ where: { guild: message.guild.id, name }
145
+ })
146
+
147
+ if (!row) return message.reply(`"${name}" is not a saved input list`)
148
+ row.caption = param.slice(2).join(' ')
149
+ await row.save()
150
+
151
+ message.channel.send(`Saved caption for input list "${name}"`)
152
+ }
153
+ }
154
+ }
155
+ }