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());
|
deltaX = (int) (event.getX() * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
||||||
deltaY = (int) (event.getY() * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
deltaY = (int) (event.getY() * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
||||||
} else {
|
} else {
|
||||||
deltaX = (int) (lastXAxis * deltaTimeScale * 10 * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
GameMenu gameMenu = (GameMenu) menu;
|
||||||
deltaY = (int) (lastYAxis * deltaTimeScale * 10 * ((GameMenu) menu).getMenuSetting().getMouseSensitivity());
|
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) {
|
if (menu.getCursorMode() == FCLBridge.CursorEnabled) {
|
||||||
int targetX = Math.max(0, Math.min(screenWidth, ((GameMenu) menu).getCursorX() + deltaX));
|
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 mouseSensitivitySeekbar = findViewById(R.id.mouse_sensitivity);
|
||||||
FCLSeekBar mouseSizeSeekbar = findViewById(R.id.mouse_size);
|
FCLSeekBar mouseSizeSeekbar = findViewById(R.id.mouse_size);
|
||||||
FCLSeekBar gamepadDeadzoneSeekbar = findViewById(R.id.gamepad_deadzone_size);
|
FCLSeekBar gamepadDeadzoneSeekbar = findViewById(R.id.gamepad_deadzone_size);
|
||||||
|
FCLSeekBar gamepadAimZoneSeekbar = findViewById(R.id.gamepad_aimzone_size);
|
||||||
FCLSeekBar gyroSensitivitySeekbar = findViewById(R.id.gyro_sensitivity);
|
FCLSeekBar gyroSensitivitySeekbar = findViewById(R.id.gyro_sensitivity);
|
||||||
|
|
||||||
FCLTextView mouseSensitivityText = findViewById(R.id.mouse_sensitivity_text);
|
FCLTextView mouseSensitivityText = findViewById(R.id.mouse_sensitivity_text);
|
||||||
FCLTextView mouseSizeText = findViewById(R.id.mouse_size_text);
|
FCLTextView mouseSizeText = findViewById(R.id.mouse_size_text);
|
||||||
FCLTextView gamepadDeadzoneText = findViewById(R.id.gamepad_deadzone_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);
|
FCLTextView gyroSensitivityText = findViewById(R.id.gyro_sensitivity_text);
|
||||||
|
|
||||||
openMultiplayerMenu = findViewById(R.id.open_multiplayer_menu);
|
openMultiplayerMenu = findViewById(R.id.open_multiplayer_menu);
|
||||||
|
@ -399,12 +401,24 @@ public class GameMenu implements MenuCallback, View.OnClickListener {
|
||||||
};
|
};
|
||||||
gamepadDeadzoneSeekbar.progressProperty().bindBidirectional(gamepadDeadzoneProperty);
|
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.addProgressListener();
|
||||||
gyroSensitivitySeekbar.progressProperty().bindBidirectional(menuSetting.gyroscopeSensitivityProperty());
|
gyroSensitivitySeekbar.progressProperty().bindBidirectional(menuSetting.gyroscopeSensitivityProperty());
|
||||||
|
|
||||||
mouseSensitivityText.stringProperty().bind(Bindings.createStringBinding(() -> mouseSensitivityProperty.get() + " %", mouseSensitivityProperty));
|
mouseSensitivityText.stringProperty().bind(Bindings.createStringBinding(() -> mouseSensitivityProperty.get() + " %", mouseSensitivityProperty));
|
||||||
mouseSizeText.stringProperty().bind(Bindings.createStringBinding(() -> menuSetting.mouseSizeProperty().get() + " dp", menuSetting.mouseSizeProperty()));
|
mouseSizeText.stringProperty().bind(Bindings.createStringBinding(() -> menuSetting.mouseSizeProperty().get() + " dp", menuSetting.mouseSizeProperty()));
|
||||||
gamepadDeadzoneText.stringProperty().bind(Bindings.createStringBinding(() -> gamepadDeadzoneProperty.get() + " %", gamepadDeadzoneProperty));
|
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()));
|
gyroSensitivityText.stringProperty().bind(Bindings.createStringBinding(() -> menuSetting.gyroscopeSensitivityProperty().get() + "", menuSetting.gyroscopeSensitivityProperty()));
|
||||||
|
|
||||||
openMultiplayerMenu.setOnClickListener(this);
|
openMultiplayerMenu.setOnClickListener(this);
|
||||||
|
|
|
@ -251,6 +251,20 @@ public class MenuSetting {
|
||||||
this.gamepadDeadzoneProperty.set(gamepadDeadzone);
|
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) {
|
public void addPropertyChangedListener(InvalidationListener listener) {
|
||||||
autoFitProperty.addListener(listener);
|
autoFitProperty.addListener(listener);
|
||||||
autoFitDistProperty.addListener(listener);
|
autoFitDistProperty.addListener(listener);
|
||||||
|
@ -268,6 +282,7 @@ public class MenuSetting {
|
||||||
mouseSensitivityProperty.addListener(listener);
|
mouseSensitivityProperty.addListener(listener);
|
||||||
mouseSizeProperty.addListener(listener);
|
mouseSizeProperty.addListener(listener);
|
||||||
gamepadDeadzoneProperty.addListener(listener);
|
gamepadDeadzoneProperty.addListener(listener);
|
||||||
|
gamepadAimAssistZoneProperty.addListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Serializer implements JsonSerializer<MenuSetting>, JsonDeserializer<MenuSetting> {
|
public static class Serializer implements JsonSerializer<MenuSetting>, JsonDeserializer<MenuSetting> {
|
||||||
|
@ -292,6 +307,7 @@ public class MenuSetting {
|
||||||
obj.addProperty("mouseSensitivity", src.getMouseSensitivity());
|
obj.addProperty("mouseSensitivity", src.getMouseSensitivity());
|
||||||
obj.addProperty("mouseSize", src.getMouseSize());
|
obj.addProperty("mouseSize", src.getMouseSize());
|
||||||
obj.addProperty("gamepadDeadzone", src.getGamepadDeadzone());
|
obj.addProperty("gamepadDeadzone", src.getGamepadDeadzone());
|
||||||
|
obj.addProperty("gamepadAimAssistZone", src.getGamepadAimAssistZone());
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -319,6 +335,7 @@ public class MenuSetting {
|
||||||
ms.setMouseSensitivity(Optional.ofNullable(obj.get("mouseSensitivity")).map(JsonElement::getAsDouble).orElse(1d));
|
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.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.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;
|
return ms;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -434,6 +434,43 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/gamepad_deadzone_size"/>
|
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
|
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||||
app:auto_text_tint="true"
|
app:auto_text_tint="true"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
|
|
|
@ -893,4 +893,5 @@
|
||||||
<string name="world_reveal">打开文件夹</string>
|
<string name="world_reveal">打开文件夹</string>
|
||||||
<string name="world_show_all">显示全部</string>
|
<string name="world_show_all">显示全部</string>
|
||||||
<string name="world_time">yyyy 年 MM 月 dd 日 HH:mm:ss</string>
|
<string name="world_time">yyyy 年 MM 月 dd 日 HH:mm:ss</string>
|
||||||
|
<string name="menu_settings_gamepad_aimzone">辅助瞄准区</string>
|
||||||
</resources>
|
</resources>
|
|
@ -527,6 +527,7 @@
|
||||||
<string name="menu_settings_mouse_size">Mouse Size</string>
|
<string name="menu_settings_mouse_size">Mouse Size</string>
|
||||||
<string name="menu_settings_gamepad">GamePad</string>
|
<string name="menu_settings_gamepad">GamePad</string>
|
||||||
<string name="menu_settings_gamepad_deadzone">DeadZone</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">Multiplayer Menu</string>
|
||||||
<string name="menu_settings_multiplayer_button">Open</string>
|
<string name="menu_settings_multiplayer_button">Open</string>
|
||||||
<string name="menu_settings_quick_input">Quick Input</string>
|
<string name="menu_settings_quick_input">Quick Input</string>
|
||||||
|
|
Loading…
Reference in New Issue