// // GameOverLayer.m // Cart Collect // // Created by iD Student Account on 7/19/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "GameOverScene.h" #import "Cart_CollectAppDelegate.h" #import #import "cocoslive.h" #import "MainMenuLayer.h" #import "ClassicGameMode.h" #import "JumpGameMode.h" @implementation GameOverScene + (GameOverScene*)sceneWithScore:(int)score gameMode:(NSString*)gameMode { return [[[GameOverScene alloc] initWithScore:score gameMode:gameMode] autorelease]; } - (id)initWithScore:(int)score2 gameMode:(NSString*)gameMode2 { self = [super init]; if (nil != self) { CCLayerColor* backgroundLayer = [CCLayerColor layerWithColor:ccc4(255, 255, 255, 255)]; [self addChild:backgroundLayer]; theLayer = [CCLayer node]; [self addChild:theLayer]; CCSprite* backgroundImage = [CCSprite spriteWithFile:@"Morning1.png"]; backgroundImage.position = ccp(240, 160); [theLayer addChild:backgroundImage z:0]; score = score2; gameMode = gameMode2; movingLayer = [[UIView alloc] initWithFrame:CGRectMake(0, -320, 480, 320)]; movingLayer.backgroundColor = [UIColor clearColor]; [[[CCDirector sharedDirector] openGLView] addSubview:movingLayer]; scoreField = [[UILabel alloc] initWithFrame:CGRectMake(205, 320-200, 0, 0)]; [scoreField setFont:[UIFont systemFontOfSize:20.0f]]; [scoreField setBackgroundColor:[UIColor clearColor]]; [scoreField setText:[NSString stringWithFormat:@"%d", score2]]; CGSize labelSize = [scoreField.text sizeWithFont:scoreField.font constrainedToSize:CGSizeMake(160, 31) lineBreakMode:UILineBreakModeClip]; [scoreField setFrame:CGRectMake(scoreField.frame.origin.x, scoreField.frame.origin.y, labelSize.width, labelSize.height)]; [movingLayer addSubview:scoreField]; textField = [[UITextField alloc] initWithFrame:CGRectMake(205, 320-247, 216, 31)]; [textField setFont:[UIFont systemFontOfSize:20.0f]]; [textField setBackgroundColor:[UIColor clearColor]]; [textField setDelegate:self]; NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; [textField setText:[defaults objectForKey:@"username"]]; [movingLayer addSubview:textField]; submitSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(211, 320-161, 0, 0)]; [submitSwitch setOn:[defaults boolForKey:@"submitScore"]]; [movingLayer addSubview:submitSwitch]; activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(480-20-10, 320-20-10, 20, 20)]; [movingLayer addSubview:activityIndicator]; playButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [playButton setFrame:CGRectMake(480/3-105/2, 320-60-15, 105, 31)]; [playButton setTitle:@"Play Again" forState:UIControlStateNormal]; [playButton addTarget:self action:@selector(newgame:) forControlEvents:UIControlEventTouchUpInside]; [playButton.titleLabel setFont:[UIFont systemFontOfSize:16.0]]; [playButton.titleLabel setTextColor:[UIColor blackColor]]; [movingLayer addSubview:playButton]; backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [backButton setFrame:CGRectMake(480/3*2-154/2, 320-60-15, 154, 31)]; [backButton setTitle:@"Back to Main Menu" forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(newgame:) forControlEvents:UIControlEventTouchUpInside]; [backButton.titleLabel setFont:[UIFont systemFontOfSize:16.0]]; [backButton.titleLabel setTextColor:[UIColor blackColor]]; [movingLayer addSubview:backButton]; } return self; } - (void)setPosition:(CGPoint)position { [super setPosition:position]; movingLayer.center = CGPointMake(240, 160-position.y); } - (void)newgame:(id)sender { // Play again if the user pressed the play again button playAgain = (sender == playButton); playButton.enabled = NO; backButton.enabled = NO; textField.enabled = NO; submitSwitch.enabled = NO; const char* sqlQuery = [[NSString stringWithFormat:@"INSERT INTO highscores (name, score, gameMode) VALUES (\"%@\",%d,\"%@\")", [textField text], score, gameMode] UTF8String]; sqlite3_stmt* compiled_statement; if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) { sqlite3_step(compiled_statement); NSLog(@"awesome, %@, %d", [textField text], score); } else { NSLog(@"Error while adding highscore to local highscore list. '%s'", sqlite3_errmsg([Cart_CollectAppDelegate database])); } if (submitSwitch.on) { [self submitScore]; } else { [self exit]; } } - (void)submitScore { [activityIndicator startAnimating]; CLScoreServerPost* server = [[CLScoreServerPost alloc] initWithGameName:@"Cart Collect" gameKey:@"38f440a074b3264386455a36b2706d8f" delegate:self]; NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; if ([gameMode isEqual:@"Collect"]) { [dict setObject:@"Classic" forKey:@"cc_category"]; } else { [dict setObject:gameMode forKey:@"cc_category"]; } [dict setObject:[textField text] forKey:@"cc_playername"]; [dict setObject:[NSNumber numberWithInt:score] forKey:@"cc_score"]; [server sendScore:dict]; [server release]; [dict release]; } - (BOOL)textFieldShouldReturn:(UITextField *)m_textField { [m_textField resignFirstResponder]; return YES; } - (void)scorePostOk:(id)sender { [activityIndicator stopAnimating]; // Score post successful [self exit]; } - (void)scorePostFail:(id)sender { [activityIndicator stopAnimating]; // score post failed tPostStatus status = [sender postStatus]; if( status == kPostStatusPostFailed ) { NSLog(@"SERVER ERROR"); // an error with the server ? // try again }else if( status == kPostStatusConnectionFailed ) { NSLog(@"CONNECTION FAILURE"); // a error establishing the connection ? // turn-on wifi, and then try again } UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Whoops" message:@"There was an error posting your score. Please make sure you have Internet access." delegate:self cancelButtonTitle:@"Try Again" otherButtonTitles:@"Cancel", nil]; [alertView show]; [alertView release]; } - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 0) { [self submitScore]; } else if (buttonIndex == 1) { [self exit]; } } - (void)exit { NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:[textField text] forKey:@"username"]; [defaults setBool:submitSwitch.on forKey:@"submitScore"]; [submitSwitch removeFromSuperview]; [submitSwitch release]; submitSwitch = nil; [textField removeFromSuperview]; [textField release]; textField = nil; [scoreField removeFromSuperview]; [scoreField release]; scoreField = nil; [activityIndicator removeFromSuperview]; [activityIndicator release]; activityIndicator = nil; [playButton removeFromSuperview]; playButton = nil; [backButton removeFromSuperview]; backButton = nil; [movingLayer removeFromSuperview]; [movingLayer release]; movingLayer = nil; if (playAgain) { if ([gameMode isEqual:@"Collect"]) { [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3.0f scene:[ClassicGameMode scene] withColor:ccc3(0, 0, 0)]]; } else if ([gameMode isEqual:@"Jump"]) { [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3.0f scene:[JumpGameMode scene] withColor:ccc3(0, 0, 0)]]; } } else { [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; } } @end