mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-11 13:10:45 +00:00
Change: Allow only one ship to leave depot at a time.
This commit is contained in:
parent
ebddd596c7
commit
b98887c4a0
@ -319,6 +319,14 @@ void Ship::UpdateDeltaXY()
|
|||||||
this->z_extent = 6;
|
this->z_extent = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test-procedure for HasVehicleOnPos to check for a ship.
|
||||||
|
*/
|
||||||
|
static Vehicle *EnsureNoVisibleShipProc(Vehicle *v, void *data)
|
||||||
|
{
|
||||||
|
return v->type == VEH_SHIP && (v->vehstatus & VS_HIDDEN) == 0 ? v : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static bool CheckShipLeaveDepot(Ship *v)
|
static bool CheckShipLeaveDepot(Ship *v)
|
||||||
{
|
{
|
||||||
if (!v->IsChainInDepot()) return false;
|
if (!v->IsChainInDepot()) return false;
|
||||||
@ -333,6 +341,10 @@ static bool CheckShipLeaveDepot(Ship *v)
|
|||||||
/* Don't leave depot if no destination set */
|
/* Don't leave depot if no destination set */
|
||||||
if (v->dest_tile == 0) return true;
|
if (v->dest_tile == 0) return true;
|
||||||
|
|
||||||
|
/* Don't leave depot if another vehicle is already entering/leaving */
|
||||||
|
/* This helps avoid CPU load if many ships are set to start at the same time */
|
||||||
|
if (HasVehicleOnPos(v->tile, NULL, &EnsureNoVisibleShipProc)) return true;
|
||||||
|
|
||||||
TileIndex tile = v->tile;
|
TileIndex tile = v->tile;
|
||||||
Axis axis = GetShipDepotAxis(tile);
|
Axis axis = GetShipDepotAxis(tile);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user