procrealms-client
Version:
A web/terminal hybrid client for Procedural Realms
46 lines (40 loc) • 967 B
JavaScript
const Conn = require('./lib/conn')
const Log = require('./lib/log')
const Prefs = require('./lib/prefs')
const State = require('./lib/state')
const U = require('./lib/utils')
const UI = require('./lib/ui')
let prefs = Prefs.read()
exports.init = function (program) {
UI.init(program)
UI.showLogin('connecting')
Conn.init(onConnect, onClose, onError)
if (!U.inBrowser()) {
process.on('uncaughtException', function (err) {
Log.write(err.stack)
})
}
}
function onConnect () {
Conn.attempt = 0
if (prefs) {
Conn.send('token', { name: prefs.name, token: prefs.token })
} else {
UI.showLogin('name')
}
}
function onClose () {
reconnect()
}
function onError (err) {
Log.write(err.stack)
reconnect()
}
function reconnect () {
Prefs.remove()
UI.showLogin('connectFailed')
State.state = {}
State.entityCache = {}
State.itemCache = {}
setTimeout(() => Conn.init(onConnect, onClose, onError), Conn.timeout * 1000)
}