Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }