I can't seem to get my animations to sync up to all the actions of my object. Maybe a fresh pair of eyes could help me with this. The loop is set to 0.2, and the animation have a 0.1 delay. Here is the part that is doing the main loop / controlling actions / dealing with animations:
Oh and one more question, how would I go about detecting a double tap on the screen? I have a feeling I would have to check the time between the two and see if they are within a certain range.
-(void) update:(ccTime) dt {
self.prev_time += 0.2;
self.tick1 += 0.2;
self.tick2 += 0.1;
self.tick3 += 0.1;
if(self.tick2 >= 2)
{
if(self.kkat.hungrylevel > 0)
self.kkat.hungrylevel--;
if(self.kkat.boredomlevel > 0)
self.kkat.boredomlevel--;
self.tick2 = 0;
}
if(self.tick1 >= 2)
{
if(self.kkat.happinesslevel > 0)
self.kkat.happinesslevel--;
self.tick1 = 0;
}
if(self.prev_time >= 5 && self.kkat.position.y <= 60)
{
[self.kkat update_state];
self.prev_time = 0;
}
if(self.kkat.position.y > 60 && self.kkat.inHand == NO)
{
if(self.kkat.kisDropping == NO)
{
[self.kkat drop];
self.kkat.kisDropping = YES;
}
}
else if(self.kkat.position.y > 60 && self.kkat.inHand)
{
if(self.kkat.happinesslevel < 100)
{
self.kkat.happinesslevel += 1;
}
else
{
self.kkat.happinesslevel = 100;
}
}
else if(self.kkat.position.y <= 60)
{
self.kkat.kisDropping = NO;
if(self.kkat.hungrylevel <= 40)
{
if(self.kbowl.isEEmpty == NO)
{
if([self.kcollide kittyNearFood])
{
if([self.kkat.moving isDone])
{
self.kkat.isMoving = NO;
self.kkat.isAttacking = NO;
self.kkat.isEating = YES;
if(self.kkat.hungrylevel < 100)
{
self.kkat.hungrylevel += 5;
}
else
{
self.kkat.hungrylevel = 100;
}
[self.kbowl eat];
}
}
else
{
if(self.kkat.position.x > self.kbowl.position.x)
{
[self.kkat setScaleX:-1];
self.prev_move = self.kbowl.position.x + 30;
}
else
{
[self.kkat setScaleX:1];
self.prev_move = self.kbowl.position.x - 30;
}
if(self.prev_move < 0)
{
self.prev_move = 0;
}
else if(self.prev_move > 460)
{
self.prev_move = 460;
}
if(self.kkat.position.x != self.prev_move)
{
if([self.kkat.moving isDone])
{
self.kkat.moving = [self.kkat runAction:[MoveTo actionWithDuration:2 position:ccp(self.prev_move, self.kkat.position.y)]];
self.kkat.isMoving = YES;
self.kkat.isAttacking = NO;
}
}
else
{
self.kkat.isMoving = NO;
}
self.kkat.isEating = NO;
}
}
else
{
self.kkat.isEating = NO;
self.kkat.isMoving = NO;
}
}
else
{
self.kkat.isMoving = NO;
self.kkat.isEating = NO;
}
if(self.kkat.boredomlevel <= 40)
{
if(self.kmouse.onScreen)
{
if([self.kcollide kittyNearMouse])
{
self.kkat.isMoving = NO;
self.kkat.isAttacking = YES;
self.kkat.isEating = NO;
if(self.kkat.boredomlevel < 100)
{
self.kkat.boredomlevel += 1;
}
else
{
self.kkat.boredomlevel = 100;
}
int move;
if(self.kkat.position.x < self.kmouse.position.x)
{
move = self.kmouse.position.x + 30;
}
else
{
move = self.kmouse.position.x - 30;
}
if(move > 430)
{
move = 430;
}
else if(move < 0)
{
move = 0;
}
int rot = arc4random() % 180;
[self.kmouse runAction:[Sequence actionOne:[MoveTo actionWithDuration:0.5 position:ccp(move, self.kmouse.position.y)] two:[RotateTo actionWithDuration:0.5 angle:rot]]];
}
else
{
if(self.kkat.position.x > self.kmouse.position.x)
{
[self.kkat setScaleX:-1];
self.prev_move = self.kmouse.position.x + 30;
}
else
{
[self.kkat setScaleX:1];
self.prev_move = self.kmouse.position.x - 30;
}
if(self.prev_move < 0)
{
self.prev_move = 0;
}
else if(self.prev_move > 430)
{
self.prev_move = 430;
}
if(self.kkat.position.x != self.prev_move)
{
if([self.kkat.moving isDone])
{
self.kkat.moving = [self.kkat runAction:[MoveTo actionWithDuration:2 position:ccp(self.prev_move, self.kkat.position.y)]];
self.kkat.isEating = NO;
}
}
else
{
self.kkat.isMoving = NO;
}
self.kkat.isMoving = YES;
self.kkat.isAttacking = NO;
}
}
else
{
self.kkat.isAttacking = NO;
self.kkat.isMoving = NO;
}
}
else
{
self.kkat.isAttacking = NO;
self.kkat.isMoving = NO;
}
if(self.kkat.isPetting)
{
if(self.kkat.happinesslevel < 100)
{
self.kkat.happinesslevel += 1;
}
else
{
self.kkat.happinesslevel = 100;
}
self.kkat.isMoving = NO;
self.kkat.isEating = NO;
self.kkat.isAttacking = NO;
}
if(self.kkat.isEating == NO && self.kkat.isAttacking == NO && self.kkat.isMoving == NO && self.kkat.isPetting == NO)
{
if(self.kkat.kstate == 0)
{
if([self.kkat.moving isDone])
{
int bx = arc4random() % 3;
int nx;
if(bx == 0)
{
nx = 10;
}
else if(bx == 1)
{
nx = 100;
}
else if(bx == 2)
{
nx = 250;
}
else if(bx == 3)
{
nx = 430;
}
if(self.kkat.prev_state != bx)
{
self.kkat.prev_state = bx;
self.prev_move = nx;
}
else
{
if(bx == 0)
{
if(self.prev_move == 430)
{
nx = 100;
}
else
{
nx = 430;
}
}
else if(bx == 1)
{
if(self.prev_move == 250)
{
nx = 10;
}
else
{
nx = 250;
}
}
else if(bx == 2)
{
if(self.prev_move == 100)
{
nx = 430;
}
else
{
nx = 100;
}
}
else if(bx == 3)
{
if(self.prev_move == 10)
{
nx = 250;
}
else
{
nx = 10;
}
}
}
if(self.kkat.position.x > nx)
{
[self.kkat setScaleX:-1];
}
else
{
[self.kkat setScaleX:1];
}
self.kkat.moving = [self.kkat runAction:[MoveTo actionWithDuration:2 position:ccp(nx, self.kkat.position.y)]];
}
}
}
}
if(self.kkat.position.y > 60)
{
if([self.kkat.holding isDone])
{
[self.kkat.ksprite runAction:self.kkat.holding];
}
}
else if(self.kkat.position.y <= 60)
{
if(self.kkat.isEating)
{
if([self.kkat.keating isDone])
{
[self.kkat.ksprite runAction:self.kkat.keating];
}
}
if(self.kkat.isAttacking)
{
if([self.kkat.kattack isDone])
{
[self.kkat.ksprite runAction:self.kkat.kattack];
}
}
else if(self.kkat.isPetting)
{
if([self.kkat.kpet isDone])
{
[self.kkat.ksprite runAction:self.kkat.kpet];
}
}
else if(![self.kkat.moving isDone] && !self.kkat.kisDropping && !self.kkat.inHand)
{
if([self.kkat.kwalking isDone])
{
[self.kkat.ksprite runAction:self.kkat.kwalking];
}
}
else
{
if(self.kkat.kstate == 0)
{
if(![self.kkat.moving isDone])
{
if([self.kkat.kwalking isDone])
{
[self.kkat.ksprite runAction:self.kkat.kwalking];
}
}
}
else if(self.kkat.kstate == 1)
{
if([self.kkat.moving isDone])
{
if([self.kkat.idle1 isDone])
{
[self.kkat.ksprite runAction:self.kkat.idle1];
}
}
}
else if(self.kkat.kstate == 2)
{
if([self.kkat.moving isDone])
{
if([self.kkat.idle2 isDone])
{
[self.kkat.ksprite runAction:self.kkat.idle2];
}
}
}
}
}
}