pause using the pause key

This commit is contained in:
minjaesong
2024-09-13 21:55:03 +09:00
parent 8f34fb41ed
commit 1924ed1fbc
7 changed files with 73 additions and 33 deletions

View File

@@ -17,6 +17,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
import net.torvald.terrarum.modulebasegame.ui.Noticelet import net.torvald.terrarum.modulebasegame.ui.Noticelet
import net.torvald.terrarum.modulebasegame.ui.Notification import net.torvald.terrarum.modulebasegame.ui.Notification
import net.torvald.terrarum.modulebasegame.ui.UIPauseTheGame
import net.torvald.terrarum.modulebasegame.ui.UITooltip import net.torvald.terrarum.modulebasegame.ui.UITooltip
import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.savegame.VirtualDisk import net.torvald.terrarum.savegame.VirtualDisk
@@ -74,6 +75,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
val ZOOM_MINIMUM = 1.0f val ZOOM_MINIMUM = 1.0f
open var consoleHandler: ConsoleWindow = ConsoleWindow() open var consoleHandler: ConsoleWindow = ConsoleWindow()
open var uiPaused: UIPauseTheGame = UIPauseTheGame()
var paused: Boolean = false; protected set var paused: Boolean = false; protected set
var playerControlDisabled = false; protected set var playerControlDisabled = false; protected set

View File

@@ -215,6 +215,10 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
terrarumIngame.consoleHandler.toggleOpening() terrarumIngame.consoleHandler.toggleOpening()
} }
if (keycode == Input.Keys.PAUSE) {
terrarumIngame.uiPaused.toggleOpening()
}
// screenshot key // screenshot key
if (keycode == Input.Keys.F12 && !f12Down) { if (keycode == Input.Keys.F12 && !f12Down) {

View File

@@ -241,7 +241,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
private lateinit var uiBasicInfo: UICanvas private lateinit var uiBasicInfo: UICanvas
private lateinit var uiWatchTierOne: UICanvas private lateinit var uiWatchTierOne: UICanvas
lateinit var uiAutosaveNotifier: UIAutosaveNotifier lateinit var uiAutosaveNotifier: UIAutosaveNotifier
lateinit var uiCheatMotherfuckerNootNoot: UICheatDetected lateinit var uiCheatDetected: UICheatDetected
var particlesActive = 0 var particlesActive = 0
@@ -628,7 +628,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
uiBasicInfo.setPosition((uiQuickBar.posX - uiBasicInfo.width - App.scr.tvSafeActionWidth) / 2 + App.scr.tvSafeActionWidth, uiWatchTierOne.posY) uiBasicInfo.setPosition((uiQuickBar.posX - uiBasicInfo.width - App.scr.tvSafeActionWidth) / 2 + App.scr.tvSafeActionWidth, uiWatchTierOne.posY)
uiCheatMotherfuckerNootNoot = UICheatDetected() uiCheatDetected = UICheatDetected()
// batch-process uiAliases // batch-process uiAliases
@@ -654,7 +654,8 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) {
getUIFixture, getUIFixture,
uiTooltip, uiTooltip,
consoleHandler, consoleHandler,
uiCheatMotherfuckerNootNoot uiPaused,
uiCheatDetected,
// drawn last // drawn last
) )

View File

