forked from Clones/Controlify
🎮📳 Controller Vibration! (#38)
This commit is contained in:
@ -8,6 +8,7 @@ import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
@ -44,10 +45,18 @@ public class ClientTestHelper {
|
||||
return Minecraft.getInstance().submit(() -> function.apply(Minecraft.getInstance()));
|
||||
}
|
||||
|
||||
private static CompletableFuture<Void> submit(Consumer<Minecraft> consumer) {
|
||||
return Minecraft.getInstance().submit(() -> consumer.accept(Minecraft.getInstance()));
|
||||
}
|
||||
|
||||
public static <T> T submitAndWait(Function<Minecraft, T> function) {
|
||||
return submit(function).join();
|
||||
}
|
||||
|
||||
public static void submitConsumerAndWait(Consumer<Minecraft> consumer) {
|
||||
submit(consumer).join();
|
||||
}
|
||||
|
||||
public static void takeScreenshot(String name) {
|
||||
AtomicBoolean returned = new AtomicBoolean(false);
|
||||
submitAndWait(mc -> {
|
||||
|
@ -2,6 +2,8 @@ package dev.isxander.controlify.test;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.screens.TitleScreen;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@ -71,6 +73,7 @@ public class ControlifyAutoTestClient implements ClientModInitializer {
|
||||
}
|
||||
|
||||
waitForLoadingComplete();
|
||||
submitConsumerAndWait(client -> client.setScreen(new TitleScreen()));
|
||||
|
||||
for (var test : postLoadTests) {
|
||||
success &= wrapTestExecution(test);
|
||||
|
@ -11,6 +11,8 @@ import dev.isxander.controlify.controller.joystick.JoystickController;
|
||||
import dev.isxander.controlify.controller.joystick.JoystickState;
|
||||
import dev.isxander.controlify.controller.joystick.mapping.JoystickMapping;
|
||||
import dev.isxander.controlify.controller.joystick.mapping.UnmappedJoystickMapping;
|
||||
import dev.isxander.controlify.rumble.RumbleCapable;
|
||||
import dev.isxander.controlify.rumble.RumbleManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -22,6 +24,7 @@ public class FakeController implements JoystickController<JoystickConfig> {
|
||||
private final ControllerBindings<JoystickState> bindings;
|
||||
private final JoystickConfig config;
|
||||
private JoystickState state = JoystickState.EMPTY, prevState = JoystickState.EMPTY;
|
||||
private final RumbleManager rumbleManager;
|
||||
|
||||
private float axisState;
|
||||
private boolean shouldClearAxisNextTick;
|
||||
@ -34,6 +37,17 @@ public class FakeController implements JoystickController<JoystickConfig> {
|
||||
this.id = -JOYSTICK_COUNT;
|
||||
this.bindings = new ControllerBindings<>(this);
|
||||
this.config = new JoystickConfig(this);
|
||||
this.rumbleManager = new RumbleManager(new RumbleCapable() {
|
||||
@Override
|
||||
public boolean setRumble(float strongMagnitude, float weakMagnitude) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canRumble() {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
this.config.calibrated = true;
|
||||
}
|
||||
|
||||
@ -114,6 +128,11 @@ public class FakeController implements JoystickController<JoystickConfig> {
|
||||
state = JoystickState.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RumbleManager rumbleManager() {
|
||||
return rumbleManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JoystickMapping mapping() {
|
||||
return UnmappedJoystickMapping.INSTANCE;
|
||||
@ -170,6 +189,11 @@ public class FakeController implements JoystickController<JoystickConfig> {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
JoystickController.super.close();
|
||||
}
|
||||
|
||||
public static class FakeControllerState extends JoystickState {
|
||||
protected FakeControllerState(JoystickMapping mapping, float axis, boolean button, HatState hat) {
|
||||
super(mapping, List.of(axis), List.of(axis), List.of(button), List.of(hat));
|
||||
|
Reference in New Issue
Block a user