forked from itspranavajay/PokeHexa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpokehexa.js
162 lines (138 loc) · 4.42 KB
/
pokehexa.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
const {Client, MessageEmbed} = require("discord.js");
require('dotenv').config()
const moment = require('moment')
const client = new Client();
const fs = require('fs')
const fse = require('fs-extra')
const hexaroom = process.env.HEXA_ROOM
client.on("ready", () => {
client.user.setActivity('to your inputs', {
type: 'LISTENING'
})
console.log('[Logged In] ' + client.user.tag)
console.log('[Time] ' + moment().format('MMMM Do YYYY, h:mm:ss a'))
})
var GameBoyAdvance = require('gbajs');
var gba = new GameBoyAdvance();
gba.logLevel = gba.LOG_ERROR;
var biosBuf = fs.readFileSync('./node_modules/gbajs/resources/bios.bin');
gba.setBios(biosBuf);
gba.setCanvasMemory();
gba.loadRomFromFile('./hexa.gba', function (err, result) {
if (err) {
console.error('loadRom failed:', err);
process.exit(1);
}
gba.loadSavedataFromFile('./hexa.sav');
gba.runStable();
});
function updateScreen(idx, msg, d) {
var delay = 500
if(d) {
delay = 1250
}
setTimeout( () => {
var png = gba.screenshot();
png.pack().pipe(fs.createWriteStream('gba' + idx + '.png'));
setTimeout( () => {
var newScreen = new MessageEmbed()
.setTitle("Current Screen")
.attachFiles(['./hexa.png'])
.setImage('attachment://hexa.png')
if(!d) {
newScreen.setFooter("This command has pulled the latest frame of the game. Type \"help\" to learn how to play.")
} else {
newScreen.setFooter("Type \"screen\" to see the latest frame without using the controls.")
}
msg.channel.send(newScreen)
}, 250)
}, delay)
}
function sendHelp(msg) {
var help = new MessageEmbed()
.setTitle("Help")
.setDescription("Welcome to the botname\n\n**Controls**\n" +
"`a` - Presses **A**\n" +
"`b` - Presses **B**\n" +
"`l` - Presses **R**\n" +
"`r` - Presses **L**\n" +
"`start` - Presses **START**\n" +
"`select` - Presses **SELECT**\n" +
"`up` - Presses **UP**\n" +
"`down` - Presses **DOWN**\n" +
"`left` - Presses **LEFT**\n" +
"`right` - Presses **RIGHT**\n" +
"`screen` - Shows the current screen\n" +
"`help` - Shows this help message\n")
.setFooter("Made by RedAura")
msg.channel.send(help)
}
client.on("message", (message) => {
var keypad = gba.keypad
var idx = 0;
if(message.channel.id !== hexaroom) return;
if(message.author.id == client.user.id) return;
const args = message.content.split(" ");
switch ((args[0].toString()).toUpperCase()) {
case 'A':
keypad.press(keypad.A)
updateScreen(idx, message, true)
break;
case 'B':
keypad.press(keypad.B)
updateScreen(idx, message, true)
break;
case 'L':
keypad.press(keypad.L)
updateScreen(idx, message, true)
break;
case 'R':
keypad.press(keypad.R)
updateScreen(idx, message, true)
break;
case 'UP':
keypad.press(keypad.UP)
updateScreen(idx, message, true)
break;
case 'DOWN':
keypad.press(keypad.DOWN)
updateScreen(idx, message, true)
break;
case 'LEFT':
keypad.press(keypad.LEFT)
updateScreen(idx, message, true)
break;
case 'RIGHT':
keypad.press(keypad.RIGHT)
updateScreen(idx, message, true)
break;
case 'START':
keypad.press(keypad.START)
updateScreen(idx, message, true)
break;
case 'SELECT':
keypad.press(keypad.SELECT)
updateScreen(idx, message, true)
break;
case 'SCREEN':
updateScreen(idx, message, false)
break;
case 'HELP':
sendHelp(message)
break;
default:
console.log(`Incorrect input: ${(args[0].toString()).toUpperCase()}`);
break;
}
})
client.on("error", (error) => {
console.log(error)
})
client.on("disconnect", () => {
setTimeout(() => {
client.user || (
client.login(config.token)
);
}, 15000);
})
client.login(process.env.HEXA_TOKEN) //Login