mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-10 18:44:05 +09:00
worldportal: submitting teleportrequest works, needs UI refinement
This commit is contained in:
@@ -4,9 +4,11 @@ import net.torvald.terrarum.INGAME
|
|||||||
import net.torvald.terrarum.WireCodex
|
import net.torvald.terrarum.WireCodex
|
||||||
import net.torvald.terrarum.gameactors.AVKey
|
import net.torvald.terrarum.gameactors.AVKey
|
||||||
import net.torvald.terrarum.langpack.Lang
|
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.gameactors.FixtureInventory.Companion.CAPACITY_MODE_WEIGHT
|
||||||
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
import net.torvald.terrarum.modulebasegame.gameitems.FixtureItemBase
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIWorldPortal
|
import net.torvald.terrarum.modulebasegame.ui.UIWorldPortal
|
||||||
|
import net.torvald.terrarum.savegame.DiskSkimmer
|
||||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||||
import org.dyn4j.geometry.Vector2
|
import org.dyn4j.geometry.Vector2
|
||||||
import java.util.HashMap
|
import java.util.HashMap
|
||||||
@@ -27,6 +29,8 @@ class FixtureWorldPortal : Electric {
|
|||||||
// ui.transitionalCargo.chestInventory = this.inventory!!
|
// ui.transitionalCargo.chestInventory = this.inventory!!
|
||||||
// ui.transitionalCargo.chestNameFun = this.nameFun
|
// ui.transitionalCargo.chestNameFun = this.nameFun
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
(mainUI as UIWorldPortal).host = this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -44,8 +48,14 @@ class FixtureWorldPortal : Electric {
|
|||||||
setWireSinkAt(2, 1, "digital_bit")
|
setWireSinkAt(2, 1, "digital_bit")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transient internal var teleportRequest: TeleportRequest? = null
|
||||||
|
|
||||||
|
override fun update(delta: Float) {
|
||||||
|
super.update(delta)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onRisingEdge(readFrom: BlockBoxIndex) {
|
override fun onRisingEdge(readFrom: BlockBoxIndex) {
|
||||||
println("[FixtureWorldPortal] teleport! ($readFrom)")
|
println("[FixtureWorldPortal] teleport! $teleportRequest")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun reload() {
|
override fun reload() {
|
||||||
@@ -54,4 +64,8 @@ class FixtureWorldPortal : Electric {
|
|||||||
// TODO do something with (mainUI as UIWorldPortal).***
|
// 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
|
||||||
|
)
|
||||||
}
|
}
|
||||||
@@ -7,6 +7,7 @@ import com.jme3.math.FastMath
|
|||||||
import net.torvald.terrarum.*
|
import net.torvald.terrarum.*
|
||||||
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
|
import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
|
||||||
import net.torvald.terrarum.langpack.Lang
|
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.INVENTORY_CELLS_OFFSET_Y
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.YPOS_CORRECTION
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.YPOS_CORRECTION
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.drawBackground
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.drawBackground
|
||||||
@@ -34,6 +35,7 @@ class UIWorldPortal : UICanvas(
|
|||||||
override var width: Int = Toolkit.drawWidth
|
override var width: Int = Toolkit.drawWidth
|
||||||
override var height: Int = App.scr.height
|
override var height: Int = App.scr.height
|
||||||
|
|
||||||
|
internal lateinit var host: FixtureWorldPortal
|
||||||
|
|
||||||
|
|
||||||
val controlHelpHeight = App.fontGame.lineHeight
|
val controlHelpHeight = App.fontGame.lineHeight
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import net.torvald.terrarum.*
|
|||||||
import net.torvald.terrarum.gameactors.AVKey
|
import net.torvald.terrarum.gameactors.AVKey
|
||||||
import net.torvald.terrarum.gameworld.fmod
|
import net.torvald.terrarum.gameworld.fmod
|
||||||
import net.torvald.terrarum.langpack.Lang
|
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.INVENTORY_CELLS_OFFSET_Y
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.getCellCountVertically
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.getCellCountVertically
|
||||||
import net.torvald.terrarum.realestate.LandUtil.CHUNK_H
|
import net.torvald.terrarum.realestate.LandUtil.CHUNK_H
|
||||||
@@ -86,7 +87,15 @@ class UIWorldPortalListing(val full: UIWorldPortal) : UICanvas() {
|
|||||||
readFromLang = true,
|
readFromLang = true,
|
||||||
hasBorder = true,
|
hasBorder = true,
|
||||||
alignment = UIItemTextButton.Companion.Alignment.CENTRE
|
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,
|
private val buttonRename = UIItemTextButton(this,
|
||||||
"MENU_LABEL_RENAME",
|
"MENU_LABEL_RENAME",
|
||||||
hx + gridGap/2,
|
hx + gridGap/2,
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import net.torvald.terrarum.gamecontroller.TerrarumKeyboardEvent
|
|||||||
import net.torvald.terrarum.langpack.Lang
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.WorldgenLoadScreen
|
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.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
|
||||||
@@ -82,32 +83,15 @@ class UIWorldPortalSearch(val full: UIWorldPortal) : UICanvas() {
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
goButton.clickOnceListener = { _, _ ->
|
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 {
|
val seed = try {
|
||||||
seedInput.getTextOrPlaceholder().toLong()
|
seedInput.getTextOrPlaceholder().toLong()
|
||||||
}
|
}
|
||||||
catch (e: NumberFormatException) {
|
catch (e: NumberFormatException) {
|
||||||
XXHash64.hash(seedInput.getTextOrPlaceholder().toByteArray(Charsets.UTF_8), 10000)
|
XXHash64.hash(seedInput.getTextOrPlaceholder().toByteArray(Charsets.UTF_8), 10000)
|
||||||
}
|
}
|
||||||
val (wx, wy) = TerrarumIngame.NEW_WORLD_SIZE[sizeSelector.selection]
|
val (wx, wy) = TerrarumIngame.WORLDPORTAL_NEW_WORLD_SIZE[sizeSelector.selection]
|
||||||
val worldParam = TerrarumIngame.NewGameParams(
|
val worldParam = TerrarumIngame.NewWorldParameters(wx, wy, seed, nameInput.getTextOrPlaceholder())
|
||||||
player, TerrarumIngame.NewWorldParameters(
|
full.host.teleportRequest = FixtureWorldPortal.TeleportRequest(null, worldParam)
|
||||||
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)*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
backButton.clickOnceListener = { _, _ ->
|
backButton.clickOnceListener = { _, _ ->
|
||||||
full.requestTransition(0)
|
full.requestTransition(0)
|
||||||
|
|||||||
Reference in New Issue
Block a user