// // 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" @implementation GameOverScene + (GameOverScene*)sceneWithScore:(int)score { return [[[GameOverScene alloc] initWithScore:score] autorelease]; } - (id)initWithScore:(int)score2 { 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; 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]; backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [backButton setFrame:CGRectMake(240-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 { backButton.enabled = NO; textField.enabled = NO; submitSwitch.enabled = NO; const char* sqlQuery = [[NSString stringWithFormat:@"INSERT INTO highscores (name, score) VALUES (\"%@\",%d)", [textField text], score] 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, %@", [textField text]); } else { NSAssert1(0, @"Error while creating add statement. '%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]; [dict setObject:@"Classic" 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]; [textField removeFromSuperview]; [textField release]; [scoreField removeFromSuperview]; [scoreField release]; [activityIndicator removeFromSuperview]; [activityIndicator release]; [backButton removeFromSuperview]; [movingLayer removeFromSuperview]; [movingLayer release]; [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; } @end