Closed lgassman closed 3 years ago
Me parece que es una funcionalidad piola, hasta ahora vi que muchos en los juegos armaban imágenes con las letras, a futuro podríamos soportar diferentes tipos de fuente (typeface). Me suena a que es algo interesante para explorar.
La fuente es fácil también de hacerlo, pero me pareció un poco excesivo llenar el visualObject con tantos métodos. También se podría jugar con la alineación, o los márgenes (que están medio hardcoded por ahí). No se si vale la pena ahora.
Me hubiera gustado verlo en acción con un gif, no se Nahue (@PalumboN) qué te parece, si lo charlaste con Leo en UNQ.
Si me mandás un link que diga como se hacen esos gifs te hago uno muy bonito
import wollok.game.*
object colores {
const property verde = "00FF00FF"
const property rojo = "FF0000FF"
}
//solo imagen
object dodain {
const property image = "dodain.png"
var property position = game.at(3, 3)
}
//texto, imagen y color
object nahuel {
const property image = "nahuel.png"
var property position = game.at(7, 3)
var visitante = null
method visitadoPor(alguien) {
visitante = alguien
}
method visitado() {
return visitante != null
}
method text() {
return if (self.visitado()) "¡Qué piola! ¡Vino " + visitante.toString() + "!" else "¡Qué bajón!"
}
method textColor() {
return if (self.visitado()) colores.verde() else colores.rojo()
}
}
object soloTexto {
const property position = game.at(5, 9)
const property text = "¿A dónde vas Dodain?"
}
object invisible {
const property position = game.at(5, 3)
}
program programa {
game.height(10)
game.width(10)
game.addVisualCharacter(dodain)
game.addVisual(nahuel)
game.addVisual(soloTexto)
game.addVisual(invisible)
game.onCollideDo(invisible, { alguien => game.say(alguien, "¿Qué fue eso?") })
game.onCollideDo(nahuel, { alguien => nahuel.visitadoPor(alguien) })
game.start()
}
Ahi hice lo de la varProperty. Resulta que la colección de properties tenía todas las properties (const y var) y luego habia una coleccion con solo las const. Así que lo que hice fue hacer también la colección que tiene solo las var. Un poco me jode que la coleccion de properties podría ser calculada a partir de las otras dos. Pero como es algo que se invoca mucho lo dejé así. Por otro lado hice también el programa de ejemplo, con el gif, y también le metí un test case para los cambios en wollokObject.
Definiendo un método el método
text()
en un visual object se agrega el texto por encima de la imagen. El color por default es Azul, pero se puede definir el metodotextColor()
para redefinirlo. textColor debe devolver un string con un valor RGBA en hexa: "rrggbbaa" https://libgdx.badlogicgames.com/ci/nightlies/docs/api/com/badlogic/gdx/graphics/Color.html.En el momento de la construcción se determina si el objecto entiende esos mensajes o no para saber si en cada ciclo se debe dibujar el texto o no.
Con este requirimiento la presencia del método
image()
pasa a ser opcional, ya que se puede querer un objeto visual que sea solo texto. Se cambió el comportamiento para que no se dibuje la imagen default en caso de que no se defina el métodoimage()
Si no existe ni el método
text
, ni el métodoimage
entonces el objeto es invisible y se puede utilizar para disparar colisiones.