From acd215c7c664c934afdfbd7cff853fc3a8dbf941 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 9 Apr 2023 15:27:59 +0900 Subject: [PATCH] resolution input will have red text if the text format is invalid --- .../ui/UIGraphicsControlPanel.kt | 3 ++- .../terrarum/ui/UIItemTextLineInput.kt | 20 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt index 96a2daf49..78af3739a 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIGraphicsControlPanel.kt @@ -78,12 +78,13 @@ class UIGraphicsControlPanel(remoCon: UIRemoCon?) : UICanvas() { (it as UIItemTextLineInput).textCommitListener = { text -> val text = text.lowercase() if (text.matches(Regex("""[0-9]+x[0-9]+"""))) { + it.markAsNormal() val width = text.substringBefore('x').toInt() val height = text.substringAfter('x').toInt() App.setConfig(keyWidth, width) App.setConfig(keyHeight, height) } - // else it.markAsInvalid + else it.markAsInvalid() } } } diff --git a/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt b/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt index f0eb9e8db..6885546a7 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextLineInput.kt @@ -150,6 +150,24 @@ class UIItemTextLineInput( private val candidatesBackCol = TEXTINPUT_COL_BACKGROUND.cpy().mul(1f,1f,1f,1.5f) private val candidateNumberStrWidth = App.fontGame.getWidth("8. ") + private var textStatus = 0 // 0: normal, 1: invalid, 2: disabled + + private var textColours = arrayOf( + Color.WHITE, + Color(0xff8888ff.toInt()), + Color(0x888888ff.toInt()) + ) + + fun markAsNormal() { + textStatus = 0 + } + fun markAsInvalid() { + textStatus = 1 + } + fun markAsDisabled() { + textStatus = 2 + } + /** Event fired whenever a character is entered or pasted from clipboard */ var textCommitListener: (String) -> Unit = {} @@ -489,7 +507,7 @@ class UIItemTextLineInput( fbo.inAction(camera as OrthographicCamera, batch) { batch.inUse { gdxClearAndEnableBlend(0f, 0f, 0f, 0f) - it.color = Color.WHITE + it.color = textColours[textStatus] val text = if (textbuf.isEmpty()) currentPlaceholderText else textbuf val tw = App.fontGameFBO.getWidth(text)