
#import "aSquare.h"
#import "robotView.h"

@implementation aSquare

- init
{
    [super init];
    myRobotID = NOROBOT;
    return self;
}

- setDelegate:sender
{
    myDelegate = sender;
    return self;
}

- (BOOL)takeScrap
{
    if (![self hasScrap] && ([self hasRobotID] == NOROBOT))
    {
	myRobotID = SCRAP;
	return YES;
    }
    return NO;
}

- (BOOL)moveScrap:targetSquare
{
    if ([self hasScrap] && [targetSquare takeScrap])
    {
	myRobotID = NOROBOT;
	return YES;
    }
    return NO;
}

- removeRobot:(aRobot *) theRobot
{
    if ([self hasRobotID] != theRobot->idnumber)
    {				/* printf ("Wrong robot removed!!!\n"); */
	;
    }
    myRobotID = NOROBOT;

    return self;
}

- addRobot:(aRobot *) theRobot
{
    if ([self hasScrap])
    {
	[myDelegate deleteRobotID:theRobot->idnumber];
	return self;
    }
    if ([self hasRobotID] != NOROBOT)
    {
    /* Scrap one, it's drawn scrapped, scrap the rest, they're not redrawn. */
	[myDelegate scrapRobotID:theRobot->idnumber];
	[myDelegate scrapRobotID:myRobotID];
	[myDelegate newScrap];
	myRobotID = SCRAP;
	return self;
    }
    theRobot->occupiedSquare = self;
    myRobotID = theRobot->idnumber;
    return self;
}

- (int)hasRobotID
{
    if ([self hasScrap])
    {
	return NOROBOT;
    }
    return myRobotID;
}

- (BOOL)hasScrap
{
    return (myRobotID == SCRAP);
}

@end
