// // TutorialMode.m // Cart Collect // // Created by Starla Insigna on 8/10/11. // Copyright 2011 Four Island. All rights reserved. // #import "TutorialMode.h" #import "FallingObject.h" #import "Cherry.h" #import "Bottle.h" #import "OneUp.h" #import "Rock.h" #import "GameModeSelectionLayer.h" // Item tags: // 2000 - first dropped item // 2001 - item that is dropped after you catch first dropped item to demonstrate what happens when you miss // 2002 - items that are dropped after you miss first dropped item to demonstrate what happens when you catch // 2003 - 1-Up // 2009 - rock // 2010 - random item dropped after death from first rock @implementation TutorialMode @synthesize currentTutorial; - (id)init { self = [super init]; if (nil != self) { CCSprite* backgroundImage = [CCSprite spriteWithFile:@"SeaBeach.png"]; backgroundImage.position = ccp(240, 160); [self addChild:backgroundImage z:-1]; showedDeathBubble = NO; randomItemsDropped = 0; } return self; } - (void)onEnterTransitionDidFinish { [super onEnterTransitionDidFinish]; [self scheduleDelayedAction:^{ TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"Welcome to Cartographic. This is a tutorial designed to help you get started playing the game. Below this bubble is a cart. Tilt your device to move it." name:@"cart" spriteReference:cart.sprite]; self.currentTutorial = bubble; [bubble release]; } delay:2.0f]; } - (void)tick:(ccTime)dt { [super tick:dt]; FallingObject* object = [objects anyObject]; if ((object.sprite.tag == 2000) && (object.sprite.position.y == 360-object.weight*14)) { TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"This is an item. Try to catch it with your cart." name:@"item" spriteReference:object.sprite]; self.currentTutorial = bubble; [bubble release]; } else if ((object.sprite.tag == 2003) && (object.sprite.position.y == 360-object.weight*8)) { TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"This is a 1-Up. Catch it to gain an extra life. There's no penalty for not catching it, though." name:@"oneup" spriteReference:object.sprite]; self.currentTutorial = bubble; [bubble release]; } else if ((object.sprite.tag == 2009) && (object.sprite.position.y == 360-object.weight*14)) { TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"This is a rock. It would be better for your health if you did not catch this item." name:@"rock" spriteReference:object.sprite]; self.currentTutorial = bubble; [bubble release]; } } - (void)didCatchItem:(FallingObject *)item { if (item.sprite.tag == 2000) { TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"Congratulations! If you look at your score, you'll see it increased. Catching items is good. Now, let's see what happens when you don't catch an item." name:@"caught-first"]; self.currentTutorial = bubble; [bubble release]; } else if (item.sprite.tag == 2002) { TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"There you go! If you look at your score, you'll see it increased. Catching items is good." name:@"caught-second"]; self.currentTutorial = bubble; [bubble release]; } } - (void)didMissItem:(FallingObject *)item { if (item.sprite.tag == 2000) { TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"Whoops, you missed it! Look at your lives counter--you lost one! If you lose all of your lives, you lose the game. Try catching the item again." name:@"missed-first"]; self.currentTutorial = bubble; [bubble release]; } else if (item.sprite.tag == 2001) { [cart setImmobile:NO]; TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"You lost a life! You only have three lives, so try not to miss any items! However..." name:@"missed-second"]; self.currentTutorial = bubble; [bubble release]; } else if (item.sprite.tag == 2002) { [self scheduleDelayedAction:^{ FallingObject* object = [self dropRandomItem]; object.
name: "Jay Painting"
paintings {
  name: "JAY2"
  path: "Components/Paintings/jay2"
}
; } } else if (randomItemsDropped == 5) { object = [[Rock alloc] init]; object.sprite.tag = 2009; [self unschedule:@selector(randomlyAddObject:)]; } else if (randomItemsDropped < 15) { int randomval = arc4random()%100; if (randomval < 40) { object = [[Cherry alloc] init]; } else if (randomval < 70) { object = [[Rock alloc] init]; } else if (randomval < 98) { object = [[Bottle alloc] init]; } else { object = [[OneUp alloc] init]; } } else if (randomItemsDropped == 15) { [self scheduleDelayedAction:^{ TutorialBubble* bubble = [[TutorialBubble alloc] initWithText:@"That's pretty much it! You've completed the tutorial, so now it's time to play an actual game of Cartographic!" name:@"end"]; self.currentTutorial = bubble; [bubble release]; } delay:2.0f]; [self unschedule:@selector(randomlyAddObject:)]; NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; [defaults setBool:YES forKey:@"hasDoneTutorial"]; return; } else { NSLog(@"randomItemsDropped in TutorialMode is greater than 15--this should never happen."); return; } [self dropSpecificItem:object]; [object release]; randomItemsDropped++; } @end