From 9cd57b731ab1c666d4a1cb725538fdc137763d12 Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Sat, 30 Jul 2011 11:19:14 -0400 Subject: Initial commit (version 0.2.1) --- Classes/GameOverLayer.m | 196 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100755 Classes/GameOverLayer.m (limited to 'Classes/GameOverLayer.m') diff --git a/Classes/GameOverLayer.m b/Classes/GameOverLayer.m new file mode 100755 index 0000000..65b11e1 --- /dev/null +++ b/Classes/GameOverLayer.m @@ -0,0 +1,196 @@ +// +// GameOverLayer.m +// Cart Collect +// +// Created by iD Student Account on 7/19/11. +// Copyright 2011 __MyCompanyName__. All rights reserved. +// + +#import "GameOverLayer.h" + + +@implementation GameOverLayer + ++ (CCScene*)sceneWithScore:(int)score +{ + CCScene* scene = [CCScene node]; + + CCLayerColor* backgroundLayer = [CCLayerColor layerWithColor:ccc4(255, 255, 255, 255)]; + [scene addChild:backgroundLayer]; + + GameOverLayer* layer = [[[GameOverLayer alloc] initWithScore:score] autorelease]; + [scene addChild:layer]; + + return scene; +} + +- (id)initWithScore:(int)score2 +{ + self = [super init]; + + if (nil != self) + { + CCSprite* backgroundImage = [CCSprite spriteWithFile:@"Morning1.png"]; + backgroundImage.position = ccp(240, 160); + [self addChild:backgroundImage z:0]; + + score = score2; + + scoreField = [[UILabel alloc] initWithFrame:CGRectMake(205, 320-200-320, 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)]; + [[[CCDirector sharedDirector] openGLView] addSubview:scoreField]; + + textField = [[UITextField alloc] initWithFrame:CGRectMake(205, 320-247-320, 216, 31)]; + [textField setFont:[UIFont systemFontOfSize:20.0f]]; + [textField setBackgroundColor:[UIColor clearColor]]; + [textField setDelegate:self]; + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + [textField setText:[defaults objectForKey:@"username"]]; + [[[CCDirector sharedDirector] openGLView] addSubview:textField]; + + submitSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(211, 320-161-320, 0, 0)]; + [submitSwitch setOn:[defaults boolForKey:@"submitScore"]]; + [[[CCDirector sharedDirector] openGLView] addSubview:submitSwitch]; + + activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(480-20-10, 320-20-10, 20, 20)]; + [[[CCDirector sharedDirector] openGLView] addSubview:activityIndicator]; + + backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [backButton setFrame:CGRectMake(240-154/2, 320-60-15-320, 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]]; + + [[[CCDirector sharedDirector] openGLView] addSubview:backButton]; + } + + return self; +} + +- (void)onEnter +{ + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationDuration:1.5f]; + [UIView setAnimationCurve:UIViewAnimationCurveLinear]; + scoreField.transform = CGAffineTransformMakeTranslation(0, 320); + textField.transform = CGAffineTransformMakeTranslation(0, 320); + submitSwitch.transform = CGAffineTransformMakeTranslation(0, 320); + backButton.transform = CGAffineTransformMakeTranslation(0, 320); + [UIView commitAnimations]; +} + +- (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]; + + [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; +} + +@end -- cgit 1.4.1