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<MouseMoveMode> mouseMoveModeSpinner = findViewById(R.id.mouse_mode_spinner);
|
||||
|
||||
FCLSeekBar itemBarScaleSeekbar = findViewById(R.id.item_bar_scale);
|
||||
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 itemBarScaleText = findViewById(R.id.item_bar_scale_text);
|
||||
FCLTextView mouseSensitivityText = findViewById(R.id.mouse_sensitivity_text);
|
||||
FCLTextView mouseSizeText = findViewById(R.id.mouse_size_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(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();
|
||||
IntegerProperty mouseSensitivityProperty = new SimpleIntegerProperty((int) (menuSetting.getMouseSensitivity() * 100)) {
|
||||
@Override
|
||||
|
@ -415,6 +428,7 @@ public class GameMenu implements MenuCallback, View.OnClickListener {
|
|||
gyroSensitivitySeekbar.addProgressListener();
|
||||
gyroSensitivitySeekbar.progressProperty().bindBidirectional(menuSetting.gyroscopeSensitivityProperty());
|
||||
|
||||
itemBarScaleText.stringProperty().bind(Bindings.createStringBinding(() -> String.valueOf(itemBarScaleProperty.get()), itemBarScaleProperty));
|
||||
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));
|
||||
|
|
|
@ -55,8 +55,8 @@ public class GameItemBar extends RelativeLayout {
|
|||
gameOption = new GameOption(gameMenu.getBridge().getGameDir());
|
||||
int width = (int) (gameMenu.getTouchPad().getWidth() * gameMenu.getBridge().getScaleFactor());
|
||||
int height = (int) (gameMenu.getTouchPad().getHeight() * gameMenu.getBridge().getScaleFactor());
|
||||
notifySize(gameOption.getGuiScale(width, height) * 20);
|
||||
optionListener = () -> notifySize(gameOption.getGuiScale(width, height) * 20);
|
||||
notifySize(gameOption.getGuiScale(width, height, gameMenu.getMenuSetting().getItemBarScale()) * 20);
|
||||
optionListener = () -> notifySize(gameOption.getGuiScale(width, height, gameMenu.getMenuSetting().getItemBarScale()) * 20);
|
||||
gameOption.addGameOptionListener(optionListener);
|
||||
}
|
||||
|
||||
|
@ -136,4 +136,8 @@ public class GameItemBar extends RelativeLayout {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public GameOption.GameOptionListener getOptionListener() {
|
||||
return optionListener;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ import java.io.BufferedReader;
|
|||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
@ -43,9 +44,9 @@ import java.util.logging.Level;
|
|||
public class GameOption {
|
||||
|
||||
private final String optionPath;
|
||||
private final HashMap<String, String> parameterMap = new HashMap<>();
|
||||
private final ArrayList<GameOptionListener> optionListeners = new ArrayList<>();
|
||||
private FileObserver fileObserver;
|
||||
private static final HashMap<String, String> parameterMap = new HashMap<>();
|
||||
private static final ArrayList<WeakReference<GameOptionListener>> optionListeners = new ArrayList<>();
|
||||
private static FileObserver fileObserver;
|
||||
|
||||
public GameOption(String gameDir) {
|
||||
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 */
|
||||
public int getGuiScale(int width, int height) {
|
||||
public int getGuiScale(int width, int height, int iscale) {
|
||||
String str = get("guiScale");
|
||||
int guiScale = (str == null ? 0 : Integer.parseInt(str));
|
||||
|
||||
|
@ -147,13 +148,13 @@ public class GameOption {
|
|||
guiScale = scale;
|
||||
}
|
||||
|
||||
String lang = get("lang");
|
||||
boolean isUnicode = lang != null && (lang.equals("zh_CN") || lang.equals("zh_cn"));
|
||||
if (isUnicode && guiScale % 2 != 0 && guiScale != 1) {
|
||||
--guiScale;
|
||||
}
|
||||
// String lang = get("lang");
|
||||
// boolean isUnicode = lang != null && (lang.equals("zh_CN") || lang.equals("zh_cn"));
|
||||
// if (isUnicode && guiScale % 2 != 0 && guiScale != 1) {
|
||||
// --guiScale;
|
||||
// }
|
||||
|
||||
return guiScale;
|
||||
return guiScale + iscale;
|
||||
}
|
||||
|
||||
/** Add a file observer to reload options on file change
|
||||
|
@ -182,21 +183,21 @@ public class GameOption {
|
|||
|
||||
/** Notify the option listeners */
|
||||
public void notifyListeners() {
|
||||
for (GameOptionListener optionListener : optionListeners) {
|
||||
if(optionListener == null) continue;
|
||||
for (WeakReference<GameOptionListener> optionListener : optionListeners) {
|
||||
if(optionListener.get() == null) continue;
|
||||
|
||||
optionListener.onOptionChanged();
|
||||
optionListener.get().onOptionChanged();
|
||||
}
|
||||
}
|
||||
|
||||
/** Add an option listener, notice how we don't have a reference to it */
|
||||
public void addGameOptionListener(GameOptionListener listener) {
|
||||
optionListeners.add(listener);
|
||||
optionListeners.add(new WeakReference<>(listener));
|
||||
}
|
||||
|
||||
/** Remove a listener from existence, or at least, its reference here */
|
||||
public void removeGameOptionListener(GameOptionListener listener) {
|
||||
for(GameOptionListener optionListener : optionListeners) {
|
||||
for(WeakReference<GameOptionListener> optionListener : optionListeners) {
|
||||
if(optionListener == null) continue;
|
||||
if(optionListener == listener) {
|
||||
optionListeners.remove(optionListener);
|
||||
|
|
|
@ -209,6 +209,20 @@ public class MenuSetting {
|
|||
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);
|
||||
|
||||
public DoubleProperty mouseSensitivityProperty() {
|
||||
|
@ -281,6 +295,7 @@ public class MenuSetting {
|
|||
mouseMoveModeProperty.addListener(listener);
|
||||
mouseSensitivityProperty.addListener(listener);
|
||||
mouseSizeProperty.addListener(listener);
|
||||
itemBarScaleProperty.addListener(listener);
|
||||
gamepadDeadzoneProperty.addListener(listener);
|
||||
gamepadAimAssistZoneProperty.addListener(listener);
|
||||
}
|
||||
|
@ -306,6 +321,7 @@ public class MenuSetting {
|
|||
obj.addProperty("mouseMoveMode", src.getMouseMoveMode().getId());
|
||||
obj.addProperty("mouseSensitivity", src.getMouseSensitivity());
|
||||
obj.addProperty("mouseSize", src.getMouseSize());
|
||||
obj.addProperty("itemBarScale", src.getItemBarScale());
|
||||
obj.addProperty("gamepadDeadzone", src.getGamepadDeadzone());
|
||||
obj.addProperty("gamepadAimAssistZone", src.getGamepadAimAssistZone());
|
||||
return obj;
|
||||
|
@ -334,6 +350,7 @@ public class MenuSetting {
|
|||
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.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.setGamepadAimAssistZone(Optional.ofNullable(obj.get("gamepadAimAssistZone")).map(JsonElement::getAsDouble).orElse(0.98d));
|
||||
return ms;
|
||||
|
|
|
@ -178,6 +178,43 @@
|
|||
android:textSize="12sp" />
|
||||
|
||||
</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
|
||||
app:auto_text_tint="true"
|
||||
|
|
|
@ -504,6 +504,7 @@
|
|||
<string name="menu_settings_send_key">发送键值</string>
|
||||
<string name="menu_settings_send_key_button">发送</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="message_cancelled">操作已取消</string>
|
||||
|
|
|
@ -535,6 +535,7 @@
|
|||
<string name="menu_settings_send_key">Send Key</string>
|
||||
<string name="menu_settings_send_key_button">Send</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="message_cancelled">Operation was cancelled</string>
|
||||
|
|
Loading…
Reference in New Issue