From 84ca954a26fc905fe03d02ea48e4f030d038f834 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 23 Jan 2019 03:46:46 +0900 Subject: [PATCH] F12 for screenshot; it's high time to care about TVs (besides, the EBU gap is also a good guideline for placing UIs on edge) --- src/net/torvald/terrarum/AppLoader.java | 8 +++++ src/net/torvald/terrarum/PostProcessor.kt | 30 +++++++++++++++++-- .../terrarum/gameactors/ActorWBMovable.kt | 10 +++---- .../gamecontroller/IngameController.kt | 15 ++++++++++ .../torvald/terrarum/gamecontroller/Key.kt | 4 +-- .../torvald/terrarum/modulebasegame/Ingame.kt | 2 +- 6 files changed, 58 insertions(+), 11 deletions(-) diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index 3b5470e90..5b7efbd9f 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -110,6 +110,14 @@ public class AppLoader implements ApplicationListener { public static final String COPYRIGHT_DATE_NAME = "Copyright 2013-2019 Torvald (minjaesong)"; public static String GAME_LOCALE = System.getProperty("user.language") + System.getProperty("user.country"); + public static final float TV_SAFE_GRAPHICS = 0.05f; // as per EBU recommendation (https://tech.ebu.ch/docs/r/r095.pdf) + public static final float TV_SAFE_ACTION = 0.035f; // as per EBU recommendation (https://tech.ebu.ch/docs/r/r095.pdf) + + public static int getTvSafeGraphicsWidth() { return Math.round(screenW * TV_SAFE_GRAPHICS); } + public static int getTvSafeGraphicsHeight() { return Math.round(screenH * TV_SAFE_GRAPHICS); } + public static int getTvSafeActionWidth() { return Math.round(screenW * TV_SAFE_ACTION); } + public static int getTvSafeActionHeight() { return Math.round(screenH * TV_SAFE_ACTION); } + /** * These languages won't distinguish regional differences (e.g. enUS and enUK, frFR and frCA) */ diff --git a/src/net/torvald/terrarum/PostProcessor.kt b/src/net/torvald/terrarum/PostProcessor.kt index 4f751132d..6331297a9 100644 --- a/src/net/torvald/terrarum/PostProcessor.kt +++ b/src/net/torvald/terrarum/PostProcessor.kt @@ -29,6 +29,10 @@ object PostProcessor { lutTex = Texture(Gdx.files.internal("assets/clut/$filename")) } + private val defaultResCol = Color(0x00ffffdd) + private val safeAreaCol = Color(0xffffffaa.toInt()) + private val safeAreaCol2 = Color(0xffffff66.toInt()) + fun draw(projMat: Matrix4, fbo: FrameBuffer) { // init @@ -68,8 +72,23 @@ object PostProcessor { Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // so that batch that comes next will bind any tex to it if (AppLoader.IS_DEVELOPMENT_BUILD) { - shapeRenderer.color = Color.CYAN + val tvSafeAreaW = AppLoader.getTvSafeGraphicsWidth().toFloat() + val tvSafeAreaH = AppLoader.getTvSafeGraphicsHeight().toFloat() + val tvSafeArea2W = AppLoader.getTvSafeActionWidth().toFloat() + val tvSafeArea2H = AppLoader.getTvSafeActionHeight().toFloat() + shapeRenderer.inUse(ShapeRenderer.ShapeType.Line) { + shapeRenderer.color = safeAreaCol2 + shapeRenderer.rect( + tvSafeArea2W, tvSafeArea2H, AppLoader.screenW - 2 * tvSafeArea2W, AppLoader.screenH - 2 * tvSafeArea2H + ) + + shapeRenderer.color = safeAreaCol + shapeRenderer.rect( + tvSafeAreaW, tvSafeAreaH, AppLoader.screenW - 2 * tvSafeAreaW, AppLoader.screenH - 2 * tvSafeAreaH + ) + + shapeRenderer.color = defaultResCol shapeRenderer.rect( (AppLoader.screenW - AppLoader.defaultW).div(2).toFloat(), (AppLoader.screenH - AppLoader.defaultH).div(2).toFloat(), @@ -79,8 +98,14 @@ object PostProcessor { } try { - batch.color = Color.CYAN batch.inUse { + batch.color = safeAreaCol + AppLoader.fontSmallNumbers.draw( + batch, safeAreaStr, + tvSafeAreaW, tvSafeAreaH - 10 + ) + + batch.color = defaultResCol AppLoader.fontSmallNumbers.draw( batch, defaultResStr, (AppLoader.screenW - AppLoader.defaultW).div(2).toFloat(), @@ -94,6 +119,7 @@ object PostProcessor { } private val defaultResStr = "${AppLoader.defaultW}x${AppLoader.defaultH}" + private val safeAreaStr = "TV Safe Area" /** * Camera will be moved so that (newX, newY) would be sit on the top-left edge. diff --git a/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt b/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt index 3e93b0087..f24aab1a6 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt @@ -1,7 +1,5 @@ package net.torvald.terrarum.gameactors -import com.badlogic.gdx.Input -import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.spriteanimation.SpriteAnimation import net.torvald.terrarum.* @@ -9,7 +7,6 @@ import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.blockproperties.BlockProp -import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameworld.BlockAddress import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid @@ -1343,10 +1340,11 @@ open class ActorWBMovable(renderOrder: RenderOrder, val immobileBody: Boolean = override fun drawBody(batch: SpriteBatch) { if (isVisible && sprite != null) { - if (!KeyToggler.isOn(Input.Keys.F12)) { + //if (!KeyToggler.isOn(Input.Keys.F12)) { BlendMode.resolve(drawMode, batch) drawSpriteInGoodPosition(sprite!!, batch) - } + /*} + // ye olde tilewiseposition debugger, we don't use it anymore. else { batch.color = Color.NAVY val hb = intTilewiseHitbox @@ -1360,7 +1358,7 @@ open class ActorWBMovable(renderOrder: RenderOrder, val immobileBody: Boolean = batch.color = Color.VIOLET batch.fillRect(hitbox.startX.toFloat(), hitbox.startY.toFloat(), hitbox.width.toFloat(), hitbox.height.toFloat()) - } + }*/ } } diff --git a/src/net/torvald/terrarum/gamecontroller/IngameController.kt b/src/net/torvald/terrarum/gamecontroller/IngameController.kt index 80fcd2f6f..01466ad41 100644 --- a/src/net/torvald/terrarum/gamecontroller/IngameController.kt +++ b/src/net/torvald/terrarum/gamecontroller/IngameController.kt @@ -68,6 +68,8 @@ class IngameController(val ingame: Ingame) : InputAdapter() { ///////////////////// } + private var f12Down = false + override fun keyDown(keycode: Int): Boolean { if (ingame.canPlayerControl) { @@ -98,6 +100,15 @@ class IngameController(val ingame: Ingame) : InputAdapter() { } + // screenshot key + if (keycode == Input.Keys.F12 && !f12Down) { + AppLoader.requestScreenshot() + // FIXME + //ingame.sendNotification(arrayOf("Screenshot taken", "")) + f12Down = true + println("Screenshot taken.") + } + return true } @@ -111,6 +122,10 @@ class IngameController(val ingame: Ingame) : InputAdapter() { ingame.uiContainer.forEach { it.keyUp(keycode) } // for KeyboardControlled UIcanvases + // screenshot key + if (keycode == Input.Keys.F12) f12Down = false + + return true } diff --git a/src/net/torvald/terrarum/gamecontroller/Key.kt b/src/net/torvald/terrarum/gamecontroller/Key.kt index 785466c06..7900478a7 100644 --- a/src/net/torvald/terrarum/gamecontroller/Key.kt +++ b/src/net/torvald/terrarum/gamecontroller/Key.kt @@ -3,7 +3,7 @@ package net.torvald.terrarum.gamecontroller /** * Created by minjaesong on 2016-01-15. */ -@Deprecated("Use Gdx.Input.Keys") +/*@Deprecated("Use Gdx.Input.Keys") object DeprecatedAsFuckKey { val RETURN = 28 @@ -90,4 +90,4 @@ object DeprecatedAsFuckKey { val PGDN = 209 val HOME = 199 val END = 207 -} +}*/ diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index e23f3623a..dc3bb15d2 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -314,7 +314,7 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { // quick bar uiQuickBar = UIQuickslotBar() uiQuickBar.isVisible = true - uiQuickBar.setPosition((Terrarum.WIDTH - uiQuickBar.width) / 2, 8) + uiQuickBar.setPosition((Terrarum.WIDTH - uiQuickBar.width) / 2, AppLoader.getTvSafeGraphicsHeight()) // pie menu uiPieMenu = uiQuickslotPie()