From 62b687c86b77643fba061bdde541ffaae46828f8 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Mon, 15 Apr 2019 12:26:54 +0900 Subject: [PATCH] gamepad keyboard mockup --- .../controller/GamepadVirtualKeyboard.kt | 27 +++++++++++++++++++ .../terrarum/controller/TerrarumController.kt | 5 ++-- .../terrarum/controller/VirtualKeyboard.kt | 21 +++++++++++++++ .../terrarum/modulebasegame/IngameRenderer.kt | 2 +- .../modulebasegame/weather/WeatherMixer.kt | 4 ++- src/net/torvald/terrarum/ui/UICanvas.kt | 3 ++- work_files/UI/virtual_gamepad_keyboard.psd | 3 +++ work_files/UI/virtual_gamepad_keyboard_2.psd | 3 +++ 8 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 src/net/torvald/terrarum/controller/GamepadVirtualKeyboard.kt create mode 100644 src/net/torvald/terrarum/controller/VirtualKeyboard.kt create mode 100644 work_files/UI/virtual_gamepad_keyboard.psd create mode 100644 work_files/UI/virtual_gamepad_keyboard_2.psd diff --git a/src/net/torvald/terrarum/controller/GamepadVirtualKeyboard.kt b/src/net/torvald/terrarum/controller/GamepadVirtualKeyboard.kt new file mode 100644 index 000000000..6a77eeff9 --- /dev/null +++ b/src/net/torvald/terrarum/controller/GamepadVirtualKeyboard.kt @@ -0,0 +1,27 @@ +package net.torvald.terrarum.controller + +/** + * Created by minjaesong on 2019-04-10. + */ +object GamepadVirtualKeyboard : VirtualKeyboard(20) { + + val keyLayoutAlph = arrayOf( + "abcdef", "ghijkl", "mnopqr", "stuvwx", "yzçñßı", "æøþð˚,", "´`ˆ¨ˇ~˛", ".-,/!?", // normal + "ABCDEF", "GHIJKL", "MNOPQR", "STUVWX", "YZÇÑẞİ", "ÆØÞÐ˚,", "´`ˆ¨ˇ~˛", ".-,/!?" // shift + ) + // note: aeiou-cedila must produce ogonek instead. + // aeiouszc-caron must be produced as-is. Otherwise breve is produced instead. + + val keyLayoutSym = arrayOf( + "12345,", "67890.", "-/:;()", "&@?!'\"", "—#%^*+", "=_\\|<>", "·¤[]{}", "«»•" + ) + + override fun takeFromInputBuffer() { + TODO("not implemented") + } +} + + +/*class GamepadVirtualKeyboardUI : UICanvas { + +}*/ \ No newline at end of file diff --git a/src/net/torvald/terrarum/controller/TerrarumController.kt b/src/net/torvald/terrarum/controller/TerrarumController.kt index ea7748c61..16fcdf365 100644 --- a/src/net/torvald/terrarum/controller/TerrarumController.kt +++ b/src/net/torvald/terrarum/controller/TerrarumController.kt @@ -50,9 +50,10 @@ interface TerrarumController { fun getAxis(index:Int): Float { val raw = getAxisRaw(index) val zero = if (index < 4) getConfigFloatArray("gamepadaxiszeropoints")[index] else 0f - val inDeadzone = Math.abs(raw - zero) < gamepadDeadzone + val compensatedRaw = raw - zero + val inDeadzone = Math.abs(compensatedRaw) < gamepadDeadzone - return if (inDeadzone) 0f else raw + return if (inDeadzone) 0f else raw//compensatedRaw // returning raw makes more sense } fun inDeadzone(axis: Int): Boolean { diff --git a/src/net/torvald/terrarum/controller/VirtualKeyboard.kt b/src/net/torvald/terrarum/controller/VirtualKeyboard.kt new file mode 100644 index 000000000..23a705228 --- /dev/null +++ b/src/net/torvald/terrarum/controller/VirtualKeyboard.kt @@ -0,0 +1,21 @@ +package net.torvald.terrarum.controller + +import net.torvald.util.CircularArray + +/** + * Created by minjaesong on 2019-04-10. + */ +abstract class VirtualKeyboard(val BUFFER_SIZE: Int = DEFAULT_BUFFER_SIZE) { + + val inputBuffer = CircularArray(BUFFER_SIZE) + + abstract fun takeFromInputBuffer() + + fun addToBuffer(char: Char) { + inputBuffer.add(char) + } + + companion object { + const val DEFAULT_BUFFER_SIZE = 20 + } +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index 52f2b85a6..bf39e9d12 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -6,7 +6,6 @@ import com.badlogic.gdx.graphics.* import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.badlogic.gdx.utils.ScreenUtils -import net.torvald.util.CircularArray import net.torvald.terrarum.* import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gamecontroller.KeyToggler @@ -16,6 +15,7 @@ import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension import net.torvald.terrarum.modulebasegame.weather.WeatherMixer import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.worlddrawer.* +import net.torvald.util.CircularArray import javax.swing.JFileChooser /** diff --git a/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt b/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt index 76e187d5f..4f3f0cc27 100644 --- a/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/modulebasegame/weather/WeatherMixer.kt @@ -13,6 +13,7 @@ import net.torvald.terrarum.ModMgr import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gamecontroller.KeyToggler +import net.torvald.terrarum.gdxSetBlendNormal import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.RNGConsumer import net.torvald.terrarum.modulebasegame.gameactors.ParticleMegaRain @@ -154,12 +155,13 @@ internal object WeatherMixer : RNGConsumer { val bottomCol = getGradientColour(skyboxColourMap, 1, timeNow) //Terrarum.textureWhiteSquare.bind(0) + gdxSetBlendNormal() Terrarum.shaderSkyboxFill.begin() Terrarum.shaderSkyboxFill.setUniformMatrix("u_projTrans", camera.combined) Terrarum.shaderSkyboxFill.setUniformf("topColor", topCol.r, topCol.g, topCol.b) Terrarum.shaderSkyboxFill.setUniformf("bottomColor", bottomCol.r, bottomCol.g, bottomCol.b) - Terrarum.shaderSkyboxFill.setUniformf("parallax", parallax) + Terrarum.shaderSkyboxFill.setUniformf("parallax", parallax.coerceIn(-1f, 1f)) Terrarum.shaderSkyboxFill.setUniformf("parallax_size", 1f/3f) Terrarum.fullscreenQuad.render(Terrarum.shaderSkyboxFill, GL20.GL_TRIANGLES) Terrarum.shaderSkyboxFill.end() diff --git a/src/net/torvald/terrarum/ui/UICanvas.kt b/src/net/torvald/terrarum/ui/UICanvas.kt index bf4cce94d..7a1c8fb12 100644 --- a/src/net/torvald/terrarum/ui/UICanvas.kt +++ b/src/net/torvald/terrarum/ui/UICanvas.kt @@ -213,8 +213,9 @@ abstract class UICanvas( } /** Called by the screen's InputProcessor */ open fun keyTyped(character: Char): Boolean { + // TODO process key typing from the virtual keyboard? + return false - //uiItems.forEach { it.keyT } } open fun resize(width: Int, height: Int) { diff --git a/work_files/UI/virtual_gamepad_keyboard.psd b/work_files/UI/virtual_gamepad_keyboard.psd new file mode 100644 index 000000000..b2e110b57 --- /dev/null +++ b/work_files/UI/virtual_gamepad_keyboard.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3b7165a57cc93056bd35a3586de28b26209ebd9e44cf6cc4854d757cd1a7824 +size 96119 diff --git a/work_files/UI/virtual_gamepad_keyboard_2.psd b/work_files/UI/virtual_gamepad_keyboard_2.psd new file mode 100644 index 000000000..522535b3e --- /dev/null +++ b/work_files/UI/virtual_gamepad_keyboard_2.psd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab667577824aa3300eb9b2b2212ae0e28aa10e5388ddce481dae75a6dcdc9225 +size 2127470