00001 // $Id: subfleet_8h-source.html,v 1.2 2002/06/20 17:09:51 mkrohn5 Exp $ 00002 // 00003 // subfleet Header File 00004 // Written by: Marco Krohn 00005 // Ralf Laue 00006 // 00007 // Copyright (C) 2001 - , Marco Krohn, <marco.krohn@gmx.de> 00008 // Ralf Laue <ralf.laue@gmx.de> 00009 // 00010 // This program is free software; you can redistribute it and/or modify 00011 // it under the terms of the GNU General Public License as published by 00012 // the Free Software Foundation; either version 1, or (at your option) 00013 // any later version. 00014 // 00015 // This program is distributed in the hope that it will be useful, 00016 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 // GNU General Public License for more details. 00019 00020 #ifndef __SUBFLEET_INCLUDED 00021 #define __SUBFLEET_INCLUDED 00022 00023 #include "gamelogic/action.h" 00024 #include "common/defs.h" 00025 #include "gamelogic/item.h" 00026 #include "common/osval.h" 00027 00028 class TFleet; 00029 class TShipDesign; 00030 00031 /****************************** class TSubFleet ********************************/ 00032 00033 00048 class TSubFleet : public TActionObject 00049 { 00050 public: 00057 TSubFleet( TShipDesign* ShipDesign, int2 NumberOfShips ); 00065 TSubFleet( TSubFleet& OldSubFleet ); 00069 virtual ~TSubFleet(); 00070 00075 virtual int2 getType() const; 00080 virtual const string& getTypeName() const; 00084 virtual const TFleet* getFleet() const; 00088 virtual const TShipDesign* getShipDesign() const; 00092 virtual void AddShips( int4 NumberOfShips ); 00098 virtual void SubstractShips( int4 NumberOfShips ); 00101 virtual int4 getNumberOfShips() const; 00108 virtual void setAutoUpgrade( TShipDesign* UpgradeDesign ); 00114 virtual TShipDesign* getUpgradeDesign() const; 00119 virtual void CancelAutoUpgrade(); 00128 virtual bool getUpgradeCosts( TSubstanceSet* UpgradeCosts ) const = 0; 00138 virtual bool CommitAutoUpgrade(); 00145 virtual void setAutoRetire(); 00150 virtual void CancelAutoRetire(); 00156 virtual bool IsAutoRetire() const; 00163 virtual void getRepairCost( TSubstanceSet* RepairCost ) const = 0; 00167 virtual void RepairSubfleet() = 0; 00172 virtual void setExperience( int4 Experience ); 00176 virtual int4 getExperience() const; 00180 virtual int4 getMaxHullHP() const; 00185 virtual int4 getMaxArmorHP() const; 00190 virtual int4 getMaxShieldHP() const; 00195 virtual int4 getActualHullHP() const = 0; 00203 virtual int4 getFTLFuelConsumption( double Speed, double Distance=1 ) const = 0; 00207 virtual double getFTLMaxSpeed() const = 0; 00213 virtual double getFTLMovementDistance( double dSpeed ) const = 0; 00220 virtual double getFTLBreakDownProbability( double Speed ) const = 0; 00225 virtual double getLongScannerRange( TScanner::tScannerType ScannerType ) const = 0; 00229 virtual void setFuel( int4 Fuel ) = 0; 00233 virtual int4 getFuel() const = 0; 00237 virtual int4 getCargoSpace() const; 00245 virtual bool IsColonizer() const = 0; 00250 virtual int2 getMiningRate() const; 00259 virtual bool load( TDataPackageList* in ); 00267 virtual bool save( TDataPackageList* out ) const; 00273 virtual TSubFleet& operator=( const TSubFleet& SubFleet ); 00274 00275 protected: 00276 friend class TFleet; 00282 virtual void setFleet( TFleet* NewFleet ); 00284 TLink<TFleet> fFleet; 00286 TLink<TShipDesign> fShipDesign; 00288 TLink<TShipDesign> fUpgradeDesign; 00290 int4 fNumberOfShips; 00292 int4 fExperience; 00294 bool fAutoRetire; 00295 }; 00296 00297 00298 #endif // __SUB_FLEET_INCLUDED