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); }
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); }
public ListItem(FeeBySchoolOption option, SchoolFee value) : base(option, value) { Occupation school = CareerManager.GetStaticOccupation(Value.mSchool); if (school != null) { SetThumbnail(school.CareerIconColored, ProductVersion.BaseGame); } }
protected bool AskForJob(SimDescription sim, OccupationNames careerName) { Occupation occupation = CareerManager.GetStaticOccupation(careerName); if (occupation == null) { IncStat("Bad Occupation"); return(false); } return(AskForJob(sim, occupation)); }
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); } }
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); }
protected override string LocalizeValue(OccupationNames value) { Occupation career = CareerManager.GetStaticOccupation(value); if (career != null) { return(career.GetLocalizedCareerName(false)); } else { return(base.LocalizeValue(value)); } }
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); } }
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); }
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); }
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)); }
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)); }
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(); } } }
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); }
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 })); }
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); }
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)); }
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); } }