Ejemplo n.º 1
0
        public static Occupation ImportJobContent(CareerManager ths, uint key, ResKeyTable resKeyTable, ObjectIdTable objIdTable, IPropertyStreamReader reader)
        {
            Occupation            occupation = null;
            IPropertyStreamReader child      = reader.GetChild(key);

            if (child != null)
            {
                ulong num;
                child.ReadUint64(0xae293ba5, out num, 0L);

                // Custom, EA Standard occupations are handled by EA
                if (Enum.IsDefined(typeof(OccupationNames), num))
                {
                    return(null);
                }

                {
                    OccupationNames guid = (OccupationNames)num;
                    if (guid != OccupationNames.Undefined)
                    {
                        Occupation staticOccupation = CareerManager.GetStaticOccupation(guid);
                        if (staticOccupation != null)
                        {
                            occupation = staticOccupation.Clone();
                            occupation.OwnerDescription = ths.mSimDescription;
                            occupation.ImportContent(resKeyTable, objIdTable, child);
                        }
                    }
                }
            }

            return(occupation);
        }
Ejemplo n.º 2
0
            public override bool Perform(SimDescription me, bool applyAll)
            {
                Occupation job        = me.Occupation;
                Occupation retiredJob = me.CareerManager.mRetiredCareer;

                me.CareerManager.mRetiredCareer = null;

                Occupation staticCareer = CareerManager.GetStaticOccupation(mCareer.Guid);

                if (staticCareer is School)
                {
                    me.CareerManager.mJob = null;
                }

                int originaHighest = 0;

                try
                {
                    if (mLocation != null)
                    {
                        AcquireOccupationParameters parameters = new AcquireOccupationParameters(mLocation, false, false);
                        parameters.ForceAutomaticChange = applyAll;

                        me.CareerManager.AcquireOccupation(parameters);
                    }
                    else
                    {
                        if (mCareer.Guid == OccupationNames.Firefighter)
                        {
                            ActiveCareerStaticData activeCareerStaticData = ActiveCareer.GetActiveCareerStaticData(OccupationNames.Firefighter);

                            originaHighest = activeCareerStaticData.HighestLevel;

                            // Required to bypass auto promotion in SetAttributesForNewJob
                            activeCareerStaticData.HighestLevel = 1;
                        }

                        AcquireOccupation(me.CareerManager, new AcquireOccupationParameters(mCareer.Guid, false, false), !applyAll);
                    }
                }
                finally
                {
                    me.CareerManager.mRetiredCareer = retiredJob;

                    if (me.CareerManager.mJob == null)
                    {
                        me.CareerManager.mJob = job;
                    }

                    if (mCareer.Guid == OccupationNames.Firefighter)
                    {
                        ActiveCareerStaticData activeCareerStaticData = ActiveCareer.GetActiveCareerStaticData(OccupationNames.Firefighter);
                        activeCareerStaticData.HighestLevel = originaHighest;
                    }
                }

                return(true);
            }
Ejemplo n.º 3
0
                public ListItem(FeeBySchoolOption option, SchoolFee value)
                    : base(option, value)
                {
                    Occupation school = CareerManager.GetStaticOccupation(Value.mSchool);

                    if (school != null)
                    {
                        SetThumbnail(school.CareerIconColored, ProductVersion.BaseGame);
                    }
                }
Ejemplo n.º 4
0
        protected bool AskForJob(SimDescription sim, OccupationNames careerName)
        {
            Occupation occupation = CareerManager.GetStaticOccupation(careerName);

            if (occupation == null)
            {
                IncStat("Bad Occupation");
                return(false);
            }

            return(AskForJob(sim, occupation));
        }
Ejemplo n.º 5
0
            public Item(OccupationNames career)
                : base(career, career.ToString(), 0)
            {
                Occupation job = CareerManager.GetStaticOccupation(career);

                if (job != null)
                {
                    mName = job.CareerName;

                    SetThumbnail(job.CareerIconColored, ProductVersion.BaseGame);
                }
            }
Ejemplo n.º 6
0
        protected override string GetLocalizedValue(OccupationNames value, ref ThumbnailKey icon)
        {
            Occupation career = CareerManager.GetStaticOccupation(value);

            if (career == null)
            {
                return(null);
            }

            icon = new ThumbnailKey(ResourceKey.CreatePNGKey(career.CareerIconColored, ResourceUtils.ProductVersionToGroupId(ProductVersion.BaseGame)), ThumbnailSize.Medium);

            return(career.CareerName);
        }
