Skip to content
This repository was archived by the owner on Mar 22, 2026. It is now read-only.

Commit 1fff33b

Browse files
committed
[TouchController] 实现状态切换功能
1 parent ba5d31d commit 1fff33b

20 files changed

Lines changed: 125 additions & 48 deletions

touchcontroller/common/event/block/BlockBreakEvents.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package top.fifthlight.touchcontroller.common.event.block
22

3+
import top.fifthlight.touchcontroller.common.config.GlobalConfig
4+
import top.fifthlight.touchcontroller.common.config.data.StatusConfig
35
import top.fifthlight.touchcontroller.common.config.holder.GlobalConfigHolder
46
import top.fifthlight.touchcontroller.common.model.ControllerHudModel
57

68
object BlockBreakEvents {
79
fun afterBlockBreak() {
8-
if (GlobalConfigHolder.config.value.regular.vibration) {
10+
val config = GlobalConfigHolder.config.value
11+
if (config.status.status == StatusConfig.Status.DISABLED) {
12+
return
13+
}
14+
if (config.regular.vibration) {
915
ControllerHudModel.status.vibrate = true
1016
}
1117
}

touchcontroller/common/event/connection/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ kt_merge_library(
44
name = "connection",
55
srcs = glob(["*.kt"]),
66
merge_deps = [
7+
"//touchcontroller/common/config",
8+
"//touchcontroller/common/config/data",
9+
"//touchcontroller/common/config/holder",
710
"//touchcontroller/common/gal/action",
811
"//touchcontroller/common/platform",
912
"//touchcontroller/common/platform/provider",

touchcontroller/common/event/connection/ConnectionEvents.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import top.fifthlight.combine.data.Text
44
import top.fifthlight.combine.data.TextFactory
55
import top.fifthlight.combine.data.TextFactoryFactory
66
import top.fifthlight.touchcontroller.assets.Texts
7+
import top.fifthlight.touchcontroller.common.config.data.StatusConfig
8+
import top.fifthlight.touchcontroller.common.config.holder.GlobalConfigHolder
79
import top.fifthlight.touchcontroller.common.gal.action.GameAction
810
import top.fifthlight.touchcontroller.common.gal.action.GameActionFactory
911
import top.fifthlight.touchcontroller.common.platform.provider.PlatformProvider
@@ -12,6 +14,10 @@ import top.fifthlight.touchcontroller.common.platform.warning.WarningProvider
1214

1315
object ConnectionEvents {
1416
fun onJoinedWorld() {
17+
val config = GlobalConfigHolder.config.value
18+
if (config.status.status == StatusConfig.Status.DISABLED) {
19+
return
20+
}
1521
val platform = PlatformProvider.platform
1622
if (platform == null) {
1723
GameAction.sendMessage(Text.translatable(Texts.WARNING_PROXY_NOT_CONNECTED))

touchcontroller/common/event/render/RenderEvents.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import top.fifthlight.combine.paint.Canvas
88
import top.fifthlight.data.IntOffset
99
import top.fifthlight.data.Offset
1010
import top.fifthlight.touchcontroller.common.config.condition.input.BuiltinLayerCondition
11+
import top.fifthlight.touchcontroller.common.config.data.StatusConfig
1112
import top.fifthlight.touchcontroller.common.config.holder.GlobalConfigHolder
13+
import top.fifthlight.touchcontroller.common.config.preset.LayoutPreset
14+
import top.fifthlight.touchcontroller.common.config.preset.info.PresetControlInfo
1215
import top.fifthlight.touchcontroller.common.event.window.WindowEvents
1316
import top.fifthlight.touchcontroller.common.gal.gamestate.GameState
1417
import top.fifthlight.touchcontroller.common.gal.player.PlayerHandleFactory
@@ -56,6 +59,10 @@ object RenderEvents {
5659
}
5760

5861
val config = GlobalConfigHolder.config.value
62+
if (config.status.status == StatusConfig.Status.DISABLED) {
63+
return
64+
}
65+
5966
val playerHandle = PlayerHandleFactory.current()
6067
val platform = PlatformProvider.platform
6168
if (platform != null) {
@@ -157,7 +164,10 @@ object RenderEvents {
157164
keyBindingHandler.getState(DefaultKeyBindingType.SNEAK).clearLock()
158165
}
159166

160-
val preset = GlobalConfigHolder.currentPreset.value
167+
val preset = when (config.status.status) {
168+
StatusConfig.Status.ENABLED -> GlobalConfigHolder.currentPreset.value
169+
StatusConfig.Status.ONLY_VIEW, StatusConfig.Status.DISABLED -> LayoutPreset()
170+
}
161171
val currentPresetUuid = GlobalConfigHolder.currentPresetUuid.value
162172
if (ControllerHudModel.status.previousPresetUuid != currentPresetUuid) {
163173
ControllerHudModel.status.previousPresetUuid = currentPresetUuid

touchcontroller/versions/fabric/1.21.11/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ kt_merge_library(
4747
]),
4848
merge_deps = [
4949
"//touchcontroller/buildinfo",
50+
"//touchcontroller/common/config",
51+
"//touchcontroller/common/config/data",
5052
"//touchcontroller/common/config/holder",
5153
"//touchcontroller/common/event/block",
5254
"//touchcontroller/common/event/connection",

touchcontroller/versions/fabric/1.21.11/TouchController.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import net.minecraft.client.KeyMapping
1515
import top.fifthlight.combine.backend.minecraft.render.v1_21_11.CanvasImpl
1616
import top.fifthlight.combine.backend.minecraft.identifier.v1_21_11.toMinecraft
1717
import top.fifthlight.touchcontroller.buildinfo.BuildInfo
18+
import top.fifthlight.touchcontroller.common.config.data.StatusConfig
1819
import top.fifthlight.touchcontroller.common.config.holder.GlobalConfigHolder
1920
import top.fifthlight.touchcontroller.common.event.block.BlockBreakEvents
2021
import top.fifthlight.touchcontroller.common.event.connection.ConnectionEvents
@@ -66,7 +67,7 @@ class TouchController : ClientModInitializer {
6667
}
6768

6869
WorldRenderEvents.BEFORE_BLOCK_OUTLINE.register { _, _ ->
69-
ControllerHudModel.result.showBlockOutline
70+
GlobalConfigHolder.config.value.status.status == StatusConfig.Status.DISABLED || ControllerHudModel.result.showBlockOutline
7071
}
7172
ClientTickEvents.END_CLIENT_TICK.register {
7273
TickEvents.clientTick()

touchcontroller/versions/fabric/1.21.11/KeyBindingMixin.java renamed to touchcontroller/versions/fabric/1.21.11/mixin/KeyBindingMixin.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.spongepowered.asm.mixin.injection.Inject;
1212
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1313
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
14+
import top.fifthlight.touchcontroller.common.config.GlobalConfig;
15+
import top.fifthlight.touchcontroller.common.config.data.StatusConfig;
1416
import top.fifthlight.touchcontroller.common.config.holder.GlobalConfigHolder;
1517
import top.fifthlight.touchcontroller.extension.v1_21_11.ClickableKeyBinding;
1618
import top.fifthlight.touchcontroller.fabric.v1_21_11.TouchController;
@@ -24,10 +26,7 @@ public abstract class KeyBindingMixin implements ClickableKeyBinding {
2426
private int clickCount;
2527

2628
@Unique
27-
private static boolean touchController$doCancelKey(KeyMapping keyMapping) {
28-
var configHolder = GlobalConfigHolder.INSTANCE;
29-
var config = configHolder.getConfig().getValue();
30-
29+
private static boolean touchController$doCancelKey(GlobalConfig config, KeyMapping keyMapping) {
3130
var client = Minecraft.getInstance();
3231
if (keyMapping == client.options.keyAttack || keyMapping == client.options.keyUse) {
3332
return config.getRegular().getDisableMouseClick() || config.getDebug().getEnableTouchEmulation();
@@ -44,11 +43,18 @@ public abstract class KeyBindingMixin implements ClickableKeyBinding {
4443

4544
@WrapOperation(method = "forAllKeyMappings", at = @At(value = "INVOKE", target = "Ljava/util/function/Consumer;accept(Ljava/lang/Object;)V"))
4645
private static <T> void forAllKeyMappings(Consumer<T> instance, T keyMapping, Operation<Void> original) {
46+
var configHolder = GlobalConfigHolder.INSTANCE;
47+
var config = configHolder.getConfig().getValue();
48+
if (config.getStatus().getStatus() == StatusConfig.Status.DISABLED) {
49+
original.call(instance, keyMapping);
50+
return;
51+
}
52+
4753
if (!(keyMapping instanceof KeyMapping key)) {
4854
original.call(instance, keyMapping);
4955
return;
5056
}
51-
if (touchController$doCancelKey(key)) {
57+
if (touchController$doCancelKey(config, key)) {
5258
return;
5359
}
5460
original.call(instance, keyMapping);

touchcontroller/versions/fabric/26.1/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ kt_merge_library(
3131
actual = True,
3232
merge_deps = [
3333
"//touchcontroller/buildinfo",
34+
"//touchcontroller/common/config",
35+
"//touchcontroller/common/config/data",
3436
"//touchcontroller/common/config/holder",
3537
"//touchcontroller/common/event/block",
3638
"//touchcontroller/common/event/connection",

touchcontroller/versions/fabric/26.1/TouchController.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import net.minecraft.client.KeyMapping
1515
import top.fifthlight.combine.backend.minecraft.render.v26_1.CanvasImpl
1616
import top.fifthlight.combine.backend.minecraft.identifier.v26_1.toMinecraft
1717
import top.fifthlight.touchcontroller.buildinfo.BuildInfo
18+
import top.fifthlight.touchcontroller.common.config.data.StatusConfig
1819
import top.fifthlight.touchcontroller.common.config.holder.GlobalConfigHolder
1920
import top.fifthlight.touchcontroller.common.event.block.BlockBreakEvents
2021
import top.fifthlight.touchcontroller.common.event.connection.ConnectionEvents
@@ -66,7 +67,7 @@ class TouchController : ClientModInitializer {
6667
}
6768

6869
LevelRenderEvents.BEFORE_BLOCK_OUTLINE.register { _, _ ->
69-
ControllerHudModel.result.showBlockOutline
70+
GlobalConfigHolder.config.value.status.status == StatusConfig.Status.DISABLED || ControllerHudModel.result.showBlockOutline
7071
}
7172
ClientTickEvents.END_CLIENT_TICK.register {
7273
TickEvents.clientTick()

touchcontroller/versions/fabric/26.1/KeyBindingMixin.java renamed to touchcontroller/versions/fabric/26.1/mixin/KeyBindingMixin.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.spongepowered.asm.mixin.injection.Inject;
1212
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1313
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
14+
import top.fifthlight.touchcontroller.common.config.GlobalConfig;
15+
import top.fifthlight.touchcontroller.common.config.data.StatusConfig;
1416
import top.fifthlight.touchcontroller.common.config.holder.GlobalConfigHolder;
1517
import top.fifthlight.touchcontroller.extension.v26_1.ClickableKeyBinding;
1618
import top.fifthlight.touchcontroller.fabric.v26_1.TouchController;
@@ -24,10 +26,7 @@ public abstract class KeyBindingMixin implements ClickableKeyBinding {
2426
private int clickCount;
2527

2628
@Unique
27-
private static boolean touchController$doCancelKey(KeyMapping keyMapping) {
28-
var configHolder = GlobalConfigHolder.INSTANCE;
29-
var config = configHolder.getConfig().getValue();
30-
29+
private static boolean touchController$doCancelKey(GlobalConfig config, KeyMapping keyMapping) {
3130
var client = Minecraft.getInstance();
3231
if (keyMapping == client.options.keyAttack || keyMapping == client.options.keyUse) {
3332
return config.getRegular().getDisableMouseClick() || config.getDebug().getEnableTouchEmulation();
@@ -44,11 +43,18 @@ public abstract class KeyBindingMixin implements ClickableKeyBinding {
4443

4544
@WrapOperation(method = "forAllKeyMappings", at = @At(value = "INVOKE", target = "Ljava/util/function/Consumer;accept(Ljava/lang/Object;)V"))
4645
private static <T> void forAllKeyMappings(Consumer<T> instance, T keyMapping, Operation<Void> original) {
46+
var configHolder = GlobalConfigHolder.INSTANCE;
47+
var config = configHolder.getConfig().getValue();
48+
if (config.getStatus().getStatus() == StatusConfig.Status.DISABLED) {
49+
original.call(instance, keyMapping);
50+
return;
51+
}
52+
4753
if (!(keyMapping instanceof KeyMapping key)) {
4854
original.call(instance, keyMapping);
4955
return;
5056
}
51-
if (touchController$doCancelKey(key)) {
57+
if (touchController$doCancelKey(config, key)) {
5258
return;
5359
}
5460
original.call(instance, keyMapping);

0 commit comments

Comments
 (0)