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

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

//
// $Id: Unit.h,v 1.5 1997/10/27 08:28:27 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 "Empire.h"

@class City;
@class EmPlayer;
@class Order;

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

@interface Unit : NSObject
{
    UnitType unitType;
    EmPlayer *owner;

    NSString *unitName;
    EMMapLocation unitLocation;

    int currentHitPoints;
    int currentRange;
    int fuel;

    Order *order;

    BOOL isDestroyed;
    BOOL isDoneTurn;

    NSMutableArray *cargo;

    Unit *onBoard; // The ship we are on board, if any.
    City *withinCity;
}

+ (void) initialize;

- initWithUnitType:(UnitType)aUnitType inCity:(City *)producingCity;
- (void) dealloc;

- (NSString *) description;

//======================================================================
// General static values
//======================================================================

- (UnitType) unitType;
- (EmPlayer *) owner;
- (Player) playerNumber;
- (NSString *) unitName;
- (BOOL) isAShip;

//======================================================================
// Combat information
//======================================================================

- (int) currentHitPoints;

// Intrinsic values
- (int) maxHitPoints;
- (int) damagePerHit;

// These values have NOT been adjusted by player efficiencies.
- (float) attackFactor;
- (float) defenseFactor:(BOOL)bombardment;

- (BOOL) canBombard;

//======================================================================
// Movement information
//======================================================================

- (int) currentRange;
- (int) remainingFuel;

- (BOOL) canMoveOnTerrain:(Terrain)terrain;
- (MovementType) movementType;

- (EMMapLocation) unitLocation;
- (void) setLocation:(EMMapLocation)newLocation;
- (void) takeLocationFromTransport;

//======================================================================
// Display
//======================================================================

- (Icon) icon;
- (NSImage *) iconImage;

//======================================================================
// Order support
//======================================================================

- (void) setOrder:(Order *)newOrder;
- (Order *) currentOrder;
- (BOOL) isSentried;
- (int) remainingCargoCapacity;
- (BOOL) isFull;

//======================================================================
// Turn handling
//======================================================================

- (void) repairDamage;
- (void) refuel;
- (void) resetRange;

- (void) skipMove;
- (void) useSkippedFuel;
- (void) moved;

- (BOOL) isFinishedMoving;
- (void) setUnitFinishedMoving:(BOOL)flag;

- (BOOL) tryToMove; // Maybe under order support?

//======================================================================
// Human UI support
//======================================================================

- (NSString *) statusLine;

//======================================================================
// Commands
//======================================================================

- (void) unloadShip;
- (void) destroyUnit:(BOOL)disbanded;
- (BOOL) loadUnit:(Unit *)aUnit;

//======================================================================
// Combat Support
//======================================================================

- (BOOL) hitForDamage:(int)damage;
- (CombatProfile) combatProfileAgainstBombardment:(BOOL)bombarding;

//======================================================================
// Other
//======================================================================

- (BOOL) isOnBoardShip;
- (BOOL) isInCity;
- (BOOL) hasBeenDestroyed;

- (City *) city;
- (void) setCity:(City *)aCity;

// If this unit is aboard a ship, this method returns the containing ship.
- (Unit *) shipOnBoard;
- (void) setOnBoardShip:(Unit *)ship;

// Shared with City..
- (void) unitDidExit:(Unit *)aUnit;
- (void) unitDidEnter:(Unit *)aUnit;

@end

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