equal
deleted
inserted
replaced
104 return _ship_sprites[spritenum] + direction; |
104 return _ship_sprites[spritenum] + direction; |
105 } |
105 } |
106 |
106 |
107 static const Depot* FindClosestShipDepot(const Vehicle* v) |
107 static const Depot* FindClosestShipDepot(const Vehicle* v) |
108 { |
108 { |
109 if (_patches.pathfinder_for_ships == VPF_NPF) { /* NPF is used */ |
109 if (_settings.pf.pathfinder_for_ships == VPF_NPF) { /* NPF is used */ |
110 Trackdir trackdir = GetVehicleTrackdir(v); |
110 Trackdir trackdir = GetVehicleTrackdir(v); |
111 NPFFoundTargetData ftd = NPFRouteToDepotTrialError(v->tile, trackdir, false, TRANSPORT_WATER, 0, v->owner, INVALID_RAILTYPES); |
111 NPFFoundTargetData ftd = NPFRouteToDepotTrialError(v->tile, trackdir, false, TRANSPORT_WATER, 0, v->owner, INVALID_RAILTYPES); |
112 |
112 |
113 if (ftd.best_bird_dist == 0) return GetDepotByTile(ftd.node.tile); /* Found target */ |
113 if (ftd.best_bird_dist == 0) return GetDepotByTile(ftd.node.tile); /* Found target */ |
114 |
114 |
135 return best_depot; |
135 return best_depot; |
136 } |
136 } |
137 |
137 |
138 static void CheckIfShipNeedsService(Vehicle *v) |
138 static void CheckIfShipNeedsService(Vehicle *v) |
139 { |
139 { |
140 if (_patches.servint_ships == 0 || !v->NeedsAutomaticServicing()) return; |
140 if (_settings.vehicle.servint_ships == 0 || !v->NeedsAutomaticServicing()) return; |
141 if (v->IsInDepot()) { |
141 if (v->IsInDepot()) { |
142 VehicleServiceInDepot(v); |
142 VehicleServiceInDepot(v); |
143 return; |
143 return; |
144 } |
144 } |
145 |
145 |
318 spd = min(v->cur_speed + 1, GetVehicleProperty(v, 0x0B, v->max_speed)); |
318 spd = min(v->cur_speed + 1, GetVehicleProperty(v, 0x0B, v->max_speed)); |
319 |
319 |
320 /*updates statusbar only if speed have changed to save CPU time */ |
320 /*updates statusbar only if speed have changed to save CPU time */ |
321 if (spd != v->cur_speed) { |
321 if (spd != v->cur_speed) { |
322 v->cur_speed = spd; |
322 v->cur_speed = spd; |
323 if (_patches.vehicle_speed) |
323 if (_settings.gui.vehicle_speed) |
324 InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH); |
324 InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH); |
325 } |
325 } |
326 |
326 |
327 /* Decrease somewhat when turning */ |
327 /* Decrease somewhat when turning */ |
328 if (!(v->direction & 1)) spd = spd * 3 / 4; |
328 if (!(v->direction & 1)) spd = spd * 3 / 4; |
457 * direction in which we are entering the tile */ |
457 * direction in which we are entering the tile */ |
458 static Track ChooseShipTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks) |
458 static Track ChooseShipTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks) |
459 { |
459 { |
460 assert(IsValidDiagDirection(enterdir)); |
460 assert(IsValidDiagDirection(enterdir)); |
461 |
461 |
462 switch (_patches.pathfinder_for_ships) { |
462 switch (_settings.pf.pathfinder_for_ships) { |
463 case VPF_YAPF: { /* YAPF */ |
463 case VPF_YAPF: { /* YAPF */ |
464 Trackdir trackdir = YapfChooseShipTrack(v, tile, enterdir, tracks); |
464 Trackdir trackdir = YapfChooseShipTrack(v, tile, enterdir, tracks); |
465 if (trackdir != INVALID_TRACKDIR) return TrackdirToTrack(trackdir); |
465 if (trackdir != INVALID_TRACKDIR) return TrackdirToTrack(trackdir); |
466 } break; |
466 } break; |
467 |
467 |
754 if (!IsShipDepotTile(tile)) return CMD_ERROR; |
754 if (!IsShipDepotTile(tile)) return CMD_ERROR; |
755 if (!IsTileOwner(tile, _current_player)) return CMD_ERROR; |
755 if (!IsTileOwner(tile, _current_player)) return CMD_ERROR; |
756 |
756 |
757 unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_SHIP); |
757 unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_SHIP); |
758 |
758 |
759 if (!Vehicle::AllocateList(NULL, 1) || unit_num > _patches.max_ships) |
759 if (!Vehicle::AllocateList(NULL, 1) || unit_num > _settings.vehicle.max_ships) |
760 return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME); |
760 return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME); |
761 |
761 |
762 if (flags & DC_EXEC) { |
762 if (flags & DC_EXEC) { |
763 int x; |
763 int x; |
764 int y; |
764 int y; |
798 _new_vehicle_id = v->index; |
798 _new_vehicle_id = v->index; |
799 |
799 |
800 v->name = NULL; |
800 v->name = NULL; |
801 v->u.ship.state = TRACK_BIT_DEPOT; |
801 v->u.ship.state = TRACK_BIT_DEPOT; |
802 |
802 |
803 v->service_interval = _patches.servint_ships; |
803 v->service_interval = _settings.vehicle.servint_ships; |
804 v->date_of_last_service = _date; |
804 v->date_of_last_service = _date; |
805 v->build_year = _cur_year; |
805 v->build_year = _cur_year; |
806 v->cur_image = 0x0E5E; |
806 v->cur_image = 0x0E5E; |
807 v->random_bits = VehicleRandomBits(); |
807 v->random_bits = VehicleRandomBits(); |
808 |
808 |