This is ShipReportController.m in view mode; [Download] [Up]
//
// $Id: ShipReportController.m,v 1.8 1997/10/31 04:52:08 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: ShipReportController.m,v 1.8 1997/10/31 04:52:08 nygard Exp $");
#import "ShipReportController.h"
#import "EmPlayer.h"
#import "EmpireImageVendor.h"
#import "Unit.h"
//======================================================================
// The Ship Report provides a list of all the ships for a player, the
// ship types, names and locations. In the future, the player should
// be able to change the ship names with this panel as well. Also,
// having different sort orders would be useful.
//======================================================================
@implementation ShipReportController
- (void) awakeFromNib
{
[iconColumn setDataCell:[[[NSImageCell alloc] initImageCell:nil] autorelease]];
}
//----------------------------------------------------------------------
- init
{
NSString *nibFile;
BOOL loaded;
[super init];
nibFile = @"ShipReport.nib";
loaded = [NSBundle loadNibNamed:nibFile owner:self];
if (loaded == NO)
{
NSLog (@"Could not load %@.", nibFile);
[super dealloc];
return nil;
}
ships = [[NSMutableArray array] retain];
[[EmpireImageVendor instance] attach:self];
return self;
}
//----------------------------------------------------------------------
- (void) dealloc
{
[[EmpireImageVendor instance] detach:self];
SNRelease (ships);
[super dealloc];
}
//----------------------------------------------------------------------
- (int) numberOfRowsInTableView:(NSTableView *)aTableView
{
return [ships count];
}
//----------------------------------------------------------------------
- tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
{
id identifier;
Unit *ship;
NSParameterAssert (rowIndex >= 0 && rowIndex < [ships count]);
identifier = [aTableColumn identifier];
ship = [ships objectAtIndex:rowIndex];
if ([identifier isEqual:@"Ship"] == YES)
return [ship unitName];
else if ([identifier isEqual:@"Type"] == YES)
return EMUnitTypeName ([ship unitType]);
else if ([identifier isEqual:@"Damage"] == YES)
return [NSString stringWithFormat:@"%d/%d", [ship currentHitPoints], [ship maxHitPoints]];
else if ([identifier isEqual:@"Location"] == YES)
{
EMMapLocation location = [ship unitLocation];
return [NSString stringWithFormat:@"%d,%d", location.row, location.column];
}
else if ([identifier isEqual:@"Icon"] == YES)
return [ship iconImage];
#if 0
else if ([identifier isEqual:@"Number"] == YES)
return [NSNumber numberWithInt:rowIndex];
#endif
return nil;
}
//----------------------------------------------------------------------
- (void) vendorImagesUpdated:(BOOL)player1:(BOOL)player2:(BOOL)player3:(BOOL)other
{
// n/a: modal
//[shipTable reloadData];
}
//----------------------------------------------------------------------
- (void) shipReportForPlayer:(EmPlayer *)player
{
NSMutableArray *unitList = [player unitList];
NSEnumerator *unitEnumerator = [unitList objectEnumerator];
Unit *unit;
[ships removeAllObjects];
while (unit = [unitEnumerator nextObject])
{
if ([unit isAShip] == YES)
[ships addObject:unit];
}
[shipTable reloadData];
[shipReportWindow makeKeyAndOrderFront:self];
[NSApp runModalForWindow:shipReportWindow];
}
//----------------------------------------------------------------------
- (void) shipReportStopAction:sender
{
[ships removeAllObjects];
[NSApp stopModal];
[[shipTable window] orderOut:self];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.