@lotus-tree/fg-notation 1.1.0 → 1.2.0
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.
- package/README.md +29 -19
- package/dev/img/basic/+.png +0 -0
- package/dev/img/basic/1.png +0 -0
- package/dev/img/basic/12369.png +0 -0
- package/dev/img/basic/1237.png +0 -0
- package/dev/img/basic/1632143.png +0 -0
- package/dev/img/basic/2.png +0 -0
- package/dev/img/basic/21.png +0 -0
- package/dev/img/basic/214.png +0 -0
- package/dev/img/basic/21478.png +0 -0
- package/dev/img/basic/23.png +0 -0
- package/dev/img/basic/236.png +0 -0
- package/dev/img/basic/23698.png +0 -0
- package/dev/img/basic/28.png +0 -0
- package/dev/img/basic/3.png +0 -0
- package/dev/img/basic/32147.png +0 -0
- package/dev/img/basic/3219.png +0 -0
- package/dev/img/basic/341236.png +0 -0
- package/dev/img/basic/346.png +0 -0
- package/dev/img/basic/360.png +0 -0
- package/dev/img/basic/4.png +0 -0
- package/dev/img/basic/41236.png +0 -0
- package/dev/img/basic/421.png +0 -0
- package/dev/img/basic/46.png +0 -0
- package/dev/img/basic/4618346.png +0 -0
- package/dev/img/basic/47896.png +0 -0
- package/dev/img/basic/5.png +0 -0
- package/dev/img/basic/6.png +0 -0
- package/dev/img/basic/623.png +0 -0
- package/dev/img/basic/63214.png +0 -0
- package/dev/img/basic/64.png +0 -0
- package/dev/img/basic/6428.png +0 -0
- package/dev/img/basic/69874.png +0 -0
- package/dev/img/basic/7.png +0 -0
- package/dev/img/basic/7891.png +0 -0
- package/dev/img/basic/8.png +0 -0
- package/dev/img/basic/81237.png +0 -0
- package/dev/img/basic/82.png +0 -0
- package/dev/img/basic/87412.png +0 -0
- package/dev/img/basic/89632.png +0 -0
- package/dev/img/basic/9.png +0 -0
- package/dev/img/basic/[1].png +0 -0
- package/dev/img/basic/[2].png +0 -0
- package/dev/img/basic/[2]8.png +0 -0
- package/dev/img/basic/[3].png +0 -0
- package/dev/img/basic/[4].png +0 -0
- package/dev/img/basic/[6].png +0 -0
- package/dev/img/basic/[7].png +0 -0
- package/dev/img/basic/[8].png +0 -0
- package/dev/img/basic/[9].png +0 -0
- package/dev/img/basic/air.png +0 -0
- package/dev/img/basic/doubleforward.png +0 -0
- package/dev/img/credits.txt +4 -0
- package/dev/img/games/bb/a.png +0 -0
- package/dev/img/games/bb/b.png +0 -0
- package/dev/img/games/bb/c.png +0 -0
- package/dev/img/games/bb/d.png +0 -0
- package/dev/img/games/bbtag/a.png +0 -0
- package/dev/img/games/bbtag/b.png +0 -0
- package/dev/img/games/bbtag/c.png +0 -0
- package/dev/img/games/bbtag/d.png +0 -0
- package/dev/img/games/bbtag/p.png +0 -0
- package/dev/img/games/dbz/a1.png +0 -0
- package/dev/img/games/dbz/a2.png +0 -0
- package/dev/img/games/dbz/h.png +0 -0
- package/dev/img/games/dbz/l.png +0 -0
- package/dev/img/games/dbz/m.png +0 -0
- package/dev/img/games/dbz/s.png +0 -0
- package/dev/img/games/dnf/a.png +0 -0
- package/dev/img/games/dnf/as.png +0 -0
- package/dev/img/games/dnf/b.png +0 -0
- package/dev/img/games/dnf/g.png +0 -0
- package/dev/img/games/dnf/ms.png +0 -0
- package/dev/img/games/dnf/s.png +0 -0
- package/dev/img/games/gbf/g.png +0 -0
- package/dev/img/games/gbf/h.png +0 -0
- package/dev/img/games/gbf/l.png +0 -0
- package/dev/img/games/gbf/m.png +0 -0
- package/dev/img/games/gbf/s.png +0 -0
- package/dev/img/games/gg/d.png +0 -0
- package/dev/img/games/gg/hs.png +0 -0
- package/dev/img/games/gg/k.png +0 -0
- package/dev/img/games/gg/p.png +0 -0
- package/dev/img/games/gg/rc.png +0 -0
- package/dev/img/games/gg/s.png +0 -0
- package/dev/img/games/kof/a.png +0 -0
- package/dev/img/games/kof/b.png +0 -0
- package/dev/img/games/kof/c.png +0 -0
- package/dev/img/games/kof/d.png +0 -0
- package/dev/img/games/kof/max.png +0 -0
- package/dev/img/games/mk/1.png +0 -0
- package/dev/img/games/mk/2.png +0 -0
- package/dev/img/games/mk/3.png +0 -0
- package/dev/img/games/mk/4.png +0 -0
- package/dev/img/games/sc/[a].png +0 -0
- package/dev/img/games/sc/[b].png +0 -0
- package/dev/img/games/sc/[g].png +0 -0
- package/dev/img/games/sc/[k].png +0 -0
- package/dev/img/games/sc/a.png +0 -0
- package/dev/img/games/sc/b.png +0 -0
- package/dev/img/games/sc/g.png +0 -0
- package/dev/img/games/sc/k.png +0 -0
- package/dev/img/games/sf/hk.png +0 -0
- package/dev/img/games/sf/hp.png +0 -0
- package/dev/img/games/sf/j..png +0 -0
- package/dev/img/games/sf/lk.png +0 -0
- package/dev/img/games/sf/lp.png +0 -0
- package/dev/img/games/sf/max.png +0 -0
- package/dev/img/games/sf/mk.png +0 -0
- package/dev/img/games/sf/mp.png +0 -0
- package/dev/img/games/sf/tap.png +0 -0
- package/dev/img/games/sg/hk.png +0 -0
- package/dev/img/games/sg/hp.png +0 -0
- package/dev/img/games/sg/k.png +0 -0
- package/dev/img/games/sg/lk.png +0 -0
- package/dev/img/games/sg/lp.png +0 -0
- package/dev/img/games/sg/mk.png +0 -0
- package/dev/img/games/sg/mp.png +0 -0
- package/dev/img/games/sg/p.png +0 -0
- package/dev/img/games/tfh/a.png +0 -0
- package/dev/img/games/tfh/b.png +0 -0
- package/dev/img/games/tfh/c.png +0 -0
- package/dev/img/games/tfh/d.png +0 -0
- package/dev/img/games/tkn/1.png +0 -0
- package/dev/img/games/tkn/12.png +0 -0
- package/dev/img/games/tkn/1234.png +0 -0
- package/dev/img/games/tkn/13.png +0 -0
- package/dev/img/games/tkn/14.png +0 -0
- package/dev/img/games/tkn/2.png +0 -0
- package/dev/img/games/tkn/23.png +0 -0
- package/dev/img/games/tkn/24.png +0 -0
- package/dev/img/games/tkn/3.png +0 -0
- package/dev/img/games/tkn/34.png +0 -0
- package/dev/img/games/tkn/4.png +0 -0
- package/dev/img/games/tkn/b.png +0 -0
- package/dev/img/games/tkn/d-b.png +0 -0
- package/dev/img/games/tkn/d-f.png +0 -0
- package/dev/img/games/tkn/d.png +0 -0
- package/dev/img/games/tkn/f.png +0 -0
- package/dev/img/games/tkn/o.png +0 -0
- package/dev/img/games/tkn/u-b.png +0 -0
- package/dev/img/games/tkn/u-f.png +0 -0
- package/dev/img/games/tkn/u.png +0 -0
- package/dev/img/preview.png +0 -0
- package/dev/index.js +563 -0
- package/dev/info.json +33 -0
- package/lib/img/basic/+.png +0 -0
- package/lib/img/games/bbtag/a.png +0 -0
- package/lib/img/games/bbtag/b.png +0 -0
- package/lib/img/games/bbtag/c.png +0 -0
- package/lib/img/games/bbtag/d.png +0 -0
- package/lib/img/games/bbtag/p.png +0 -0
- package/lib/img/games/gg/rc.png +0 -0
- package/lib/index.js +562 -488
- package/lib/info.json +33 -0
- package/package.json +9 -4
- package/src/img/basic/+.png +0 -0
- package/src/img/games/bbtag/a.png +0 -0
- package/src/img/games/bbtag/b.png +0 -0
- package/src/img/games/bbtag/c.png +0 -0
- package/src/img/games/bbtag/d.png +0 -0
- package/src/img/games/bbtag/p.png +0 -0
- package/src/img/games/gg/rc.png +0 -0
- package/src/index.js +87 -33
- package/src/info.json +33 -0
- package/examples/ex1.GIF +0 -0
- package/examples/fg1.GIF +0 -0
- package/examples/fg2.GIF +0 -0
package/lib/info.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sizes": { "+": 55 },
|
|
3
|
+
|
|
4
|
+
"builtin": {
|
|
5
|
+
"37": {
|
|
6
|
+
"game": "sf",
|
|
7
|
+
"caption": "***LETS GO JUSTIN!***",
|
|
8
|
+
"input": "6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623 mp >> 236 236 lk"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
"aliases": {
|
|
13
|
+
"games": {
|
|
14
|
+
"bbt": "bbtag",
|
|
15
|
+
"db": "dbz"
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
"inputs": {
|
|
19
|
+
"basic": {
|
|
20
|
+
"doubleforward": [">>"]
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
"games": {
|
|
24
|
+
"bbtag": {
|
|
25
|
+
"throw": ["b","+","c"],
|
|
26
|
+
"crb": ["d","+","p"],
|
|
27
|
+
"airdash": ["a","+","b"],
|
|
28
|
+
"reversal": ["a","+","d"]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
package/package.json
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lotus-tree/fg-notation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"module": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"
|
|
8
|
-
"
|
|
7
|
+
"run-babel": "babel --delete-dir-on-start --copy-files src",
|
|
8
|
+
"build": "yarn run run-babel --out-dir lib",
|
|
9
|
+
"dev": "yarn run run-babel --watch --source-maps inline --out-dir dev",
|
|
10
|
+
"prepublishOnly": "yarn build"
|
|
9
11
|
},
|
|
10
12
|
"dependencies": {
|
|
13
|
+
"bent": "^7.3.12",
|
|
11
14
|
"glob": "^7.2.0",
|
|
12
|
-
"request-promise": "^4.2.6",
|
|
13
15
|
"sharp": "^0.29.3"
|
|
14
16
|
},
|
|
17
|
+
"peerDependencies": {
|
|
18
|
+
"@lotus-tree/command-handler": "^2.1.0"
|
|
19
|
+
},
|
|
15
20
|
"devDependencies": {
|
|
16
21
|
"@babel/cli": "^7.16.7",
|
|
17
22
|
"@babel/core": "^7.16.7",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/index.js
CHANGED
|
@@ -2,8 +2,11 @@ import sharp from 'sharp'
|
|
|
2
2
|
import path from 'path'
|
|
3
3
|
import glob from 'glob'
|
|
4
4
|
import { DataTypes } from 'sequelize'
|
|
5
|
-
import
|
|
5
|
+
import bent from 'bent'
|
|
6
6
|
|
|
7
|
+
import { sizes, aliases, builtin } from './info.json'
|
|
8
|
+
|
|
9
|
+
const getJSON = bent('json')
|
|
7
10
|
const imgPath = path.join(__dirname, 'img')
|
|
8
11
|
const basicInputs = new Map()
|
|
9
12
|
const gameInputs = new Map()
|
|
@@ -15,7 +18,7 @@ getGlossary()
|
|
|
15
18
|
setInterval(getGlossary, 5 * 60 * 1000)
|
|
16
19
|
|
|
17
20
|
async function getGlossary () {
|
|
18
|
-
const result =
|
|
21
|
+
const result = await getJSON('https://glossary.infil.net/json/glossary.json')
|
|
19
22
|
const tempG = {}
|
|
20
23
|
const tempT = []
|
|
21
24
|
|
|
@@ -33,50 +36,89 @@ glob.sync(path.join(imgPath, 'basic/**'), { nodir: true })
|
|
|
33
36
|
.forEach(p => {
|
|
34
37
|
const input = p.split('/').pop().replace('.png', '')
|
|
35
38
|
basicInputs.set(input, p)
|
|
36
|
-
})
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
const alias = aliases.inputs.basic[input]
|
|
41
|
+
if (alias) {
|
|
42
|
+
alias.forEach(i => {
|
|
43
|
+
basicInputs.set(i, p)
|
|
44
|
+
if (sizes[input]) sizes[i] = sizes[input]
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
})
|
|
39
48
|
|
|
40
|
-
glob.sync(path.join(imgPath, 'games
|
|
49
|
+
glob.sync(path.join(imgPath, 'games/*'))
|
|
41
50
|
.forEach(p => {
|
|
42
|
-
const {
|
|
51
|
+
const { base } = path.parse(path.relative(path.join(imgPath, 'games'), p))
|
|
52
|
+
gameInputs.set(base, new Map())
|
|
53
|
+
|
|
54
|
+
glob.sync(path.join(imgPath, 'games', base, '**'), { nodir: true })
|
|
55
|
+
.forEach(input => {
|
|
56
|
+
const { name } = path.parse(input)
|
|
57
|
+
gameInputs.get(base).set(name, input)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
const alias = aliases.inputs.games[base]
|
|
43
61
|
|
|
44
|
-
if (
|
|
45
|
-
|
|
62
|
+
if (alias) {
|
|
63
|
+
for (const [a, s] of Object.entries(alias)) {
|
|
64
|
+
gameInputs.get(base).set(a, s)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
46
67
|
})
|
|
47
68
|
|
|
48
69
|
function solveInput (inputs, input) {
|
|
49
|
-
if (inputs.has(input)) return [input]
|
|
70
|
+
if (inputs.has(input)) return isString(inputs.get(input)) ? [input] : inputs.get(input)
|
|
50
71
|
|
|
51
72
|
for (let i = 0; i < input.length; i++) {
|
|
52
73
|
const s1 = input.slice(0, 0 - i)
|
|
53
|
-
|
|
74
|
+
|
|
75
|
+
if (inputs.has(s1)) {
|
|
76
|
+
const result = inputs.get(s1)
|
|
77
|
+
const remaining = solveInput(inputs, input.slice(0 - i))
|
|
78
|
+
|
|
79
|
+
return isString(result) ? [s1, ...remaining] : [...result, ...remaining]
|
|
80
|
+
}
|
|
54
81
|
}
|
|
55
82
|
|
|
56
83
|
throw new Error(`Cannot find "${input}" as a recognizable input`)
|
|
57
84
|
}
|
|
58
85
|
|
|
59
86
|
async function sendInput (inputs, result, message, caption) {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
87
|
+
const width = result.map(it => sizes[it] || 152).reduce((a, b) => a + b, 0)
|
|
88
|
+
const images = []
|
|
89
|
+
let left = 0
|
|
90
|
+
|
|
91
|
+
result.forEach((it, index) => {
|
|
92
|
+
const size = sizes[it] || 152
|
|
93
|
+
images.push({ input: inputs.get(it), left, top: Math.floor((152 - size) / 2) })
|
|
94
|
+
left += size
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
let canvas = sharp({ create: { width, height: 152, channels: 4, background: 'transparent' } })
|
|
64
98
|
.png()
|
|
65
|
-
.
|
|
99
|
+
.composite(images)
|
|
100
|
+
|
|
101
|
+
canvas = await canvas.toBuffer()
|
|
102
|
+
|
|
103
|
+
if (result.length < 12) canvas = await sharp(canvas).resize({ height: 55 }).png().toBuffer()
|
|
66
104
|
|
|
67
105
|
return message.reply({ content: caption, files: [canvas] })
|
|
68
106
|
}
|
|
69
107
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
108
|
+
function checkGame (game) {
|
|
109
|
+
return gameInputs.has(game) ? game : aliases.games[game]
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function isString (x) {
|
|
113
|
+
return Object.prototype.toString.call(x) === '[object String]'
|
|
76
114
|
}
|
|
77
115
|
|
|
78
116
|
export default {
|
|
79
117
|
name: 'fg-notation',
|
|
118
|
+
about: {
|
|
119
|
+
name: 'FG Notation',
|
|
120
|
+
value: '[Instructions and source code](https://lotus.chitowarlock.com/fgnotation)\n[Infil\'s Fighting Game Glossary](https://glossary.infil.net)\n[MagicianStuff\'s Fighthing Game notations emotes](https://twitter.com/MagicianStuff/status/1477931054484893697)'
|
|
121
|
+
},
|
|
80
122
|
intents: ['GUILD_MESSAGES'],
|
|
81
123
|
partials: ['MESSAGE'],
|
|
82
124
|
|
|
@@ -127,14 +169,20 @@ export default {
|
|
|
127
169
|
desc: 'Converts a list of inputs into an image',
|
|
128
170
|
example: 'fgi sf 236P 214K',
|
|
129
171
|
execute: async ({ param }, { message }) => {
|
|
130
|
-
const [,
|
|
131
|
-
if (!
|
|
172
|
+
const [, gameInput, i1] = param
|
|
173
|
+
if (!gameInput || !i1) return message.reply('Missing arguments. Example: >fgi sf 236P 214K')
|
|
174
|
+
|
|
175
|
+
const game = checkGame(gameInput)
|
|
132
176
|
if (!gameInputs.has(game)) return message.reply(`"${game}" is not a valid game. Available games: ${Array.from(gameInputs.keys()).join(' ')}`)
|
|
133
177
|
|
|
134
|
-
|
|
135
|
-
|
|
178
|
+
try {
|
|
179
|
+
const inputs = new Map([...basicInputs, ...gameInputs.get(game)])
|
|
180
|
+
const result = param.slice(2).map(i => solveInput(inputs, i.toLowerCase())).flat()
|
|
136
181
|
|
|
137
|
-
|
|
182
|
+
sendInput(inputs, result, message)
|
|
183
|
+
} catch (err) {
|
|
184
|
+
message.reply(err.message)
|
|
185
|
+
}
|
|
138
186
|
}
|
|
139
187
|
},
|
|
140
188
|
fgsave: {
|
|
@@ -142,16 +190,22 @@ export default {
|
|
|
142
190
|
desc: 'Saves a list of inputs into a command',
|
|
143
191
|
example: 'fgi sf testName 236P 214K',
|
|
144
192
|
execute: async ({ param, sequelize }, { message }) => {
|
|
145
|
-
const [,
|
|
146
|
-
if (!
|
|
193
|
+
const [, gameInput, name, i1] = param
|
|
194
|
+
if (!gameInput || !name || !i1) return message.reply('Missing arguments. Example: >fgi sf testName 236P 214K')
|
|
195
|
+
|
|
196
|
+
const game = checkGame(gameInput)
|
|
147
197
|
if (!gameInputs.has(game)) return message.reply(`"${game}" is not a valid game. Available games: ${Array.from(gameInputs.keys()).join(' ')}`)
|
|
148
198
|
|
|
149
|
-
|
|
150
|
-
|
|
199
|
+
try {
|
|
200
|
+
const inputs = new Map([...basicInputs, ...gameInputs.get(game)])
|
|
201
|
+
const input = param.slice(3).map(i => solveInput(inputs, i.toLowerCase())).flat().join(' ')
|
|
151
202
|
|
|
152
|
-
|
|
203
|
+
await sequelize.models.fginput.create({ guild: message.guild.id, name, createdBy: message.author.id, game, input })
|
|
153
204
|
|
|
154
|
-
|
|
205
|
+
message.channel.send(`Saved command "${input}" as "${name}"`)
|
|
206
|
+
} catch (err) {
|
|
207
|
+
message.reply(err.message)
|
|
208
|
+
}
|
|
155
209
|
}
|
|
156
210
|
},
|
|
157
211
|
fgcaption: {
|
|
@@ -188,7 +242,7 @@ export default {
|
|
|
188
242
|
if (result.length === 0) return message.reply(`Term "${search}" not found`)
|
|
189
243
|
if (result.length === 1) return message.reply(`\`\`\`${glossary[result[0]].def}\`\`\`Source: <${url}>`)
|
|
190
244
|
|
|
191
|
-
message.reply(url)
|
|
245
|
+
message.reply(`Multiple terms found: ${url}`)
|
|
192
246
|
}
|
|
193
247
|
}
|
|
194
248
|
}
|
package/src/info.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sizes": { "+": 55 },
|
|
3
|
+
|
|
4
|
+
"builtin": {
|
|
5
|
+
"37": {
|
|
6
|
+
"game": "sf",
|
|
7
|
+
"caption": "***LETS GO JUSTIN!***",
|
|
8
|
+
"input": "6 6 6 6 6 6 6 >> 6 6 6 6 6 6 6 >> 8 6 j. hk >> 2 mk >> 623 mp >> 236 236 lk"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
"aliases": {
|
|
13
|
+
"games": {
|
|
14
|
+
"bbt": "bbtag",
|
|
15
|
+
"db": "dbz"
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
"inputs": {
|
|
19
|
+
"basic": {
|
|
20
|
+
"doubleforward": [">>"]
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
"games": {
|
|
24
|
+
"bbtag": {
|
|
25
|
+
"throw": ["b","+","c"],
|
|
26
|
+
"crb": ["d","+","p"],
|
|
27
|
+
"airdash": ["a","+","b"],
|
|
28
|
+
"reversal": ["a","+","d"]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
package/examples/ex1.GIF
DELETED
|
Binary file
|
package/examples/fg1.GIF
DELETED
|
Binary file
|
package/examples/fg2.GIF
DELETED
|
Binary file
|