diff --git a/client/src/events.js b/client/src/events.js
index defb0bc3..49a87225 100644
--- a/client/src/events.js
+++ b/client/src/events.js
@@ -64,6 +64,29 @@ function registerEvents(registry, events, tutorial) {
return setCryps(cryps);
});
+ const errMessages = {
+ select_cryps: 'Select your cryps before battle using the numbered buttons next to the cryp avatar',
+ complete_nodes: 'You need to complete the previously connected nodes first',
+ };
+
+ function errorPrompt(type) {
+ const message = errMessages[type];
+ const OK_BUTTON = '';
+ toast.info({
+ theme: 'dark',
+ color: 'black',
+ timeout: false,
+ drag: false,
+ position: 'center',
+ maxWidth: window.innerWidth / 2,
+ close: false,
+ buttons: [
+ [OK_BUTTON, (instance, thisToast) => instance.hide({ transitionOut: 'fadeOut' }, thisToast)],
+ ],
+ message,
+ });
+ }
+
function loginPrompt() {
const USER_INPUT = '';
const PASSWORD_INPUT = '';
@@ -152,6 +175,7 @@ function registerEvents(registry, events, tutorial) {
tutorial('welcome');
return {
+ errorPrompt,
loginPrompt,
setAccount,
setActiveSkill,
diff --git a/client/src/socket.js b/client/src/socket.js
index 7d7d7174..3252e48c 100644
--- a/client/src/socket.js
+++ b/client/src/socket.js
@@ -170,6 +170,7 @@ function createSocket(events) {
// this object wraps the reply types to a function
const handlers = {
cryp_spawn: crypSpawn,
+ cryp_forget: () => true,
cryp_learn: () => true,
game_pve: gamePve,
game_state: gameState,
@@ -184,6 +185,17 @@ function createSocket(events) {
};
+ function errHandler(error) {
+ switch (error) {
+ case 'no active zone': return sendZoneCreate();
+ case 'no cryps selected': return events.errorPrompt('select_cryps');
+ case 'node requirements not met': return events.errorPrompt('complete_nodes');
+
+ default: return errorToast(error);
+
+ }
+ }
+
// decodes the cbor and
// calls the handlers defined above based on message type
function onMessage(event) {
@@ -194,8 +206,7 @@ function createSocket(events) {
console.log(res);
// check for error and split into response type and data
- if (res.err === 'no active zone') sendZoneCreate();
- if (res.err) return errorToast(res.err);
+ if (res.err) return errHandler(res.err);
const { method, params } = res;
if (!handlers[method]) return errorToast(`${method} handler missing`);
return handlers[method](params);