fix & add item bar scale
This commit is contained in:
parent
2774ae6151
commit
5ccbff594f
|
@ -325,12 +325,14 @@ public class GameMenu implements MenuCallback, View.OnClickListener {
|
||||||
FCLSpinner<GestureMode> gestureModeSpinner = findViewById(R.id.gesture_mode_spinner);
|
FCLSpinner<GestureMode> gestureModeSpinner = findViewById(R.id.gesture_mode_spinner);
|
||||||
FCLSpinner<MouseMoveMode> mouseMoveModeSpinner = findViewById(R.id.mouse_mode_spinner);
|
FCLSpinner<MouseMoveMode> mouseMoveModeSpinner = findViewById(R.id.mouse_mode_spinner);
|
||||||
|
|
||||||
|
FCLSeekBar itemBarScaleSeekbar = findViewById(R.id.item_bar_scale);
|
||||||
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 gamepadAimZoneSeekbar = findViewById(R.id.gamepad_aimzone_size);
|
||||||
FCLSeekBar gyroSensitivitySeekbar = findViewById(R.id.gyro_sensitivity);
|
FCLSeekBar gyroSensitivitySeekbar = findViewById(R.id.gyro_sensitivity);
|
||||||
|
|
||||||
|
FCLTextView itemBarScaleText = findViewById(R.id.item_bar_scale_text);
|
||||||
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);
|
||||||
|
@ -377,6 +379,17 @@ public class GameMenu implements MenuCallback, View.OnClickListener {
|
||||||
FXUtils.bindSelection(gestureModeSpinner, menuSetting.gestureModeProperty());
|
FXUtils.bindSelection(gestureModeSpinner, menuSetting.gestureModeProperty());
|
||||||
FXUtils.bindSelection(mouseMoveModeSpinner, menuSetting.mouseMoveModeProperty());
|
FXUtils.bindSelection(mouseMoveModeSpinner, menuSetting.mouseMoveModeProperty());
|
||||||
|
|
||||||
|
itemBarScaleSeekbar.addProgressListener();
|
||||||
|
IntegerProperty itemBarScaleProperty = new SimpleIntegerProperty(menuSetting.getItemBarScale()) {
|
||||||
|
@Override
|
||||||
|
protected void invalidated() {
|
||||||
|
super.invalidated();
|
||||||
|
menuSetting.setItemBarScale(get());
|
||||||
|
gameItemBar.getOptionListener().onOptionChanged();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
itemBarScaleSeekbar.progressProperty().bindBidirectional(itemBarScaleProperty);
|
||||||
|
|
||||||
mouseSensitivitySeekbar.addProgressListener();
|
mouseSensitivitySeekbar.addProgressListener();
|
||||||
IntegerProperty mouseSensitivityProperty = new SimpleIntegerProperty((int) (menuSetting.getMouseSensitivity() * 100)) {
|
IntegerProperty mouseSensitivityProperty = new SimpleIntegerProperty((int) (menuSetting.getMouseSensitivity() * 100)) {
|
||||||
@Override
|
@Override
|
||||||
|
@ -415,6 +428,7 @@ public class GameMenu implements MenuCallback, View.OnClickListener {
|
||||||
gyroSensitivitySeekbar.addProgressListener();
|
gyroSensitivitySeekbar.addProgressListener();
|
||||||
gyroSensitivitySeekbar.progressProperty().bindBidirectional(menuSetting.gyroscopeSensitivityProperty());
|
gyroSensitivitySeekbar.progressProperty().bindBidirectional(menuSetting.gyroscopeSensitivityProperty());
|
||||||
|
|
||||||
|
itemBarScaleText.stringProperty().bind(Bindings.createStringBinding(() -> String.valueOf(itemBarScaleProperty.get()), itemBarScaleProperty));
|
||||||
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));
|
||||||
|
|
|
@ -55,8 +55,8 @@ public class GameItemBar extends RelativeLayout {
|
||||||
gameOption = new GameOption(gameMenu.getBridge().getGameDir());
|
gameOption = new GameOption(gameMenu.getBridge().getGameDir());
|
||||||
int width = (int) (gameMenu.getTouchPad().getWidth() * gameMenu.getBridge().getScaleFactor());
|
int width = (int) (gameMenu.getTouchPad().getWidth() * gameMenu.getBridge().getScaleFactor());
|
||||||
int height = (int) (gameMenu.getTouchPad().getHeight() * gameMenu.getBridge().getScaleFactor());
|
int height = (int) (gameMenu.getTouchPad().getHeight() * gameMenu.getBridge().getScaleFactor());
|
||||||
notifySize(gameOption.getGuiScale(width, height) * 20);
|
notifySize(gameOption.getGuiScale(width, height, gameMenu.getMenuSetting().getItemBarScale()) * 20);
|
||||||
optionListener = () -> notifySize(gameOption.getGuiScale(width, height) * 20);
|
optionListener = () -> notifySize(gameOption.getGuiScale(width, height, gameMenu.getMenuSetting().getItemBarScale()) * 20);
|
||||||
gameOption.addGameOptionListener(optionListener);
|
gameOption.addGameOptionListener(optionListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,4 +136,8 @@ public class GameItemBar extends RelativeLayout {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GameOption.GameOptionListener getOptionListener() {
|
||||||
|
return optionListener;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -43,9 +44,9 @@ import java.util.logging.Level;
|
||||||
public class GameOption {
|
public class GameOption {
|
||||||
|
|
||||||
private final String optionPath;
|
private final String optionPath;
|
||||||
private final HashMap<String, String> parameterMap = new HashMap<>();
|
private static final HashMap<String, String> parameterMap = new HashMap<>();
|
||||||
private final ArrayList<GameOptionListener> optionListeners = new ArrayList<>();
|
private static final ArrayList<WeakReference<GameOptionListener>> optionListeners = new ArrayList<>();
|
||||||
private FileObserver fileObserver;
|
private static FileObserver fileObserver;
|
||||||
|
|
||||||
public GameOption(String gameDir) {
|
public GameOption(String gameDir) {
|
||||||
this.optionPath = gameDir + "/options.txt";
|
this.optionPath = gameDir + "/options.txt";
|
||||||
|
@ -138,7 +139,7 @@ public class GameOption {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return The stored Minecraft GUI scale, also auto-computed if on auto-mode or improper setting */
|
/** @return The stored Minecraft GUI scale, also auto-computed if on auto-mode or improper setting */
|
||||||
public int getGuiScale(int width, int height) {
|
public int getGuiScale(int width, int height, int iscale) {
|
||||||
String str = get("guiScale");
|
String str = get("guiScale");
|
||||||
int guiScale = (str == null ? 0 : Integer.parseInt(str));
|
int guiScale = (str == null ? 0 : Integer.parseInt(str));
|
||||||
|
|
||||||
|
@ -147,13 +148,13 @@ public class GameOption {
|
||||||
guiScale = scale;
|
guiScale = scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
String lang = get("lang");
|
// String lang = get("lang");
|
||||||
boolean isUnicode = lang != null && (lang.equals("zh_CN") || lang.equals("zh_cn"));
|
// boolean isUnicode = lang != null && (lang.equals("zh_CN") || lang.equals("zh_cn"));
|
||||||
if (isUnicode && guiScale % 2 != 0 && guiScale != 1) {
|
// if (isUnicode && guiScale % 2 != 0 && guiScale != 1) {
|
||||||
--guiScale;
|
// --guiScale;
|
||||||
}
|
// }
|
||||||
|
|
||||||
return guiScale;
|
return guiScale + iscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Add a file observer to reload options on file change
|
/** Add a file observer to reload options on file change
|
||||||
|
@ -182,21 +183,21 @@ public class GameOption {
|
||||||
|
|
||||||
/** Notify the option listeners */
|
/** Notify the option listeners */
|
||||||
public void notifyListeners() {
|
public void notifyListeners() {
|
||||||
for (GameOptionListener optionListener : optionListeners) {
|
for (WeakReference<GameOptionListener> optionListener : optionListeners) {
|
||||||
if(optionListener == null) continue;
|
if(optionListener.get() == null) continue;
|
||||||
|
|
||||||
optionListener.onOptionChanged();
|
optionListener.get().onOptionChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Add an option listener, notice how we don't have a reference to it */
|
/** Add an option listener, notice how we don't have a reference to it */
|
||||||
public void addGameOptionListener(GameOptionListener listener) {
|
public void addGameOptionListener(GameOptionListener listener) {
|
||||||
optionListeners.add(listener);
|
optionListeners.add(new WeakReference<>(listener));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Remove a listener from existence, or at least, its reference here */
|
/** Remove a listener from existence, or at least, its reference here */
|
||||||
public void removeGameOptionListener(GameOptionListener listener) {
|
public void removeGameOptionListener(GameOptionListener listener) {
|
||||||
for(GameOptionListener optionListener : optionListeners) {
|
for(WeakReference<GameOptionListener> optionListener : optionListeners) {
|
||||||
if(optionListener == null) continue;
|
if(optionListener == null) continue;
|
||||||
if(optionListener == listener) {
|
if(optionListener == listener) {
|
||||||
optionListeners.remove(optionListener);
|
optionListeners.remove(optionListener);
|
||||||
|
|
|
@ -209,6 +209,20 @@ public class MenuSetting {
|
||||||
mouseMoveModeProperty.set(mouseMoveMode);
|
mouseMoveModeProperty.set(mouseMoveMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final IntegerProperty itemBarScaleProperty = new SimpleIntegerProperty(this, "itemBarScale", 0);
|
||||||
|
|
||||||
|
public IntegerProperty itemBarScaleProperty() {
|
||||||
|
return itemBarScaleProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getItemBarScale() {
|
||||||
|
return itemBarScaleProperty.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemBarScale(int itemBarScale) {
|
||||||
|
this.itemBarScaleProperty.set(itemBarScale);
|
||||||
|
}
|
||||||
|
|
||||||
private final DoubleProperty mouseSensitivityProperty = new SimpleDoubleProperty(this, "mouseSensitivity", 1d);
|
private final DoubleProperty mouseSensitivityProperty = new SimpleDoubleProperty(this, "mouseSensitivity", 1d);
|
||||||
|
|
||||||
public DoubleProperty mouseSensitivityProperty() {
|
public DoubleProperty mouseSensitivityProperty() {
|
||||||
|
@ -281,6 +295,7 @@ public class MenuSetting {
|
||||||
mouseMoveModeProperty.addListener(listener);
|
mouseMoveModeProperty.addListener(listener);
|
||||||
mouseSensitivityProperty.addListener(listener);
|
mouseSensitivityProperty.addListener(listener);
|
||||||
mouseSizeProperty.addListener(listener);
|
mouseSizeProperty.addListener(listener);
|
||||||
|
itemBarScaleProperty.addListener(listener);
|
||||||
gamepadDeadzoneProperty.addListener(listener);
|
gamepadDeadzoneProperty.addListener(listener);
|
||||||
gamepadAimAssistZoneProperty.addListener(listener);
|
gamepadAimAssistZoneProperty.addListener(listener);
|
||||||
}
|
}
|
||||||
|
@ -306,6 +321,7 @@ public class MenuSetting {
|
||||||
obj.addProperty("mouseMoveMode", src.getMouseMoveMode().getId());
|
obj.addProperty("mouseMoveMode", src.getMouseMoveMode().getId());
|
||||||
obj.addProperty("mouseSensitivity", src.getMouseSensitivity());
|
obj.addProperty("mouseSensitivity", src.getMouseSensitivity());
|
||||||
obj.addProperty("mouseSize", src.getMouseSize());
|
obj.addProperty("mouseSize", src.getMouseSize());
|
||||||
|
obj.addProperty("itemBarScale", src.getItemBarScale());
|
||||||
obj.addProperty("gamepadDeadzone", src.getGamepadDeadzone());
|
obj.addProperty("gamepadDeadzone", src.getGamepadDeadzone());
|
||||||
obj.addProperty("gamepadAimAssistZone", src.getGamepadAimAssistZone());
|
obj.addProperty("gamepadAimAssistZone", src.getGamepadAimAssistZone());
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -334,6 +350,7 @@ public class MenuSetting {
|
||||||
ms.setMouseMoveMode(MouseMoveMode.getById(Optional.ofNullable(obj.get("mouseMoveMode")).map(JsonElement::getAsInt).orElse(0)));
|
ms.setMouseMoveMode(MouseMoveMode.getById(Optional.ofNullable(obj.get("mouseMoveMode")).map(JsonElement::getAsInt).orElse(0)));
|
||||||
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.setItemBarScale(Optional.ofNullable(obj.get("itemBarScale")).map(JsonElement::getAsInt).orElse(0));
|
||||||
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));
|
ms.setGamepadAimAssistZone(Optional.ofNullable(obj.get("gamepadAimAssistZone")).map(JsonElement::getAsDouble).orElse(0.98d));
|
||||||
return ms;
|
return ms;
|
||||||
|
|
|
@ -178,6 +178,43 @@
|
||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
|
|
||||||
</com.tungsten.fcllibrary.component.view.FCLLinearLayout>
|
</com.tungsten.fcllibrary.component.view.FCLLinearLayout>
|
||||||
|
|
||||||
|
<com.tungsten.fcllibrary.component.view.FCLLinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="5dp">
|
||||||
|
|
||||||
|
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="@string/menu_settings_item_bar_scale"
|
||||||
|
android:textSize="12sp"
|
||||||
|
app:auto_text_tint="true" />
|
||||||
|
|
||||||
|
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||||
|
app:auto_text_tint="true"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:id="@+id/item_bar_scale_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="2"
|
||||||
|
android:min="-2"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/item_bar_scale"/>
|
||||||
|
|
||||||
<com.tungsten.fcllibrary.component.view.FCLTextView
|
<com.tungsten.fcllibrary.component.view.FCLTextView
|
||||||
app:auto_text_tint="true"
|
app:auto_text_tint="true"
|
||||||
|
|
|
@ -504,6 +504,7 @@
|
||||||
<string name="menu_settings_send_key">发送键值</string>
|
<string name="menu_settings_send_key">发送键值</string>
|
||||||
<string name="menu_settings_send_key_button">发送</string>
|
<string name="menu_settings_send_key_button">发送</string>
|
||||||
<string name="menu_settings_soft_keyboard_adjust">禁用软键盘自适应</string>
|
<string name="menu_settings_soft_keyboard_adjust">禁用软键盘自适应</string>
|
||||||
|
<string name="menu_settings_item_bar_scale">物品栏缩放</string>
|
||||||
<string name="menu_settings_show_log">显示日志</string>
|
<string name="menu_settings_show_log">显示日志</string>
|
||||||
|
|
||||||
<string name="message_cancelled">操作已取消</string>
|
<string name="message_cancelled">操作已取消</string>
|
||||||
|
|
|
@ -535,6 +535,7 @@
|
||||||
<string name="menu_settings_send_key">Send Key</string>
|
<string name="menu_settings_send_key">Send Key</string>
|
||||||
<string name="menu_settings_send_key_button">Send</string>
|
<string name="menu_settings_send_key_button">Send</string>
|
||||||
<string name="menu_settings_soft_keyboard_adjust">DisableSoftKeyboardAutoAdjust</string>
|
<string name="menu_settings_soft_keyboard_adjust">DisableSoftKeyboardAutoAdjust</string>
|
||||||
|
<string name="menu_settings_item_bar_scale">ItemBarScale</string>
|
||||||
<string name="menu_settings_show_log">Show Log</string>
|
<string name="menu_settings_show_log">Show Log</string>
|
||||||
|
|
||||||
<string name="message_cancelled">Operation was cancelled</string>
|
<string name="message_cancelled">Operation was cancelled</string>
|
||||||
|
|
Loading…
Reference in New Issue