void UpdatePassengersTravelTime() { PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData; foreach (PlayerSaveData.Passenger passenger in passengersData.passengers) { passenger.stationsTravelled += 1; } }
public void SimulateWaitForPassengers(float time) { int minPercent = 0; int maxPercent = 0; minPercent = communityTimeInfo.MinPercentIn; maxPercent = communityTimeInfo.MaxPercentIn; PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData; if (passengersData.IsFull()) { return; } float waitingTime = time; while (true) { if (waitingTime >= passengerTickTime) { waitingTime -= passengerTickTime; float passengersComing = ((float)passengersData.GetMaxPassengers() * Random.Range(minPercent, maxPercent)) / 100; passengersCame += passengersComing; passengersCameShown += (int)passengersCame; Color color = passengersLabel.color; color.a = 255; passengersLabel.color = color; passengersLabel.text = "passengers +" + passengersCameShown; while (passengersCame >= 1) { passengersData.AddPassenger(); passengersCame -= 1; if (passengersData.IsFull()) { break; } } if (passengersData.IsFull()) { break; } } else { return; } } }
public void ComeInCommunity() { int minPercent = 0; int maxPercent = 0; if (GlobalUI.reference.IsState(GlobalUI.States.Town)) { minPercent = TownController.reference.passengerInfo.MinPercentOut; maxPercent = TownController.reference.passengerInfo.MaxPercentOut; } else if (GlobalUI.reference.IsState(GlobalUI.States.Waystation)) { minPercent = WaystationController.reference.passengerInfo.MinPercentOut; maxPercent = WaystationController.reference.passengerInfo.MaxPercentOut; } PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData; UpdatePassengersTravelTime(); RemovePassengersComingOut(((float)passengersData.GetMaxPassengers() * Random.Range(minPercent, maxPercent)) / 100); }
void RemovePassengersComingOut(float count) { PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData; passengersCameOut += count; int timeIncome = 0; int passengersOut = 0; while (passengersCameOut >= 1) { if (passengersData.passengers.Count <= 0) { break; } PlayerSaveData.Passenger passengerComingOut = passengersData.GetPassenger(Random.Range(0, passengersData.passengers.Count - 1)); float attractionMod = (float)PlayerSaveData.reference.wagonData[passengerComingOut.wagonIndex].attraction / 100; if (attractionMod < 0) { attractionMod = 1 / (Mathf.Abs(attractionMod) + 1); } else { attractionMod = attractionMod + 1; } AddTime((int)(basePassengerTimeIncome * attractionMod * Mathf.Pow(passengerTravelMultiplier, passengerComingOut.stationsTravelled))); timeIncome += (int)(basePassengerTimeIncome * attractionMod * Mathf.Pow(passengerTravelMultiplier, passengerComingOut.stationsTravelled)); passengersData.RemovePassenger(passengerComingOut); passengersCameOut -= 1; passengersOut += 1; } Color color = timeIncomeLabel.color; color.a = 255; timeIncomeLabel.color = color; timeIncomeLabel.text = "minutes +" + timeIncome; color = passengersLabel.color; color.a = 255; passengersLabel.color = color; passengersLabel.text = "passengers -" + passengersOut; }
IEnumerator WaitForPassengers() { int minPercent = 0; int maxPercent = 0; if (GlobalUI.reference.IsState(GlobalUI.States.Town)) { minPercent = TownController.reference.passengerInfo.MinPercentIn; maxPercent = TownController.reference.passengerInfo.MaxPercentIn; } else if (GlobalUI.reference.IsState(GlobalUI.States.Waystation)) { minPercent = WaystationController.reference.passengerInfo.MinPercentIn; maxPercent = WaystationController.reference.passengerInfo.MaxPercentIn; } PlayerSaveData.PassengerData passengersData = PlayerSaveData.reference.passengerData; if (passengersData.IsFull()) { ToggleWaitForPassengers(); return(true); } float waitinGameSeconds = 0; while (true) { Debug.Log("waiting"); waitinGameSeconds -= Time.unscaledDeltaTime * waitingTimeSpeedMultiplier; while (waitinGameSeconds < 0) { waitinGameSeconds += 1; AddTime(-1); waitingTime += 1; } if (waitingTime >= passengerTickTime) { waitingTime -= passengerTickTime; float passengersComing = ((float)passengersData.GetMaxPassengers() * Random.Range(minPercent, maxPercent)) / 100; passengersCame += passengersComing; passengersCameShown += (int)passengersCame; Color color = passengersLabel.color; color.a = 255; passengersLabel.color = color; passengersLabel.text = "passengers +" + passengersCameShown; while (passengersCame >= 1) { passengersData.AddPassenger(); passengersCame -= 1; if (passengersData.IsFull()) { ToggleWaitForPassengers(); break; } } if (passengersData.IsFull()) { ToggleWaitForPassengers(); break; } } yield return(null); } }