ftp.nice.ch/Attic/openStep/games/Empire.0.6.m.NIS.bs.tgz#/Empire.0.6/src/City.h

This is City.h in view mode; [Download] [Up]

//
// $Id: City.h,v 1.8 1997/10/31 04:51:33 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 <AppKit/AppKit.h>
#import <Foundation/NSPortCoder.h>
#import "Empire.h"

@class EmPlayer;
@class Map;
@class MapView;
@class OMoveTo;
@class PathSegment;
@class Unit;

//======================================================================

@interface City : NSObject
{
    EMMapLocation cityLocation;
    BOOL port;  // Is this city on a body of water?

    NSString *cityName;
    EmPlayer *owner;

    NSMutableArray *cityUnits;

    UnitType productionType;
    BOOL firstUnit;
    int turnsUntilConstructed;

    NSMutableArray *observers;

    OMoveTo *flightPath;
}

+ (void) initialize;

- initAtLocation:(EMMapLocation)cityLocation ofMap:(Map *)map;
- (void) dealloc;

- (void) encodeWithCoder:(NSCoder *)aCoder;
- initWithCoder:(NSCoder *)aDecoder;

- replacementObjectForPortCoder:(NSPortCoder *)encoder;

- (NSString *) description;

- (EMMapLocation) cityLocation;
- (BOOL) isAPort;

- (NSString *) cityName;
- (void) setCityName:(NSString *)aName;

- (EmPlayer *) owner;
- (void) setOwner:(EmPlayer *)aPlayer;

- (int) productionEfficiency;
- (float) productionTimeMultiplier;
- (int) turnsToConstruct:(int *)turnArray;
- (void) defaultTurnsToConstruct:(int *)turnArray;

- (NSArray *) cityUnits;

- (UnitType) productionType;
- (void) setProduction:(UnitType)productionType;

//======================================================================
// Turn phases
//======================================================================

- (void) startOfTurn;

//======================================================================
// ObserverPattern
//======================================================================

- (void) attach:observer;
- (void) detach:observer;

- (void) unitDidExit:(Unit *)aUnit;
- (void) unitDidEnter:(Unit *)aUnit;
- (void) cityWasLost;


- (void) unitIconHasChanged:(Unit *)aUnit;

- (PathSegment *) flightPathInMapView:(MapView *)mapView;
- (void) setFlightPath:(OMoveTo *)flightPath;

@end

//======================================================================

@interface City (Extensions)

- (NSString *) attributesInspectorClassName;
- (NSString *) unitsInspectorClassName;

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.