// // GameObject.m // Cart Collect // // Created by iD Student Account on 7/19/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "FallingObject.h" #import "GameMode.h" @implementation FallingObject @synthesize sprite, weight, delegate; - (id)init { self = [super init]; if (nil != self) { } return self; } - (BOOL)tick { GameMode* gameLayer = ((GameMode*) sprite.parent); // Move objects down sprite.position = ccp(sprite.position.x, sprite.position.y-weight); // Cart collision detection CGSize first = [gameLayer.cart.sprite boundingBox].size; CGSize second = [sprite boundingBox].size; if (gameLayer.cart.sprite.position.x > (sprite.position.x - second.width/2 - first.width/2)) { if (gameLayer.cart.sprite.position.x < (sprite.position.x + second.width/2 + first.width/2)) { if (gameLayer.cart.sprite.position.y > (sprite.position.y - second.height/2 - first.height/2)) { if (gameLayer.cart.sprite.position.y < (sprite.position.y + second.height/2 + first.height/2)) { [self collideWithCart]; if ((delegate != nil) && ([delegate respondsToSelector:@selector(didCatchItem:)])) { [delegate didCatchItem:self]; } if ((delegate != nil) && ([delegate respondsToSelector:@selector(didDestroyItem:)])) { [delegate didDestroyItem:self]; } return YES; } } } } // Collision detection with floor if (sprite.position.y - (sprite.contentSize.height/2) < 0) { [self collideWithFloor]; if ((delegate != nil) && ([delegate respondsToSelector:@selector(didMissItem:)])) { [delegate didMissItem:self]; } if ((delegate != nil) && ([delegate respondsToSelector:@selector(didDestroyItem:)])) { [delegate didDestroyItem:self]; } return YES; } return NO; } - (void)collideWithCart { } - (void)collideWithFloor { } - (void)dealloc { [sprite.parent removeChild:sprite cleanup:YES]; [delegate release]; [super dealloc]; } @end