adjustable on screen controller layer transparency
No files matched your search
@@ -850,7 +850,7 @@ ICAgICAgICAgICAgICA
|
|||||||
<color key="backgroundColor" systemColor="secondaryLabelColor"/>
|
<color key="backgroundColor" systemColor="secondaryLabelColor"/>
|
||||||
<color key="tintColor" red="0.6716768742" green="0.61711704730000005" blue="0.99902987480000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="tintColor" red="0.6716768742" green="0.61711704730000005" blue="0.99902987480000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
</slider>
|
</slider>
|
||||||
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.001" maxValue="1" id="ZLL-pE-iZh" userLabel="Button Alpha Slider">
|
<slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.83299999999999996" minValue="0.23000000000000001" maxValue="0.999" id="ZLL-pE-iZh" userLabel="Button Alpha Slider">
|
||||||
<rect key="frame" x="207" y="249" width="420" height="31"/>
|
<rect key="frame" x="207" y="249" width="420" height="31"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
<color key="backgroundColor" systemColor="secondaryLabelColor"/>
|
<color key="backgroundColor" systemColor="secondaryLabelColor"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
@@ -271,7 +271,10 @@ static NSMutableDictionary *onScreenButtonViewsDict;
|
|||||||
// add hidden attr here
|
// add hidden attr here
|
||||||
buttonState.isHidden = oscButtonLayer.isHidden;
|
buttonState.isHidden = oscButtonLayer.isHidden;
|
||||||
buttonState.oscLayerSizeFactor = [OnScreenControls getControllerLayerSizeFactor:oscButtonLayer];
|
buttonState.oscLayerSizeFactor = [OnScreenControls getControllerLayerSizeFactor:oscButtonLayer];
|
||||||
NSLog(@"oscLayerName: %@, sizeFactor: %f", oscButtonLayer.name, buttonState.oscLayerSizeFactor);
|
buttonState.backgroundAlpha = oscButtonLayer.opacity;
|
||||||
|
NSLog(@"oscLayerName: %@, opacity: %f, ", oscButtonLayer.name, buttonState.backgroundAlpha);
|
||||||
|
|
||||||
|
|
||||||
// buttonState.oscLayerSizeFactor = oscButtonLayer.bounds;
|
// buttonState.oscLayerSizeFactor = oscButtonLayer.bounds;
|
||||||
|
|
||||||
NSData *buttonStateEncoded = [NSKeyedArchiver archivedDataWithRootObject:buttonState requiringSecureCoding:YES error:nil];
|
NSData *buttonStateEncoded = [NSKeyedArchiver archivedDataWithRootObject:buttonState requiringSecureCoding:YES error:nil];
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ import UIKit
|
|||||||
borderAlpha = minimumBorderAlpha
|
borderAlpha = minimumBorderAlpha
|
||||||
}
|
}
|
||||||
|
|
||||||
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha)
|
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha - 0.18) // offset to be consistent with onScreen controller layer opacity
|
||||||
self.layer.borderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
self.layer.borderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ import UIKit
|
|||||||
self.layer.borderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
self.layer.borderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
||||||
self.layer.borderWidth = 1
|
self.layer.borderWidth = 1
|
||||||
self.layer.cornerRadius = 20
|
self.layer.cornerRadius = 20
|
||||||
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha)
|
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha - 0.18) // offset to be consistent with OSC opacity
|
||||||
self.layer.shadowColor = UIColor.clear.cgColor
|
self.layer.shadowColor = UIColor.clear.cgColor
|
||||||
self.layer.shadowRadius = 8
|
self.layer.shadowRadius = 8
|
||||||
self.layer.shadowOpacity = 0.5
|
self.layer.shadowOpacity = 0.5
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#import "ControllerSupport.h"
|
#import "ControllerSupport.h"
|
||||||
#import "CustomTapGestureRecognizer.h"
|
#import "CustomTapGestureRecognizer.h"
|
||||||
#import "OSCProfile.h"
|
#import "OSCProfile.h"
|
||||||
|
#define MIN_CONTROLLER_LAYER_ALPHA 0.23
|
||||||
|
|
||||||
@class ControllerSupport;
|
@class ControllerSupport;
|
||||||
@class StreamConfiguration;
|
@class StreamConfiguration;
|
||||||
@@ -20,7 +21,9 @@ static const float BUTTON_DIST = 20;
|
|||||||
@interface OnScreenControls : NSObject{
|
@interface OnScreenControls : NSObject{
|
||||||
@protected
|
@protected
|
||||||
CGFloat _leftStickSizeFactor;
|
CGFloat _leftStickSizeFactor;
|
||||||
|
CGFloat _leftStickOpacity;
|
||||||
CGFloat _rightStickSizeFactor;
|
CGFloat _rightStickSizeFactor;
|
||||||
|
CGFloat _rightStickOpacity;
|
||||||
CGFloat _dPadSizeFactor;
|
CGFloat _dPadSizeFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,6 +108,8 @@ typedef NS_ENUM(NSInteger, OnScreenControlsLevel) {
|
|||||||
- (void) setAnalogStickPositions;
|
- (void) setAnalogStickPositions;
|
||||||
- (void) positionAndResizeSingleControllerLayers;
|
- (void) positionAndResizeSingleControllerLayers;
|
||||||
- (void) resizeControllerLayerWith:(CALayer*)layer and:(CGFloat)sizeFactor;
|
- (void) resizeControllerLayerWith:(CALayer*)layer and:(CGFloat)sizeFactor;
|
||||||
|
- (void) adjustControllerLayerOpacityWith:(CALayer*)layer and:(CGFloat)alpha;
|
||||||
+ (CGFloat) getControllerLayerSizeFactor:(CALayer*)layer;
|
+ (CGFloat) getControllerLayerSizeFactor:(CALayer*)layer;
|
||||||
|
- (CGFloat) getControllerLayerOpacity:(CALayer*)layer;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
#import "OSCProfilesManager.h"
|
#import "OSCProfilesManager.h"
|
||||||
#import "DataManager.h"
|
#import "DataManager.h"
|
||||||
|
|
||||||
|
|
||||||
#define UPDATE_BUTTON(x, y) (buttonFlags = \
|
#define UPDATE_BUTTON(x, y) (buttonFlags = \
|
||||||
(y) ? (buttonFlags | (x)) : (buttonFlags & ~(x)))
|
(y) ? (buttonFlags | (x)) : (buttonFlags & ~(x)))
|
||||||
|
|
||||||
@@ -70,6 +69,7 @@ static NSSet *validPositionButtonNames;
|
|||||||
CGFloat _oscTapExlusionAreaSizeFactor;
|
CGFloat _oscTapExlusionAreaSizeFactor;
|
||||||
OSCProfilesManager *profilesManager;
|
OSCProfilesManager *profilesManager;
|
||||||
NSMutableDictionary *_activeCustomOscButtonPositionDict;
|
NSMutableDictionary *_activeCustomOscButtonPositionDict;
|
||||||
|
NSMutableDictionary *_originalControllerLayerOpacityDict;
|
||||||
}
|
}
|
||||||
|
|
||||||
@synthesize D_PAD_CENTER_X;
|
@synthesize D_PAD_CENTER_X;
|
||||||
@@ -117,7 +117,7 @@ static float LS_CENTER_X;
|
|||||||
static float LS_CENTER_Y;
|
static float LS_CENTER_Y;
|
||||||
static float RS_CENTER_X;
|
static float RS_CENTER_X;
|
||||||
static float RS_CENTER_Y;
|
static float RS_CENTER_Y;
|
||||||
static const float STICK_OPACITY = 0.63;
|
static const float DEFAULT_STICK_OPACITY = 0.63;
|
||||||
|
|
||||||
static float START_X;
|
static float START_X;
|
||||||
static float START_Y;
|
static float START_Y;
|
||||||
@@ -160,6 +160,8 @@ static float L3_Y;
|
|||||||
if (streamConfig) {
|
if (streamConfig) {
|
||||||
_swapABXY = streamConfig.swapABXYButtons;
|
_swapABXY = streamConfig.swapABXYButtons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_originalControllerLayerOpacityDict = [[NSMutableDictionary alloc] init];
|
||||||
// we have to retrieve largerStickLR1 setting direct from the database, since streamConfig is invalid in LayoutOnScreenControls
|
// we have to retrieve largerStickLR1 setting direct from the database, since streamConfig is invalid in LayoutOnScreenControls
|
||||||
DataManager* dataMan = [[DataManager alloc] init];
|
DataManager* dataMan = [[DataManager alloc] init];
|
||||||
Settings* settings = [dataMan retrieveSettings];
|
Settings* settings = [dataMan retrieveSettings];
|
||||||
@@ -282,20 +284,20 @@ static float L3_Y;
|
|||||||
if(self._level == OnScreenControlsLevelCustom){
|
if(self._level == OnScreenControlsLevelCustom){
|
||||||
// mark all OSC buttons that has valid coords of positions
|
// mark all OSC buttons that has valid coords of positions
|
||||||
validPositionButtonNames = [NSSet setWithObjects:
|
validPositionButtonNames = [NSSet setWithObjects:
|
||||||
@"l2Button",
|
@"l2Button",
|
||||||
@"l1Button",
|
@"l1Button",
|
||||||
@"dPad",
|
@"dPad",
|
||||||
@"selectButton",
|
@"selectButton",
|
||||||
@"leftStickBackground",
|
@"leftStickBackground",
|
||||||
@"rightStickBackground",
|
@"rightStickBackground",
|
||||||
@"r2Button",
|
@"r2Button",
|
||||||
@"r1Button",
|
@"r1Button",
|
||||||
@"aButton",
|
@"aButton",
|
||||||
@"bButton",
|
@"bButton",
|
||||||
@"xButton",
|
@"xButton",
|
||||||
@"yButton",
|
@"yButton",
|
||||||
@"startButton",
|
@"startButton",
|
||||||
nil];
|
nil];
|
||||||
|
|
||||||
// _activeCustomOscButtonPositionDict will be updated every time when the osc profile is reloaded
|
// _activeCustomOscButtonPositionDict will be updated every time when the osc profile is reloaded
|
||||||
OSCProfile *oscProfile = [profilesManager getSelectedProfile]; //returns the currently selected OSCProfile
|
OSCProfile *oscProfile = [profilesManager getSelectedProfile]; //returns the currently selected OSCProfile
|
||||||
@@ -309,14 +311,18 @@ static float L3_Y;
|
|||||||
NSLog(@"_activeCustomOscButtonPositionDict update, button name:%@, position: %f, %f", buttonState.name, buttonState.position.x, buttonState.position.y);
|
NSLog(@"_activeCustomOscButtonPositionDict update, button name:%@, position: %f, %f", buttonState.name, buttonState.position.x, buttonState.position.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
// retrieve complex control size factors
|
// retrieve size factors & other necessary configurations for complex control
|
||||||
if([buttonState.name isEqualToString:@"leftStick"]){
|
if([buttonState.name isEqualToString:@"leftStick"]){
|
||||||
_leftStickSizeFactor = buttonState.oscLayerSizeFactor;
|
_leftStickSizeFactor = buttonState.oscLayerSizeFactor;
|
||||||
if(_leftStickSizeFactor == 0) _leftStickSizeFactor = 1.0; // dealing with invalid sizefactor
|
if(_leftStickSizeFactor == 0) _leftStickSizeFactor = 1.0; // dealing with invalid sizefactor
|
||||||
|
_leftStickOpacity = buttonState.backgroundAlpha;
|
||||||
|
if(_leftStickOpacity == 0 ) _leftStickOpacity = DEFAULT_STICK_OPACITY; // dealing with invalid sizefactor
|
||||||
}
|
}
|
||||||
if([buttonState.name isEqualToString:@"rightStick"]){
|
if([buttonState.name isEqualToString:@"rightStick"]){
|
||||||
_rightStickSizeFactor = buttonState.oscLayerSizeFactor;
|
_rightStickSizeFactor = buttonState.oscLayerSizeFactor;
|
||||||
if(_rightStickSizeFactor == 0) _rightStickSizeFactor = 1.0; // dealing with invalid sizefactor
|
if(_rightStickSizeFactor == 0) _rightStickSizeFactor = 1.0; // dealing with invalid sizefactor
|
||||||
|
_rightStickOpacity = buttonState.backgroundAlpha;
|
||||||
|
if(_rightStickOpacity == 0) _rightStickOpacity = DEFAULT_STICK_OPACITY; // dealing with invalid sizefactor
|
||||||
}
|
}
|
||||||
if([buttonState.name isEqualToString:@"upButton"]){
|
if([buttonState.name isEqualToString:@"upButton"]){
|
||||||
_dPadSizeFactor = buttonState.oscLayerSizeFactor / 0.982759;
|
_dPadSizeFactor = buttonState.oscLayerSizeFactor / 0.982759;
|
||||||
@@ -325,7 +331,13 @@ static float L3_Y;
|
|||||||
}
|
}
|
||||||
NSLog(@"_activeCustomOscButtonPositionDict update, active button number: %lu", (unsigned long)[_activeCustomOscButtonPositionDict count]);
|
NSLog(@"_activeCustomOscButtonPositionDict update, active button number: %lu", (unsigned long)[_activeCustomOscButtonPositionDict count]);
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
// deal with simple & full mode configurations
|
||||||
|
_leftStickSizeFactor = _rightStickSizeFactor = 1.0;
|
||||||
|
_leftStickOpacity = _rightStickOpacity = DEFAULT_STICK_OPACITY;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSLog(@"rightStickOpacity: %f", _rightStickOpacity);
|
||||||
|
|
||||||
// belows are orginal codes:
|
// belows are orginal codes:
|
||||||
switch (self._level) {
|
switch (self._level) {
|
||||||
@@ -381,6 +393,7 @@ static float L3_Y;
|
|||||||
[self hideSticks];
|
[self hideSticks];
|
||||||
[self drawStartSelect];
|
[self drawStartSelect];
|
||||||
[self drawButtons];
|
[self drawButtons];
|
||||||
|
[self setOpacityForStandardControllerLayers];
|
||||||
break;
|
break;
|
||||||
case OnScreenControlsLevelFull:
|
case OnScreenControlsLevelFull:
|
||||||
|
|
||||||
@@ -391,6 +404,7 @@ static float L3_Y;
|
|||||||
[self drawTriggers];
|
[self drawTriggers];
|
||||||
[self drawSticks];
|
[self drawSticks];
|
||||||
[self hideL3R3]; // Full controls don't need these they have the sticks
|
[self hideL3R3]; // Full controls don't need these they have the sticks
|
||||||
|
[self setOpacityForStandardControllerLayers];
|
||||||
break;
|
break;
|
||||||
case OnScreenControlsLevelCustom:
|
case OnScreenControlsLevelCustom:
|
||||||
|
|
||||||
@@ -403,12 +417,18 @@ static float L3_Y;
|
|||||||
[self drawTriggers];
|
[self drawTriggers];
|
||||||
[self drawSticks];
|
[self drawSticks];
|
||||||
[self positionAndResizeSingleControllerLayers];
|
[self positionAndResizeSingleControllerLayers];
|
||||||
|
[self setOpacityForCutsomControllerLayers];
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Log(LOG_W, @"Unknown on-screen controls level: %d", (int)_level);
|
Log(LOG_W, @"Unknown on-screen controls level: %d", (int)_level);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// populate the controllerLayer.name -> Opacity dictionary... have to do this in order to make touchdown visual effect consistent
|
||||||
|
for (CALayer* controllerLayer in self.OSCButtonLayers){
|
||||||
|
[_originalControllerLayerOpacityDict setObject:@(controllerLayer.opacity) forKey:controllerLayer.name];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// For GCExtendedGamepad controls we move start, select, L3, and R3 to the button
|
// For GCExtendedGamepad controls we move start, select, L3, and R3 to the button
|
||||||
@@ -581,12 +601,19 @@ static float L3_Y;
|
|||||||
_yButton.contents = (id) yButtonHdImage.CGImage;
|
_yButton.contents = (id) yButtonHdImage.CGImage;
|
||||||
[_view.layer addSublayer:_yButton];
|
[_view.layer addSublayer:_yButton];
|
||||||
|
|
||||||
|
|
||||||
|
if(self._level == OnScreenControlsLevelFull ||
|
||||||
|
self._level == OnScreenControlsLevelSimple){
|
||||||
|
_dPadSizeFactor = 1.0;
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate the distances of each button from the shared center based on their transformed positions
|
// Calculate the distances of each button from the shared center based on their transformed positions
|
||||||
CGFloat newDPadDistFactor = 0.2/_dPadSizeFactor;
|
CGFloat newDPadDistFactor = 0.2/_dPadSizeFactor;
|
||||||
CGFloat newLongSideLength = standardLeftRightButtonBounds.size.width * _dPadSizeFactor;
|
CGFloat newLongSideLength = standardLeftRightButtonBounds.size.width * _dPadSizeFactor;
|
||||||
CGFloat newShortSideLength = standardLeftRightButtonBounds.size.height * _dPadSizeFactor;
|
CGFloat newShortSideLength = standardLeftRightButtonBounds.size.height * _dPadSizeFactor;
|
||||||
CGPoint sharedCenter = CGPointMake(D_PAD_CENTER_X, D_PAD_CENTER_Y); // this will anchor the center point of the dPad
|
CGPoint sharedCenter = CGPointMake(D_PAD_CENTER_X, D_PAD_CENTER_Y); // this will anchor the center point of the dPad
|
||||||
|
|
||||||
|
|
||||||
// dPad buttons are resized HERE
|
// dPad buttons are resized HERE
|
||||||
// up button
|
// up button
|
||||||
// UIImage* upButtonImage = [UIImage imageNamed:@"UpButton"];
|
// UIImage* upButtonImage = [UIImage imageNamed:@"UpButton"];
|
||||||
@@ -713,6 +740,60 @@ static float L3_Y;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) setOpacityForStandardControllerLayers {
|
||||||
|
for(CALayer* oscLayer in self.OSCButtonLayers){
|
||||||
|
if(oscLayer == self._leftStick ||
|
||||||
|
oscLayer == self._rightStick){
|
||||||
|
oscLayer.opacity = DEFAULT_STICK_OPACITY;
|
||||||
|
} else if(oscLayer == self._leftStickBackground ||
|
||||||
|
oscLayer == self._rightStickBackground){
|
||||||
|
oscLayer.opacity = 1.0;
|
||||||
|
} else{
|
||||||
|
oscLayer.opacity = 5.0f/6.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (void) setOpacityForCutsomControllerLayers {
|
||||||
|
OSCProfile *oscProfile = [profilesManager getSelectedProfile];
|
||||||
|
bool defaultProfileSelected = [profilesManager getIndexOfSelectedProfile] == 0;
|
||||||
|
|
||||||
|
for (NSData *buttonStateEncoded in oscProfile.buttonStates) {
|
||||||
|
OnScreenButtonState *buttonStateDecoded = [NSKeyedUnarchiver unarchivedObjectOfClass:[OnScreenButtonState class] fromData:buttonStateEncoded error:nil];
|
||||||
|
for (CALayer *buttonLayer in self.OSCButtonLayers) { // iterate through each button layer on screen
|
||||||
|
// Here we deal with resizing single layer controllers only
|
||||||
|
if ([buttonLayer.name isEqualToString:buttonStateDecoded.name]) {
|
||||||
|
if ([buttonLayer.name isEqualToString:@"l1Button"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"r1Button"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"l2Button"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"r2Button"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"aButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"bButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"xButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"yButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"selectButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"startButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"upButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"rightButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"downButton"] ||
|
||||||
|
[buttonLayer.name isEqualToString:@"leftButton"]){
|
||||||
|
NSLog(@"layerName: %@, alpha: %f", buttonLayer.name, buttonStateDecoded.backgroundAlpha);
|
||||||
|
[self adjustControllerLayerOpacityWith:buttonLayer and:buttonStateDecoded.backgroundAlpha];
|
||||||
|
}
|
||||||
|
if([buttonLayer.name isEqualToString:@"leftStickBackground"]){
|
||||||
|
[self adjustControllerLayerOpacityWith:buttonLayer and:_leftStickOpacity];
|
||||||
|
}
|
||||||
|
if([buttonLayer.name isEqualToString:@"rightStickBackground"]){
|
||||||
|
[self adjustControllerLayerOpacityWith:buttonLayer and:_rightStickOpacity];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (void) drawStartSelect {
|
- (void) drawStartSelect {
|
||||||
// create Start button
|
// create Start button
|
||||||
UIImage* startButtonImage = [UIImage imageNamed:@"StartButton"];
|
UIImage* startButtonImage = [UIImage imageNamed:@"StartButton"];
|
||||||
@@ -788,7 +869,7 @@ static float L3_Y;
|
|||||||
UIImage* stickHdImage = [UIImage imageNamed:@"StickInnerHD"];
|
UIImage* stickHdImage = [UIImage imageNamed:@"StickInnerHD"];
|
||||||
_leftStick.frame = CGRectMake(LS_CENTER_X - leftStickImage.size.width / 2, LS_CENTER_Y - leftStickImage.size.height / 2, leftStickImage.size.width, leftStickImage.size.height);
|
_leftStick.frame = CGRectMake(LS_CENTER_X - leftStickImage.size.width / 2, LS_CENTER_Y - leftStickImage.size.height / 2, leftStickImage.size.width, leftStickImage.size.height);
|
||||||
_leftStick.contents = (id) stickHdImage.CGImage;
|
_leftStick.contents = (id) stickHdImage.CGImage;
|
||||||
_leftStick.opacity = STICK_OPACITY; // make stick half transparent when it's idle
|
_leftStick.opacity = _leftStickOpacity; // make stick half transparent when it's idle
|
||||||
[_view.layer addSublayer:_leftStick];
|
[_view.layer addSublayer:_leftStick];
|
||||||
|
|
||||||
// create right analog stick
|
// create right analog stick
|
||||||
@@ -803,7 +884,7 @@ static float L3_Y;
|
|||||||
_rightStick.frame = CGRectMake(RS_CENTER_X - rightStickImage.size.width / 2, RS_CENTER_Y - rightStickImage.size.height / 2, rightStickImage.size.width, rightStickImage.size.height);
|
_rightStick.frame = CGRectMake(RS_CENTER_X - rightStickImage.size.width / 2, RS_CENTER_Y - rightStickImage.size.height / 2, rightStickImage.size.width, rightStickImage.size.height);
|
||||||
|
|
||||||
_rightStick.contents = (id) stickHdImage.CGImage;
|
_rightStick.contents = (id) stickHdImage.CGImage;
|
||||||
_rightStick.opacity = STICK_OPACITY; // make stick half transparent when it's idle
|
_rightStick.opacity = _rightStickOpacity; // make stick half transparent when it's idle
|
||||||
[_view.layer addSublayer:_rightStick];
|
[_view.layer addSublayer:_rightStick];
|
||||||
|
|
||||||
// make stick larger
|
// make stick larger
|
||||||
@@ -947,25 +1028,37 @@ static float L3_Y;
|
|||||||
[_controllerSupport setButtonFlag:_controller flags:UP_FLAG];
|
[_controllerSupport setButtonFlag:_controller flags:UP_FLAG];
|
||||||
[self oscButtonTouchDownVisualEffect:_upButton];
|
[self oscButtonTouchDownVisualEffect:_upButton];
|
||||||
updated = true;
|
updated = true;
|
||||||
} else _upButton.shadowOpacity = 0.0;
|
} else {
|
||||||
|
_upButton.opacity = [_originalControllerLayerOpacityDict[_upButton.name] floatValue];
|
||||||
|
_upButton.shadowOpacity = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
if ([_downButton.presentationLayer hitTest:touchLocation]) {
|
if ([_downButton.presentationLayer hitTest:touchLocation]) {
|
||||||
[_controllerSupport setButtonFlag:_controller flags:DOWN_FLAG];
|
[_controllerSupport setButtonFlag:_controller flags:DOWN_FLAG];
|
||||||
[self oscButtonTouchDownVisualEffect:_downButton];
|
[self oscButtonTouchDownVisualEffect:_downButton];
|
||||||
updated = true;
|
updated = true;
|
||||||
} else _downButton.shadowOpacity = 0.0;
|
} else {
|
||||||
|
_downButton.opacity = [_originalControllerLayerOpacityDict[_downButton.name] floatValue];
|
||||||
|
_downButton.shadowOpacity = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
if ([_leftButton.presentationLayer hitTest:touchLocation]) {
|
if ([_leftButton.presentationLayer hitTest:touchLocation]) {
|
||||||
[_controllerSupport setButtonFlag:_controller flags:LEFT_FLAG];
|
[_controllerSupport setButtonFlag:_controller flags:LEFT_FLAG];
|
||||||
[self oscButtonTouchDownVisualEffect:_leftButton];
|
[self oscButtonTouchDownVisualEffect:_leftButton];
|
||||||
updated = true;
|
updated = true;
|
||||||
} else _leftButton.shadowOpacity = 0.0;
|
} else {
|
||||||
|
_leftButton.opacity = [_originalControllerLayerOpacityDict[_leftButton.name] floatValue];
|
||||||
|
_leftButton.shadowOpacity = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
if ([_rightButton.presentationLayer hitTest:touchLocation]) {
|
if ([_rightButton.presentationLayer hitTest:touchLocation]) {
|
||||||
[_controllerSupport setButtonFlag:_controller flags:RIGHT_FLAG];
|
[_controllerSupport setButtonFlag:_controller flags:RIGHT_FLAG];
|
||||||
[self oscButtonTouchDownVisualEffect:_rightButton];
|
[self oscButtonTouchDownVisualEffect:_rightButton];
|
||||||
updated = true;
|
updated = true;
|
||||||
} else _rightButton.shadowOpacity = 0.0;
|
} else {
|
||||||
|
_rightButton.opacity = [_originalControllerLayerOpacityDict[_rightButton.name] floatValue];
|
||||||
|
_rightButton.shadowOpacity = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
buttonTouch = true;
|
buttonTouch = true;
|
||||||
} else if (touch == _aTouch) {
|
} else if (touch == _aTouch) {
|
||||||
@@ -1005,28 +1098,34 @@ static float L3_Y;
|
|||||||
|
|
||||||
|
|
||||||
- (void)oscButtonTouchDownVisualEffect:(CALayer* )button{
|
- (void)oscButtonTouchDownVisualEffect:(CALayer* )button{
|
||||||
[CATransaction begin];
|
[CATransaction begin];
|
||||||
[CATransaction setDisableActions:YES]; // Disable implicit animations
|
[CATransaction setDisableActions:YES]; // Disable implicit animations
|
||||||
|
|
||||||
button.borderColor = [UIColor clearColor].CGColor; // Color of the outline
|
/*
|
||||||
button.borderWidth = 20; // Width of the outline
|
if(![[_originalControllerLayerOpacityDict allKeys] containsObject:button.name]){
|
||||||
button.cornerRadius = button.bounds.size.width/2;
|
[_originalControllerLayerOpacityDict setObject:@(button.opacity) forKey:button.name];
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// 使用 shadowPath 定义阴影形状和扩展范围
|
button.opacity = 0.9; // set a high opacity to ensure visibility of visual effect
|
||||||
CGFloat spread = 15; // 扩散的大小
|
button.borderColor = [UIColor clearColor].CGColor; // Color of the outline
|
||||||
if([button.name isEqualToString:@"leftStick"] || [button.name isEqualToString:@"rightStick"]) spread = 12;
|
button.borderWidth = 20; // Width of the outline
|
||||||
CGRect largerRect = CGRectInset(button.bounds, -spread, -spread);
|
button.cornerRadius = button.bounds.size.width/2;
|
||||||
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRoundedRect:largerRect cornerRadius:button.cornerRadius];
|
|
||||||
button.shadowPath = shadowPath.CGPath;
|
|
||||||
|
|
||||||
//button.shadowColor = [[UIColor colorWithRed:0/255.0 green:110/255.0 blue:255/255.0 alpha:1.0] colorWithAlphaComponent:0.7].CGColor;
|
// 使用 shadowPath 定义阴影形状和扩展范围
|
||||||
button.shadowColor = [[UIColor colorWithRed:0.5 green:0.5 blue:1.0 alpha:0.85] colorWithAlphaComponent:0.80].CGColor;
|
CGFloat spread = 15; // 扩散的大小
|
||||||
|
if([button.name isEqualToString:@"leftStick"] || [button.name isEqualToString:@"rightStick"]) spread = 12;
|
||||||
|
CGRect largerRect = CGRectInset(button.bounds, -spread, -spread);
|
||||||
|
UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRoundedRect:largerRect cornerRadius:button.cornerRadius];
|
||||||
|
button.shadowPath = shadowPath.CGPath;
|
||||||
|
|
||||||
//button.shadowColor = [UIColor colorWithRed:0/255.0 green:51/255.0 blue:102/255.0 alpha:0.6].CGColor;
|
//button.shadowColor = [[UIColor colorWithRed:0/255.0 green:110/255.0 blue:255/255.0 alpha:1.0] colorWithAlphaComponent:0.7].CGColor;
|
||||||
button.shadowOffset = CGSizeZero;
|
button.shadowColor = [[UIColor colorWithRed:0.5 green:0.5 blue:1.0 alpha:1] colorWithAlphaComponent:1].CGColor;
|
||||||
button.shadowOpacity = 1.0;
|
//button.shadowColor = [UIColor colorWithRed:0/255.0 green:51/255.0 blue:102/255.0 alpha:0.6].CGColor;
|
||||||
button.shadowRadius = 0.0; // Adjust the radius to simulate border thickness
|
button.shadowOffset = CGSizeZero;
|
||||||
[CATransaction commit];
|
button.shadowOpacity = 1.0;
|
||||||
|
button.shadowRadius = 0.0; // Adjust the radius to simulate border thickness
|
||||||
|
[CATransaction commit];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1246,66 +1345,81 @@ static float L3_Y;
|
|||||||
if (touch == _aTouch) {
|
if (touch == _aTouch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:A_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:A_FLAG];
|
||||||
_aTouch = nil;
|
_aTouch = nil;
|
||||||
|
_aButton.opacity = [_originalControllerLayerOpacityDict[_aButton.name] floatValue];
|
||||||
_aButton.shadowOpacity = 0.0; // reset button shadow & background color
|
_aButton.shadowOpacity = 0.0; // reset button shadow & background color
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _bTouch) {
|
} else if (touch == _bTouch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:B_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:B_FLAG];
|
||||||
_bTouch = nil;
|
_bTouch = nil;
|
||||||
|
_bButton.opacity = [_originalControllerLayerOpacityDict[_bButton.name] floatValue];
|
||||||
_bButton.shadowOpacity = 0.0;
|
_bButton.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _xTouch) {
|
} else if (touch == _xTouch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:X_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:X_FLAG];
|
||||||
_xTouch = nil;
|
_xTouch = nil;
|
||||||
|
_xButton.opacity = [_originalControllerLayerOpacityDict[_xButton.name] floatValue];
|
||||||
_xButton.shadowOpacity = 0.0;
|
_xButton.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _yTouch) {
|
} else if (touch == _yTouch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:Y_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:Y_FLAG];
|
||||||
_yTouch = nil;
|
_yTouch = nil;
|
||||||
|
_yButton.opacity = [_originalControllerLayerOpacityDict[_yButton.name] floatValue];
|
||||||
_yButton.shadowOpacity = 0.0;
|
_yButton.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _dpadTouch) {
|
} else if (touch == _dpadTouch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller
|
[_controllerSupport clearButtonFlag:_controller
|
||||||
flags:UP_FLAG | DOWN_FLAG | LEFT_FLAG | RIGHT_FLAG];
|
flags:UP_FLAG | DOWN_FLAG | LEFT_FLAG | RIGHT_FLAG];
|
||||||
_dpadTouch = nil;
|
_dpadTouch = nil;
|
||||||
|
_upButton.opacity = [_originalControllerLayerOpacityDict[_upButton.name] floatValue];
|
||||||
_upButton.shadowOpacity = 0.0;
|
_upButton.shadowOpacity = 0.0;
|
||||||
|
_leftButton.opacity = [_originalControllerLayerOpacityDict[_leftButton.name] floatValue];
|
||||||
_leftButton.shadowOpacity = 0.0;
|
_leftButton.shadowOpacity = 0.0;
|
||||||
|
_rightButton.opacity = [_originalControllerLayerOpacityDict[_rightButton.name] floatValue];
|
||||||
_rightButton.shadowOpacity = 0.0;
|
_rightButton.shadowOpacity = 0.0;
|
||||||
|
_downButton.opacity = [_originalControllerLayerOpacityDict[_downButton.name] floatValue];
|
||||||
_downButton.shadowOpacity = 0.0;
|
_downButton.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _startTouch) {
|
} else if (touch == _startTouch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:PLAY_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:PLAY_FLAG];
|
||||||
_startTouch = nil;
|
_startTouch = nil;
|
||||||
|
_startButton.opacity = [_originalControllerLayerOpacityDict[_startButton.name] floatValue];
|
||||||
_startButton.shadowOpacity = 0.0;
|
_startButton.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _selectTouch) {
|
} else if (touch == _selectTouch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:BACK_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:BACK_FLAG];
|
||||||
_selectTouch = nil;
|
_selectTouch = nil;
|
||||||
|
_selectButton.opacity = [_originalControllerLayerOpacityDict[_selectButton.name] floatValue];
|
||||||
_selectButton.shadowOpacity = 0.0;
|
_selectButton.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _l1Touch) {
|
} else if (touch == _l1Touch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:LB_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:LB_FLAG];
|
||||||
_l1Touch = nil;
|
_l1Touch = nil;
|
||||||
|
_l1Button.opacity = [_originalControllerLayerOpacityDict[_l1Button.name] floatValue];
|
||||||
_l1Button.shadowOpacity = 0.0;
|
_l1Button.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _r1Touch) {
|
} else if (touch == _r1Touch) {
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:RB_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:RB_FLAG];
|
||||||
_r1Touch = nil;
|
_r1Touch = nil;
|
||||||
|
_r1Button.opacity = [_originalControllerLayerOpacityDict[_r1Button.name] floatValue];
|
||||||
_r1Button.shadowOpacity = 0.0;
|
_r1Button.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _l2Touch) {
|
} else if (touch == _l2Touch) {
|
||||||
[_controllerSupport updateLeftTrigger:_controller left:0];
|
[_controllerSupport updateLeftTrigger:_controller left:0];
|
||||||
|
_l2Button.opacity = [_originalControllerLayerOpacityDict[_l2Button.name] floatValue];
|
||||||
_l2Touch = nil;
|
_l2Touch = nil;
|
||||||
_l2Button.shadowOpacity = 0.0;
|
_l2Button.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _r2Touch) {
|
} else if (touch == _r2Touch) {
|
||||||
[_controllerSupport updateRightTrigger:_controller right:0];
|
[_controllerSupport updateRightTrigger:_controller right:0];
|
||||||
|
_r2Button.opacity = [_originalControllerLayerOpacityDict[_r2Button.name] floatValue];
|
||||||
_r2Touch = nil;
|
_r2Touch = nil;
|
||||||
_r2Button.shadowOpacity = 0.0;
|
_r2Button.shadowOpacity = 0.0;
|
||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _lsTouch) {
|
} else if (touch == _lsTouch) {
|
||||||
_leftStick.frame = CGRectMake(LS_CENTER_X - LEFT_STICK_INNER_SIZE / 2, LS_CENTER_Y - LEFT_STICK_INNER_SIZE / 2, LEFT_STICK_INNER_SIZE, LEFT_STICK_INNER_SIZE);
|
_leftStick.frame = CGRectMake(LS_CENTER_X - LEFT_STICK_INNER_SIZE / 2, LS_CENTER_Y - LEFT_STICK_INNER_SIZE / 2, LEFT_STICK_INNER_SIZE, LEFT_STICK_INNER_SIZE);
|
||||||
|
_leftStick.opacity = [_originalControllerLayerOpacityDict[_leftStick.name] floatValue];
|
||||||
_leftStick.shadowOpacity = 0.0;
|
_leftStick.shadowOpacity = 0.0;
|
||||||
_leftStick.opacity = STICK_OPACITY; // reset stick to half transparent
|
_leftStick.opacity = _leftStickOpacity; // reset stick to half transparent
|
||||||
[_controllerSupport updateLeftStick:_controller x:0 y:0];
|
[_controllerSupport updateLeftStick:_controller x:0 y:0];
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:LS_CLK_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:LS_CLK_FLAG];
|
||||||
l3TouchStart = [NSDate date];
|
l3TouchStart = [NSDate date];
|
||||||
@@ -1313,8 +1427,9 @@ static float L3_Y;
|
|||||||
updated = true;
|
updated = true;
|
||||||
} else if (touch == _rsTouch) {
|
} else if (touch == _rsTouch) {
|
||||||
_rightStick.frame = CGRectMake(RS_CENTER_X - RIGHT_STICK_INNER_SIZE / 2, RS_CENTER_Y - RIGHT_STICK_INNER_SIZE / 2, RIGHT_STICK_INNER_SIZE, RIGHT_STICK_INNER_SIZE);
|
_rightStick.frame = CGRectMake(RS_CENTER_X - RIGHT_STICK_INNER_SIZE / 2, RS_CENTER_Y - RIGHT_STICK_INNER_SIZE / 2, RIGHT_STICK_INNER_SIZE, RIGHT_STICK_INNER_SIZE);
|
||||||
|
_rightStick.opacity = [_originalControllerLayerOpacityDict[_rightStick.name] floatValue];
|
||||||
_rightStick.shadowOpacity = 0.0;
|
_rightStick.shadowOpacity = 0.0;
|
||||||
_rightStick.opacity = STICK_OPACITY;
|
_rightStick.opacity = _rightStickOpacity;
|
||||||
[_controllerSupport updateRightStick:_controller x:0 y:0];
|
[_controllerSupport updateRightStick:_controller x:0 y:0];
|
||||||
[_controllerSupport clearButtonFlag:_controller flags:RS_CLK_FLAG];
|
[_controllerSupport clearButtonFlag:_controller flags:RS_CLK_FLAG];
|
||||||
r3TouchStart = [NSDate date];
|
r3TouchStart = [NSDate date];
|
||||||
@@ -1585,6 +1700,36 @@ static float L3_Y;
|
|||||||
return sizeFactor;
|
return sizeFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (CGFloat) getControllerLayerOpacity:(CALayer*)layer{
|
||||||
|
CGFloat opacity = 0.5;
|
||||||
|
if([layer.name isEqualToString:@"aButton"]||
|
||||||
|
[layer.name isEqualToString:@"bButton"] ||
|
||||||
|
[layer.name isEqualToString:@"xButton"] ||
|
||||||
|
[layer.name isEqualToString:@"yButton"] ||
|
||||||
|
[layer.name isEqualToString:@"l1Button"] ||
|
||||||
|
[layer.name isEqualToString:@"l2Button"] ||
|
||||||
|
[layer.name isEqualToString:@"r1Button"] ||
|
||||||
|
[layer.name isEqualToString:@"r2Button"] ||
|
||||||
|
[layer.name isEqualToString:@"selectButton"] ||
|
||||||
|
[layer.name isEqualToString:@"startButton"]){
|
||||||
|
opacity = layer.opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
if([layer.name isEqualToString:@"rightStickBackground"]){
|
||||||
|
opacity = self._rightStick.opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
if([layer.name isEqualToString:@"leftStickBackground"]){
|
||||||
|
opacity = self._leftStick.opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
if([layer.name isEqualToString:@"dPad"]){
|
||||||
|
opacity = self._leftButton.opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
return opacity;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
- (void) resizeControllerLayers{
|
- (void) resizeControllerLayers{
|
||||||
|
|
||||||
@@ -1674,9 +1819,58 @@ static float L3_Y;
|
|||||||
_leftButton.bounds = CGRectMake(0, 0, newLongSideLength, newShortSideLength);
|
_leftButton.bounds = CGRectMake(0, 0, newLongSideLength, newShortSideLength);
|
||||||
_leftButton.position = CGPointMake(sharedCenter.x, sharedCenter.y);
|
_leftButton.position = CGPointMake(sharedCenter.x, sharedCenter.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- (void) adjustControllerLayerOpacityWith:(CALayer*)layer and:(CGFloat)alpha{
|
||||||
|
// CALayer* superLayer = layer.superlayer;
|
||||||
|
// if(layerBeingDragged.name == @"")
|
||||||
|
CGFloat targetAlpha;
|
||||||
|
|
||||||
|
if(alpha == 0.0 || alpha == 1.0) targetAlpha = 5.0f/6.0f; // invalid alpha value
|
||||||
|
else targetAlpha = alpha;
|
||||||
|
|
||||||
|
NSLog(@"alphas: %f",targetAlpha);
|
||||||
|
|
||||||
|
if (layer == self._aButton ||
|
||||||
|
layer == self._bButton ||
|
||||||
|
layer == self._xButton ||
|
||||||
|
layer == self._yButton ||
|
||||||
|
layer == self._l1Button ||
|
||||||
|
layer == self._l2Button ||
|
||||||
|
layer == self._r1Button ||
|
||||||
|
layer == self._r2Button ||
|
||||||
|
layer == self._selectButton ||
|
||||||
|
layer == self._startButton ||
|
||||||
|
layer == self._upButton ||
|
||||||
|
layer == self._rightButton ||
|
||||||
|
layer == self._downButton ||
|
||||||
|
layer == self._leftButton){
|
||||||
|
// layer.backgroundColor = [UIColor clearColor].CGColor;
|
||||||
|
layer.opacity = targetAlpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (layer == self._dPadBackground ){
|
||||||
|
self._upButton.opacity = targetAlpha;
|
||||||
|
self._rightButton.opacity = targetAlpha;
|
||||||
|
self._downButton.opacity = targetAlpha;
|
||||||
|
self._leftButton.opacity = targetAlpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (layer == self._rightStickBackground) {
|
||||||
|
self._rightStick.opacity = targetAlpha;
|
||||||
|
self._rightStickBackground.opacity = targetAlpha + 1.0f/6.0f;
|
||||||
|
NSLog(@"right stick init alpha: %f", targetAlpha);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (layer == self._leftStickBackground){
|
||||||
|
self._leftStick.opacity = targetAlpha;
|
||||||
|
self._leftStickBackground.opacity = targetAlpha + 1.0f/6.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -391,15 +391,14 @@
|
|||||||
self->controllerLayerSelected = true;
|
self->controllerLayerSelected = true;
|
||||||
self->selectedControllerLayer = controllerLayer;
|
self->selectedControllerLayer = controllerLayer;
|
||||||
self->controllerLoadedBounds = controllerLayer.bounds;
|
self->controllerLoadedBounds = controllerLayer.bounds;
|
||||||
CGFloat sizeFactor = [OnScreenControls getControllerLayerSizeFactor:controllerLayer]; // calculated sizeFactor from loaded layer bounds.
|
|
||||||
|
|
||||||
// setup slider values
|
// setup slider values
|
||||||
[self.buttonAndControllerSizeSlider setValue: sizeFactor];
|
CGFloat sizeFactor = [OnScreenControls getControllerLayerSizeFactor:controllerLayer]; // calculated sizeFactor from loaded layer bounds.
|
||||||
|
[self.buttonAndControllerSizeSlider setValue:sizeFactor];
|
||||||
|
CGFloat alpha = [self.layoutOSC getControllerLayerOpacity:controllerLayer];
|
||||||
|
[self.buttonAndControllerAlphaSlider setValue:alpha];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (void)buttonAndControllerWidthSliderMoved{
|
- (void)buttonAndControllerWidthSliderMoved{
|
||||||
if(self->selectedButtonView != nil && self->buttonViewSelected){
|
if(self->selectedButtonView != nil && self->buttonViewSelected){
|
||||||
self->selectedButtonView.translatesAutoresizingMaskIntoConstraints = true; // this is mandatory to prevent unexpected key view location change
|
self->selectedButtonView.translatesAutoresizingMaskIntoConstraints = true; // this is mandatory to prevent unexpected key view location change
|
||||||
@@ -442,6 +441,10 @@
|
|||||||
if(self->selectedButtonView != nil && self->buttonViewSelected){
|
if(self->selectedButtonView != nil && self->buttonViewSelected){
|
||||||
[self->selectedButtonView adjustButtonTransparencyWithAlpha:self.buttonAndControllerAlphaSlider.value];
|
[self->selectedButtonView adjustButtonTransparencyWithAlpha:self.buttonAndControllerAlphaSlider.value];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(self->selectedControllerLayer != nil && self->controllerLayerSelected){
|
||||||
|
[self.layoutOSC adjustControllerLayerOpacityWith:self->selectedControllerLayer and:self.buttonAndControllerAlphaSlider.value];
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||