public void Btn_Send() { List <Dock> destinationDocks = PlayerDataManager.Instance.GetDocksByPlanet(selectedDestination); foreach (var destinationDock in destinationDocks) { if (destinationDock.DockState == DockState.Empty) { // We need to substract the required fuel from the total fuel //dock.Ship.resourcesModule.IncreaseResource(ResourcesDSID.Fuel, -sendShipManager.CalculateReqFuel(selectedLaunchMethod == LaunchMethod.Skyhook)); InstitutionsUIManager.Instance.CosmicPortUIManager.Back(); var sendShipData = new SendShipData(dock, destinationDock, selectedDestination); Settlement.Instance.CosmicPort.LaunchShip(sendShipData, selectedLaunchMethod); // reserve this dock destinationDock.UpdateState(DockState.Reserved); ReserveDock(destinationDocks); return; } } string text = "No docks can receive the ship"; PopUpManager.CreateSingleButtonTextPopUp(text, "Ok"); return; }
public void TryToLaunchShip(SendShipData sendShipData) { var container = GetContainerToSpawn(); if (container == null) { AddToQueue(LandOrLaunch.Launch, sendShipData); return; } container.SpawnShipForLaunch(shipPrefab, sendShipData); }
public void LaunchShip(SendShipData sendShipData, LaunchMethod launchMethod) { if (launchMethod == LaunchMethod.Regular) { smokeObject.SetActive(true); landLaunchManager.LaunchShip(sendShipData, LevelModule.Level); } else { skyhookLandLaunchManager.TryToLaunchShip(sendShipData); } }
public void SpawnShipForLaunch(ShipInSkyhoookPrefab shipPrefab, SendShipData sendShipData) { this.sendShipData = sendShipData; this.shipPrefab = Instantiate(shipPrefab, skyhook.ShipContainer); this.shipPrefab.AssignShipSrite(sendShipData.launchingDock.Ship.shipType); skyhook.onReachedLaunchPoint += Skyhook_OnReachedLaunchPoint; hasShipAssigned = true; }
public void LaunchShip(SendShipData sendShipData, int level) { if (isLandingOrLaunching) { AddToQueue(LandOrLaunch.Launch, sendShipData); return; } ShipPrefab ship = Object.Instantiate(shipPrefab, launchShipContainer); ship.Launch(sendShipData.launchingDock.Ship.shipType, level, landShipContainer.position.y); SetToBusy(); TripsManager.Instance.StartNewTrip(Settlement.Instance.Planet, sendShipData.destination, GetTimeToDestination(sendShipData.destination), sendShipData.launchingDock.Ship, sendShipData.destinationDock); sendShipData.launchingDock.RemoveShip(); mono.StartCoroutine(HandleNextQueueElementCo()); }
public void AddToQueue(LandOrLaunch landOrLaunch, SendShipData sendShipData) { shipsQueue.Enqueue(new CosmicPortQueueElement(landOrLaunch, sendShipData)); }
public CosmicPortQueueElement(LandOrLaunch landOrLaunch, SendShipData sendShipData) { this.landOrLaunch = landOrLaunch; this.sendShipData = sendShipData; }