@@ -7,7 +7,7 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame
object CheatWarnTest : ConsoleCommand { object CheatWarnTest : ConsoleCommand {
override fun execute(args: Array<String>) { override fun execute(args: Array<String>) {
(Terrarum.ingame as? TerrarumIngame)?.uiCheatMotherfuckerNootNoot?.setAsOpen() (Terrarum.ingame as? TerrarumIngame)?.uiCheatDetected?.setAsOpen()
} }
override fun printUsage() { override fun printUsage() {

View File

@@ -714,18 +714,18 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
private fun swimUp() { private fun swimUp() {
val timedJumpCharge = jumpFunc(MAX_JUMP_LENGTH, 0) val timedJumpCharge = jumpFunc(MAX_JUMP_LENGTH, 0)
swimAcc = -getJumpAcc(jumpPower1, timedJumpCharge) * SWIM_ACC_MULT swimAcc = -getJumpAcc(jumpPower1, timedJumpCharge) * SWIM_ACC_MULT * speedMultByTile
} }
private fun swimDown() { private fun swimDown() {
val timedJumpCharge = jumpFunc(MAX_JUMP_LENGTH, 0) val timedJumpCharge = jumpFunc(MAX_JUMP_LENGTH, 0)
swimAcc = getJumpAcc(jumpPower1, timedJumpCharge) * SWIM_ACC_MULT swimAcc = getJumpAcc(jumpPower1, timedJumpCharge) * SWIM_ACC_MULT * speedMultByTile
} }
private fun swimVertJoypad(up: Boolean, absAxisVal: Float) { private fun swimVertJoypad(up: Boolean, absAxisVal: Float) {
val timedJumpCharge = jumpFunc(MAX_JUMP_LENGTH, 0) val timedJumpCharge = jumpFunc(MAX_JUMP_LENGTH, 0)
val sign = if (up) -1.0 else 1.0 val sign = if (up) -1.0 else 1.0
swimAcc = sign * getJumpAcc(jumpPower1, timedJumpCharge) * absAxisVal * SWIM_ACC_MULT swimAcc = sign * getJumpAcc(jumpPower1, timedJumpCharge) * absAxisVal * SWIM_ACC_MULT * speedMultByTile
} }

View File

@@ -1,10 +1,12 @@
package net.torvald.terrarum.modulebasegame.ui package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.Input
import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
@@ -27,9 +29,6 @@ class UICheatDetected : UICanvas() {
set(value) { throw UnsupportedOperationException() } set(value) { throw UnsupportedOperationException() }
override var openCloseTime: Second = 0f override var openCloseTime: Second = 0f
private val backgroundCol = Color(0x00000080) private val backgroundCol = Color(0x00000080)
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) { override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
@@ -42,29 +41,63 @@ class UICheatDetected : UICanvas() {
batch.color = Color.WHITE batch.color = Color.WHITE
val txt = Lang["ERROR_GENERIC_CHEATING"] val txt = Lang["ERROR_GENERIC_CHEATING"]
val txtW = App.fontGame.getWidth(txt) val txtW = App.fontUITitle.getWidth(txt)
val txtH = App.fontGame.lineHeight.toInt() val txtH = App.fontUITitle.lineHeight.toInt()
App.fontGame.draw(batch, txt, width.minus(txtW).ushr(1).toFloat(), height.minus(txtH).ushr(1).toFloat()) App.fontUITitle.draw(batch, txt, width.minus(txtW).ushr(1).toFloat(), height.minus(txtH).ushr(1).toFloat())
} }
override fun updateImpl(delta: Float) { override fun updateImpl(delta: Float) { INGAME.pause() }
INGAME.pause() override fun doOpening(delta: Float) { INGAME.pause() }
} override fun doClosing(delta: Float) {}
override fun endOpening(delta: Float) {}
override fun doOpening(delta: Float) { override fun endClosing(delta: Float) {}
INGAME.pause() override fun dispose() {}
} }
override fun doClosing(delta: Float) { /**
} * The obscure PAUSE screen that's only accessible by hitting the equally obscure Pause/Break key
*
override fun endOpening(delta: Float) { * Created by minjaesong on 2024-09-13.
} */
class UIPauseTheGame : UICanvas() {
override fun endClosing(delta: Float) {
} init {
handler.allowESCtoClose = false
override fun dispose() { }
}
override var width: Int
get() = App.scr.width
set(value) { throw UnsupportedOperationException() }
override var height: Int
get() = App.scr.height
set(value) { throw UnsupportedOperationException() }
private val backgroundCol = Color(0x00000080)
override fun renderImpl(frameDelta: Float, batch: SpriteBatch, camera: OrthographicCamera) {
Terrarum.ingame?.consoleHandler?.setAsClose()
Terrarum.ingame?.consoleHandler?.isVisible = false
Toolkit.blurEntireScreen(batch, camera as OrthographicCamera, 2f, 0, 0, width, height)
batch.color = backgroundCol
Toolkit.fillArea(batch, 0f, 0f, width.toFloat(), height.toFloat())
batch.color = Color.WHITE
val txt = Lang["MENU_LABEL_PAUSED"]
val txtW = App.fontUITitle.getWidth(txt)
val txtH = App.fontUITitle.lineHeight.toInt()
App.fontUITitle.draw(batch, txt, width.minus(txtW).ushr(1).toFloat(), height.minus(txtH).ushr(1).toFloat())
}
private var pauseLatched = false
override fun updateImpl(delta: Float) { INGAME.pause() }
override fun doOpening(delta: Float) { pauseLatched = true; INGAME.pause() }
override fun doClosing(delta: Float) { pauseLatched = true; INGAME.resume() }
override fun endOpening(delta: Float) { pauseLatched = false }
override fun endClosing(delta: Float) { pauseLatched = false; INGAME.resume() }
override fun dispose() {}
} }

View File

@@ -209,11 +209,11 @@ object Toolkit : Disposable {
fun blurEntireScreen(batch: SpriteBatch, camera: OrthographicCamera, blurRadius0: Float, x: Int, y: Int, w: Int, h: Int) { fun blurEntireScreen(batch: SpriteBatch, camera: OrthographicCamera, blurRadius0: Float, x: Int, y: Int, w: Int, h: Int) {
batch.end() batch.end()
val blurRadius = FastMath.pow(blurRadius0, 0.5f) // val blurRadius = FastMath.pow(blurRadius0, 0.5f)
val renderTarget = FrameBufferManager.peek() val renderTarget = FrameBufferManager.peek()
/*if (blurRadius > 3f) { //if (blurRadius > 3f) {
val radius3 = (blurRadius - 3f) / 8f val radius3 = FastMath.pow(blurRadius0 / 2, 0.5f)//(blurRadius - 3f) / 8f
fboBlurHalf.inAction(camera, batch) { fboBlurHalf.inAction(camera, batch) {
blurtex0 = renderTarget.colorBufferTexture blurtex0 = renderTarget.colorBufferTexture
blurtex0.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear) blurtex0.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
@@ -257,9 +257,9 @@ object Toolkit : Disposable {
shaderKawaseUp.setUniformf("halfpixel", radius3 / fboBlurHalf.width, radius3 / fboBlurHalf.height) shaderKawaseUp.setUniformf("halfpixel", radius3 / fboBlurHalf.width, radius3 / fboBlurHalf.height)
blurWriteQuad.render(shaderKawaseUp, GL20.GL_TRIANGLE_FAN) blurWriteQuad.render(shaderKawaseUp, GL20.GL_TRIANGLE_FAN)
} }
}*/ //}
fboBlurHalf.inAction(camera, batch) { /*fboBlurHalf.inAction(camera, batch) {
blurtex2 = renderTarget.colorBufferTexture blurtex2 = renderTarget.colorBufferTexture
blurtex2.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear) blurtex2.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
blurtex2.bind(0) blurtex2.bind(0)
@@ -279,7 +279,7 @@ object Toolkit : Disposable {
shaderKawaseUp.setUniformi("u_texture", 0) shaderKawaseUp.setUniformi("u_texture", 0)
shaderKawaseUp.setUniformf("halfpixel", blurRadius / fboBlurHalf.width, blurRadius / fboBlurHalf.height) shaderKawaseUp.setUniformf("halfpixel", blurRadius / fboBlurHalf.width, blurRadius / fboBlurHalf.height)
blurWriteQuad.render(shaderKawaseUp, GL20.GL_TRIANGLE_FAN) blurWriteQuad.render(shaderKawaseUp, GL20.GL_TRIANGLE_FAN)
} }*/