This is SNGraphNode.m in view mode; [Download] [Up]
//
// $Id: SNGraphNode.m,v 1.8 1997/10/31 04:52:02 nygard Exp $
//
//
// This file is a part of Empire, a game of exploration and conquest.
// Copyright (C) 1996 Steve Nygard
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// You may contact the author by:
// e-mail: nygard@telusplanet.net
//
#import "Empire.h"
RCSID ("$Id: SNGraphNode.m,v 1.8 1997/10/31 04:52:02 nygard Exp $");
#import "SNGraphNode.h"
//======================================================================
// This represents a location on the map for use in a breadth first
// search.
//======================================================================
@implementation SNGraphNode
+ nodeWithLocation:(EMMapLocation)target
{
return [[[SNGraphNode alloc] initWithLocation:target] autorelease];
}
//----------------------------------------------------------------------
- initWithLocation:(EMMapLocation)target
{
[super init];
location = target;
color = c_white;
distance = 1000000;
predecessor = nil;
biasValue = 0;
return self;
}
//----------------------------------------------------------------------
- (SNGraphNode *) predecessor
{
return predecessor;
}
//----------------------------------------------------------------------
- (void) setPredecessor:(SNGraphNode *)aGraphNode
{
predecessor = aGraphNode;
distance = [predecessor distance] + 1;
}
//----------------------------------------------------------------------
- (GraphColor) nodeColor
{
return color;
}
//----------------------------------------------------------------------
- (void) setNodeColor:(GraphColor)newColor
{
color = newColor;
}
//----------------------------------------------------------------------
- (int) distance
{
return distance;
}
//----------------------------------------------------------------------
- (void) setDistance:(int)newDistance
{
distance = newDistance;
}
//----------------------------------------------------------------------
- (EMMapLocation) nodeLocation
{
return location;
}
//----------------------------------------------------------------------
- (int) biasValue
{
return biasValue;
}
//----------------------------------------------------------------------
- (void) setBiasValue:(int)bias
{
biasValue = bias;
}
//----------------------------------------------------------------------
- (int) compareWith:(SNGraphNode *)otherNode
{
if (distance < [otherNode distance])
return -1;
else if (distance > [otherNode distance])
return 1;
return (biasValue < [otherNode biasValue]) ? -1 : 1;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.