wollok icon indicating copy to clipboard operation
wollok copied to clipboard

Que el onCollideDo no se ejecute muchas veces ante un error

Open PalumboN opened this issue 3 years ago • 1 comments

Actualmente el mensaje game.onCollideDo fue pensado para ejecutar el bloque una única vez por colisión.

Pero esto no pasa cuando el programa tiene un error (bastante común cuando estudiantes están intentado crear sus primero juegos) y el bloque lanza una excepción.

Dejo este ejemplo:

import wollok.game.*

class Text {
	const property image = "wko.png"
	const property text
	var property position
}

program abc {
	const principal = new Text(text = "P", position = game.origin())
	game.addVisualCharacter(principal)
	game.addVisual(new Text(text = "X", position = game.center()))
	game.onCollideDo(principal, { algo => throw new Exception(message="ERROR") })
	game.start()
}

Si se hace colisionar los objetos y se observa la consola queda en evidencia que sigue intentando ejecutar el bloque hasta que deje de colisionar.

Esto además genera un problema de usabilidad porque la excepción muchas veces crea un globo de diálogo que se muestra en el juego por unos segundos, el problema es que estos carteles se "acumulan en serie", por lo que el globo de diálogo no desaparece por mucho tiempo.

PalumboN avatar Nov 03 '21 19:11 PalumboN

@ezequielPereyra @AngeliMatias hay que chequear si esto no pasa también en la versión web... y cargar le issue en TS si es necesario también (se puede linkear este directamente).

PalumboN avatar Nov 03 '21 19:11 PalumboN