public static void MakeupManagement(Sim sim, bool addRemove) { try { SimBuilder builder = new SimBuilder(); SimDescription simDescription = sim.SimDescription; OutfitCategories currentOutfitCategory = sim.CurrentOutfitCategory; int currentOutfitIndex = sim.CurrentOutfitIndex; builder.Clear(false); SimOutfit currentOutfit = sim.CurrentOutfit; OutfitUtils.SetOutfit(builder, currentOutfit, simDescription); if (addRemove) { sendDebugMsg(sim.FullName + "\nAdding eyes."); string designPreset = CASUtils.PartDataGetPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex)); builder.AddPart(ThirstMask); if (sim.SimDescription.YoungAdultOrAbove) { sim.BuffManager.AddElement(0xB110CC43B0C44B1C, (Origin)ResourceUtils.HashString64("ByAppearanceOfRedEyes")); } CASUtils.ApplyPresetToPart(builder, ThirstMask, designPreset); builder.SetPartPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex), designPreset); } else { builder.RemovePart(ThirstMask); sim.BuffManager.RemoveElement(0xB110CC43B0C44B1C); } SimOutfit outfit = new SimOutfit(builder.CacheOutfit(simDescription.FullName + currentOutfitCategory.ToString() + currentOutfitIndex.ToString())); if (simDescription.GetOutfitCount(currentOutfitCategory) > currentOutfitIndex) { simDescription.RemoveOutfit(currentOutfitCategory, currentOutfitIndex, true); } simDescription.AddOutfit(outfit, currentOutfitCategory, currentOutfitIndex); if (simDescription.CreatedSim != null) { sendDebugMsg("Updated: " + currentOutfitCategory.ToString() + "-" + currentOutfitIndex.ToString()); simDescription.CreatedSim.RefreshCurrentOutfit(false); } foreach (OutfitCategories categories2 in Enum.GetValues(typeof(OutfitCategories))) { if (categories2 != OutfitCategories.Special) { ArrayList list = simDescription.GetCurrentOutfits()[categories2] as ArrayList; if (list != null) { int count = list.Count; for (int i = 0; i < count; i++) { if ((categories2 != currentOutfitCategory) || (i != currentOutfitIndex)) { builder.Clear(false); SimOutfit outfit3 = list[i] as SimOutfit; OutfitUtils.SetOutfit(builder, outfit3, simDescription); if (addRemove) { string str2 = CASUtils.PartDataGetPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex)); builder.AddPart(ThirstMask); sim.BuffManager.AddElement(0xB110CC43B0C44B1C, (Origin)ResourceUtils.HashString64("ByAppearanceOfRedEyes")); CASUtils.ApplyPresetToPart(builder, ThirstMask, str2); builder.SetPartPreset(VTThirstMaskPart, uint.Parse(kMaskPresetIndex), str2); } else { builder.RemovePart(ThirstMask); sim.BuffManager.RemoveElement(0xB110CC43B0C44B1C); } SimOutfit outfit4 = new SimOutfit(builder.CacheOutfit(simDescription.FullName + categories2.ToString() + i.ToString())); if (simDescription.GetOutfitCount(categories2) > i) { simDescription.RemoveOutfit(categories2, i, true); } simDescription.AddOutfit(outfit4, categories2, i); sendDebugMsg("Updated: " + categories2.ToString() + "-" + i.ToString()); Sleep(0); } } } } } SimOutfit outfit5 = simDescription.GetOutfit(OutfitCategories.Everyday, 0); if (outfit5 != null) { ThumbnailManager.GenerateHouseholdSimThumbnail(outfit5.Key, outfit5.Key.InstanceId, 0, ThumbnailSizeMask.Large | ThumbnailSizeMask.ExtraLarge | ThumbnailSizeMask.Medium | ThumbnailSizeMask.Small, ThumbnailTechnique.Default, true, false, simDescription.AgeGenderSpecies); } } catch (Exception exception) { SimpleMessageDialog.Show("Vampire Tweaker - Thirst Effect", sim.Name + "\nApply makeup failed!\n" + exception); } }
public void Apply(SimBuilder builder, bool applyHairColor, IEnumerable <BodyTypes> argTypes, IEnumerable <BodyTypes> argNotTypes) { List <BodyTypes> types = null; if (argTypes != null) { types = new List <BodyTypes>(argTypes); } List <BodyTypes> notTypes = null; if (argNotTypes != null) { notTypes = new List <BodyTypes>(argNotTypes); } if ((types == null) || (types.Count == 0)) { types = null; } else if (notTypes != null) { foreach (BodyTypes type in types) { notTypes.Remove(type); } } ColorStore store = mStore; if (!applyHairColor) { store = new ColorStore(builder); } if (types != null) { if ((types.Contains(BodyTypes.UpperBody)) || (types.Contains(BodyTypes.LowerBody))) { builder.RemoveParts(new BodyTypes[] { BodyTypes.FullBody }); } if (types.Contains(BodyTypes.FullBody)) { builder.RemoveParts(new BodyTypes[] { BodyTypes.UpperBody, BodyTypes.LowerBody }); } builder.RemoveParts(types.ToArray()); } else { List <BodyTypes> allTypes = new List <BodyTypes>(CASParts.AllTypes); if (notTypes != null) { foreach (BodyTypes type in notTypes) { allTypes.Remove(type); } } builder.RemoveParts(allTypes.ToArray()); } foreach (SavedPart part in mParts) { if (types != null) { if (!types.Contains(part.mPart.BodyType)) { continue; } } if (notTypes != null) { if (notTypes.Contains(part.mPart.BodyType)) { continue; } } builder.AddPart(part.mPart); if ((part.mPreset != null) && CASUtils.ApplyPresetToPart(builder, part.mPart, part.mPreset)) { builder.SetPartPreset(part.mPart.Key, null, part.mPreset); } } store.Apply(builder); }