Dismiss popdown on sign out, fuel check date not recorded, avatar improvements.
This commit is contained in:
parent
8c3dfc8510
commit
5e8810c535
@ -44,7 +44,7 @@
|
|||||||
<key>2FE140B36B7D26140DC8D5E5C639DC5900EFCF35</key>
|
<key>2FE140B36B7D26140DC8D5E5C639DC5900EFCF35</key>
|
||||||
<string>../External/Pearl/External/uicolor-utilities</string>
|
<string>../External/Pearl/External/uicolor-utilities</string>
|
||||||
<key>304AD0F97EA7B4893D91DFB8C3413D4E627B9472</key>
|
<key>304AD0F97EA7B4893D91DFB8C3413D4E627B9472</key>
|
||||||
<string>../External/KCOrderedAccessorFix/</string>
|
<string>../External/KCOrderedAccessorFix</string>
|
||||||
<key>3E67FB08419C920516AAC3B00DAAF23073B8CF77</key>
|
<key>3E67FB08419C920516AAC3B00DAAF23073B8CF77</key>
|
||||||
<string>../External/RHStatusItemView</string>
|
<string>../External/RHStatusItemView</string>
|
||||||
<key>4DDCFFD91B41F00326AD14553BD66CFD366ABD91</key>
|
<key>4DDCFFD91B41F00326AD14553BD66CFD366ABD91</key>
|
||||||
|
@ -132,6 +132,8 @@ PearlAssociatedObjectProperty( NSMutableArray*, ProductObservers, productObserve
|
|||||||
float currentFuel = [[MPiOSConfig get].developmentFuel floatValue];
|
float currentFuel = [[MPiOSConfig get].developmentFuel floatValue];
|
||||||
float purchasedFuel = transaction.payment.quantity / MP_FUEL_HOURLY_RATE;
|
float purchasedFuel = transaction.payment.quantity / MP_FUEL_HOURLY_RATE;
|
||||||
[MPiOSConfig get].developmentFuel = @(currentFuel + purchasedFuel);
|
[MPiOSConfig get].developmentFuel = @(currentFuel + purchasedFuel);
|
||||||
|
if (![MPiOSConfig get].developmentFuelChecked || !currentFuel)
|
||||||
|
[MPiOSConfig get].developmentFuelChecked = [NSDate date];
|
||||||
}
|
}
|
||||||
[[NSUserDefaults standardUserDefaults] setObject:transaction.transactionIdentifier
|
[[NSUserDefaults standardUserDefaults] setObject:transaction.transactionIdentifier
|
||||||
forKey:transaction.payment.productIdentifier];
|
forKey:transaction.payment.productIdentifier];
|
||||||
|
@ -214,18 +214,20 @@ const long MPAvatarAdd = 10000;
|
|||||||
|
|
||||||
switch (self.mode) {
|
switch (self.mode) {
|
||||||
case MPAvatarModeLowered: {
|
case MPAvatarModeLowered: {
|
||||||
[self.avatarSizeConstraint updateConstant:self.avatarImageView.image.size.height];
|
[self.avatarSizeConstraint updateConstant:
|
||||||
|
self.avatarImageView.image.size.height * (self.visibility * 0.3f + 0.7f)];
|
||||||
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultLow];
|
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultLow];
|
||||||
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
||||||
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultLow];
|
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultLow];
|
||||||
self.nameContainer.alpha = self.visibility;
|
self.nameContainer.alpha = self.visibility;
|
||||||
self.nameContainer.backgroundColor = [UIColor clearColor];
|
self.nameContainer.backgroundColor = [UIColor clearColor];
|
||||||
self.avatarImageView.alpha = self.visibility / 0.7f + 0.3f;
|
self.avatarImageView.alpha = self.visibility * 0.7f + 0.3f;
|
||||||
self.avatarImageView.layer.shadowRadius = 15 * self.visibility * self.visibility;
|
self.avatarImageView.layer.shadowRadius = 15 * self.visibility * self.visibility;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MPAvatarModeRaisedButInactive: {
|
case MPAvatarModeRaisedButInactive: {
|
||||||
[self.avatarSizeConstraint updateConstant:self.avatarImageView.image.size.height];
|
[self.avatarSizeConstraint updateConstant:
|
||||||
|
self.avatarImageView.image.size.height * (self.visibility * 0.7f + 0.3f)];
|
||||||
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
||||||
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
||||||
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultLow];
|
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultLow];
|
||||||
@ -236,7 +238,8 @@ const long MPAvatarAdd = 10000;
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MPAvatarModeRaisedAndActive: {
|
case MPAvatarModeRaisedAndActive: {
|
||||||
[self.avatarSizeConstraint updateConstant:self.avatarImageView.image.size.height];
|
[self.avatarSizeConstraint updateConstant:
|
||||||
|
self.avatarImageView.image.size.height * (self.visibility * 0.7f + 0.3f)];
|
||||||
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
||||||
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
||||||
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
||||||
@ -247,7 +250,8 @@ const long MPAvatarAdd = 10000;
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MPAvatarModeRaisedAndHidden: {
|
case MPAvatarModeRaisedAndHidden: {
|
||||||
[self.avatarSizeConstraint updateConstant:self.avatarImageView.image.size.height];
|
[self.avatarSizeConstraint updateConstant:
|
||||||
|
self.avatarImageView.image.size.height * (self.visibility * 0.7f + 0.3f)];
|
||||||
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
[self.avatarRaisedConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
||||||
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
[self.avatarToTopConstraint updatePriority:UILayoutPriorityDefaultLow];
|
||||||
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
[self.nameToCenterConstraint updatePriority:UILayoutPriorityDefaultHigh];
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
@implementation MPPopdownSegue {
|
@implementation MPPopdownSegue {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char UnwindingObserverKey;
|
||||||
|
|
||||||
- (void)perform {
|
- (void)perform {
|
||||||
|
|
||||||
MPPasswordsViewController *passwordsVC;
|
MPPasswordsViewController *passwordsVC;
|
||||||
@ -41,11 +43,24 @@
|
|||||||
[[passwordsVC.popdownToTopConstraint updatePriority:1] layoutIfNeeded];
|
[[passwordsVC.popdownToTopConstraint updatePriority:1] layoutIfNeeded];
|
||||||
} completion:^(BOOL finished) {
|
} completion:^(BOOL finished) {
|
||||||
[popdownVC didMoveToParentViewController:passwordsVC];
|
[popdownVC didMoveToParentViewController:passwordsVC];
|
||||||
|
|
||||||
|
id<NSObject> observer = [[NSNotificationCenter defaultCenter] addObserverForName:MPSignedOutNotification object:nil
|
||||||
|
queue:[NSOperationQueue mainQueue] usingBlock:
|
||||||
|
^(NSNotification *note) {
|
||||||
|
[[[MPPopdownSegue alloc] initWithIdentifier:@"unwind-popdown" source:popdownVC
|
||||||
|
destination:passwordsVC] perform];
|
||||||
|
}];
|
||||||
|
objc_setAssociatedObject( popdownVC, &UnwindingObserverKey, observer, OBJC_ASSOCIATION_RETAIN );
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
else if ([self.destinationViewController isKindOfClass:[MPPasswordsViewController class]]) {
|
else {
|
||||||
popdownVC = self.sourceViewController;
|
popdownVC = self.sourceViewController;
|
||||||
passwordsVC = self.destinationViewController;
|
for (passwordsVC = self.sourceViewController; passwordsVC && ![(id)passwordsVC isKindOfClass:[MPPasswordsViewController class]];
|
||||||
|
passwordsVC = (id)passwordsVC.parentViewController);
|
||||||
|
NSAssert( passwordsVC, @"Couldn't find passwords VC to pop back to." );
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter] removeObserver:objc_getAssociatedObject( popdownVC, &UnwindingObserverKey )];
|
||||||
|
objc_setAssociatedObject( popdownVC, &UnwindingObserverKey, nil, OBJC_ASSOCIATION_RETAIN );
|
||||||
|
|
||||||
[popdownVC willMoveToParentViewController:nil];
|
[popdownVC willMoveToParentViewController:nil];
|
||||||
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionOverrideInheritedDuration animations:^{
|
[UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionOverrideInheritedDuration animations:^{
|
||||||
|
@ -220,10 +220,12 @@ PearlEnum( MPDevelopmentFuelConsumption,
|
|||||||
|
|
||||||
CGFloat weeklyFuelConsumption = [self weeklyFuelConsumption]; /* consume x fuel / week */
|
CGFloat weeklyFuelConsumption = [self weeklyFuelConsumption]; /* consume x fuel / week */
|
||||||
CGFloat fuel = [[MPiOSConfig get].developmentFuel floatValue]; /* x fuel left */
|
CGFloat fuel = [[MPiOSConfig get].developmentFuel floatValue]; /* x fuel left */
|
||||||
NSTimeInterval fuelSecondsElapsed = [[MPiOSConfig get].developmentFuelChecked timeIntervalSinceNow];
|
NSDate *now = [NSDate date];
|
||||||
if (fuelSecondsElapsed > 3600) {
|
NSTimeInterval fuelSecondsElapsed = [[MPiOSConfig get].developmentFuelChecked timeIntervalSinceDate:now];
|
||||||
|
if (fuelSecondsElapsed > 3600 || ![MPiOSConfig get].developmentFuelChecked) {
|
||||||
NSTimeInterval weeksElapsed = fuelSecondsElapsed / (3600 * 24 * 7 /* 1 week */); /* x weeks elapsed */
|
NSTimeInterval weeksElapsed = fuelSecondsElapsed / (3600 * 24 * 7 /* 1 week */); /* x weeks elapsed */
|
||||||
fuel -= weeklyFuelConsumption * weeksElapsed;
|
fuel -= weeklyFuelConsumption * weeksElapsed;
|
||||||
|
[MPiOSConfig get].developmentFuelChecked = now;
|
||||||
[MPiOSConfig get].developmentFuel = @(fuel);
|
[MPiOSConfig get].developmentFuel = @(fuel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1632,9 +1632,15 @@
|
|||||||
<view key="view" contentMode="scaleToFill" id="GiS-3g-cDj" userLabel="Root">
|
<view key="view" contentMode="scaleToFill" id="GiS-3g-cDj" userLabel="Root">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" keyboardDismissMode="onDrag" translatesAutoresizingMaskIntoConstraints="NO" id="gRG-Ys-94p">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<subviews>
|
||||||
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="whU-l0-2bU" userLabel="Content">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1lc-e7-Qme" userLabel="Emergency Generator">
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1lc-e7-Qme" userLabel="Emergency Generator">
|
||||||
<rect key="frame" x="20" y="28" width="335" height="387"/>
|
<rect key="frame" x="20" y="140" width="335" height="387"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Emergency Generator" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="4Lh-s0-Dbt">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Emergency Generator" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="4Lh-s0-Dbt">
|
||||||
<rect key="frame" x="20" y="20" width="295" height="21.5"/>
|
<rect key="frame" x="20" y="20" width="295" height="21.5"/>
|
||||||
@ -1750,7 +1756,7 @@
|
|||||||
</state>
|
</state>
|
||||||
</button>
|
</button>
|
||||||
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="4sN-hm-xio">
|
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="4sN-hm-xio">
|
||||||
<rect key="frame" x="149.5" y="329" width="37" height="37"/>
|
<rect key="frame" x="149" y="329" width="37" height="37"/>
|
||||||
</activityIndicatorView>
|
</activityIndicatorView>
|
||||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="XapaNuwjFihn6$" textAlignment="center" lineBreakMode="clip" baselineAdjustment="alignBaselines" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bHR-he-dnZ" userLabel="Password Label">
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="XapaNuwjFihn6$" textAlignment="center" lineBreakMode="clip" baselineAdjustment="alignBaselines" minimumFontSize="10" adjustsLetterSpacingToFitWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bHR-he-dnZ" userLabel="Password Label">
|
||||||
<rect key="frame" x="20" y="328" width="295" height="39"/>
|
<rect key="frame" x="20" y="328" width="295" height="39"/>
|
||||||
@ -1764,7 +1770,7 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</label>
|
</label>
|
||||||
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="beo-cJ-jIn" userLabel="View - Content Tip">
|
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="beo-cJ-jIn" userLabel="View - Content Tip">
|
||||||
<rect key="frame" x="62.5" y="287.5" width="210" height="60"/>
|
<rect key="frame" x="62" y="287.5" width="210" height="60"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="nyL-cO-aPa">
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" translatesAutoresizingMaskIntoConstraints="NO" id="nyL-cO-aPa">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
<rect key="frame" x="0.0" y="0.0" width="210" height="60"/>
|
||||||
@ -1830,15 +1836,34 @@
|
|||||||
</constraints>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="1lc-e7-Qme" secondAttribute="trailing" constant="20" id="3uy-Oe-UJN"/>
|
||||||
|
<constraint firstAttribute="centerY" secondItem="1lc-e7-Qme" secondAttribute="centerY" id="7l6-Zh-2sE"/>
|
||||||
|
<constraint firstItem="1lc-e7-Qme" firstAttribute="leading" secondItem="whU-l0-2bU" secondAttribute="leading" constant="20" id="Ohp-zK-9br"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="whU-l0-2bU" firstAttribute="top" secondItem="gRG-Ys-94p" secondAttribute="top" id="590-rU-iPu"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="whU-l0-2bU" secondAttribute="bottom" id="dgj-X4-x1C"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="whU-l0-2bU" secondAttribute="trailing" id="lO8-zF-kFS"/>
|
||||||
|
<constraint firstItem="whU-l0-2bU" firstAttribute="leading" secondItem="gRG-Ys-94p" secondAttribute="leading" id="rcj-o6-Y9s"/>
|
||||||
|
</constraints>
|
||||||
|
</scrollView>
|
||||||
|
</subviews>
|
||||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="1lc-e7-Qme" firstAttribute="leading" secondItem="GiS-3g-cDj" secondAttribute="leading" constant="20" symbolic="YES" id="04d-tv-W4S"/>
|
<constraint firstAttribute="height" secondItem="whU-l0-2bU" secondAttribute="height" id="4oQ-JI-wQv"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="1lc-e7-Qme" secondAttribute="trailing" constant="20" symbolic="YES" id="5af-wt-tGJ"/>
|
<constraint firstAttribute="width" secondItem="whU-l0-2bU" secondAttribute="width" id="AiQ-LE-3bh"/>
|
||||||
|
<constraint firstItem="IV3-lc-Fnf" firstAttribute="top" secondItem="gRG-Ys-94p" secondAttribute="bottom" id="IMb-wl-Eeb"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="gRG-Ys-94p" secondAttribute="trailing" id="Pb1-eY-0FG"/>
|
||||||
<constraint firstAttribute="trailing" secondItem="GiS-3g-cDj" secondAttribute="trailing" id="TjK-B6-KoI"/>
|
<constraint firstAttribute="trailing" secondItem="GiS-3g-cDj" secondAttribute="trailing" id="TjK-B6-KoI"/>
|
||||||
<constraint firstAttribute="top" secondAttribute="top" id="Zzd-AD-1X5"/>
|
<constraint firstAttribute="top" secondAttribute="top" id="Zzd-AD-1X5"/>
|
||||||
<constraint firstAttribute="leading" secondAttribute="leading" id="bk6-yS-CW5"/>
|
<constraint firstAttribute="leading" secondAttribute="leading" id="bk6-yS-CW5"/>
|
||||||
<constraint firstItem="1lc-e7-Qme" firstAttribute="top" secondItem="cmU-lf-Fxd" secondAttribute="bottom" constant="8" id="mhg-9h-rmE"/>
|
<constraint firstItem="gRG-Ys-94p" firstAttribute="top" secondItem="GiS-3g-cDj" secondAttribute="top" id="oyk-Xr-zTZ"/>
|
||||||
<constraint firstItem="IV3-lc-Fnf" firstAttribute="top" secondItem="GiS-3g-cDj" secondAttribute="bottom" id="t22-RN-Hm0"/>
|
<constraint firstItem="IV3-lc-Fnf" firstAttribute="top" secondItem="GiS-3g-cDj" secondAttribute="bottom" id="t22-RN-Hm0"/>
|
||||||
|
<constraint firstItem="gRG-Ys-94p" firstAttribute="leading" secondItem="GiS-3g-cDj" secondAttribute="leading" id="zhC-jf-5dY"/>
|
||||||
</constraints>
|
</constraints>
|
||||||
<userDefinedRuntimeAttributes>
|
<userDefinedRuntimeAttributes>
|
||||||
<userDefinedRuntimeAttribute type="boolean" keyPath="ignoreTouches" value="YES"/>
|
<userDefinedRuntimeAttribute type="boolean" keyPath="ignoreTouches" value="YES"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user