diff --git a/TODO.md b/TODO.md index 4ef19b6f..9490cf80 100644 --- a/TODO.md +++ b/TODO.md @@ -45,7 +45,7 @@ `-> somewhere( -> divertTarget ) -> somewhereElse( -> anotherTarget, -> yetAnother )` * Quit never completes if it has to go through a project save dialog (even when not saving) - * When inklecate crashes, we should handle it specially + * (DONE?) When inklecate crashes, we should handle it specially * Replaying a story goes through a transition for the last turn * jquery still fades in the last chunk even though it's a replay * should force the view height never to get smaller despite temporary content reduction diff --git a/app/main-process/inklecate.js b/app/main-process/inklecate.js index 9f0f06d8..ef7a8260 100644 --- a/app/main-process/inklecate.js +++ b/app/main-process/inklecate.js @@ -53,6 +53,7 @@ function play(compileInstruction, requester, sessionId) { playProcess.stderr.setEncoding('utf8'); playProcess.stderr.on('data', (data) => { console.log(`stderr: ${data}`); + requester.send('play-story-unexpected-error', data, sessionId); }); playProcess.stdin.setEncoding('utf8'); diff --git a/app/renderer/controller.js b/app/renderer/controller.js index d52b3347..ebbc8386 100644 --- a/app/renderer/controller.js +++ b/app/renderer/controller.js @@ -96,6 +96,10 @@ LiveCompiler.setEvents({ }, unexpectedExit: () => { PlayerView.addTerminatingMessage("Story exited unexpectedly", "error"); + }, + unexpectedError: (error) => { + PlayerView.addTerminatingMessage("Story exited unexpectedly", "error"); + PlayerView.addTerminatingMessage(error, "error"); } }); diff --git a/app/renderer/liveCompiler.js b/app/renderer/liveCompiler.js index eee9a6d6..f294a420 100644 --- a/app/renderer/liveCompiler.js +++ b/app/renderer/liveCompiler.js @@ -168,6 +168,14 @@ ipc.on("play-story-unexpected-exit", (event, fromSessionId) => { events.unexpectedExit(); }); +ipc.on("play-story-unexpected-error", (event, error, fromSessionId) => { + + if( sessionId != fromSessionId ) + return; + + events.unexpectedError(error); +}); + ipc.on("play-story-stopped", (event, fromSessionId) => { });