forked from Clones/Controlify
106 lines
4.0 KiB
Java
106 lines
4.0 KiB
Java
package dev.isxander.controlify.api.event;
|
|
|
|
import dev.isxander.controlify.InputMode;
|
|
import dev.isxander.controlify.api.ingameinput.LookInputModifier;
|
|
import dev.isxander.controlify.bindings.ControllerBindings;
|
|
import dev.isxander.controlify.controller.Controller;
|
|
import dev.isxander.controlify.api.ingameguide.IngameGuideRegistry;
|
|
import net.fabricmc.fabric.api.event.Event;
|
|
import net.fabricmc.fabric.api.event.EventFactory;
|
|
|
|
public final class ControlifyEvents {
|
|
/**
|
|
* Triggers when the input mode is changed from keyboard to controller or vice versa.
|
|
*/
|
|
public static final Event<InputModeChanged> INPUT_MODE_CHANGED = EventFactory.createArrayBacked(InputModeChanged.class, callbacks -> mode -> {
|
|
for (InputModeChanged callback : callbacks) {
|
|
callback.onInputModeChanged(mode);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Triggers every tick when the current controller state has been updated.
|
|
*/
|
|
public static final Event<ControllerStateUpdate> ACTIVE_CONTROLLER_TICKED = EventFactory.createArrayBacked(ControllerStateUpdate.class, callbacks -> controller -> {
|
|
for (ControllerStateUpdate callback : callbacks) {
|
|
callback.onControllerStateUpdate(controller);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* @deprecated Use {@link #ACTIVE_CONTROLLER_TICKED} instead.
|
|
*/
|
|
@Deprecated
|
|
public static final Event<ControllerStateUpdate> CONTROLLER_STATE_UPDATED = ACTIVE_CONTROLLER_TICKED;
|
|
|
|
/**
|
|
* Triggers every tick when any connected controller's state has been updated before the active controller is ticked.
|
|
*/
|
|
public static final Event<ControllerStateUpdate> CONTROLLER_STATE_UPDATE = EventFactory.createArrayBacked(ControllerStateUpdate.class, callbacks -> controller -> {
|
|
for (ControllerStateUpdate callback : callbacks) {
|
|
callback.onControllerStateUpdate(controller);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Triggers when the button guide entries are being populated, so you can add more of your own.
|
|
*/
|
|
public static final Event<IngameGuideRegistryEvent> INGAME_GUIDE_REGISTRY = EventFactory.createArrayBacked(IngameGuideRegistryEvent.class, callbacks -> (bindings, registry) -> {
|
|
for (IngameGuideRegistryEvent callback : callbacks) {
|
|
callback.onRegisterIngameGuide(bindings, registry);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Triggers in a GUI when the virtual mouse is toggled on or off.
|
|
*/
|
|
public static final Event<VirtualMouseToggled> VIRTUAL_MOUSE_TOGGLED = EventFactory.createArrayBacked(VirtualMouseToggled.class, callbacks -> enabled -> {
|
|
for (VirtualMouseToggled callback : callbacks) {
|
|
callback.onVirtualMouseToggled(enabled);
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Allows you to modify the look input before it is applied to the player.
|
|
* These modifiers are called before the look input is multiplied by the sensitivity.
|
|
*/
|
|
public static final Event<LookInputModifier> LOOK_INPUT_MODIFIER = EventFactory.createArrayBacked(LookInputModifier.class, callbacks -> new LookInputModifier() {
|
|
@Override
|
|
public float modifyX(float x, Controller<?, ?> controller) {
|
|
for (LookInputModifier callback : callbacks) {
|
|
x = callback.modifyX(x, controller);
|
|
}
|
|
return x;
|
|
}
|
|
|
|
@Override
|
|
public float modifyY(float y, Controller<?, ?> controller) {
|
|
for (LookInputModifier callback : callbacks) {
|
|
y = callback.modifyY(y, controller);
|
|
}
|
|
return y;
|
|
}
|
|
});
|
|
|
|
@FunctionalInterface
|
|
public interface InputModeChanged {
|
|
void onInputModeChanged(InputMode mode);
|
|
}
|
|
|
|
@FunctionalInterface
|
|
public interface ControllerStateUpdate {
|
|
void onControllerStateUpdate(Controller<?, ?> controller);
|
|
}
|
|
|
|
@FunctionalInterface
|
|
public interface IngameGuideRegistryEvent {
|
|
void onRegisterIngameGuide(ControllerBindings<?> bindings, IngameGuideRegistry registry);
|
|
}
|
|
|
|
@FunctionalInterface
|
|
public interface VirtualMouseToggled {
|
|
void onVirtualMouseToggled(boolean enabled);
|
|
}
|
|
|
|
}
|