- tweaking genshinImpact RsvPads ("YSB", "YSRT", "YSRB", "YSRSV")
This commit is contained in:
1 parent
978ab18cee
commit
471325a358
3 files changed
+44
-27
No files matched your search
@@ -97,12 +97,12 @@ import UIKit
|
|||||||
"OSCSTART",
|
"OSCSTART",
|
||||||
"OSCSELECT"]
|
"OSCSELECT"]
|
||||||
|
|
||||||
@objc public static let touchPadCmds: [String] = ["LSVPAD", "RSVPAD", "LSPAD", "RSPAD", "MOUSEPAD", "DPAD", "WASDPAD", "ARROWPAD", "YSWASD"]
|
@objc public static let touchPadCmds: [String] = ["YSRSV", "LSVPAD", "RSVPAD", "LSPAD", "RSPAD", "MOUSEPAD", "DPAD", "WASDPAD", "ARROWPAD", "YSWASD"]
|
||||||
@objc public static let stickTouchPads: [String] = ["LSVPAD", "RSVPAD", "LSPAD", "RSPAD"]
|
@objc public static let stickTouchPads: [String] = ["YSRSV", "LSVPAD", "RSVPAD", "LSPAD", "RSPAD"]
|
||||||
@objc public static let nonVectorStickPads: [String] = ["LSPAD", "RSPAD"]
|
@objc public static let nonVectorStickPads: [String] = ["LSPAD", "RSPAD"]
|
||||||
@objc public static let specialOverlayButtonCmds: [String] = ["SETTINGS"]
|
@objc public static let specialOverlayButtonCmds: [String] = ["SETTINGS"]
|
||||||
|
|
||||||
@objc public static let specialGameWidgets: [String] = ["YSLT", "YSRT", "YSRB", "YSB", "YSRT2", "YSRB2", "YSB2", "YSEM", "YSML", "YSMR", "YSWASD"]
|
@objc public static let specialGameWidgets: [String] = ["YSRSV", "YSLT", "YSRT", "YSRB", "YSB", "YSRT2", "YSRB2", "YSB2", "YSEM", "YSML", "YSMR", "YSWASD"]
|
||||||
@objc public static let yuanshenStickPadButtonCmds: [String] = ["YSLT", "YSRT", "YSRB", "YSB"]
|
@objc public static let yuanshenStickPadButtonCmds: [String] = ["YSLT", "YSRT", "YSRB", "YSB"]
|
||||||
@objc public static let yuanshenMouseMoveButtonCmds: [String] = ["YSEM", "YSML", "YSMR"]
|
@objc public static let yuanshenMouseMoveButtonCmds: [String] = ["YSEM", "YSML", "YSMR"]
|
||||||
|
|
||||||
|
|||||||
@@ -30,38 +30,33 @@ import UIKit
|
|||||||
@objc public var latestTouchLocation: CGPoint
|
@objc public var latestTouchLocation: CGPoint
|
||||||
@objc public var selfViewOnTheRight: Bool = false
|
@objc public var selfViewOnTheRight: Bool = false
|
||||||
@objc public var shape: String = "default"
|
@objc public var shape: String = "default"
|
||||||
|
private var storedCenter: CGPoint = .zero // location from persisted data
|
||||||
|
|
||||||
|
|
||||||
public let stickMaxOffset: CGFloat = 0x7FFE
|
|
||||||
private let appWindow: UIView
|
private let appWindow: UIView
|
||||||
|
|
||||||
|
|
||||||
private var touchLockedForMoveEvent: UITouch
|
|
||||||
private var touchBegan: Bool = false
|
|
||||||
private let stickBallMaxOffset = 18.0
|
|
||||||
private var comboKeyStrings: [String] = []
|
|
||||||
private var comboKeyTimeIntervalMs: UInt32 = 10
|
|
||||||
|
|
||||||
|
|
||||||
|
public let stickMaxOffset: CGFloat = 0x7FFE
|
||||||
|
|
||||||
// for LSVPAD, RSVPAD
|
// for LSVPAD, RSVPAD
|
||||||
@objc public var deltaX: CGFloat
|
@objc public var deltaX: CGFloat
|
||||||
@objc public var deltaY: CGFloat
|
@objc public var deltaY: CGFloat
|
||||||
|
|
||||||
// for LSPAD, RSPAD
|
// for LSPAD, RSPAD
|
||||||
@objc public var offSetX: CGFloat
|
@objc public var offSetX: CGFloat
|
||||||
@objc public var offSetY: CGFloat
|
@objc public var offSetY: CGFloat
|
||||||
|
|
||||||
// this is for all stick pads and mouse Pad
|
|
||||||
@objc public var sensitivityFactor: CGFloat = 1.0
|
|
||||||
|
|
||||||
|
|
||||||
// for LSVPAD, RSVPAD, LSPAD, RSPAD
|
|
||||||
private let crossMarkColor: CGColor = UIColor(white: 1, alpha: 0.70).cgColor
|
private let crossMarkColor: CGColor = UIColor(white: 1, alpha: 0.70).cgColor
|
||||||
private let stickBallColor: CGColor = UIColor(white: 1, alpha: 0.75).cgColor
|
private let stickBallColor: CGColor = UIColor(white: 1, alpha: 0.75).cgColor
|
||||||
private var stickInputScale: CGFloat = 35
|
private var stickInputScale: CGFloat = 35
|
||||||
private var l3r3Indicator = CAShapeLayer()
|
private var l3r3Indicator = CAShapeLayer()
|
||||||
|
private let stickBallMaxOffset = 18.0
|
||||||
@objc public var crossMarkLayer = CAShapeLayer()
|
@objc public var crossMarkLayer = CAShapeLayer()
|
||||||
@objc public var stickBallLayer = CAShapeLayer()
|
@objc public var stickBallLayer = CAShapeLayer()
|
||||||
|
|
||||||
|
// this is for all stick pads and mouse Pad
|
||||||
|
@objc public var sensitivityFactor: CGFloat = 1.0
|
||||||
|
|
||||||
// check quick double tap:
|
// check quick double tap:
|
||||||
private var quickDoubleTapDetected: Bool
|
private var quickDoubleTapDetected: Bool
|
||||||
private var touchTapTimeInterval: TimeInterval
|
private var touchTapTimeInterval: TimeInterval
|
||||||
@@ -88,14 +83,21 @@ import UIKit
|
|||||||
@objc public var touchBeganLocation: CGPoint = .zero
|
@objc public var touchBeganLocation: CGPoint = .zero
|
||||||
|
|
||||||
// for mousePad
|
// for mousePad
|
||||||
|
private var touchLockedForMoveEvent: UITouch
|
||||||
|
private var touchBegan: Bool = false
|
||||||
private var mousePointerMoved: Bool
|
private var mousePointerMoved: Bool
|
||||||
private var twoTouchesDetected: Bool
|
private var twoTouchesDetected: Bool
|
||||||
|
|
||||||
private var storedCenter: CGPoint = .zero // location from persisted data
|
|
||||||
|
// border & visual effect
|
||||||
private var minimumBorderAlpha: CGFloat = 0.19
|
private var minimumBorderAlpha: CGFloat = 0.19
|
||||||
private var defaultBorderColor: CGColor = UIColor(white: 0.2, alpha: 0.3).cgColor
|
private var defaultBorderColor: CGColor = UIColor(white: 0.2, alpha: 0.3).cgColor
|
||||||
private let moonlightPurple: CGColor = UIColor(red: 0.5, green: 0.5, blue: 1.0, alpha: 0.86).cgColor
|
private let moonlightPurple: CGColor = UIColor(red: 0.5, green: 0.5, blue: 1.0, alpha: 0.86).cgColor
|
||||||
|
|
||||||
|
// super combo key string set
|
||||||
|
private var comboKeyStrings: [String] = []
|
||||||
|
private var comboKeyTimeIntervalMs: UInt32 = 10
|
||||||
|
|
||||||
// whole button press down visual effect
|
// whole button press down visual effect
|
||||||
@objc public let buttonDownVisualEffectLayer = CAShapeLayer()
|
@objc public let buttonDownVisualEffectLayer = CAShapeLayer()
|
||||||
private var buttonDownVisualEffectWidth: CGFloat
|
private var buttonDownVisualEffectWidth: CGFloat
|
||||||
@@ -161,15 +163,19 @@ import UIKit
|
|||||||
leftIndicator.anchorPoint = CGPoint(x: 1, y: 0.5)
|
leftIndicator.anchorPoint = CGPoint(x: 1, y: 0.5)
|
||||||
rightIndicator = createLrudDirectionLayer()
|
rightIndicator = createLrudDirectionLayer()
|
||||||
rightIndicator.anchorPoint = CGPoint(x: 0, y: 0.5)
|
rightIndicator.anchorPoint = CGPoint(x: 0, y: 0.5)
|
||||||
|
|
||||||
|
|
||||||
setupView()
|
setupView()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ======================================================================================================
|
||||||
|
|
||||||
@objc public func setLocation(xOffset:CGFloat, yOffset:CGFloat) {
|
@objc public func setLocation(xOffset:CGFloat, yOffset:CGFloat) {
|
||||||
/*
|
/*
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
@@ -788,8 +794,13 @@ import UIKit
|
|||||||
var targetX = self.touchInputToStickInput(input: inputX)
|
var targetX = self.touchInputToStickInput(input: inputX)
|
||||||
var targetY = -self.touchInputToStickInput(input: inputY)
|
var targetY = -self.touchInputToStickInput(input: inputY)
|
||||||
// vertical input must be inverted
|
// vertical input must be inverted
|
||||||
//targetX = (targetX >= 0 ? 1.0 : -1.0) * 8000.0 + (stickMaxOffset - 8000.0) * (targetX/stickMaxOffset)
|
switch self.keyString {
|
||||||
//targetX = (targetX >= 0 ? 1.0 : -1.0) * 8000.0 + targetX - 8000.0*targetX/stickMaxOffset
|
//tweaking yuanshen RsvPad related widgets
|
||||||
|
case "YSB", "YSRT", "YSRB", "YSRSV":
|
||||||
|
targetX = (targetX >= 0 ? 1.0 : -1.0) * 3000.0 + (stickMaxOffset - 3000.0) * (targetX/stickMaxOffset)
|
||||||
|
targetY = (targetY >= 0 ? 1.0 : -1.0) * 3000.0 + (stickMaxOffset - 3000.0) * (targetY/stickMaxOffset)
|
||||||
|
default: break
|
||||||
|
}
|
||||||
self.onScreenControls.sendRightStickTouchPadEvent(targetX, targetY)
|
self.onScreenControls.sendRightStickTouchPadEvent(targetX, targetY)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -860,6 +871,8 @@ import UIKit
|
|||||||
//==============================================================================
|
//==============================================================================
|
||||||
// Touch event handling
|
// Touch event handling
|
||||||
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
|
|
||||||
|
|
||||||
self.touchBegan = true
|
self.touchBegan = true
|
||||||
super.touchesBegan(touches, with: event)
|
super.touchesBegan(touches, with: event)
|
||||||
self.isMultipleTouchEnabled = self.keyString == "MOUSEPAD" // only enable multi-touch in mousePad mode
|
self.isMultipleTouchEnabled = self.keyString == "MOUSEPAD" // only enable multi-touch in mousePad mode
|
||||||
@@ -910,7 +923,7 @@ import UIKit
|
|||||||
self.l3r3Indicator = self.createAndShowl3r3Indicator()
|
self.l3r3Indicator = self.createAndShowl3r3Indicator()
|
||||||
self.onScreenControls.pressDownControllerButton(LS_CLK_FLAG)}
|
self.onScreenControls.pressDownControllerButton(LS_CLK_FLAG)}
|
||||||
break
|
break
|
||||||
case "RSVPAD":
|
case "RSVPAD", "YSRSV":
|
||||||
if quickDoubleTapDetected {
|
if quickDoubleTapDetected {
|
||||||
self.l3r3Indicator = self.createAndShowl3r3Indicator()
|
self.l3r3Indicator = self.createAndShowl3r3Indicator()
|
||||||
self.onScreenControls.pressDownControllerButton(RS_CLK_FLAG)}
|
self.onScreenControls.pressDownControllerButton(RS_CLK_FLAG)}
|
||||||
@@ -990,8 +1003,8 @@ import UIKit
|
|||||||
|
|
||||||
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
super.touchesMoved(touches, with: event)
|
super.touchesMoved(touches, with: event)
|
||||||
|
|
||||||
if !OnScreenWidgetView.editMode {
|
if !OnScreenWidgetView.editMode {
|
||||||
|
|
||||||
handleTouchPadMoveEvent(touches, with: event)
|
handleTouchPadMoveEvent(touches, with: event)
|
||||||
|
|
||||||
if CommandManager.specialOverlayButtonCmds.contains(self.keyString){
|
if CommandManager.specialOverlayButtonCmds.contains(self.keyString){
|
||||||
@@ -1010,6 +1023,7 @@ import UIKit
|
|||||||
if let touch = touches.first {
|
if let touch = touches.first {
|
||||||
self.moveByTouch(touch: touch)
|
self.moveByTouch(touch: touch)
|
||||||
}
|
}
|
||||||
|
|
||||||
if CommandManager.nonVectorStickPads.contains(self.keyString) {
|
if CommandManager.nonVectorStickPads.contains(self.keyString) {
|
||||||
self.stickBallLayer.removeFromSuperlayer()
|
self.stickBallLayer.removeFromSuperlayer()
|
||||||
self.crossMarkLayer.removeFromSuperlayer()
|
self.crossMarkLayer.removeFromSuperlayer()
|
||||||
@@ -1039,7 +1053,7 @@ import UIKit
|
|||||||
updateStickIndicator()
|
updateStickIndicator()
|
||||||
case "LSVPAD":
|
case "LSVPAD":
|
||||||
self.sendLeftStickTouchPadEvent(inputX: deltaX*1.5167*sensitivityFactor, inputY: deltaY*1.5167*sensitivityFactor)
|
self.sendLeftStickTouchPadEvent(inputX: deltaX*1.5167*sensitivityFactor, inputY: deltaY*1.5167*sensitivityFactor)
|
||||||
case "RSVPAD", "YSB", "YSRT", "YSRB":
|
case "RSVPAD", "YSB", "YSRT", "YSRB", "YSRSV":
|
||||||
self.sendRightStickTouchPadEvent(inputX: deltaX*1.5167*sensitivityFactor, inputY: deltaY*1.5167*sensitivityFactor);
|
self.sendRightStickTouchPadEvent(inputX: deltaX*1.5167*sensitivityFactor, inputY: deltaY*1.5167*sensitivityFactor);
|
||||||
case "DPAD", "WASDPAD", "ARROWPAD", "YSWASD":
|
case "DPAD", "WASDPAD", "ARROWPAD", "YSWASD":
|
||||||
handleLrudTouchMove()
|
handleLrudTouchMove()
|
||||||
@@ -1053,11 +1067,14 @@ import UIKit
|
|||||||
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
|
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||||
self.touchBegan = false
|
self.touchBegan = false
|
||||||
super.touchesEnded(touches, with: event)
|
super.touchesEnded(touches, with: event)
|
||||||
|
|
||||||
|
// for checking stationary touch points
|
||||||
|
|
||||||
if self.keyString != "MOUSEPAD" {quickDoubleTapDetected = false} //do not reset this flag here in mousePad mode
|
if self.keyString != "MOUSEPAD" {quickDoubleTapDetected = false} //do not reset this flag here in mousePad mode
|
||||||
|
|
||||||
let allCapturedTouchesCount = event?.allTouches?.filter({ $0.view == self }).count // this will counts all valid touches within the self widgetView, and excludes touches in other widgetViews
|
let allCapturedTouchesCount = event?.allTouches?.filter({ $0.view == self }).count // this will counts all valid touches within the self widgetView, and excludes touches in other widgetViews
|
||||||
|
|
||||||
|
|
||||||
// deal with MOUSPAD first
|
// deal with MOUSPAD first
|
||||||
if !OnScreenWidgetView.editMode && self.keyString == "MOUSEPAD" && allCapturedTouchesCount == 1 && !twoTouchesDetected {
|
if !OnScreenWidgetView.editMode && self.keyString == "MOUSEPAD" && allCapturedTouchesCount == 1 && !twoTouchesDetected {
|
||||||
if !mousePointerMoved && !quickDoubleTapDetected {self.sendLongMouseLeftButtonClickEvent()} // deal with single tap(click)
|
if !mousePointerMoved && !quickDoubleTapDetected {self.sendLongMouseLeftButtonClickEvent()} // deal with single tap(click)
|
||||||
@@ -1088,7 +1105,7 @@ import UIKit
|
|||||||
self.resetStickBallPositionAndRemoveIndicator()
|
self.resetStickBallPositionAndRemoveIndicator()
|
||||||
case "LSVPAD":
|
case "LSVPAD":
|
||||||
self.onScreenControls.clearLeftStickTouchPadFlag()
|
self.onScreenControls.clearLeftStickTouchPadFlag()
|
||||||
case "RSVPAD", "YSB", "YSRT", "YSRB":
|
case "RSVPAD", "YSB", "YSRT", "YSRB", "YSRSV":
|
||||||
self.onScreenControls.clearRightStickTouchPadFlag()
|
self.onScreenControls.clearRightStickTouchPadFlag()
|
||||||
case "WASDPAD","YSWASD":
|
case "WASDPAD","YSWASD":
|
||||||
LiSendKeyboardEvent(CommandManager.keyboardButtonMappings["W"]!,Int8(KEY_ACTION_UP), 0)
|
LiSendKeyboardEvent(CommandManager.keyboardButtonMappings["W"]!,Int8(KEY_ACTION_UP), 0)
|
||||||
|
|||||||
+1
-1
@@ -466,7 +466,7 @@
|
|||||||
[self.widgetAlphaSlider setValue: self->selectedWidgetView.backgroundAlpha];
|
[self.widgetAlphaSlider setValue: self->selectedWidgetView.backgroundAlpha];
|
||||||
[self.widgetBorderWidthSlider setValue:self->selectedWidgetView.borderWidth];
|
[self.widgetBorderWidthSlider setValue:self->selectedWidgetView.borderWidth];
|
||||||
|
|
||||||
NSSet *stickAndMouseTouchpads = [NSSet setWithObjects:@"YSB", @"YSLT", @"YSRT", @"YSRB",@"YSB2", @"YSRT2", @"YSRB2", @"YSEM", @"YSML", @"YSMR", @"LSPAD", @"RSPAD", @"LSVPAD", @"RSVPAD", @"MOUSEPAD", nil];
|
NSSet *stickAndMouseTouchpads = [NSSet setWithObjects:@"YSRSV", @"YSB", @"YSLT", @"YSRT", @"YSRB",@"YSB2", @"YSRT2", @"YSRB2", @"YSEM", @"YSML", @"YSMR", @"LSPAD", @"RSPAD", @"LSVPAD", @"RSVPAD", @"MOUSEPAD", nil];
|
||||||
NSSet *nonVectorStickPads = [NSSet setWithObjects: @"LSPAD", @"RSPAD", nil];
|
NSSet *nonVectorStickPads = [NSSet setWithObjects: @"LSPAD", @"RSPAD", nil];
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user