public static bool ShowTravelToVacationWorldDialog(Sim travelInitiator, out TripPlannerDialog.Result tripPlannerResult) { tripPlannerResult = null; if (((travelInitiator == null) || (travelInitiator.Household == null)) || !travelInitiator.IsSelectable) { Common.DebugNotify("Not IsSelectable"); return(false); } else if (!UIUtils.IsOkayToStartModalDialog()) { Common.DebugNotify("Not IsOkayToStartModalDialog"); return(false); } else if (!TravelUtil.CommonTravelTests(travelInitiator.LotHome)) { Common.DebugNotify("Not CommonTravelTests"); return(false); } bool onVacation = (GameStates.sTravelData != null); string worldFile = World.GetWorldFileName(); List <TripPlannerDialog.IDestinationInfo> destinations = new List <TripPlannerDialog.IDestinationInfo>(); for (int i = 0x0; i < TravelUtil.kVacationWorldNames.Length; i++) { if (worldFile == WorldData.GetWorldFile(TravelUtil.kVacationWorldNames[i])) { continue; } if (Traveler.Settings.GetHiddenWorlds(TravelUtil.kVacationWorldNames[i])) { continue; } if (GameStates.sTravelData != null) { if (worldFile == GameStates.sTravelData.mHomeWorld) { continue; } } DestinationInfoEx item = new DestinationInfoEx(TravelUtil.DestinationInfoImage[i], TravelUtil.DestinationInfoName[i], TravelUtil.DestinationInfoDescription[i], TravelUtil.DestinationInfoConfirmImage[i], TravelUtil.DestinationInfoComfirmDescription[i], TravelUtil.DestinationInfoIndex[i], TravelUtil.kVacationWorldNames[i]); destinations.Add(item); } TravelUtil.SimTravelInfo defaultTraveler = null; List <TripPlannerDialog.ISimTravelInfo> simTravelInfoList = new List <TripPlannerDialog.ISimTravelInfo>(); foreach (KeyValuePair <SimDescription, string> key in CommonSpace.Helpers.TravelUtilEx.GetTravelChoices(travelInitiator, Traveler.Settings.mTravelFilter, false)) { SimDescription description = key.Key; WorldData.OnLoadFixup(description.VisaManager); foreach (WorldName worldName in TravelUtil.kVacationWorldNames) { switch (worldName) { case WorldName.China: case WorldName.Egypt: case WorldName.France: continue; } description.VisaManager.SetVisaLevel(worldName, 3); } List <int> visas = TravelUtil.GetVisas(description); int costForSimWithAge = TravelUtil.GetCostForSimWithAge(description.Age); int durationMod = 0x0; if (description.TraitManager.HasElement(TraitNames.PreparedTraveler)) { durationMod = TraitTuning.PreparedTravelerDurationIncrease; } if (description.TraitManager.HasElement(TraitNames.Jetsetter)) { costForSimWithAge = (int)(costForSimWithAge * TraitTuning.JetsetterCostMultiplier); } if ((description.CareerManager != null) && (description.CareerManager.DegreeManager != null)) { // Used in LocateHomeAndPlaceSimsAtVacationWorld to differentiate between regular travel and university description.CareerManager.DegreeManager.mEnrollmentData.mCourseLoad = 0; } int[] partnershipBonuses = GetPartnershipBonuses(description); if (description == travelInitiator.SimDescription) { defaultTraveler = new TravelUtil.SimTravelInfo(description, costForSimWithAge, durationMod, null, visas, partnershipBonuses); } else { simTravelInfoList.Add(new TravelUtil.SimTravelInfo(description, costForSimWithAge, durationMod, key.Value, visas, partnershipBonuses)); } } if (TravelUtil.PlayerMadeTravelRequest) { Common.DebugNotify("PlayerMadeTravelRequest Fail"); return(false); } List <int> durations = new List <int>(TravelUtil.kTravelDurations); tripPlannerResult = TripPlannerDialogEx.Show(destinations, durations, simTravelInfoList, defaultTraveler); if (tripPlannerResult != null) { DestinationInfoEx destination = tripPlannerResult.Destination as DestinationInfoEx; if (destination != null) { tripPlannerResult.mDestination = new TravelUtil.DestinationInfo( destination.Image, destination.Name, destination.Description, destination.ConfirmImage, destination.ConfirmDescription, destination.Index, destination.WorldName ); } } TravelUtil.PlayerMadeTravelRequest = (tripPlannerResult != null); return(TravelUtil.PlayerMadeTravelRequest); }
public static bool ShowTravelToVacationWorldDialog(Sim travelInitiator, out TripPlannerDialog.Result tripPlannerResult) { tripPlannerResult = null; if (((travelInitiator == null) || (travelInitiator.Household == null)) || !travelInitiator.IsSelectable) { Common.DebugNotify("Not IsSelectable"); return false; } else if (!UIUtils.IsOkayToStartModalDialog()) { Common.DebugNotify("Not IsOkayToStartModalDialog"); return false; } else if (!TravelUtil.CommonTravelTests(travelInitiator.LotHome)) { Common.DebugNotify("Not CommonTravelTests"); return false; } bool onVacation = (GameStates.sTravelData != null); string worldFile = World.GetWorldFileName(); List<TripPlannerDialog.IDestinationInfo> destinations = new List<TripPlannerDialog.IDestinationInfo>(); for (int i = 0x0; i < TravelUtil.kVacationWorldNames.Length; i++) { if (worldFile == WorldData.GetWorldFile(TravelUtil.kVacationWorldNames[i])) continue; if (Traveler.Settings.GetHiddenWorlds(TravelUtil.kVacationWorldNames[i])) continue; if (GameStates.sTravelData != null) { if (worldFile == GameStates.sTravelData.mHomeWorld) continue; } DestinationInfoEx item = new DestinationInfoEx(TravelUtil.DestinationInfoImage[i], TravelUtil.DestinationInfoName[i], TravelUtil.DestinationInfoDescription[i], TravelUtil.DestinationInfoConfirmImage[i], TravelUtil.DestinationInfoComfirmDescription[i], TravelUtil.DestinationInfoIndex[i], TravelUtil.kVacationWorldNames[i]); destinations.Add(item); } TravelUtil.SimTravelInfo defaultTraveler = null; List<TripPlannerDialog.ISimTravelInfo> simTravelInfoList = new List<TripPlannerDialog.ISimTravelInfo>(); foreach (KeyValuePair<SimDescription,string> key in CommonSpace.Helpers.TravelUtilEx.GetTravelChoices(travelInitiator, Traveler.Settings.mTravelFilter, false)) { SimDescription description = key.Key; WorldData.OnLoadFixup(description.VisaManager); foreach (WorldName worldName in TravelUtil.kVacationWorldNames) { switch (worldName) { case WorldName.China: case WorldName.Egypt: case WorldName.France: continue; } description.VisaManager.SetVisaLevel(worldName, 3); } List<int> visas = TravelUtil.GetVisas(description); int costForSimWithAge = TravelUtil.GetCostForSimWithAge(description.Age); int durationMod = 0x0; if (description.TraitManager.HasElement(TraitNames.PreparedTraveler)) { durationMod = TraitTuning.PreparedTravelerDurationIncrease; } if (description.TraitManager.HasElement(TraitNames.Jetsetter)) { costForSimWithAge = (int)(costForSimWithAge * TraitTuning.JetsetterCostMultiplier); } if ((description.CareerManager != null) && (description.CareerManager.DegreeManager != null)) { // Used in LocateHomeAndPlaceSimsAtVacationWorld to differentiate between regular travel and university description.CareerManager.DegreeManager.mEnrollmentData.mCourseLoad = 0; } int[] partnershipBonuses = GetPartnershipBonuses(description); if (description == travelInitiator.SimDescription) { defaultTraveler = new TravelUtil.SimTravelInfo(description, costForSimWithAge, durationMod, null, visas, partnershipBonuses); } else { simTravelInfoList.Add(new TravelUtil.SimTravelInfo(description, costForSimWithAge, durationMod, key.Value, visas, partnershipBonuses)); } } if (TravelUtil.PlayerMadeTravelRequest) { Common.DebugNotify("PlayerMadeTravelRequest Fail"); return false; } List<int> durations = new List<int>(TravelUtil.kTravelDurations); tripPlannerResult = TripPlannerDialogEx.Show(destinations, durations, simTravelInfoList, defaultTraveler); if (tripPlannerResult != null) { DestinationInfoEx destination = tripPlannerResult.Destination as DestinationInfoEx; if (destination != null) { tripPlannerResult.mDestination = new TravelUtil.DestinationInfo( destination.Image, destination.Name, destination.Description, destination.ConfirmImage, destination.ConfirmDescription, destination.Index, destination.WorldName ); } } TravelUtil.PlayerMadeTravelRequest = (tripPlannerResult != null); return TravelUtil.PlayerMadeTravelRequest; }