public static void OnTypesGridItemClicked(WindowBase sender, ItemGridCellClickEvent itemClicked) { try { CASHair ths = CASHair.gSingleton; CASPartPreset part = itemClicked.mTag as CASPartPreset; if (part != null) { if (itemClicked.mButton == MouseKeys.kMouseLeft) { ths.mSavedPresetId = part.mPresetId; if (part.mPresetString != null) { if (part.mPart.Key != ths.GetWornPart().Key) { Responder.Instance.CASModel.RequestAddCASPart(part.mPart, part.mPresetString); } else { Responder.Instance.CASModel.RequestCommitPresetToPart(part.mPart, part.mPresetString); } } ths.mHairStylesGrid.SelectedItem = -1; ths.mDesignButton.Enabled = CASHair.PartIsHat(part.mPart); ths.mHairTypesGrid.RemoveTempItem(); ths.mSaveButton.Enabled = false; ObjectDesigner.SetCASPart(part.mPart.Key); if (UIUtils.GetCustomContentType(part.mPart.Key, part.mPresetId) == ResourceKeyContentCategory.kLocalUserCreated) { ths.mHatsDeleteButton.Enabled = true; ths.mHatsShareButton.Enabled = true; ths.mUndoOnDelete = true; } else { ths.mUndoOnDelete = false; ths.mHatsDeleteButton.Enabled = false; ths.mHatsShareButton.Enabled = false; } Audio.StartSound("ui_tertiary_button"); } else if (itemClicked.mButton == MouseKeys.kMouseRight) { CASBase.Blacklist(new CASParts.Wrapper(part.mPart), ((itemClicked.mModifiers & Modifiers.kModifierMaskControl) == Modifiers.kModifierMaskControl), PopulateTypesGrid); } } } catch (Exception e) { Common.Exception("OnTypesGridItemMouseDown", e); } }
private static void PopulateTypesGrid(CASHair ths) { if (ths == null) { return; } ICASModel cASModel = Responder.Instance.CASModel; Color[] colors = new Color[] { new Color(0x0), new Color(0x0), new Color(0x0), new Color(0x0) }; ths.mHairTypesGrid.Clear(); CASPart wornPart = ths.GetWornPart(); ResourceKey resKey = ResourceKey.CreateUILayoutKey("GenericCasItem", 0x0); bool isHat = false; bool flag = false; if (ths.mHairType == CASHair.HairType.Hat) { ths.mHatsShareButton.Enabled = false; ths.mHatsDeleteButton.Enabled = false; ths.mDesignButton.Enabled = CASHair.PartIsHat(wornPart); isHat = true; } bool shouldEnableCatalogProductFilter = false; List <object> objectList = Responder.Instance.StoreUI.GetCASFeaturedStoreItems(BodyTypes.Hair, cASModel.OutfitCategory, (cASModel.Age | cASModel.Species) | cASModel.Gender, isHat); ths.mContentTypeFilter.FilterObjects(objectList, out shouldEnableCatalogProductFilter); if (!MasterController.Settings.mCompactHatCAS) { foreach (object obj2 in objectList) { IFeaturedStoreItem item = obj2 as IFeaturedStoreItem; if ((ths.mHairType == CASHair.HairType.Hat) == (0x0 != (item.CategoryFlags & 0x400000))) { WindowBase windowByExportID = UIManager.LoadLayout(resKey).GetWindowByExportID(0x1); if (windowByExportID != null) { windowByExportID.Tag = item; windowByExportID.GetChildByID(0x23, true); Window childByID = windowByExportID.GetChildByID(0x20, true) as Window; if (childByID != null) { ImageDrawable drawable = childByID.Drawable as ImageDrawable; if (drawable != null) { drawable.Image = UIUtils.GetUIImageFromThumbnailKey(item.ThumbKey); childByID.Invalidate(); } } childByID = windowByExportID.GetChildByID(0x300, true) as Window; childByID.Tag = item; childByID.CreateTooltipCallbackFunction = ths.StoreItemCreateTooltip; childByID.Visible = true; childByID = windowByExportID.GetChildByID(0x303, true) as Window; childByID.Visible = item.IsSale; Button button = windowByExportID.GetChildByID(0x301, true) as Button; button.Caption = item.PriceString; button.Tag = windowByExportID; button.Click += ths.OnBuyButtonClick; button.FocusAcquired += ths.OnBuyButtonFocusAcquired; button.FocusLost += ths.OnBuyButtonFocusLost; ths.mHairTypesGrid.AddItem(new ItemGridCellItem(windowByExportID, item)); } } } } foreach (CASPart part2 in ths.mPartsList) { bool isWardrobePart = Responder.Instance.CASModel.ActiveWardrobeContains(part2); uint num3 = CASUtils.PartDataNumPresets(part2.Key); ResourceKeyContentCategory customContentType = UIUtils.GetCustomContentType(part2.Key); if (!UIUtils.IsContentTypeDisabled(UIUtils.GetCustomContentType(part2.Key))) { ObjectDesigner.SetCASPart(part2.Key); string designPreset = ObjectDesigner.GetDesignPreset(ObjectDesigner.GetDesignPresetIndexFromId(ObjectDesigner.DefaultPresetId)); if (string.IsNullOrEmpty(designPreset)) { ResourceKey key2 = new ResourceKey(part2.Key.InstanceId, 0x333406c, part2.Key.GroupId); designPreset = Simulator.LoadXMLString(key2); } CASPartPreset preset = new CASPartPreset(part2, designPreset); string str2 = ""; string str3 = ""; if (wornPart.Key == preset.mPart.Key) { str2 = Responder.Instance.CASModel.GetDesignPreset(wornPart); str3 = CASUtils.ReplaceHairColors(str2, colors); } if (preset.Valid && ((ths.mHairType == CASHair.HairType.Hair) || (ObjectDesigner.DefaultPresetId == uint.MaxValue))) { ths.AddHairTypeGridItem(ths.mHairTypesGrid, resKey, preset, isWardrobePart, ref shouldEnableCatalogProductFilter); if ((preset.mPart.Key == wornPart.Key) && ((ths.mHairType == CASHair.HairType.Hair) || CASUtils.DesignPresetCompare(str2, designPreset))) { ths.mHairTypesGrid.SelectedItem = ths.mHairTypesGrid.Count - 1; flag = true; } } if (ths.mHairType == CASHair.HairType.Hat) { if (MasterController.Settings.mCompactHatCAS) { num3 = 1; } for (int i = 0x0; i < num3; i++) { uint presetId = CASUtils.PartDataGetPresetId(part2.Key, (uint)i); customContentType = UIUtils.GetCustomContentType(part2.Key, presetId); preset = new CASPartPreset(part2, presetId, CASUtils.PartDataGetPreset(part2.Key, (uint)i)); if (preset.Valid) { bool flag4 = ths.AddHairTypeGridItem(ths.mHairTypesGrid, resKey, preset, isWardrobePart, ref shouldEnableCatalogProductFilter); if ((wornPart.Key == preset.mPart.Key) && CASUtils.DesignPresetCompare(str3, CASUtils.ReplaceHairColors(preset.mPresetString, colors))) { ths.mSavedPresetId = preset.mPresetId; flag = true; if (flag4) { ths.mHairTypesGrid.SelectedItem = ths.mHairTypesGrid.Count - 1; if (ObjectDesigner.IsUserDesignPreset((uint)i)) { ths.mHatsShareButton.Enabled = true; ths.mHatsDeleteButton.Enabled = true; } } } } } } } } ths.mHairTypesGrid.Tag = shouldEnableCatalogProductFilter; if (ths.mHairStylesGrid.Tag == null) { ths.mHairStylesGrid.Tag = false; } ths.mSortButton.Tag = ((bool)ths.mHairTypesGrid.Tag) ? (true) : (bool)ths.mHairStylesGrid.Tag; if (flag) { ths.mSaveButton.Enabled = false; } else if ((ths.mHairType == CASHair.HairType.Hat) && CASHair.PartIsHat(wornPart)) { WindowBase win = UIManager.LoadLayout(resKey).GetWindowByExportID(0x1); if (win != null) { Window window2 = win.GetChildByID(0x20, true) as Window; if (window2 != null) { window2.Visible = false; } window2 = win.GetChildByID(0x24, true) as Window; if (window2 != null) { window2.Visible = true; } ths.mHairTypesGrid.AddTempItem(new ItemGridCellItem(win, null)); } ths.mSaveButton.Enabled = true; } ths.mUndoOnDelete = false; ths.mContentTypeFilter.UpdateFilterButtonState(); }
private static void OnColorsSaved(Color[] colors) { try { CASMakeup ths = CASMakeup.gSingleton; if (ths == null) { return; } bool flag = false; bool flag2 = false; if (CASMakeup.sCategory != BodyTypes.CostumeMakeup) { foreach (ItemGridCellItem item in ths.mGridMakeupPresets.Items) { flag2 = true; ResourceKey mTag = (ResourceKey)item.mTag; ColorInfo info = ColorInfo.FromResourceKey(mTag); for (int i = 0x0; i < info.Colors.Length; i++) { Vector3 vector = CompositorUtil.ColorToVector3(colors[i]); Vector3 v = CompositorUtil.ColorToVector3(info.Colors[i]); if (!vector.IsSimilarTo(v)) { flag2 = false; break; } } if (flag2) { break; } } if (!flag2) { ColorInfo info2 = new ColorInfo(); info2.Usage = ColorInfo.PreferredUse.Makeup; switch (CASMakeup.sCategory) { case BodyTypes.FirstFace: info2.UsageSubCategory = ColorInfo.eUsageSubCategory.MakeupLipstick; break; case BodyTypes.EyeShadow: info2.UsageSubCategory = ColorInfo.eUsageSubCategory.MakeupEyeshadow; break; case BodyTypes.EyeLiner: info2.UsageSubCategory = ColorInfo.eUsageSubCategory.MakeupEyeliner; break; case BodyTypes.Blush: info2.UsageSubCategory = ColorInfo.eUsageSubCategory.MakeupBlush; break; } info2.Colors = colors; flag = info2.SaveMakeupPreset(info2.UsageSubCategory) != ResourceKey.kInvalidResourceKey; ths.PopulatePresetsGrid(CASMakeup.sCategory, ths.mCurrentPreset.mPart, ths.mButtonFilter.Selected); } } else { CASPart wornPart = ths.mCurrentPreset.mPart; ObjectDesigner.SetCASPart(wornPart.Key); Vector3[] makeupVectorColors = ths.GetMakeupVectorColors(wornPart); uint num = CASUtils.PartDataNumPresets(wornPart.Key); for (uint j = 0x0; j < num; j++) { KeyValuePair <string, Dictionary <string, Complate> > presetEntryFromPresetString = (KeyValuePair <string, Dictionary <string, Complate> >)SimBuilder.GetPresetEntryFromPresetString(CASUtils.PartDataGetPreset(wornPart.Key, j)); Vector3[] vectorArray2 = ths.GetMakeupVectorColors(presetEntryFromPresetString); flag2 = true; for (uint k = 0x0; k < vectorArray2.Length; k++) { if (!makeupVectorColors[k].IsSimilarTo(vectorArray2[k])) { flag2 = false; break; } } if (flag2) { break; } } if (!flag2) { uint index = ObjectDesigner.AddDesignPreset(Responder.Instance.CASModel.GetDesignPreset(wornPart)); flag = index != uint.MaxValue; CASClothingRow row = ths.FindRow(wornPart); if (row != null) { row.CreateGridItems(true); row.PopulateGrid(true); } ths.mButtonCostumeFilter.Tag = true; ths.mContentTypeFilter.UpdateFilterButtonState(); ThumbnailKey key = new ThumbnailKey(wornPart.Key, (int)CASUtils.PartDataGetPresetId(wornPart.Key, index), (uint)wornPart.BodyType, (uint)wornPart.AgeGenderSpecies, ThumbnailSize.Large); ThumbnailManager.InvalidateThumbnail(key); } } if (flag) { CASController.Singleton.ErrorMsg(CASErrorCode.SaveSuccess); } else if (flag2) { Simulator.AddObject(new OneShotFunctionTask(delegate { string messageText = Responder.Instance.LocalizationModel.LocalizeString("Ui/Caption/CAS/Hair:SaveDuplicate", new object[0x0]); SimpleMessageDialog.Show(null, messageText, ModalDialog.PauseMode.PauseTask, new Vector2(-1f, -1f), "ui_error", "ui_hardwindow_close"); })); } else { CASController.Singleton.ErrorMsg(CASErrorCode.SaveFailed); } } catch (Exception e) { Common.Exception("OnColorsSaved", e); } }
public static void PopulateHornColors() { try { CAPUnicorn ths = CAPUnicorn.gSingleton; if (ths == null) { return; } CASPartPreset preset; ths.mHornColorsGrid.Clear(); List <CASPart> wornHornParts = new List <CASPart>(); CASPart wornPart = ths.GetWornHornPart(); CASLogic singleton = CASLogic.GetSingleton(); foreach (CASPart part in singleton.mCasParts) { if ((part.BodyType == BodyTypes.PetHorn) && (part.Species == CASAgeGenderFlags.Horse) && ((part.Age & singleton.Age) != CASAgeGenderFlags.None)) { wornHornParts.Add(part); } } CompositorUtil.GetPatternsFromCASPart(wornPart); ObjectDesigner.SetCASPart(wornPart.Key); ResourceKey layoutKey = ResourceKey.CreateUILayoutKey("EyeColorPresetGridItem", 0x0); string designPreset = null; // Custom try { designPreset = Responder.Instance.CASModel.GetDesignPreset(wornPart); } catch { } foreach (CASPart wornHornPart in wornHornParts) { uint num = CASUtils.PartDataNumPresets(wornHornPart.Key); int i = 0; for (uint j = 0x0; j < num; j++) { preset = new CASPartPreset(wornHornPart, CASUtils.PartDataGetPresetId(wornHornPart.Key, j), CASUtils.PartDataGetPreset(wornHornPart.Key, j)); ths.AddHornPresetGridItem(ths.mHornColorsGrid, layoutKey, preset, wornHornPart, (uint)(j + 0x1)); if (CAPUnicorn.HornPresetCompare(designPreset, preset.mPresetString)) { ths.mCurrentHornColorPreset = preset; ths.mHornColorsGrid.SelectedItem = i; if (UIUtils.GetCustomContentType(wornHornPart.Key, preset.mPresetId) == ResourceKeyContentCategory.kInstalled) { ths.mHornColorDeleteButton.Enabled = false; } else { ths.mHornColorDeleteButton.Enabled = true; } } i++; } } if (ths.mHornColorsGrid.SelectedItem == -1) { ths.mHornColorDeleteButton.Enabled = false; } bool flag = ths.mHornColorsGrid.Count > (ths.mHornColorsGrid.VisibleRows * ths.mHornColorsGrid.VisibleColumns); Rect area = ths.mHornColorPanel.Area; area.Height = flag ? ths.mHornColorPanelHeightWithScrollbars : (ths.mHornColorPanelHeightWithScrollbars - 21f); ths.mHornColorPanel.Area = area; } catch (Exception e) { Common.Exception("PopulateHornColors", e); } }
public static void PopulateEyebrowGrid() { try { CASEyebrows ths = CASEyebrows.gSingleton; if (ths == null) { return; } ths.mEyebrowPresetsGrid.Clear(); CASPart wornPart = ths.GetWornPart(BodyTypes.Eyebrows); string designPreset = null; // Custom try { designPreset = Responder.Instance.CASModel.GetDesignPreset(wornPart); } catch { } ResourceKey layoutKey = ResourceKey.CreateUILayoutKey("GenericCasItem", 0x0); int num = 0x0; foreach (CASPart part2 in Responder.Instance.CASModel.GetVisibleCASParts(BodyTypes.Eyebrows)) { ObjectDesigner.SetCASPart(part2.Key); CASPartPreset preset = null; uint num2 = CASUtils.PartDataNumPresets(part2.Key); for (uint i = 0x0; i < num2; i++) { preset = new CASPartPreset(part2, CASUtils.PartDataGetPresetId(part2.Key, i), CASUtils.PartDataGetPreset(part2.Key, i)); ths.AddPresetGridItem(ths.mEyebrowPresetsGrid, layoutKey, preset, part2, i + 0x1); if ((wornPart.Key == part2.Key) && (designPreset == preset.mPresetString)) { ths.mCurrentEyebrowPreset = preset; ths.mEyebrowPresetsGrid.SelectedItem = num; } num++; } if (num2 == 0x0) { preset = new CASPartPreset(part2, Responder.Instance.CASModel.GetDesignPreset(part2)); if (preset.Valid) { ths.AddPresetGridItem(ths.mEyebrowPresetsGrid, layoutKey, preset, part2, 0x0); if (wornPart.Key == part2.Key) { ths.mCurrentEyebrowPreset = preset; ths.mEyebrowPresetsGrid.SelectedItem = num; } num++; } } } } catch (Exception e) { Common.Exception("PopulateEyebrowGrid", e); } }