- update default widget template
- change default button action for mousepad - minor fixes
This commit is contained in:
1 parent
5daf158908
commit
35ceebfe0d
11 files changed
+132
-49
No files matched your search
@@ -58,6 +58,7 @@
|
|||||||
[encoder encodeFloat:self.touchPointerVelocityFactor forKey:@"touchPointerVelocityFactor"];
|
[encoder encodeFloat:self.touchPointerVelocityFactor forKey:@"touchPointerVelocityFactor"];
|
||||||
[encoder encodeCGPoint:self.normalizedStreamViewOffset forKey:@"normalizedStreamViewOffset"];
|
[encoder encodeCGPoint:self.normalizedStreamViewOffset forKey:@"normalizedStreamViewOffset"];
|
||||||
[encoder encodeFloat:self.streamViewScale forKey:@"streamViewScale"];
|
[encoder encodeFloat:self.streamViewScale forKey:@"streamViewScale"];
|
||||||
|
[encoder encodeBool:self.gamepadOverlayEnabled forKey:@"gamepadOverlayEnabled"];
|
||||||
|
|
||||||
[encoder encodeObject:self.pressureCurvePoints forKey:@"pressureCurvePoints"];
|
[encoder encodeObject:self.pressureCurvePoints forKey:@"pressureCurvePoints"];
|
||||||
// [encoder encodeObject:self.initialTouchPressureCurvePoints forKey:@"initialTouchPressureCurvePoints"];
|
// [encoder encodeObject:self.initialTouchPressureCurvePoints forKey:@"initialTouchPressureCurvePoints"];
|
||||||
@@ -213,7 +214,6 @@
|
|||||||
copy.isSelected = self.isSelected;
|
copy.isSelected = self.isSelected;
|
||||||
copy.useBuiltinGyro = self.useBuiltinGyro;
|
copy.useBuiltinGyro = self.useBuiltinGyro;
|
||||||
copy.swapYawAndRoll = self.swapYawAndRoll;
|
copy.swapYawAndRoll = self.swapYawAndRoll;
|
||||||
copy.isSelected = self.isSelected;
|
|
||||||
copy.mapGyroTo = self.mapGyroTo;
|
copy.mapGyroTo = self.mapGyroTo;
|
||||||
copy.yawPitchToRightStick = self.yawPitchToRightStick;
|
copy.yawPitchToRightStick = self.yawPitchToRightStick;
|
||||||
copy.rollToLeftStick = self.rollToLeftStick;
|
copy.rollToLeftStick = self.rollToLeftStick;
|
||||||
|
|||||||
@@ -286,7 +286,8 @@ static CGRect layoutViewBounds;
|
|||||||
|
|
||||||
// NSString* persistedKey = @"widgetProfileUpdated-20251015";
|
// NSString* persistedKey = @"widgetProfileUpdated-20251015";
|
||||||
// NSString* persistedKey = @"widgetProfileUpdated-20260322";
|
// NSString* persistedKey = @"widgetProfileUpdated-20260322";
|
||||||
NSString* persistedKey = @"widgetProfileUpdated-20260413-2";
|
// NSString* persistedKey = @"widgetProfileUpdated-20260413-2";
|
||||||
|
NSString* persistedKey = @"widgetProfileUpdated-20260430-1";
|
||||||
BOOL needImportDefaultTemplates = [defaults objectForKey:persistedKey] == nil;
|
BOOL needImportDefaultTemplates = [defaults objectForKey:persistedKey] == nil;
|
||||||
|
|
||||||
if(profiles.count == 0 || needImportDefaultTemplates){
|
if(profiles.count == 0 || needImportDefaultTemplates){
|
||||||
@@ -462,8 +463,8 @@ static CGRect layoutViewBounds;
|
|||||||
buttonState.widthFactor = [self normalizeSizeWidthFactorWith:widgetView];
|
buttonState.widthFactor = [self normalizeSizeWidthFactorWith:widgetView];
|
||||||
buttonState.heightFactor = [self normalizeSizeHeightFactorWith:widgetView];
|
buttonState.heightFactor = [self normalizeSizeHeightFactorWith:widgetView];
|
||||||
buttonState.componentSizeFactor = [self normalizeComponentSizeFactorWith:widgetView];
|
buttonState.componentSizeFactor = [self normalizeComponentSizeFactorWith:widgetView];
|
||||||
buttonState.backgroundAlpha = widgetView.backgroundAlpha;
|
buttonState.backgroundAlpha = widgetView.originalBackgroundAlpha;
|
||||||
buttonState.labelAlpha = widgetView.labelAlpha;
|
buttonState.labelAlpha = widgetView.originalLabelAlpha;
|
||||||
buttonState.borderAlpha = widgetView.borderAlpha;
|
buttonState.borderAlpha = widgetView.borderAlpha;
|
||||||
buttonState.highlightAlpha = widgetView.highlightAlpha;
|
buttonState.highlightAlpha = widgetView.highlightAlpha;
|
||||||
buttonState.borderWidth = widgetView.borderWidth;
|
buttonState.borderWidth = widgetView.borderWidth;
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ private final class InputAccessoryCapsuleButton: UIButton {
|
|||||||
|
|
||||||
if isTapToToggleMode {
|
if isTapToToggleMode {
|
||||||
if isLogicallyPressed {
|
if isLogicallyPressed {
|
||||||
if !InputAccessoryBar.isEditingItems {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: comboButtons,pressOnly: true)}
|
if !InputAccessoryBar.isEditingItems {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: comboButtons, delay: 0.1, pressOnly: true)}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: comboButtons, releaseOnly: true)
|
CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: comboButtons, releaseOnly: true)
|
||||||
@@ -316,7 +316,7 @@ private final class InputAccessoryCapsuleButton: UIButton {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
isLogicallyPressed = false
|
isLogicallyPressed = false
|
||||||
if !InputAccessoryBar.isEditingItems {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: comboButtons)}
|
if !InputAccessoryBar.isEditingItems {CommandManager.shared.sendAutoReleaseComboCommand(cmdStrings: comboButtons, delay: 0.1)}
|
||||||
}
|
}
|
||||||
|
|
||||||
guard isPressVisualActive || isPressInAnimationRunning else { return }
|
guard isPressVisualActive || isPressInAnimationRunning else { return }
|
||||||
@@ -1208,6 +1208,8 @@ final class InputAccessoryBar: UIView, UIScrollViewDelegate, WidgetPickerViewCon
|
|||||||
InputAccessoryBarButtonRecord(buttonLabel: "Tab", cmdString: "TAB+Null"),
|
InputAccessoryBarButtonRecord(buttonLabel: "Tab", cmdString: "TAB+Null"),
|
||||||
InputAccessoryBarButtonRecord(buttonLabel: "←", cmdString: "LEFTARR"),
|
InputAccessoryBarButtonRecord(buttonLabel: "←", cmdString: "LEFTARR"),
|
||||||
InputAccessoryBarButtonRecord(buttonLabel: "→", cmdString: "RIGHTARR"),
|
InputAccessoryBarButtonRecord(buttonLabel: "→", cmdString: "RIGHTARR"),
|
||||||
|
InputAccessoryBarButtonRecord(buttonLabel: "PgUp", cmdString: "PgUp"),
|
||||||
|
InputAccessoryBarButtonRecord(buttonLabel: "PgDn", cmdString: "PgDown"),
|
||||||
InputAccessoryBarButtonRecord(buttonLabel: "Del", cmdString: "DEL"),
|
InputAccessoryBarButtonRecord(buttonLabel: "Del", cmdString: "DEL"),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ import ObjectiveC.runtime
|
|||||||
@objc public var storedCenter: CGPoint = .zero // location from persisted data
|
@objc public var storedCenter: CGPoint = .zero // location from persisted data
|
||||||
@objc public var initialCenter: CGPoint = .zero // location from persisted data
|
@objc public var initialCenter: CGPoint = .zero // location from persisted data
|
||||||
@objc public var layoutChanges: [CGPoint] = []
|
@objc public var layoutChanges: [CGPoint] = []
|
||||||
@objc public var mouseButtonAction: MouseButtonAction = .hovering;
|
@objc public var mouseButtonAction: MouseButtonAction = .noClick;
|
||||||
@objc public var mouseButtonActionDelay: TimeInterval = 0.005;
|
@objc public var mouseButtonActionDelay: TimeInterval = 0.005;
|
||||||
|
|
||||||
//autoTapTimer
|
//autoTapTimer
|
||||||
@@ -237,6 +237,7 @@ import ObjectiveC.runtime
|
|||||||
@objc public var pitchFactor: CGFloat = 1.0
|
@objc public var pitchFactor: CGFloat = 1.0
|
||||||
@objc public var rollFactor: CGFloat = 1.0
|
@objc public var rollFactor: CGFloat = 1.0
|
||||||
private var gyroControlPreviousStatus: NSMutableDictionary = NSMutableDictionary()
|
private var gyroControlPreviousStatus: NSMutableDictionary = NSMutableDictionary()
|
||||||
|
private var isFirstTappingOnscreenGyroButton: Bool = true
|
||||||
|
|
||||||
private var superViewWidth: CGFloat = 0
|
private var superViewWidth: CGFloat = 0
|
||||||
private var superViewHeight: CGFloat = 0
|
private var superViewHeight: CGFloat = 0
|
||||||
@@ -2663,6 +2664,10 @@ import ObjectiveC.runtime
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func handleMotionControlButtonDown(){
|
private func handleMotionControlButtonDown(){
|
||||||
|
if isFirstTappingOnscreenGyroButton, GenericUtils.isFirstTappingOnscreenGyroButton() {
|
||||||
|
self.popGyroButtonTip()
|
||||||
|
}
|
||||||
|
isFirstTappingOnscreenGyroButton = false
|
||||||
switch self.motionControlButtonString {
|
switch self.motionControlButtonString {
|
||||||
case "GYRO":
|
case "GYRO":
|
||||||
self.motionHandler?.startGyroByOnScreenButton(self, yawFactor: yawFactor, pitchFactor: pitchFactor, rollFactor: rollFactor)
|
self.motionHandler?.startGyroByOnScreenButton(self, yawFactor: yawFactor, pitchFactor: pitchFactor, rollFactor: rollFactor)
|
||||||
@@ -3232,7 +3237,17 @@ import ObjectiveC.runtime
|
|||||||
countdown: 5,
|
countdown: 5,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func popGyroButtonTip() {
|
||||||
|
AlertControllerUtil.showAlert(
|
||||||
|
in: self.parentViewController,
|
||||||
|
title: SwiftLocalizationHelper.localizedString(forKey: "Gyro Button"),
|
||||||
|
message: "\n\(SwiftLocalizationHelper.localizedString(forKey: "gyroButtonTip"))",
|
||||||
|
withCancel: false,
|
||||||
|
buttonTitle: SwiftLocalizationHelper.localizedString(forKey: "Got it!"),
|
||||||
|
countdown: 5,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Auto Dock
|
// MARK: - Auto Dock
|
||||||
private static let autoDockExposedEdgeLength: CGFloat = GenericUtils.isIPhone() ? 90 : 90
|
private static let autoDockExposedEdgeLength: CGFloat = GenericUtils.isIPhone() ? 90 : 90
|
||||||
|
|||||||
@@ -669,6 +669,7 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
|||||||
newProfile.unfoldedExclusiveFolderSequence = OnScreenWidgetView.unfoldedExclusiveFolderSequence;
|
newProfile.unfoldedExclusiveFolderSequence = OnScreenWidgetView.unfoldedExclusiveFolderSequence;
|
||||||
newProfile.postExclusiveUnfoldedSequences = OnScreenWidgetView.postExclusiveUnfoldedSequences;
|
newProfile.postExclusiveUnfoldedSequences = OnScreenWidgetView.postExclusiveUnfoldedSequences;
|
||||||
newProfile.gamepadOverlayEnabled = streamFrameVC.virtualGamepadOverlay != nil;
|
newProfile.gamepadOverlayEnabled = streamFrameVC.virtualGamepadOverlay != nil;
|
||||||
|
|
||||||
newProfile.normalizedStreamViewOffset = CGPointMake(streamFrameVC.streamViewMagnifierContentOffset.x/self.bounds.size.width, streamFrameVC.streamViewMagnifierContentOffset.y/self.bounds.size.height);
|
newProfile.normalizedStreamViewOffset = CGPointMake(streamFrameVC.streamViewMagnifierContentOffset.x/self.bounds.size.width, streamFrameVC.streamViewMagnifierContentOffset.y/self.bounds.size.height);
|
||||||
newProfile.streamViewScale = streamFrameVC.streamViewMagnifierZoomScale;
|
newProfile.streamViewScale = streamFrameVC.streamViewMagnifierZoomScale;
|
||||||
|
|
||||||
|
|||||||
@@ -1046,19 +1046,19 @@
|
|||||||
"zh-Hans" : {
|
"zh-Hans" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "translated",
|
"state" : "translated",
|
||||||
"value" : "键鼠布局"
|
"value" : "键鼠FPS"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh-Hant" : {
|
"zh-Hant" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "needs_review",
|
"state" : "translated",
|
||||||
"value" : "鍵鼠佈局"
|
"value" : "鍵鼠FPS"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh-HK" : {
|
"zh-HK" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "needs_review",
|
"state" : "translated",
|
||||||
"value" : "鍵鼠佈局"
|
"value" : "鍵鼠FPS"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3700,29 +3700,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Current profile updated successfully" : {
|
|
||||||
"extractionState" : "manual",
|
|
||||||
"localizations" : {
|
|
||||||
"zh-Hans" : {
|
|
||||||
"stringUnit" : {
|
|
||||||
"state" : "translated",
|
|
||||||
"value" : "当前布局已修改"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zh-Hant" : {
|
|
||||||
"stringUnit" : {
|
|
||||||
"state" : "translated",
|
|
||||||
"value" : "目前版面配置已成功更新"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"zh-HK" : {
|
|
||||||
"stringUnit" : {
|
|
||||||
"state" : "translated",
|
|
||||||
"value" : "目前版面配置已成功更新"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Custom Resolution Selected" : {
|
"Custom Resolution Selected" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -6235,6 +6212,29 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Gyro Button" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "陀螺仪按键"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "陀螺儀按鍵"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "陀螺儀按鍵"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Gyro button on controller" : {
|
"Gyro button on controller" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -6350,6 +6350,35 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"gyroButtonTip" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Before you start, please navigate to 'Settings Menu → Motion Control Section → Map Gyro to’ to confirm whether the gyroscope output is set to mouse or controller stick."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "开始之前,请先前往 “设置菜单 → 体感控制分区 → 陀螺仪映射为” 选项确认陀螺仪输出为鼠标还是手柄摇杆。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "開始之前,請先前往「設定選單 → 體感控制分區 → 陀螺儀映射為」選項,確認陀螺儀輸出為滑鼠還是手把搖桿。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "needs_review",
|
||||||
|
"value" : "開始之前,請先前往「設定選單 → 體感控制分區 → 陀螺儀映射為」選項,確認陀螺儀輸出為滑鼠還是手把搖桿。"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"gyroModeStackTip" : {
|
"gyroModeStackTip" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
@@ -7283,25 +7312,25 @@
|
|||||||
"en" : {
|
"en" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "translated",
|
"state" : "translated",
|
||||||
"value" : "- Tap the drawer icon to duplicate the default profile, since it cannot be modified or overwritten.\n\n- Tap to load configs for each widget.\n\n- To ensure smooth gameplay without interference:\n - Disable All gestures in: Settings → Multitasking & Gestures\n - Disable Settings → Accessibility → Touch → AssistiveTouch\n - Disable Settings → Accessibility → Zoom\n\n- We recommend using new widgets instead of legacy on-screen controls."
|
"value" : "- Tap the drawer icon to duplicate the default profile, since it could be overwritten after app update.\n\n- Tap to load configs for each widget.\n\n- To ensure smooth gameplay without interference:\n - Disable All gestures in: Settings → Multitasking & Gestures\n - Disable Settings → Accessibility → Touch → AssistiveTouch\n - Disable Settings → Accessibility → Zoom\n\n- We recommend using new widgets instead of legacy on-screen controls."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh-Hans" : {
|
"zh-Hans" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "translated",
|
"state" : "translated",
|
||||||
"value" : "- 请点击抽屉图标复制一份默认布局,因为默认布局无法修改或覆盖。\n\n- 点击以加载每个控件的配置。\n\n- 为避免游戏过程被干扰,请务必:\n - 设置 → 多任务与手势 → 关闭所有手势\n - 关闭: 设置 → 辅助功能 → 触控 → 辅助触控\n - 关闭: 设置 → 辅助功能 → 缩放\n\n- 建议使用新版屏显控件,而非旧版屏显手柄。"
|
"value" : "- 请点击抽屉图标复制一份默认布局。因为预置的模板布局可能因app升级被覆盖。\n\n- 点击以加载每个控件的配置。\n\n- 为避免游戏过程被干扰,请务必:\n - 设置 → 多任务与手势 → 关闭所有手势\n - 关闭: 设置 → 辅助功能 → 触控 → 辅助触控\n - 关闭: 设置 → 辅助功能 → 缩放\n\n- 建议使用新版屏显控件,而非旧版屏显手柄。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh-Hant" : {
|
"zh-Hant" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "translated",
|
"state" : "translated",
|
||||||
"value" : "- 請點擊抽屜圖示複製一份預設版面,因為預設版面無法修改或覆蓋。\n\n- 點擊以載入每個元件的設定。\n\n- 為避免遊戲過程被干擾,請務必:\n - 設定 → 多工處理與手勢 → 關閉所有手勢\n - 關閉: 設定 → 輔助使用 → 觸控 → 輔助觸控\n - 關閉: 設定 → 輔助使用 → 縮放\n\n- 建議使用新版螢幕控制元件,而非舊版螢幕顯示手把。"
|
"value" : "- 請點擊抽屜圖示複製一份預設佈局。因為預設的模板佈局可能會因 App 升級而被覆蓋。\n\n- 點擊以載入每個元件的設定。\n\n- 為避免遊戲過程被干擾,請務必:\n - 設定 → 多工處理與手勢 → 關閉所有手勢\n - 關閉: 設定 → 輔助使用 → 觸控 → 輔助觸控\n - 關閉: 設定 → 輔助使用 → 縮放\n\n- 建議使用新版螢幕控制元件,而非舊版螢幕顯示手把。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh-HK" : {
|
"zh-HK" : {
|
||||||
"stringUnit" : {
|
"stringUnit" : {
|
||||||
"state" : "translated",
|
"state" : "translated",
|
||||||
"value" : "- 請點擊抽屜圖示複製一份預設版面,因為預設版面無法修改或覆蓋。\n\n- 點擊以載入每個元件的設定。\n\n- 為避免遊戲過程被干擾,請務必:\n - 設定 → 多工處理與手勢 → 關閉所有手勢\n - 關閉: 設定 → 輔助使用 → 觸控 → 輔助觸控\n - 關閉: 設定 → 輔助使用 → 縮放\n\n- 建議使用新版螢幕控制元件,而非舊版螢幕顯示手把。"
|
"value" : "- 請點擊抽屜圖示複製一份預設佈局。因為預設的模板佈局可能會因 App 升級而被覆蓋。\n\n- 點擊以載入每個元件的設定。\n\n- 為避免遊戲過程被干擾,請務必:\n - 設定 → 多工處理與手勢 → 關閉所有手勢\n - 關閉: 設定 → 輔助使用 → 觸控 → 輔助觸控\n - 關閉: 設定 → 輔助使用 → 縮放\n\n- 建議使用新版螢幕控制元件,而非舊版螢幕顯示手把。"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10082,6 +10111,35 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"profileSaveTip" : {
|
||||||
|
"extractionState" : "manual",
|
||||||
|
"localizations" : {
|
||||||
|
"en" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "Current profile updated successfully.\nThe app update may overwrite the preset game profiles. If you just saved a preset profile, please duplicate it and modify the copy instead."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hans" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "当前布局已修改。\nApp升级可能覆盖预置的游戏配置,如果您刚刚保存的是预置游戏配置,先将该配置复制,后续请修改其副本。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-Hant" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "目前配置已成功更新\nApp升級可能會覆蓋預設的遊戲配置,如果您剛剛儲存的是預設遊戲配置,先將該配置複製,後續請修改其副本。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zh-HK" : {
|
||||||
|
"stringUnit" : {
|
||||||
|
"state" : "translated",
|
||||||
|
"value" : "目前配置已成功更新\nApp升級可能會覆蓋預設的遊戲配置,如果您剛剛儲存的是預設遊戲配置,先將該配置複製,後續請修改其副本。"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"Purchase Now" : {
|
"Purchase Now" : {
|
||||||
"extractionState" : "manual",
|
"extractionState" : "manual",
|
||||||
"localizations" : {
|
"localizations" : {
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -45,7 +45,6 @@ import UIKit
|
|||||||
let key = "hasLaunchedPressureCurveTool"
|
let key = "hasLaunchedPressureCurveTool"
|
||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let launchedBefore = defaults.bool(forKey: key)
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
|
|
||||||
if !launchedBefore {
|
if !launchedBefore {
|
||||||
defaults.set(true, forKey: key)
|
defaults.set(true, forKey: key)
|
||||||
return true
|
return true
|
||||||
@@ -57,7 +56,6 @@ import UIKit
|
|||||||
let key = "hasTouchedGamepadOverlayFeature20260405-2"
|
let key = "hasTouchedGamepadOverlayFeature20260405-2"
|
||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let launchedBefore = defaults.bool(forKey: key)
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
|
|
||||||
if !launchedBefore {
|
if !launchedBefore {
|
||||||
defaults.set(true, forKey: key)
|
defaults.set(true, forKey: key)
|
||||||
return true
|
return true
|
||||||
@@ -69,7 +67,6 @@ import UIKit
|
|||||||
let key = "hasTappedGameProfileSelectorFromMainFrame-6"
|
let key = "hasTappedGameProfileSelectorFromMainFrame-6"
|
||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let launchedBefore = defaults.bool(forKey: key)
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
|
|
||||||
if !launchedBefore {
|
if !launchedBefore {
|
||||||
defaults.set(true, forKey: key)
|
defaults.set(true, forKey: key)
|
||||||
return true
|
return true
|
||||||
@@ -81,7 +78,6 @@ import UIKit
|
|||||||
let key = "hasTappedFolderInLayoutTool"
|
let key = "hasTappedFolderInLayoutTool"
|
||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let launchedBefore = defaults.bool(forKey: key)
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
|
|
||||||
if !launchedBefore {
|
if !launchedBefore {
|
||||||
defaults.set(true, forKey: key)
|
defaults.set(true, forKey: key)
|
||||||
return true
|
return true
|
||||||
@@ -90,10 +86,20 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc static func isFirstTappingMagnifier() -> Bool {
|
@objc static func isFirstTappingMagnifier() -> Bool {
|
||||||
let key = "hasFirstTappingMagnifier2"
|
let key = "hasTappedMagnifier2"
|
||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let launchedBefore = defaults.bool(forKey: key)
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
|
if !launchedBefore {
|
||||||
|
defaults.set(true, forKey: key)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc static func isFirstTappingOnscreenGyroButton() -> Bool {
|
||||||
|
let key = "hasTappedOnscreenGyroButton"
|
||||||
|
let defaults = UserDefaults.standard
|
||||||
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
if !launchedBefore {
|
if !launchedBefore {
|
||||||
defaults.set(true, forKey: key)
|
defaults.set(true, forKey: key)
|
||||||
return true
|
return true
|
||||||
@@ -105,7 +111,6 @@ import UIKit
|
|||||||
let key = "isFirstTappingInputAccessoryBar"
|
let key = "isFirstTappingInputAccessoryBar"
|
||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let launchedBefore = defaults.bool(forKey: key)
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
|
|
||||||
if !launchedBefore {
|
if !launchedBefore {
|
||||||
defaults.set(true, forKey: key)
|
defaults.set(true, forKey: key)
|
||||||
return true
|
return true
|
||||||
@@ -118,7 +123,6 @@ import UIKit
|
|||||||
let key = "hasStreamedOnMac"
|
let key = "hasStreamedOnMac"
|
||||||
let defaults = UserDefaults.standard
|
let defaults = UserDefaults.standard
|
||||||
let launchedBefore = defaults.bool(forKey: key)
|
let launchedBefore = defaults.bool(forKey: key)
|
||||||
|
|
||||||
if !launchedBefore {
|
if !launchedBefore {
|
||||||
defaults.set(true, forKey: key)
|
defaults.set(true, forKey: key)
|
||||||
return true
|
return true
|
||||||
|
|||||||
+1
-1
@@ -1502,7 +1502,7 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
|||||||
let success = profilesManager.updateSelectedProfile(layoutOSC.oscButtonLayerPool)
|
let success = profilesManager.updateSelectedProfile(layoutOSC.oscButtonLayerPool)
|
||||||
guard sender != nil else { return }
|
guard sender != nil else { return }
|
||||||
let message = success
|
let message = success
|
||||||
? LocalizationHelper.localizedString(forKey: "Current profile updated successfully")
|
? LocalizationHelper.localizedString(forKey: "profileSaveTip")
|
||||||
: LocalizationHelper.localizedString(forKey: "Profile Default can not be overwritten")
|
: LocalizationHelper.localizedString(forKey: "Profile Default can not be overwritten")
|
||||||
let alert = UIAlertController(title: "", message: message, preferredStyle: .alert)
|
let alert = UIAlertController(title: "", message: message, preferredStyle: .alert)
|
||||||
alert.addAction(UIAlertAction(title: LocalizationHelper.localizedString(forKey: "Ok"), style: .default) { _ in
|
alert.addAction(UIAlertAction(title: LocalizationHelper.localizedString(forKey: "Ok"), style: .default) { _ in
|
||||||
|
|||||||
@@ -2006,7 +2006,9 @@
|
|||||||
|
|
||||||
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
|
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
|
||||||
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
|
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
|
||||||
|
|
||||||
|
[self resetMagnifierStreamViewWithAnimated:false];
|
||||||
|
|
||||||
// handle view size change for on-screen widgets
|
// handle view size change for on-screen widgets
|
||||||
CGSize oldSize = self.view.bounds.size;
|
CGSize oldSize = self.view.bounds.size;
|
||||||
CGFloat scaleX = size.width / oldSize.width;
|
CGFloat scaleX = size.width / oldSize.width;
|
||||||
|
|||||||
Reference in new issue
Block a user