worldportal: submitting teleportrequest works, needs UI refinement

This commit is contained in:
minjaesong
2023-06-20 00:15:53 +09:00
parent 7a42066392
commit 1457cbffb3
4 changed files with 31 additions and 22 deletions

View File

@@ -4,9 +4,11 @@ import net.torvald.terrarum.INGAME
import net.torvald.terrarum.WireCodex
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory.Companion.CAPACITY_MODE_WEIGHT
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
import net.torvald.terrarum.modulebasegame.ui.UIWorldPortal
import net.torvald.terrarum.savegame.DiskSkimmer
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.dyn4j.geometry.Vector2
import java.util.HashMap
@@ -27,6 +29,8 @@ class FixtureWorldPortal : Electric {
// ui.transitionalCargo.chestInventory = this.inventory!!
// ui.transitionalCargo.chestNameFun = this.nameFun
// }
(mainUI as UIWorldPortal).host = this
}
@@ -44,8 +48,14 @@ class FixtureWorldPortal : Electric {
setWireSinkAt(2, 1, "digital_bit")
}
@Transient internal var teleportRequest: TeleportRequest? = null
override fun update(delta: Float) {
super.update(delta)
}
override fun onRisingEdge(readFrom: BlockBoxIndex) {
println("[FixtureWorldPortal] teleport! ($readFrom)")
println("[FixtureWorldPortal] teleport! $teleportRequest")
}
override fun reload() {
@@ -54,4 +64,8 @@ class FixtureWorldPortal : Electric {
// TODO do something with (mainUI as UIWorldPortal).***
}
internal data class TeleportRequest(
val worldDiskToLoad: DiskSkimmer?, // for loading existing worlds
val worldLoadParam: TerrarumIngame.NewWorldParameters? // for creating new world
)
}

View File

@@ -7,6 +7,7 @@ import com.jme3.math.FastMath
import net.torvald.terrarum.*
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.FixtureWorldPortal
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.YPOS_CORRECTION
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.drawBackground
@@ -34,6 +35,7 @@ class UIWorldPortal : UICanvas(
override var width: Int = Toolkit.drawWidth
override var height: Int = App.scr.height
internal lateinit var host: FixtureWorldPortal
val controlHelpHeight = App.fontGame.lineHeight

View File

@@ -11,6 +11,7 @@ import net.torvald.terrarum.*
import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.FixtureWorldPortal
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.getCellCountVertically
import net.torvald.terrarum.realestate.LandUtil.CHUNK_H
@@ -86,7 +87,15 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
readFromLang = true,
hasBorder = true,
alignment = UIItemTextButton.Companion.Alignment.CENTRE
)
).also {
it.clickOnceListener = { _,_ ->
if (selected?.worldInfo != null) {
full.host.teleportRequest = FixtureWorldPortal.TeleportRequest(
selected?.worldInfo?.diskSkimmer, null
)
}
}
}
private val buttonRename = UIItemTextButton(this,
"MENU_LABEL_RENAME",
hx + gridGap/2,

View File

@@ -14,6 +14,7 @@ import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.WorldgenLoadScreen
import net.torvald.terrarum.modulebasegame.gameactors.FixtureWorldPortal
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
@@ -82,32 +83,15 @@ class UIWorldPortalSearch(val full: UIWorldPortal) : UICanvas() {
init {
goButton.clickOnceListener = { _, _ ->
// printdbg(this, "generate! Size=${sizeSelector.selection}, Name=${nameInput.getTextOrPlaceholder()}, Seed=${seedInput.getTextOrPlaceholder()}")
/*val ingame = TerrarumIngame(App.batch)
val player = ReadActor.invoke(UILoadGovernor.playerDisk!!, ByteArray64Reader(UILoadGovernor.playerDisk!!.getFile(
VDFileID.SAVEGAMEINFO
)!!.bytes, Common.CHARSET)
) as IngamePlayer
val seed = try {
seedInput.getTextOrPlaceholder().toLong()
}
catch (e: NumberFormatException) {
XXHash64.hash(seedInput.getTextOrPlaceholder().toByteArray(Charsets.UTF_8), 10000)
}
val (wx, wy) = TerrarumIngame.NEW_WORLD_SIZE[sizeSelector.selection]
val worldParam = TerrarumIngame.NewGameParams(
player, TerrarumIngame.NewWorldParameters(
wx, wy, seed, nameInput.getTextOrPlaceholder()
)
)
ingame.gameLoadInfoPayload = worldParam
ingame.gameLoadMode = TerrarumIngame.GameLoadMode.CREATE_NEW
Terrarum.setCurrentIngameInstance(ingame)
val loadScreen = WorldgenLoadScreen(ingame, wx, wy)
App.setLoadScreen(loadScreen)*/
val (wx, wy) = TerrarumIngame.WORLDPORTAL_NEW_WORLD_SIZE[sizeSelector.selection]
val worldParam = TerrarumIngame.NewWorldParameters(wx, wy, seed, nameInput.getTextOrPlaceholder())
full.host.teleportRequest = FixtureWorldPortal.TeleportRequest(null, worldParam)
}
backButton.clickOnceListener = { _, _ ->
full.requestTransition(0)