diff --git a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/VisualComponent.xtend b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/VisualComponent.xtend index 01baae07dc..8d2319ec03 100644 --- a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/VisualComponent.xtend +++ b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/VisualComponent.xtend @@ -13,7 +13,6 @@ import static extension org.uqbar.project.wollok.game.helpers.WollokConventionEx import org.uqbar.project.wollok.interpreter.core.WollokProgramExceptionWrapper import static extension org.uqbar.project.wollok.interpreter.nativeobj.WollokJavaConversions.* - @Accessors class VisualComponent { public static val MESSAGE_MAX_LENGTH = 50 @@ -23,28 +22,25 @@ class VisualComponent { boolean showAttributes = false boolean hasText = false + boolean hasTextColor = false + boolean hasImage = false WollokObject wObject WollokObject wPosition new(WollokObject object) { - wObject = object - wObject?.position // Force evaluate position when is added - checkText() + this(object, object.position) } new(WollokObject object, WollokObject position) { wObject = object wPosition = position - checkText() + hasText = wObject.understands(TEXT_CONVENTION) + hasTextColor = wObject.understands(TEXT_COLOR_CONVENTION) + hasImage = wObject.understands(IMAGE_CONVENTION) } def checkText() { - try { - wObject.call(TEXT_CONVENTION) - hasText = true - }catch(WollokProgramExceptionWrapper e) { - } } def getAttributes() { @@ -80,11 +76,17 @@ class VisualComponent { } def drawMe(Window window) { - window.draw(image, position) + if(hasImage) { + window.draw(image, position) + } } def drawText(Window window) { - if(hasText) window.writeText(wObject.call(TEXT_CONVENTION).wollokToJava(String) as String, getPosition(), Color.BLACK) + if(hasText) { + val text = wObject.call(TEXT_CONVENTION).wollokToJava(String) as String + val color = hasTextColor ? Color.valueOf(wObject.call(TEXT_COLOR_CONVENTION).wollokToJava(String) as String) : DEFAULT_TEXT_COLOR + window.writeText(text, getPosition(), color) + } } def drawAttributesIfNecesary(Window window) { diff --git a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/helpers/WollokConventionExtensions.xtend b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/helpers/WollokConventionExtensions.xtend index 74f1ea8df4..07a12ffbe3 100644 --- a/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/helpers/WollokConventionExtensions.xtend +++ b/org.uqbar.project.wollok.game/src/org/uqbar/project/wollok/game/helpers/WollokConventionExtensions.xtend @@ -1,17 +1,22 @@ package org.uqbar.project.wollok.game.helpers +import com.badlogic.gdx.graphics.Color import org.uqbar.project.wollok.game.VisualComponent import org.uqbar.project.wollok.interpreter.core.WollokObject import org.uqbar.project.wollok.interpreter.core.WollokProgramExceptionWrapper import static extension org.uqbar.project.wollok.interpreter.nativeobj.WollokJavaConversions.* + class WollokConventionExtensions { public static val POSITION_CONVENTION = "position" public static val TEXT_CONVENTION = "text" + public static val TEXT_COLOR_CONVENTION = "textColor" public static val IMAGE_CONVENTION = "image" public static val DEFAULT_IMAGE = "wko.png" + public static val DEFAULT_TEXT_COLOR = Color.BLUE + def static asVisual(WollokObject it) { new VisualComponent(it) } def static asVisualIn(WollokObject it, WollokObject position) { new VisualComponent(it, position) } diff --git a/org.uqbar.project.wollok/src/org/uqbar/project/wollok/interpreter/core/WollokObject.xtend b/org.uqbar.project.wollok/src/org/uqbar/project/wollok/interpreter/core/WollokObject.xtend index 1af0d6056a..c063ecd13c 100644 --- a/org.uqbar.project.wollok/src/org/uqbar/project/wollok/interpreter/core/WollokObject.xtend +++ b/org.uqbar.project.wollok/src/org/uqbar/project/wollok/interpreter/core/WollokObject.xtend @@ -65,7 +65,7 @@ class WollokObject extends AbstractWollokCallable implements EvaluationContext arguments = ECollections.emptyEList if (other.hasNamedParameters) { - arguments = ECollections.asEList(delegatedConstructor.parameters.map [ name ].map [ - argName | other.argumentList.getArgument(argName) + arguments = ECollections.asEList(delegatedConstructor.parameters.map[name].map [ argName | + other.argumentList.getArgument(argName) ]) } else { arguments = other.arguments @@ -174,11 +186,10 @@ class WollokObject extends AbstractWollokCallable implements EvaluationContext).wrapped //TODO: Usar las conversion extensions + (string.getNativeObject(STRING) as JavaWrapper).wrapped // TODO: Usar las conversion extensions } override toString() { @@ -311,14 +322,14 @@ class WollokObject extends AbstractWollokCallable implements EvaluationContext