From 0ffe78b63d65a0b5dc8b78be3883c88c10798727 Mon Sep 17 00:00:00 2001 From: Fernando Dodino Date: Tue, 7 Aug 2018 20:05:46 -0300 Subject: [PATCH] Catching Wollok errors - avoiding stack trace in console --- .../project/wollok/game/BalloonMessage.xtend | 4 ++-- .../wollok/game/gameboard/Window.xtend | 2 +- .../src/wollok/lib/GameObject.xtend | 20 ++++++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/BalloonMessage.xtend b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/BalloonMessage.xtend index 6990823772..4adb92998c 100644 --- a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/BalloonMessage.xtend +++ b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/BalloonMessage.xtend @@ -18,7 +18,7 @@ class BalloonMessage { color = aColor } - def boolean shouldRemove(){ + def boolean shouldRemove() { return timestamp != 0 && new Date().time - timestamp > timeToLive } @@ -26,6 +26,6 @@ class BalloonMessage { if (timestamp == 0) timestamp = new Date().time - window.drawBallon(this.text, character.position, this.color) + window.drawBaloon(this.text, character.position, this.color) } } \ No newline at end of file diff --git a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/gameboard/Window.xtend b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/gameboard/Window.xtend index a2fb440479..030b892b0c 100644 --- a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/gameboard/Window.xtend +++ b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/gameboard/Window.xtend @@ -63,7 +63,7 @@ class Window { font.draw(batch, glyphLayout, x, y) } - def drawBallon(String text, Position position, Color color) { + def drawBaloon(String text, Position position, Color color) { val baseWidth = 75 var newText = text var plusWidth = 0 diff --git a/org.uqbar.project.wollok.lib/src/wollok/lib/GameObject.xtend b/org.uqbar.project.wollok.lib/src/wollok/lib/GameObject.xtend index 326e523b8a..8337c04f4a 100644 --- a/org.uqbar.project.wollok.lib/src/wollok/lib/GameObject.xtend +++ b/org.uqbar.project.wollok.lib/src/wollok/lib/GameObject.xtend @@ -11,6 +11,7 @@ import org.uqbar.project.wollok.lib.WVisual import static extension org.uqbar.project.wollok.interpreter.nativeobj.WollokJavaConversions.* import static extension org.uqbar.project.wollok.lib.WollokSDKExtensions.* +import org.uqbar.project.wollok.interpreter.core.WollokProgramExceptionWrapper /** * @@ -48,10 +49,16 @@ class GameObject { def whenKeyPressedDo(WollokObject key, WollokObject action) { var num = key.coerceToInteger val function = action.asClosure - addListener(new KeyboardListener(num, [ function.doApply ])) + addListener(new KeyboardListener(num, [ + try { + function.doApply + } catch (WollokProgramExceptionWrapper e) { + board.somebody?.scream(e.wollokMessage) + } + ])) } - def whenKeyPressedSay(WollokObject key, WollokObject functionObj) { + def whenKeyPressedSay(WollokObject key, WollokObject functionObj) { val num = key.coerceToInteger val function = functionObj.asClosure addListener(new KeyboardListener(num, [ board.characterSay(function.doApply.asString) ])) @@ -60,7 +67,14 @@ class GameObject { def whenCollideDo(WollokObject visual, WollokObject action) { var visualObject = board.findVisual(visual) val function = action.asClosure - addListener(new CollisionListener(visualObject, [ function.doApply((it as WVisual).wObject) ])) + addListener(new CollisionListener(visualObject, [ + try { + function.doApply((it as WVisual).wObject) + } catch (WollokProgramExceptionWrapper e) { + board.somebody?.scream(e.wollokMessage) + null + } + ])) } def getObjectsIn(WollokObject position) {