blob: 85ea902000a23117cc8fccbff8ee0a10df9edda6 (
plain) (
tree)
|
|
//
// 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
|