add gamepad aim assist
This commit is contained in:
parent
66191d89a8
commit
632f80ec3a
|
@ -154,8 +154,17 @@ public class FCLInput implements View.OnCapturedPointerListener, View.OnGenericM
|
|||
deltaX = (int) (event.getX() * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
||||
deltaY = (int) (event.getY() * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
||||
} else {
|
||||
deltaX = (int) (lastXAxis * deltaTimeScale * 10 * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
||||
deltaY = (int) (lastYAxis * deltaTimeScale * 10 * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
||||
GameMenu gameMenu = (GameMenu) menu;
|
||||
gameMenu.getBridge().refreshHitResultType();
|
||||
deltaX = (int) (lastXAxis * deltaTimeScale * 10 * gameMenu.getMenuSetting().getMouseSensitivity());
|
||||
deltaY = (int) (lastYAxis * deltaTimeScale * 10 * gameMenu.getMenuSetting().getMouseSensitivity());
|
||||
double hypot = Math.hypot(Math.abs(lastXAxis), Math.abs(lastYAxis));
|
||||
if (gameMenu.getHitResultType() == FCLBridge.HIT_RESULT_TYPE_ENTITY) {
|
||||
if (hypot <= ((GameMenu) menu).getMenuSetting().getGamepadAimAssistZone()) {
|
||||
deltaX /= 10;
|
||||
deltaY /= 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (menu.getCursorMode() == FCLBridge.CursorEnabled) {
|
||||
int targetX = Math.max(0, Math.min(screenWidth, ((GameMenu) menu).getCursorX() + deltaX));
|
||||
|
|
|
@ -328,11 +328,13 @@ public class GameMenu implements MenuCallback, View.OnClickListener {
|
|||
FCLSeekBar mouseSensitivitySeekbar = findViewById(R.id.mouse_sensitivity);
|
||||
FCLSeekBar mouseSizeSeekbar = findViewById(R.id.mouse_size);
|
||||
FCLSeekBar gamepadDeadzoneSeekbar = findViewById(R.id.gamepad_deadzone_size);
|
||||
FCLSeekBar gamepadAimZoneSeekbar = findViewById(R.id.gamepad_aimzone_size);
|
||||
FCLSeekBar gyroSensitivitySeekbar = findViewById(R.id.gyro_sensitivity);
|
||||
|
||||
FCLTextView mouseSensitivityText = findViewById(R.id.mouse_sensitivity_text);
|
||||
FCLTextView mouseSizeText = findViewById(R.id.mouse_size_text);
|
||||
FCLTextView gamepadDeadzoneText = findViewById(R.id.gamepad_deadzone_text);
|
||||
FCLTextView gamepadAimZoneText = findViewById(R.id.gamepad_aimzone_text);
|
||||
FCLTextView gyroSensitivityText = findViewById(R.id.gyro_sensitivity_text);
|
||||
|
||||
openMultiplayerMenu = findViewById(R.id.open_multiplayer_menu);
|
||||
|
@ -399,12 +401,24 @@ public class GameMenu implements MenuCallback, View.OnClickListener {
|
|||
};
|
||||
gamepadDeadzoneSeekbar.progressProperty().bindBidirectional(gamepadDeadzoneProperty);
|
||||
|
||||
gamepadAimZoneSeekbar.addProgressListener();
|
||||
IntegerProperty gamepadAimZoneProperty = new SimpleIntegerProperty((int) (menuSetting.getGamepadAimAssistZone() * 100)) {
|
||||
@Override
|
||||
protected void invalidated() {
|
||||
super.invalidated();
|
||||
double doubleValue = get() / 100d;
|
||||
menuSetting.setGamepadAimAssistZone(doubleValue);
|
||||
}
|
||||
};
|
||||
gamepadAimZoneSeekbar.progressProperty().bindBidirectional(gamepadAimZoneProperty);
|
||||
|
||||
gyroSensitivitySeekbar.addProgressListener();
|
||||
gyroSensitivitySeekbar.progressProperty().bindBidirectional(menuSetting.gyroscopeSensitivityProperty());
|
||||
|
||||
mouseSensitivityText.stringProperty().bind(Bindings.createStringBinding(() -> mouseSensitivityProperty.get() + " %", mouseSensitivityProperty));
|
||||
mouseSizeText.stringProperty().bind(Bindings.createStringBinding(() -> menuSetting.mouseSizeProperty().get() + " dp", menuSetting.mouseSizeProperty()));
|
||||
gamepadDeadzoneText.stringProperty().bind(Bindings.createStringBinding(() -> gamepadDeadzoneProperty.get() + " %", gamepadDeadzoneProperty));
|
||||
gamepadAimZoneText.stringProperty().bind(Bindings.createStringBinding(() -> gamepadAimZoneProperty.get() + " %", gamepadAimZoneProperty));
|
||||
gyroSensitivityText.stringProperty().bind(Bindings.createStringBinding(() -> menuSetting.gyroscopeSensitivityProperty().get() + "", menuSetting.gyroscopeSensitivityProperty()));
|
||||
|
||||
openMultiplayerMenu.setOnClickListener(this);
|
||||
|
|
|
@ -251,6 +251,20 @@ public class MenuSetting {
|
|||
this.gamepadDeadzoneProperty.set(gamepadDeadzone);
|
||||
}
|
||||
|
||||
private final DoubleProperty gamepadAimAssistZoneProperty = new SimpleDoubleProperty(this, "gamepadAimAssistZone", 1d);
|
||||
|
||||
public DoubleProperty gamepadAimAssistZoneProperty() {
|
||||
return gamepadAimAssistZoneProperty;
|
||||
}
|
||||
|
||||
public double getGamepadAimAssistZone() {
|
||||
return gamepadAimAssistZoneProperty.get();
|
||||
}
|
||||
|
||||
public void setGamepadAimAssistZone(double gamepadAimAssistZone) {
|
||||
this.gamepadAimAssistZoneProperty.set(gamepadAimAssistZone);
|
||||
}
|
||||
|
||||
public void addPropertyChangedListener(InvalidationListener listener) {
|
||||
autoFitProperty.addListener(listener);
|
||||
autoFitDistProperty.addListener(listener);
|
||||
|
@ -268,6 +282,7 @@ public class MenuSetting {
|
|||
mouseSensitivityProperty.addListener(listener);
|
||||
mouseSizeProperty.addListener(listener);
|
||||
gamepadDeadzoneProperty.addListener(listener);
|
||||
gamepadAimAssistZoneProperty.addListener(listener);
|
||||
}
|
||||
|
||||
public static class Serializer implements JsonSerializer<MenuSetting>, JsonDeserializer<MenuSetting> {
|
||||
|
@ -292,6 +307,7 @@ public class MenuSetting {
|
|||
obj.addProperty("mouseSensitivity", src.getMouseSensitivity());
|
||||
obj.addProperty("mouseSize", src.getMouseSize());
|
||||
obj.addProperty("gamepadDeadzone", src.getGamepadDeadzone());
|
||||
obj.addProperty("gamepadAimAssistZone", src.getGamepadAimAssistZone());
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
@ -319,6 +335,7 @@ public class MenuSetting {
|
|||
ms.setMouseSensitivity(Optional.ofNullable(obj.get("mouseSensitivity")).map(JsonElement::getAsDouble).orElse(1d));
|
||||
ms.setMouseSize(Optional.ofNullable(obj.get("mouseSize")).map(JsonElement::getAsInt).orElse(15));
|
||||
ms.setGamepadDeadzone(Optional.ofNullable(obj.get("gamepadDeadzone")).map(JsonElement::getAsDouble).orElse(0.2d));
|
||||
ms.setGamepadAimAssistZone(Optional.ofNullable(obj.get("gamepadAimAssistZone")).map(JsonElement::getAsDouble).orElse(0.98d));
|
||||
return ms;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -434,6 +434,43 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:id="@+id/gamepad_deadzone_size"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLLinearLayout
|
||||
android:layout_marginTop="5dp"
|
||||
android:padding="5dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||
app:auto_text_tint="true"
|
||||
android:singleLine="true"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center"
|
||||
android:text="@string/menu_settings_gamepad_aimzone"
|
||||
android:textSize="12sp"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||
app:auto_text_tint="true"
|
||||
android:singleLine="true"
|
||||
android:id="@+id/gamepad_aimzone_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:textSize="12sp"/>
|
||||
|
||||
</com.tungsten.fcllibrary.component.view.FCLLinearLayout>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLSeekBar
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:max="100"
|
||||
android:min="0"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/gamepad_aimzone_size"/>
|
||||
|
||||
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||
app:auto_text_tint="true"
|
||||
android:singleLine="true"
|
||||
|
|
|
@ -893,4 +893,5 @@
|
|||
<string name="world_reveal">打开文件夹</string>
|
||||
<string name="world_show_all">显示全部</string>
|
||||
<string name="world_time">yyyy 年 MM 月 dd 日 HH:mm:ss</string>
|
||||
<string name="menu_settings_gamepad_aimzone">辅助瞄准区</string>
|
||||
</resources>
|
|
@ -527,6 +527,7 @@
|
|||
<string name="menu_settings_mouse_size">Mouse Size</string>
|
||||
<string name="menu_settings_gamepad">GamePad</string>
|
||||
<string name="menu_settings_gamepad_deadzone">DeadZone</string>
|
||||
<string name="menu_settings_gamepad_aimzone">AimAssistZone</string>
|
||||
<string name="menu_settings_multiplayer">Multiplayer Menu</string>
|
||||
<string name="menu_settings_multiplayer_button">Open</string>
|
||||
<string name="menu_settings_quick_input">Quick Input</string>
|
||||
|
|
Loading…
Reference in New Issue