Ejemplo n.º 7
0
        protected override string LocalizeValue(OccupationNames value)
        {
            Occupation career = CareerManager.GetStaticOccupation(value);

            if (career != null)
            {
                return(career.GetLocalizedCareerName(false));
            }
            else
            {
                return(base.LocalizeValue(value));
            }
        }
Ejemplo n.º 8
0
        public override bool InRabbitHole()
        {
            try
            {
                OpportunityDialog.MaptagObjectInfo info;
                if (!UIUtils.IsOkayToStartModalDialog() || !Sims3.Gameplay.ActiveCareer.ActiveCareer.CanAddActiveCareer(Actor.SimDescription, CareerToSet))
                {
                    return(false);
                }

                SkillBasedCareerStaticData occupationStaticData = Occupation.GetOccupationStaticData(CareerToSet) as SkillBasedCareerStaticData;
                Occupation staticOccupation    = CareerManager.GetStaticOccupation(CareerToSet);
                string     localizedCareerName = Occupation.GetLocalizedCareerName(CareerToSet, Actor.SimDescription);
                string     description         = Common.LocalizeEAString(Actor.IsFemale, occupationStaticData.CareerDescriptionLocalizationKey, new object[0x0]);
                string     reward = string.Empty;
                foreach (string str4 in staticOccupation.ResponsibilitiesLocalizationKeys)
                {
                    reward = reward + Common.LocalizeEAString(Actor.IsFemale, str4, new object[0x0]) + Common.NewLine;
                }
                info.mLotId          = 0x0L;
                info.mMapTag         = null;
                info.mObjectGuid     = ObjectGuid.InvalidObjectGuid;
                info.mHouseholdLotId = ulong.MaxValue;
                bool flag = OpportunityDialog.Show(ThumbnailKey.kInvalidThumbnailKey, Actor.ObjectId, ObjectGuid.InvalidObjectGuid, Actor.Name, OpportunityDialog.OpportunityType.SkillBasedCareer, localizedCareerName, description, string.Empty, reward, info, true, OpportunityDialog.DescriptionBackgroundType.NotSet, Actor.IsFemale, false);
                if (flag)
                {
                    AcquireOccupationParameters occupationParameters = new AcquireOccupationParameters(CareerToSet, true, false);

                    OmniCareer tempCareer = new OmniCareer();
                    tempCareer.mCareerGuid = staticOccupation.Guid;

                    occupationParameters.Location        = new CareerLocation();
                    occupationParameters.Location.Career = tempCareer;

                    return(Actor.AcquireOccupation(occupationParameters));
                }
                return(flag);
            }
            catch (ResetException)
            {
                throw;
            }
            catch (Exception e)
            {
                Common.Exception(Actor, Target, e);
                return(false);
            }
        }
