00001 /* $Id$ */ 00002 00003 /* 00004 * This file is part of OpenTTD. 00005 * OpenTTD 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, version 2. 00006 * OpenTTD 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. 00007 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. 00008 */ 00009 00012 #ifndef SHIP_H 00013 #define SHIP_H 00014 00015 #include "vehicle_base.h" 00016 #include "water_map.h" 00017 00018 void GetShipSpriteSize(EngineID engine, uint &width, uint &height, EngineImageType image_type); 00019 WaterClass GetEffectiveWaterClass(TileIndex tile); 00020 00024 struct Ship FINAL : public SpecializedVehicle<Ship, VEH_SHIP> { 00025 TrackBitsByte state; 00026 00028 Ship() : SpecializedVehicleBase() {} 00030 virtual ~Ship() { this->PreDestructor(); } 00031 00032 void MarkDirty(); 00033 void UpdateDeltaXY(Direction direction); 00034 ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_SHIP_INC : EXPENSES_SHIP_RUN; } 00035 void PlayLeaveStationSound() const; 00036 bool IsPrimaryVehicle() const { return true; } 00037 SpriteID GetImage(Direction direction, EngineImageType image_type) const; 00038 int GetDisplaySpeed() const { return this->cur_speed / 2; } 00039 int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed / 2; } 00040 Money GetRunningCost() const; 00041 bool IsInDepot() const { return this->state == TRACK_BIT_DEPOT; } 00042 bool Tick(); 00043 void OnNewDay(); 00044 Trackdir GetVehicleTrackdir() const; 00045 TileIndex GetOrderStationLocation(StationID station); 00046 bool FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse); 00047 void UpdateCache(); 00048 }; 00049 00054 #define FOR_ALL_SHIPS(var) FOR_ALL_VEHICLES_OF_TYPE(Ship, var) 00055 00056 #endif /* SHIP_H */