mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-07 22:07:48 +00:00
GEEKING
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
//
|
||||
// HomeScreenController.m
|
||||
// RobloxMobile
|
||||
//
|
||||
// Created by Ariel Lichtin on 5/23/14.
|
||||
// Copyright (c) 2014 ROBLOX. All rights reserved.
|
||||
//
|
||||
|
||||
#import "HomeScreenController.h"
|
||||
#import "UserInfo.h"
|
||||
#import "SignUpScreenController.h"
|
||||
#import "Flurry.h"
|
||||
#import "RobloxInfo.h"
|
||||
#import "RBMobileWebViewController.h"
|
||||
#import "LoginManager.h"
|
||||
#import "ABTestManager.h"
|
||||
#import "RBMoreViewController.h"
|
||||
#import "RobloxNotifications.h"
|
||||
|
||||
//---METRICS---
|
||||
#define HSC_signUpControllerFromPlayNow @"HOME SCREEN - Sign Up Pressed While Guest"
|
||||
|
||||
@interface HomeScreenController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation HomeScreenController
|
||||
{
|
||||
NSInteger selectedIndexLogin;
|
||||
}
|
||||
|
||||
-(void) viewWillAppear:(BOOL)animated
|
||||
{
|
||||
[super viewWillAppear:animated];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(gotLoginSuccessfulNotification:)
|
||||
name:RBX_NOTIFY_LOGIN_SUCCEEDED
|
||||
object:nil ];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(gotLogoutNotification:)
|
||||
name:RBX_NOTIFY_LOGGED_OUT
|
||||
object:nil ];
|
||||
}
|
||||
|
||||
-(void) viewWillDisappear:(BOOL)animated
|
||||
{
|
||||
[super viewWillDisappear:animated];
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
self.delegate = self;
|
||||
|
||||
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: [RobloxInfo getUserAgentString], @"UserAgent", nil];
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
|
||||
|
||||
|
||||
//check if the user is logged in, if not make the Games Page the landing page
|
||||
if ([UserInfo CurrentPlayer].userLoggedIn == NO)
|
||||
[self setSelectedIndex:1];
|
||||
|
||||
//set the images
|
||||
if ([RobloxInfo thisDeviceIsATablet])
|
||||
{
|
||||
[((UIViewController*)self.viewControllers[0]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Home Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[0]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Home On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[1]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Game Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[1]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Game On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[2]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Catalog Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[2]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Catalog On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[3]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Friends Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[3]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Friends On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[4]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Messages Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[4]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Messages On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[5]).tabBarItem setImage:[[UIImage imageNamed:@"Icon More Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[5]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon More On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
}
|
||||
else
|
||||
{
|
||||
[((UIViewController*)self.viewControllers[0]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Home Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[0]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Home On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[1]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Game Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[1]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Game On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[2]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Friends Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[2]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Friends On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[3]).tabBarItem setImage:[[UIImage imageNamed:@"Icon Messages Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[3]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon Messages On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[4]).tabBarItem setImage:[[UIImage imageNamed:@"Icon More Off"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
[((UIViewController*)self.viewControllers[4]).tabBarItem setSelectedImage:[[UIImage imageNamed:@"Icon More On"] imageWithRenderingMode:[RobloxTheme iconColoringMode]]];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-(RBXAnalyticsCustomData) getCurrentTabContext
|
||||
{
|
||||
RBXAnalyticsCustomData currentTab = RBXACustomTabGames;
|
||||
|
||||
if ([RobloxInfo thisDeviceIsATablet])
|
||||
{
|
||||
switch (self.selectedIndex)
|
||||
{
|
||||
case 0 : { currentTab = RBXACustomTabHome; } break;
|
||||
case 1 : { currentTab = RBXACustomTabGames; } break;
|
||||
case 2 : { currentTab = RBXACustomTabCatalog; } break;
|
||||
case 3 : { currentTab = RBXACustomTabFriends; } break;
|
||||
case 4 : { currentTab = RBXACustomTabMessages; } break;
|
||||
case 5 : {
|
||||
currentTab = RBXACustomTabMore;
|
||||
|
||||
if ([self.viewControllers[5] respondsToSelector:@selector(getMostRecentTab)])
|
||||
currentTab = [((RBMoreViewController*)self.viewControllers[5]) getMostRecentTab];
|
||||
} break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (self.selectedIndex)
|
||||
{
|
||||
case 0 : { currentTab = RBXACustomTabHome; } break;
|
||||
case 1 : { currentTab = RBXACustomTabGames; } break;
|
||||
case 2 : { currentTab = RBXACustomTabFriends; } break;
|
||||
case 3 : { currentTab = RBXACustomTabMessages; } break;
|
||||
case 4 : {
|
||||
currentTab = RBXACustomTabMore;
|
||||
|
||||
if ([self.viewControllers[4] respondsToSelector:@selector(getMostRecentTab)])
|
||||
currentTab = [((RBMoreViewController*)self.viewControllers[4]) getMostRecentTab];
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
return currentTab;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
|
||||
{
|
||||
NSUInteger indexOfTab = [self.viewControllers indexOfObject:viewController];
|
||||
if (self.selectedIndex == indexOfTab && self.viewControllers.count > 1)
|
||||
{
|
||||
//drill back to the original screen
|
||||
UINavigationController* tappedVC = (UINavigationController*)viewController;
|
||||
UIViewController* rootVC = tappedVC.viewControllers[0];
|
||||
[tappedVC popToViewController:rootVC animated:YES];
|
||||
|
||||
//if it is a webview, reload the original url
|
||||
if ([rootVC isKindOfClass:[RBMobileWebViewController class]])
|
||||
{
|
||||
[(RBMobileWebViewController*)rootVC reloadWebPage];
|
||||
}
|
||||
else if ([viewController isEqual:[[self viewControllers] objectAtIndex:1]] && [RobloxInfo thisDeviceIsATablet])
|
||||
{
|
||||
//if we are on the games page, reload the games
|
||||
if ([rootVC respondsToSelector:@selector(loadGames)])
|
||||
[rootVC performSelector:@selector(loadGames)];
|
||||
|
||||
}
|
||||
//return NO;
|
||||
}
|
||||
|
||||
UserInfo* userInfo = [UserInfo CurrentPlayer];
|
||||
if(!userInfo.userLoggedIn && ![viewController isEqual:[[self viewControllers] objectAtIndex:1]])
|
||||
{
|
||||
NSString* controllerName = [[LoginManager sharedInstance] isFacebookEnabled] ? @"SignUpScreenControllerWithSocial" : @"SignUpScreenController";
|
||||
|
||||
|
||||
//ask the user to sign up or log in to see these pages
|
||||
[Flurry logEvent:HSC_signUpControllerFromPlayNow];
|
||||
NSString* storyboardName = [RobloxInfo getStoryboardName];
|
||||
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
|
||||
SignUpScreenController* controller = (SignUpScreenController*)[storyboard instantiateViewControllerWithIdentifier:controllerName];
|
||||
controller.modalPresentationStyle = UIModalPresentationFormSheet;
|
||||
[self.navigationController presentViewController:controller animated:YES completion:nil];
|
||||
selectedIndexLogin = [self.viewControllers indexOfObject:viewController];
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
|
||||
{
|
||||
[[RBXEventReporter sharedInstance] reportTabButtonClick:[self getCurrentTabContext]];
|
||||
}
|
||||
|
||||
|
||||
-(void) gotLoginSuccessfulNotification:(NSNotification*) notification
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self setSelectedIndex:selectedIndexLogin];
|
||||
});
|
||||
}
|
||||
-(void) gotLogoutNotification:(NSNotification*) notification
|
||||
{
|
||||
if ([[ABTestManager sharedInstance] IsInTestMobileGuestMode])
|
||||
{
|
||||
dispatch_async(dispatch_get_main_queue(), ^
|
||||
{
|
||||
[self setSelectedIndex:1];
|
||||
});
|
||||
}
|
||||
}
|
||||
@end
|
||||
Reference in New Issue
Block a user