Ejemplo n.º 9
0
        protected override OccupationNames ConvertFromString(string value)
        {
            OccupationNames result;

            if (!ParserFunctions.TryParseEnum <OccupationNames>(value, out result, OccupationNames.Undefined))
            {
                ulong guid;
                if (ulong.TryParse(value, out guid))
                {
                    result = (OccupationNames)guid;

                    if (CareerManager.GetStaticOccupation(result) == null)
                    {
                        return(OccupationNames.Undefined);
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 10
0
        protected override bool PersistCreate(ref OccupationNames defValue, string value)
        {
            if (!ParserFunctions.TryParseEnum <OccupationNames>(value, out defValue, OccupationNames.Undefined))
            {
                ulong guid;
                if (ulong.TryParse(value, out guid))
                {
                    defValue = (OccupationNames)guid;

                    if (CareerManager.GetStaticOccupation(defValue) == null)
                    {
                        defValue = OccupationNames.Undefined;
                        return(false);
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 11
0
        protected override string GetLocalizedValue(string value, ref ThumbnailKey icon)
        {
            string[] split = value.Split('-');

            if (split.Length < 2)
            {
                split[0] = ""; // will cause TryParseEnum to fail
            }

            OccupationNames result;
            Occupation      career;

            if (!ParserFunctions.TryParseEnum <OccupationNames>(split[0], out result, OccupationNames.Undefined))
            {
                ulong guid;
                if (ulong.TryParse(split[0], out guid))
                {
                    result = (OccupationNames)guid;
                }
                else
                {
                    return(OccupationNames.Undefined + " " + EAText.GetNumberString(0));
                }
            }

            career = CareerManager.GetStaticOccupation(result);

            if (career == null)
            {
                return(OccupationNames.Undefined + " " + EAText.GetNumberString(0));
            }

            icon = new ThumbnailKey(ResourceKey.CreatePNGKey(career.CareerIconColored, ResourceUtils.ProductVersionToGroupId(ProductVersion.BaseGame)), ThumbnailSize.Medium);

            int num = 0;

            int.TryParse(split[1], out num);

            return(career.CareerName + " " + EAText.GetNumberString(num));
        }
Ejemplo n.º 12
0
        public bool Satisfies(ManagerCareer manager, SimDescription sim, Lot newLot, bool inspecting)
        {
            if (!inspecting)
            {
                Occupation career = CareerManager.GetStaticOccupation(mCareer);
                if (career == null)
                {
                    return(false);
                }

                if ((GameUtils.IsFutureWorld()) && (!career.AvailableInFutureWorld))
                {
                    return(false);
                }

                if (sim.IsEP11Bot)
                {
                    if (!sim.HasTrait(TraitNames.ProfessionalChip))
                    {
                        return(false);
                    }
                }

                if (sim.CreatedSim != null)
                {
                    if ((sim.Occupation == null) || (sim.Occupation.Guid != mCareer))
                    {
                        GreyedOutTooltipCallback greyedOutTooltipCallback = null;
                        if (!career.CanAcceptCareer(sim.CreatedSim.ObjectId, ref greyedOutTooltipCallback))
                        {
                            return(false);
                        }
                    }
                }
            }

            return(PrivateSatisfies(manager, sim, newLot, inspecting));
        }
Ejemplo n.º 13
0
            public override void SetValue(OccupationNames value, OccupationNames storeType)
            {
                mValue = value;

                if (value == OccupationNames.Undefined)
                {
                    mName = Common.Localize("Criteria.Career:Unemployed");
                }
                else
                {
                    Occupation occupation = CareerManager.GetStaticOccupation(mValue);
                    if (occupation != null)
                    {
                        mName = occupation.CareerName;

                        SetThumbnail(occupation.CareerIconColored, ProductVersion.BaseGame);
                    }
                    else
                    {
                        mName = mValue.ToString();
                    }
                }
            }
Ejemplo n.º 14
0
            protected override bool PrivatePerform(List <SchoolFee> values)
            {
                foreach (SchoolFee fee in values)
                {
                    Occupation school = CareerManager.GetStaticOccupation(fee.mSchool);
                    if (school == null)
                    {
                        continue;
                    }

                    string text = StringInputDialog.Show(Name, Common.Localize(GetTitlePrefix() + ":Prompt", false, new object[] { school.CareerName }), fee.mValue.ToString());
                    if (string.IsNullOrEmpty(text))
                    {
                        continue;
                    }

                    int value;
                    if (!int.TryParse(text, out value))
                    {
                        continue;
                    }

                    fee.mValue = value;

                    SchoolFee existing = Value.Find(item => { return(item.mSchool == fee.mSchool); });
                    if (existing != null)
                    {
                        existing.mValue = fee.mValue;
                    }
                    else
                    {
                        Value.Add(fee);
                    }
                }

                return(true);
            }
Ejemplo n.º 15
0
        protected string GetDetails(List <IMiniSimDescription> sims)
        {
            long lUnemployed = 0, lRetired = 0, lWorkingPension = 0, lTotalWorking = 0;
            long lDemotionPerf = 0;
            long lPositivePerf = 0;

            Dictionary <OccupationNames, long> list = new Dictionary <OccupationNames, long>();

            foreach (IMiniSimDescription miniSim in sims)
            {
                SimDescription member = miniSim as SimDescription;
                if (member == null)
                {
                    continue;
                }

                try
                {
                    if (member.Occupation == null)
                    {
                        if ((!member.TeenOrAbove) || (!member.IsHuman))
                        {
                            continue;
                        }

                        if (SimTypes.IsSpecial(member))
                        {
                            continue;
                        }

                        if ((member.CareerManager != null) && (member.CareerManager.RetiredCareer != null))
                        {
                            lRetired++;
                        }
                        else
                        {
                            lUnemployed++;
                        }
                    }
                    else
                    {
                        if (list.ContainsKey(member.Occupation.Guid))
                        {
                            list[member.Occupation.Guid]++;
                        }
                        else
                        {
                            list.Add(member.Occupation.Guid, 1);
                        }

                        float performance = StatusJobPerformance.GetPerformance(member);
                        if (performance >= 0.0)
                        {
                            lPositivePerf++;
                        }
                        else if (performance < Sims3.Gameplay.Careers.Career.kDemotionThreshold)
                        {
                            lDemotionPerf++;
                        }
                        if (member.CareerManager.RetiredCareer != null)
                        {
                            lWorkingPension++;
                        }
                        lTotalWorking++;
                    }
                }
                catch (Exception e)
                {
                    Common.Exception(member, e);
                }
            }

            List <string> sorted = new List <string>();

            foreach (KeyValuePair <OccupationNames, long> value in list)
            {
                Occupation career = CareerManager.GetStaticOccupation(value.Key);
                if (career == null)
                {
                    continue;
                }

                sorted.Add(Common.Localize("JobsByCareerSummary:Element", false, new object[] { career.CareerName, value.Value }));
            }

            sorted.Sort(StringComparer.CurrentCulture);

            string body = null;

            foreach (string value in sorted)
            {
                body += value;
            }

            return(Common.Localize("JobsByCareerSummary:Body", false, new object[] { lUnemployed, lRetired, lWorkingPension, body, lTotalWorking, lPositivePerf, lDemotionPerf }));
        }
Ejemplo n.º 16
0
        protected override OptionResult RunAll(List <IMiniSimDescription> sims)
        {
            Dictionary <OccupationNames, Item> lookup = new Dictionary <OccupationNames, Item>();

            foreach (IMiniSimDescription miniSim in sims)
            {
                SimDescription member = miniSim as SimDescription;
                if (member == null)
                {
                    continue;
                }

                if (member.Occupation == null)
                {
                    continue;
                }

                Item item;
                if (!lookup.TryGetValue(member.Occupation.Guid, out item))
                {
                    item = new Item(member.Occupation.Guid);
                    lookup.Add(member.Occupation.Guid, item);
                }

                item.IncCount();
                item.mSims.Add(new CareerElement(member.Occupation.CareerLevel, member, member.Occupation.Boss, StatusJobPerformance.GetPerformance(member)));
            }

            Item choice = new CommonSelection <Item>(Name, lookup.Values).SelectSingle();

            if (choice == null)
            {
                return(OptionResult.Failure);
            }

            List <CareerElement> list = choice.mSims;

            list.Sort(new CareerElement.CompareByLevel());

            string msg = null;

            foreach (CareerElement element in list)
            {
                if (msg != null)
                {
                    msg += Common.NewLine;
                }
                msg += Common.Localize("JobsByCareer:Employee", element.mSim.IsFemale, new object[] { element.mLevel, element.mSim, element.mPerf });

                if (element.mBoss != null)
                {
                    msg += Common.NewLine + Common.Localize("JobsByCareer:Boss", element.mBoss.IsFemale, new object[] { element.mBoss });
                }
            }

            string careerName = null;

            Occupation career = CareerManager.GetStaticOccupation(choice.Value);

            if (career != null)
            {
                careerName = career.CareerName;
            }

            Sims3.UI.SimpleMessageDialog.Show(careerName, msg);
            return(OptionResult.SuccessRetain);
        }
Ejemplo n.º 17
0
        protected override bool Run(SimDescription me, bool singleSelection)
        {
            List <Opportunity> allOpportunities = OpportunityEx.GetAllOpportunities(me.CreatedSim, OpportunityCategory.None);

            if (allOpportunities.Count == 0)
            {
                SimpleMessageDialog.Show(Name, Common.Localize("Opportunity:None"));
                return(false);
            }

            Dictionary <string, Item> lookup = new Dictionary <string, Item>();

            string all = "(" + Common.LocalizeEAString("Ui/Caption/ObjectPicker:All") + ")";

            foreach (Opportunity opp in allOpportunities)
            {
                string name = null;
                switch (opp.OpportunityCategory)
                {
                case OpportunityCategory.Career:
                    name = Common.LocalizeEAString("Ui/Caption/HUD/CareerPanel:Career");
                    break;

                case OpportunityCategory.Special:
                    name = Common.Localize("Opportunity:Celebrity");
                    break;

                case OpportunityCategory.AdventureChina:
                case OpportunityCategory.AdventureEgypt:
                case OpportunityCategory.AdventureFrance:
                    name = Common.Localize("Opportunity:Adventure");
                    break;

                case OpportunityCategory.Dare:
                case OpportunityCategory.DayJob:
                case OpportunityCategory.SocialGroup:
                    name = Common.LocalizeEAString("Gameplay/Objects/PostBoxJobBoard:" + opp.OpportunityCategory);
                    break;

                case OpportunityCategory.Skill:
                    bool found = false;

                    foreach (Opportunity.OpportunitySharedData.RequirementInfo info in opp.SharedData.mRequirementList)
                    {
                        if (info.mType == RequirementType.Skill)
                        {
                            SkillNames guid = (SkillNames)info.mGuid;

                            Skill staticSkill = SkillManager.GetStaticSkill(guid);
                            if (staticSkill.NonPersistableData != null)
                            {
                                name  = Common.LocalizeEAString(staticSkill.NonPersistableData.Name);
                                found = true;
                            }

                            if (found)
                            {
                                break;
                            }
                        }
                    }

                    if (opp is GigOpportunity)
                    {
                        Common.DebugNotify(opp.Name);

                        Occupation band = CareerManager.GetStaticOccupation(OccupationNames.RockBand);
                        if (band != null)
                        {
                            name = band.CareerName;
                        }
                    }
                    break;
                }

                if (string.IsNullOrEmpty(name))
                {
                    name = Common.Localize("Opportunity:Generic");
                }

                Item item;
                if (!lookup.TryGetValue(name, out item))
                {
                    item = new Item(name);
                    lookup.Add(name, item);
                }

                item.Add(opp);

                if (!lookup.TryGetValue(all, out item))
                {
                    item = new Item(all);
                    lookup.Add(all, item);
                }

                item.Add(opp);
            }

            Item choice = new CommonSelection <Item>(Name, me.FullName, lookup.Values).SelectSingle();

            if (choice == null)
            {
                return(false);
            }

            return(choice.Run(me));
        }
Ejemplo n.º 18
0
        public static void OnAccepted(Sim actor, Sim target, string interaction, ActiveTopic topic, InteractionInstance i)
        {
            try
            {
                OccupationNames careerName = actor.Occupation.Guid;

                bool success = false;

                if (target.Occupation == null)
                {
                    Career career = CareerManager.GetStaticCareer(careerName);
                    if (career == null)
                    {
                        return;
                    }

                    string branch = actor.Occupation.CurLevelBranchName;

                    CareerLocation location = Career.FindClosestCareerLocation(target.SimDescription, careerName);
                    if (location == null)
                    {
                        return;
                    }

                    if (target.SimDescription.AcquireOccupation(new AcquireOccupationParameters(location, false, false)))
                    {
                        success = true;
                    }
                }
                else
                {
                    int level = 1;
                    if (target.Occupation.Guid == actor.Occupation.Guid)
                    {
                        Career actorCareer = actor.Occupation as Career;

                        CareerLevel curLevel = actorCareer.CurLevel;

                        while (curLevel.LastLevel != null)
                        {
                            curLevel = curLevel.LastLevel;
                            if (curLevel.NextLevels.Count > 1)
                            {
                                break;
                            }
                        }

                        if (curLevel != null)
                        {
                            level = curLevel.Level;
                        }
                    }

                    Career staticCareer = CareerManager.GetStaticCareer(careerName);
                    if ((target.Occupation != null) && (careerName != OccupationNames.Undefined) && (actor.Occupation.CurLevelBranchName != null) && (staticCareer != null))
                    {
                        target.Occupation.LeaveJob(Career.LeaveJobReason.kTransfered);

                        CareerLocation location = Career.FindClosestCareerLocation(target.SimDescription, staticCareer.Guid);
                        if (location != null)
                        {
                            CareerLevel careerLevel = null;
                            if (actor.Occupation.CurLevelBranchName != null)
                            {
                                Dictionary <int, CareerLevel> dictionary = null;
                                if (staticCareer.CareerLevels.TryGetValue(actor.Occupation.CurLevelBranchName, out dictionary))
                                {
                                    dictionary.TryGetValue(level, out careerLevel);
                                }
                            }

                            if (careerLevel == null)
                            {
                                foreach (Dictionary <int, CareerLevel> dictionary2 in staticCareer.CareerLevels.Values)
                                {
                                    if (dictionary2.TryGetValue(level, out careerLevel))
                                    {
                                        break;
                                    }
                                }
                            }

                            if (careerLevel != null)
                            {
                                Occupation staticOccupation = CareerManager.GetStaticOccupation(actor.Occupation.Guid);
                                if (staticOccupation != null)
                                {
                                    staticOccupation.DoTransferOfOccupation(target.SimDescription, careerLevel.BranchName, careerLevel.Level);
                                    success = true;
                                }
                            }
                        }
                    }
                }

                if (success)
                {
                    OmniCareer job = actor.Occupation as OmniCareer;
                    if (job != null)
                    {
                        job.AddToRecruits();
                    }
                }
            }
            catch (Exception e)
            {
                Common.Exception(actor, target, e);
            }
        }