This is CombatEvent.m in view mode; [Download] [Up]
//
// $Id: CombatEvent.m,v 1.7 1997/10/31 04:51:39 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: CombatEvent.m,v 1.7 1997/10/31 04:51:39 nygard Exp $");
#import "CombatEvent.h"
#import "Map.h"
#import "MapView.h"
//======================================================================
// A Combat Event records activity visible to the player that happened
// during the other players turns.
//======================================================================
@implementation CombatEvent
+ updateAtLocation:(EMMapLocation)target ofMap:(Map *)map
{
return [[[CombatEvent alloc] initUpdateAtLocation:target ofMap:map] autorelease];
}
//----------------------------------------------------------------------
+ update3x3AroundLocation:(EMMapLocation)target ofMap:(Map *)map
{
return [[[CombatEvent alloc] initUpdate3x3AroundLocation:target ofMap:map] autorelease];
}
//----------------------------------------------------------------------
+ showExplosions:(int)count atLocation:(EMMapLocation)target
{
return [[[CombatEvent alloc] initShowExplosions:count atLocation:target] autorelease];
}
//----------------------------------------------------------------------
+ stripIconsOfPlayer:(Player)number
{
return [[[CombatEvent alloc] initStripIconsOfPlayer:number] autorelease];
}
//----------------------------------------------------------------------
- initUpdateAtLocation:(EMMapLocation)target ofMap:(Map *)map
{
[super init];
combatEventType = cet_update1;
eventLocation = target;
tokens[0] = [map tokenAtLocation:target];
return self;
}
//----------------------------------------------------------------------
- initUpdate3x3AroundLocation:(EMMapLocation)target ofMap:(Map *)map
{
[super init];
combatEventType = cet_update3;
eventLocation = target;
[map get3x3Tokens:tokens aroundLocation:target];
return self;
}
//----------------------------------------------------------------------
- initShowExplosions:(int)count atLocation:(EMMapLocation)target
{
[super init];
combatEventType = cet_explosions;
eventLocation = target;
explosionCount = count;
return self;
}
//----------------------------------------------------------------------
- initStripIconsOfPlayer:(Player)number
{
[super init];
combatEventType = cet_strip_icons;
player = number;
return self;
}
//----------------------------------------------------------------------
- (void) replayCombatFor:(Map *)map in:(MapView *)mapView
{
switch (combatEventType)
{
case cet_update1:
[mapView centerLocation:eventLocation ifNotVisible:YES];
[map setToken:tokens[0] atLocation:eventLocation];
break;
case cet_update3:
[mapView centerLocation:eventLocation ifNotVisible:YES];
[map set3x3Tokens:tokens aroundLocation:eventLocation];
break;
case cet_explosions:
[mapView centerLocation:eventLocation ifNotVisible:YES];
[mapView showExplosions:explosionCount atLocation:eventLocation];
break;
case cet_strip_icons:
[map stripIconsOfPlayer:player];
break;
default:
NSLog (@"Unknown combat type...\n");
break;
}
}
//----------------------------------------------------------------------
- (NSString *) description
{
NSString *str = nil;
switch (combatEventType)
{
case cet_update1:
str = [NSString stringWithFormat:@"update 1x1 (%d,%d)", eventLocation.row, eventLocation.column];
break;
case cet_update3:
str = [NSString stringWithFormat:@"update 3x3 (%d,%d)", eventLocation.row, eventLocation.column];
break;
case cet_explosions:
str = [NSString stringWithFormat:@"show %d explosions at (%d,%d)",
explosionCount, eventLocation.row, eventLocation.column];
break;
case cet_strip_icons:
str = [NSString stringWithFormat:@"strip icons of player %d", player];
break;
default:
str = @"Unknown combat type";
break;
}
return str;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.