mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 03:15:35 -04:00
fix some eros bugs
This commit is contained in:
parent
7e81c67bdb
commit
c96720a076
@ -22,5 +22,5 @@ class LightC {
|
||||
* In original minecraft this setting is called brightness
|
||||
* Must be non-negative and may not exceed 1
|
||||
*/
|
||||
var gamma by delegate(0.0f) { check(it in 0.0f..1.0f) { "Gama must be non negative and < 1" } }
|
||||
var gamma by delegate(0.0f) { check(it in 0.0f..1.0f) { "Gamma must be non negative and < 1" } }
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ import de.bixilon.minosoft.util.enum.ValuesEnum
|
||||
enum class ErosMainActivities(
|
||||
val layout: ResourceLocation,
|
||||
) {
|
||||
PlAY(PlayController.LAYOUT),
|
||||
PLAY(PlayController.LAYOUT),
|
||||
SETTINGS("".toResourceLocation()),
|
||||
HELP("".toResourceLocation()),
|
||||
ABOUT("".toResourceLocation()),
|
||||
|
@ -24,8 +24,10 @@ import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
|
||||
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.clickable
|
||||
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext
|
||||
import de.bixilon.minosoft.terminal.RunConfiguration
|
||||
import de.bixilon.minosoft.util.KUtil.synchronizedMapOf
|
||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
import de.bixilon.minosoft.util.ShutdownManager
|
||||
import de.bixilon.minosoft.util.collections.SynchronizedMap
|
||||
import de.bixilon.minosoft.util.task.pool.DefaultThreadPool
|
||||
import javafx.application.Platform
|
||||
import javafx.fxml.FXML
|
||||
@ -52,11 +54,12 @@ class MainErosController : JavaFXWindowController() {
|
||||
|
||||
private lateinit var iconMap: Map<ErosMainActivities, FontIcon>
|
||||
|
||||
private val controllers: SynchronizedMap<ErosMainActivities, EmbeddedJavaFXController<*>> = synchronizedMapOf()
|
||||
|
||||
private var activity: ErosMainActivities = ErosMainActivities.ABOUT // other value (just not the default)
|
||||
set(value) {
|
||||
field = value
|
||||
contentFX.children.setAll(JavaFXUtil.loadEmbeddedController<EmbeddedJavaFXController<*>>(field.layout).root)
|
||||
contentFX.children.setAll(controllers.getOrPut(value) { JavaFXUtil.loadEmbeddedController(field.layout) }.root)
|
||||
|
||||
highlightIcon(iconMap[value])
|
||||
}
|
||||
@ -76,7 +79,7 @@ class MainErosController : JavaFXWindowController() {
|
||||
logoFX.image = JavaFXUtil.MINOSOFT_LOGO
|
||||
versionTextFX.text = RunConfiguration.VERSION_STRING
|
||||
iconMap = mapOf(
|
||||
ErosMainActivities.PlAY to playIconFX,
|
||||
ErosMainActivities.PLAY to playIconFX,
|
||||
ErosMainActivities.SETTINGS to settingsIconFX,
|
||||
ErosMainActivities.HELP to helpIconFX,
|
||||
ErosMainActivities.ABOUT to aboutIconFX,
|
||||
@ -89,7 +92,7 @@ class MainErosController : JavaFXWindowController() {
|
||||
highlightIcon(playIconFX)
|
||||
|
||||
playIconFX.setOnMouseClicked {
|
||||
activity = ErosMainActivities.PlAY
|
||||
activity = ErosMainActivities.PLAY
|
||||
}
|
||||
settingsIconFX.setOnMouseClicked {
|
||||
// ToDo: activity = ErosMainActivities.SETTINGS
|
||||
@ -118,7 +121,7 @@ class MainErosController : JavaFXWindowController() {
|
||||
accountImageFX.clickable()
|
||||
accountNameFX.clickable()
|
||||
|
||||
activity = ErosMainActivities.PlAY
|
||||
activity = ErosMainActivities.PLAY
|
||||
}
|
||||
|
||||
override fun postInit() {
|
||||
|
@ -53,16 +53,22 @@ class PlayController : EmbeddedJavaFXController<Pane>() {
|
||||
|
||||
|
||||
playTypeListViewFX.selectionModel.selectedItemProperty().addListener { _, _, new ->
|
||||
if (this::currentController.isInitialized) {
|
||||
currentController.terminate()
|
||||
}
|
||||
new ?: return@addListener // Should not happen
|
||||
if (this::currentController.isInitialized) {
|
||||
val currentController = this.currentController
|
||||
if (currentController is ServerListController) {
|
||||
currentController.serverType = new
|
||||
currentController.initWatch()
|
||||
currentController.refreshList()
|
||||
}
|
||||
return@addListener
|
||||
}
|
||||
currentController = JavaFXUtil.loadEmbeddedController<ServerListController>(ServerListController.LAYOUT).apply {
|
||||
serverType = new
|
||||
initWatch()
|
||||
refreshList()
|
||||
playTypeContentFX.children.setAll(this.root)
|
||||
}
|
||||
playTypeContentFX.children.setAll(currentController.root)
|
||||
}
|
||||
|
||||
playTypeListViewFX.selectionModel.select(0)
|
||||
@ -81,8 +87,6 @@ class PlayController : EmbeddedJavaFXController<Pane>() {
|
||||
|
||||
companion object {
|
||||
val LAYOUT = "minosoft:eros/main/play/play.fxml".toResourceLocation()
|
||||
private val CUSTOM_SERVER_TYPE = "minosoft:server_type.custom".toResourceLocation()
|
||||
private val LAN_SERVER_TYPE = "minosoft:server_type.lan".toResourceLocation()
|
||||
private val REFRESH_HEADER = "minosoft:server_list.refresh.header".toResourceLocation()
|
||||
private val REFRESH_TEXT1 = "minosoft:server_list.refresh.text1".toResourceLocation()
|
||||
private val REFRESH_TEXT2 = "minosoft:server_list.refresh.text2".toResourceLocation()
|
||||
|
@ -64,12 +64,12 @@ class ServerListController : EmbeddedJavaFXController<Pane>(), Refreshable {
|
||||
@FXML private lateinit var serverListViewFX: ListView<ServerCard>
|
||||
@FXML private lateinit var serverInfoFX: AnchorPane
|
||||
|
||||
lateinit var serverType: ServerType
|
||||
|
||||
var readOnly: Boolean = false
|
||||
var serverType: ServerType? = null
|
||||
set(value) {
|
||||
check(value != null)
|
||||
field = value
|
||||
addServerButtonFX.isVisible = !value
|
||||
|
||||
addServerButtonFX.isVisible = !value.readOnly
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
@ -157,7 +157,7 @@ class ServerListController : EmbeddedJavaFXController<Pane>(), Refreshable {
|
||||
}
|
||||
|
||||
fun initWatch() {
|
||||
serverType::servers.watchListFX(this) {
|
||||
serverType!!::servers.watchListFX(this) {
|
||||
while (it.next()) {
|
||||
for (removed in it.removed) {
|
||||
serverListViewFX.items -= ServerCard.CARDS.remove(removed)
|
||||
@ -165,6 +165,7 @@ class ServerListController : EmbeddedJavaFXController<Pane>(), Refreshable {
|
||||
}
|
||||
for (added in it.addedSubList) {
|
||||
updateServer(added)
|
||||
serverListViewFX.refresh()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -172,13 +173,13 @@ class ServerListController : EmbeddedJavaFXController<Pane>(), Refreshable {
|
||||
|
||||
@FXML
|
||||
fun refreshList() {
|
||||
if (!this::serverType.isInitialized) {
|
||||
if (serverType == null) {
|
||||
return
|
||||
}
|
||||
val selected = serverListViewFX.selectionModel.selectedItem
|
||||
serverListViewFX.items.clear()
|
||||
|
||||
for (server in serverType.servers) {
|
||||
for (server in serverType!!.servers) {
|
||||
updateServer(server)
|
||||
}
|
||||
|
||||
@ -251,7 +252,7 @@ class ServerListController : EmbeddedJavaFXController<Pane>(), Refreshable {
|
||||
it.columnConstraints += ColumnConstraints()
|
||||
it.columnConstraints += ColumnConstraints(0.0, -1.0, Double.POSITIVE_INFINITY, Priority.ALWAYS, HPos.LEFT, true)
|
||||
|
||||
if (!readOnly) {
|
||||
if (!serverType!!.readOnly) {
|
||||
it.add(Button("Delete").apply {
|
||||
setOnAction {
|
||||
SimpleErosConfirmationDialog(confirmButtonText = "minosoft:general.delete".toResourceLocation(), description = TranslatableComponents.EROS_DELETE_SERVER_CONFIRM_DESCRIPTION(serverCard.server.name, serverCard.server.address), onConfirm = {
|
||||
@ -344,12 +345,12 @@ class ServerListController : EmbeddedJavaFXController<Pane>(), Refreshable {
|
||||
@FXML
|
||||
fun addServer() {
|
||||
UpdateServerDialog(onUpdate = { name, address, forcedVersion ->
|
||||
serverType.servers += Server(name = ChatComponent.of(name), address = address, forcedVersion = forcedVersion)
|
||||
serverType!!.servers += Server(name = ChatComponent.of(name), address = address, forcedVersion = forcedVersion)
|
||||
}).show()
|
||||
}
|
||||
|
||||
override fun refresh() {
|
||||
serverType.refresh(serverListViewFX.items)
|
||||
serverType!!.refresh(serverListViewFX.items)
|
||||
}
|
||||
|
||||
|
||||
|
@ -7,25 +7,16 @@ import de.bixilon.minosoft.gui.eros.main.play.server.card.ServerCard
|
||||
import de.bixilon.minosoft.protocol.network.connection.status.StatusConnectionStates
|
||||
import de.bixilon.minosoft.util.KUtil.toResourceLocation
|
||||
import de.bixilon.minosoft.util.delegate.DelegateManager.listDelegate
|
||||
import de.bixilon.minosoft.util.delegate.watcher.entry.ListDelegateWatcher.Companion.watchListFX
|
||||
import org.kordamp.ikonli.Ikon
|
||||
import org.kordamp.ikonli.fontawesome5.FontAwesomeSolid
|
||||
|
||||
object CustomServerType : ServerType {
|
||||
override val icon: Ikon = FontAwesomeSolid.SERVER
|
||||
override val hidden: Boolean = false
|
||||
override var readOnly: Boolean = false
|
||||
override val servers: MutableList<Server> by listDelegate(ErosProfileManager.selected.server.entries)
|
||||
override val translationKey: ResourceLocation = "minosoft:server_type.custom".toResourceLocation()
|
||||
|
||||
init {
|
||||
ErosProfileManager.selected.server::entries.watchListFX(this) {
|
||||
while (it.next()) {
|
||||
this.servers += it.addedSubList
|
||||
this.servers -= it.removed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun refresh(cards: List<ServerCard>) {
|
||||
for (serverCard in cards) {
|
||||
serverCard.ping?.let {
|
||||
|
@ -13,6 +13,7 @@ object LANServerType : ServerType {
|
||||
override val icon: Ikon = FontAwesomeSolid.NETWORK_WIRED
|
||||
override val hidden: Boolean
|
||||
get() = !LANServerListener.listening
|
||||
override var readOnly: Boolean = true
|
||||
override val servers: MutableList<Server> by listDelegate()
|
||||
override val translationKey: ResourceLocation = "minosoft:server_type.lan".toResourceLocation()
|
||||
|
||||
|
@ -21,6 +21,7 @@ import org.kordamp.ikonli.Ikon
|
||||
interface ServerType : Translatable {
|
||||
val icon: Ikon
|
||||
val hidden: Boolean
|
||||
var readOnly: Boolean
|
||||
|
||||
val servers: MutableList<Server>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user