shorter share code if allowed; flickering teleporter beams

This commit is contained in:
minjaesong
2023-09-08 02:14:29 +09:00
parent fbc700508f
commit 64ef30e445
8 changed files with 86 additions and 25 deletions

View File

@@ -1,6 +1,8 @@
package net.torvald.terrarum.modulebasegame.gameactors
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.random.XXHash64
import net.torvald.spriteanimation.SheetSpriteAnimation
import net.torvald.terrarum.*
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.gameactors.AVKey
@@ -48,7 +50,7 @@ class FixtureWorldPortal : Electric {
density = 2900.0
setHitboxDimension(80, 32, 0, 0)
makeNewSprite(TextureRegionPack(itemImage.texture, 80, 32)).let {
it.setRowsAndFrames(1,1)
it.setRowsAndFrames(1,3)
}
actorValue[AVKey.BASEMASS] = FixtureLogicSignalEmitter.MASS
@@ -58,8 +60,9 @@ class FixtureWorldPortal : Electric {
@Transient internal var teleportRequest: TeleportRequest? = null
override fun update(delta: Float) {
super.update(delta)
override fun drawBody(batch: SpriteBatch) {
(sprite as SheetSpriteAnimation).currentFrame = (Math.random() * 3).toInt()
super.drawBody(batch)
}
override fun onRisingEdge(readFrom: BlockBoxIndex) {

View File

@@ -7,7 +7,9 @@ import net.torvald.terrarum.App
import net.torvald.terrarum.INGAME
import net.torvald.terrarum.imagefont.BigAlphNum
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.serialise.toBig64
import net.torvald.terrarum.serialise.toUint
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.utils.PasswordBase32
@@ -28,15 +30,9 @@ class UIShare : UICanvas() {
}
private var shareCode = ""
private var dash = ' '
override fun show() {
shareCode = PasswordBase32.encode(
INGAME.world.worldIndex.mostSignificantBits.toBig64() +
INGAME.world.worldIndex.leastSignificantBits.toBig64()
).let {
"${it.substring(0..3)}$dash${it.substring(4..5)}$dash${it.substring(6..10)}$dash${it.substring(11..15)}$dash${it.substring(16..20)}$dash${it.substring(21)}"
}
shareCode = Common.encodeUUID(INGAME.world.worldIndex)
App.printdbg(this, shareCode)
App.printdbg(this, INGAME.world.worldIndex)

View File

@@ -9,6 +9,7 @@ import net.torvald.terrarum.INGAME
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.imagefont.BigAlphNum
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.serialise.toBig64
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas
@@ -47,15 +48,10 @@ class UIWorldPortalShare(private val full: UIWorldPortal) : UICanvas() {
}
private var shareCode = ""
private var dash = ' '
override fun show() {
shareCode = PasswordBase32.encode(
INGAME.world.worldIndex.mostSignificantBits.toBig64() +
INGAME.world.worldIndex.leastSignificantBits.toBig64()
).let {
"${it.substring(0..3)}$dash${it.substring(4..5)}$dash${it.substring(6..10)}$dash${it.substring(11..15)}$dash${it.substring(16..20)}$dash${it.substring(21)}"
}
shareCode = Common.encodeUUID(INGAME.world.worldIndex)
printdbg(this, shareCode)

View File

@@ -9,6 +9,7 @@ import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.printStackTrace
import net.torvald.terrarum.savegame.VirtualDisk
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.serialise.toBigInt64
import net.torvald.terrarum.ui.*
import net.torvald.terrarum.utils.PasswordBase32
@@ -68,10 +69,7 @@ class UIWorldPortalUseInvitation(val full: UIWorldPortal) : UICanvas() {
{ Lang["MENU_LABEL_CONFIRM_BUTTON"] }, buttonBaseX + (goButtonWidth + gridGap) * 2, buttonY, goButtonWidth, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true).also {
it.clickOnceListener = { _, _ ->
val code = codeInput.getText().replace(" ", "")
val uuid = PasswordBase32.decode(code, 16).let {
UUID(it.toBigInt64(0), it.toBigInt64(8))
}
val uuid = Common.decodeToUUID(codeInput.getText())
val world = App.savegameWorlds[uuid]
App.printdbg(this, "Decoded UUID=$uuid")