From 22508bb83e8d5846a7a68dd5346e8a2013e1c710 Mon Sep 17 00:00:00 2001 From: inglettronald Date: Sat, 10 Jun 2023 16:45:58 -0500 Subject: more shortcuts stuff --- .../kotlin/com/dulkirfabric/config/ConfigHelper.kt | 58 ++++++++++++++++++++++ .../kotlin/com/dulkirfabric/config/DulkirConfig.kt | 26 ++++++---- .../kotlin/com/dulkirfabric/config/ListHelper.kt | 51 ------------------- .../config/serializations/KeySerializer.kt | 3 +- 4 files changed, 74 insertions(+), 64 deletions(-) create mode 100644 src/main/kotlin/com/dulkirfabric/config/ConfigHelper.kt delete mode 100644 src/main/kotlin/com/dulkirfabric/config/ListHelper.kt (limited to 'src/main/kotlin/com/dulkirfabric/config') diff --git a/src/main/kotlin/com/dulkirfabric/config/ConfigHelper.kt b/src/main/kotlin/com/dulkirfabric/config/ConfigHelper.kt new file mode 100644 index 0000000..4f12d27 --- /dev/null +++ b/src/main/kotlin/com/dulkirfabric/config/ConfigHelper.kt @@ -0,0 +1,58 @@ +package com.dulkirfabric.config + +import me.shedaniel.clothconfig2.api.AbstractConfigListEntry +import me.shedaniel.clothconfig2.api.ConfigEntryBuilder +import me.shedaniel.clothconfig2.gui.entries.MultiElementListEntry +import me.shedaniel.clothconfig2.gui.entries.NestedListListEntry +import net.minecraft.client.util.InputUtil +import net.minecraft.text.Text +import java.util.* +import kotlin.reflect.KMutableProperty0 + +object ConfigHelper { + fun mkConfigList( + name: Text, + property: KMutableProperty0>, + newT: () -> T, + elementName: Text, + render: (T) -> List>, + canDelete: Boolean = true, + ): NestedListListEntry> { + return NestedListListEntry>( + name, // field name + property.get(), // value + false, // defaultExpanded + { Optional.empty() }, // tooltipSupplier + { property.set(it) }, // saveConsumer + { mutableListOf() }, // defaultValue + Text.literal("Reset"), // resetButtonKey + canDelete, + false, + { value, entry -> // createNewCell + val value = value ?: newT() + MultiElementListEntry(elementName, value, render(value), true) + } + ) + } + + fun ConfigEntryBuilder.mkStringField(text: Text, prop: KMutableProperty0) = startStrField(text, prop.get()) + .setSaveConsumer { prop.set(it) } + .setDefaultValue("") + .build() + fun ConfigEntryBuilder.mkIntField(text: Text, prop: KMutableProperty0) = startIntField(text, prop.get()) + .setSaveConsumer { prop.set(it) } + .setDefaultValue(0) + .build() + + fun ConfigEntryBuilder.mkKeyField(text: Text, prop: KMutableProperty0) = startKeyCodeField(text, prop.get()) + .setKeySaveConsumer { prop.set(it) } + .setDefaultValue(InputUtil.UNKNOWN_KEY) + .build() + + fun ConfigEntryBuilder.mkToggle(text: Text, prop: KMutableProperty0, tooltip: Text = Text.literal("")) + = startBooleanToggle(text, prop.get()) + .setSaveConsumer { prop.set(it) } + .setDefaultValue(false) + .setTooltip(tooltip) + .build() +} \ No newline at end of file diff --git a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt index a34016d..9e3fbaf 100644 --- a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt +++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt @@ -14,8 +14,9 @@ package com.dulkirfabric.config import com.dulkirfabric.DulkirModFabric.mc -import com.dulkirfabric.config.ListHelper.mkKeyField -import com.dulkirfabric.config.ListHelper.mkStringField +import com.dulkirfabric.config.ConfigHelper.mkKeyField +import com.dulkirfabric.config.ConfigHelper.mkStringField +import com.dulkirfabric.config.ConfigHelper.mkToggle import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers import kotlinx.serialization.decodeFromString @@ -48,10 +49,9 @@ class DulkirConfig { val entryBuilder = builder.entryBuilder() val general = builder.getOrCreateCategory(Text.literal("General")) general.addEntry( - entryBuilder.startBooleanToggle(Text.literal("Custom Inventory Scale Toggle"), configOptions.invScaleBool) - .setTooltip(Text.literal("WAHOO!")) - .setSaveConsumer { newValue -> configOptions.invScaleBool = newValue } - .build() + entryBuilder.mkToggle(Text.literal("Inventory Scale Toggle"), + configOptions::invScaleBool, + Text.literal("This is a tooltip")) ) general.addEntry( entryBuilder.startIntSlider(Text.literal("Inventory Scale"), configOptions.inventoryScale, 1, 5) @@ -59,10 +59,13 @@ class DulkirConfig { .setSaveConsumer { newValue -> configOptions.inventoryScale = newValue } .build() ) + general.addEntry( + entryBuilder.mkToggle(Text.literal("Ignore Reverse Third Person"), configOptions::ignoreReverseThirdPerson) + ) val shortcuts = builder.getOrCreateCategory(Text.literal("Shortcuts")) shortcuts.addEntry( - ListHelper.mkConfigList( + ConfigHelper.mkConfigList( Text.literal("Macros"), configOptions::macrosList, { Macro(UNKNOWN_KEY, "") }, @@ -80,10 +83,12 @@ class DulkirConfig { screen = builder.build() } + @Serializable data class ConfigOptions( - var invScaleBool: Boolean = true, - var inventoryScale: Int = 1, - var macrosList: List = listOf(Macro(UNKNOWN_KEY, "")) + var invScaleBool: Boolean = false, + var inventoryScale: Int = 3, + var macrosList: List = listOf(Macro(UNKNOWN_KEY, "")), + var ignoreReverseThirdPerson: Boolean = false ) @Serializable @@ -125,7 +130,6 @@ class DulkirConfig { } configOptions = json.decodeFromString(configFile.readText()) } - } } diff --git a/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt b/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt deleted file mode 100644 index 8f50943..0000000 --- a/src/main/kotlin/com/dulkirfabric/config/ListHelper.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.dulkirfabric.config - -import me.shedaniel.clothconfig2.api.AbstractConfigListEntry -import me.shedaniel.clothconfig2.api.ConfigEntryBuilder -import me.shedaniel.clothconfig2.gui.entries.MultiElementListEntry -import me.shedaniel.clothconfig2.gui.entries.NestedListListEntry -import net.minecraft.client.util.InputUtil -import net.minecraft.text.Text -import java.util.* -import kotlin.reflect.KMutableProperty0 - -object ListHelper { - fun mkConfigList( - name: Text, - property: KMutableProperty0>, - newT: () -> T, - elementName: Text, - render: (T) -> List>, - canDelete: Boolean = true, - ): NestedListListEntry> { - return NestedListListEntry>( - name, // field name - property.get(), // value - false, // defaultExpanded - { Optional.empty() }, // tooltipSupplier - { property.set(it) }, // saveConsumer - { mutableListOf() }, // defaultValue - Text.literal("Reset"), // resetButtonKey - canDelete, - false, - { value, entry -> // createNewCell - val value = value ?: newT() - MultiElementListEntry(elementName, value, render(value), true) - } - ) - } - - fun ConfigEntryBuilder.mkStringField(text: Text, prop: KMutableProperty0) = startStrField(text, prop.get()) - .setSaveConsumer { prop.set(it) } - .setDefaultValue("") - .build() - fun ConfigEntryBuilder.mkIntField(text: Text, prop: KMutableProperty0) = startIntField(text, prop.get()) - .setSaveConsumer { prop.set(it) } - .setDefaultValue(0) - .build() - - fun ConfigEntryBuilder.mkKeyField(text: Text, prop: KMutableProperty0) = startKeyCodeField(text, prop.get()) - .setKeySaveConsumer { prop.set(it) } - .setDefaultValue(InputUtil.UNKNOWN_KEY) - .build() -} \ No newline at end of file diff --git a/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt b/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt index a737bf0..702dab5 100644 --- a/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt +++ b/src/main/kotlin/com/dulkirfabric/config/serializations/KeySerializer.kt @@ -7,13 +7,12 @@ import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Encoder import net.minecraft.client.util.InputUtil -import org.lwjgl.glfw.GLFW object KeySerializer: KSerializer { override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("InputUtil.Key", PrimitiveKind.INT) override fun deserialize(decoder: Decoder): InputUtil.Key { - return InputUtil.fromKeyCode(GLFW.GLFW_KEY_UNKNOWN, decoder.decodeInt()) + return InputUtil.fromKeyCode(decoder.decodeInt(), 0) } override fun serialize(encoder: Encoder, value: InputUtil.Key) { -- cgit