public static void CreateCustomControls() { // Craete controls in tabs foreach (Transform categoryTransfrom in GameObject.Find("CvsMenuTree").transform) { CreateCustomControlsInCategory(categoryTransfrom); } // Create sidebar controls if (_sidebarEntries.Any()) { var sidebarTop = GameObject.Find("CustomScene/CustomRoot/FrontUIGroup/CvsDraw/Top").transform; var sep = new SidebarSeparator(KoikatuAPI.Instance); sep.CreateControl(sidebarTop); foreach (var sidebarEntry in _sidebarEntries) { sidebarEntry.CreateControl(sidebarTop); } KoikatuAPI.Logger.LogDebug( $"Added {_sidebarEntries.Count} custom controls " + "to Control Panel sidebar"); } if (_accessoryWindowEntries.Any()) { CreateCustomAccessoryWindowControls(); } MakerLoadToggle.CreateCustomToggles(); MakerCoordinateLoadToggle.CreateCustomToggles(); }
public static void CreateCustomControls() { // Craete controls in tabs foreach (var window in Object.FindObjectsOfType <CvsSelectWindow>()) { CreateCustomControlsInCategory(window); } if (_accessoryWindowEntries.Any()) { CreateCustomAccessoryWindowControls(); } /*// Create sidebar controls * if (_sidebarEntries.Any()) * { * var sidebarTop = GameObject.Find("CustomScene/CustomRoot/FrontUIGroup/CvsDraw/Top").transform; * * var sep = new SidebarSeparator(KoikatuAPI.Instance); * sep.CreateControl(sidebarTop); * * foreach (var sidebarEntry in _sidebarEntries) * sidebarEntry.CreateControl(sidebarTop); * * KoikatuAPI.Logger.LogDebug( * $"Added {_sidebarEntries.Count} custom controls " + * "to Control Panel sidebar"); * }*/ MakerLoadToggle.CreateCustomToggles(); MakerCoordinateLoadToggle.CreateCustomToggles(); FixAccessoryTextScaling(); }
public static void CreateCustomControls() { // Create controls in tabs var editMode = Object.FindObjectOfType <EditMode>(); foreach (Transform categoryTransfrom in editMode.transform.Find("Canvas").transform) { CreateCustomControlsInCategory(categoryTransfrom); } var sidebarToggles = _sidebarEntries.OfType <SidebarToggle>().ToList(); if (sidebarToggles.Any()) { CreateSidebarToggles(sidebarToggles); } if (_accessoryWindowEntries.Any()) { CreateCustomAccessoryWindowControls(); } MakerLoadToggle.CreateCustomToggles(); MakerCoordinateLoadToggle.CreateCustomToggles(); }
private void MakerExiting(object sender, EventArgs e) { _textureChanged?.Dispose(); _texChangeWatcher?.Dispose(); _bytesToLoad = null; _lastError = null; _loadToggle = null; }
private static void DebugControls() { var instance = KoikatuAPI.Instance; var cat = MakerConstants.Face.All; AddControl(new MakerSeparator(cat, instance)); AddControl(new MakerSeparator(cat, instance)); AddControl(new MakerSeparator(cat, instance)); AddControl(new MakerToggle(cat, "test toggle", instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerButton("test btn", cat, instance)) .OnClick.AddListener(() => KoikatuAPI.Logger.LogMessage("Clicked")); AddControl(new MakerColor("test color", true, cat, Color.magenta, instance)) .ValueChanged.Subscribe(color => KoikatuAPI.Logger.LogMessage(color)); AddControl(new MakerDropdown("test toggle", new[] { "t0", "t1", "t2", "t3" }, cat, 1, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerRadioButtons(cat, instance, "radio btns", "b1", "b2")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerRadioButtons(cat, instance, "radio btns 1 row", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerRadioButtons(cat, instance, "radio btns 5 per row", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8") { ColumnCount = 5 }) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerSlider(cat, "test slider", 0, 1, 1, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl( new MakerText( "test text test text test text test text test text test " + "text test text test text test text test text", cat, instance)); AddControl(new MakerTextbox(cat, "test textbox", "String test", instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerLoadToggle.AddLoadToggle(new MakerLoadToggle("Test toggle")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerLoadToggle.AddLoadToggle(new MakerLoadToggle("Test toggle 2")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerCoordinateLoadToggle.AddLoadToggle(new MakerCoordinateLoadToggle("Test toggle")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerCoordinateLoadToggle.AddLoadToggle(new MakerCoordinateLoadToggle("Test toggle 2")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddSidebarControl(new SidebarToggle("Test toggle", false, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddSidebarControl(new SidebarToggle("Test toggle2", true, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddAccessoryWindowControl(new MakerToggle(cat, "test toggle", null)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage($"Toggled to {b} in accessory slot index {AccessoriesApi.SelectedMakerAccSlot}")); AddAccessoryWindowControl(new MakerColor("test accessory color", false, cat, Color.cyan, instance) { ColorBoxWidth = 230 }) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage($"Color to {b} in accessory slot index {AccessoriesApi.SelectedMakerAccSlot}")); }
private void RegisterCustomSubCategories(object sender, RegisterSubCategoriesEvent e) { var owner = GetComponent <KoiSkinOverlayMgr>(); _textureChanged = new Subject <KeyValuePair <TexType, Texture2D> >(); _loadToggle = e.AddLoadToggle(new MakerLoadToggle("Skin/eye overlays")); SetupBodyInterface(e, owner); SetupEyeInterface(e, owner); }
private static void OnCreateCustomControls() { CreateCustomControls(); MakerLoadToggle.CreateCustomToggles(); MakerCoordinateLoadToggle.CreateCustomToggles(); #if KK // Fix some plugins failing to update interface and losing state if (IsInsideClassMaker()) { OnChaFileLoaded(new ChaFileLoadedEventArgs(null, (byte)GetMakerSex(), true, true, true, true, true, GetCharacterControl().chaFile, LastLoadedChaFile)); } #endif }
public static void RemoveCustomControls() { foreach (var guiEntry in _guiEntries.Concat(_sidebarEntries).Concat(_accessoryWindowEntries)) { guiEntry.Dispose(); } _guiEntries.Clear(); _categories.Clear(); _sidebarEntries.Clear(); _accessoryWindowEntries.Clear(); MakerLoadToggle.Reset(); MakerCoordinateLoadToggle.Reset(); }
private void MakerExiting(object sender, EventArgs e) { _texChangeWatcher?.Dispose(); _textureChanged?.Dispose(); _textureChanged = null; _refreshInterface?.Dispose(); _refreshInterface = null; _refreshInterfaceRunning = false; _bytesToLoad = null; _lastError = null; _makerLoadToggle = null; _makerCoordLoadToggle = null; }
private static void OnRegisterCustomSubCategories() { MakerLoadToggle.Setup(); MakerCoordinateLoadToggle.Setup(); if (RegisterCustomSubCategories != null) { var args = new RegisterSubCategoriesEvent(); foreach (var handler in RegisterCustomSubCategories.GetInvocationList()) { try { ((EventHandler <RegisterSubCategoriesEvent>)handler).Invoke(KoikatuAPI.Instance, args); } catch (Exception e) { KoikatuAPI.Log(LogLevel.Error, e); } } } }
private void RegisterCustomControls(object sender, RegisterCustomControlsEvent e) { var owner = this; _textureChanged = new Subject <KeyValuePair <string, ClothesTexData> >(); _refreshInterface = new Subject <int>(); _makerLoadToggle = e.AddLoadToggle(new MakerLoadToggle("Clothes overlays")); _makerCoordLoadToggle = e.AddCoordinateLoadToggle(new MakerCoordinateLoadToggle("Clothes overlays")); var makerCategory = MakerConstants.GetBuiltInCategory("03_ClothesTop", "tglTop"); SetupTexControls(e, makerCategory, owner, KoiClothesOverlayMgr.SubClothesNames[0], 0, "Overlay textures (Piece 1)"); SetupTexControls(e, makerCategory, owner, KoiClothesOverlayMgr.SubClothesNames[1], 0, "Overlay textures (Piece 2)", true); SetupTexControls(e, makerCategory, owner, KoiClothesOverlayMgr.SubClothesNames[2], 0, "Overlay textures (Piece 3)", true); SetupTexControls(e, makerCategory, owner, KoiClothesOverlayMgr.MainClothesNames[0], 0); var cats = new[] { new KeyValuePair <string, string>("tglBot", "ct_clothesBot"), new KeyValuePair <string, string>("tglBra", "ct_bra"), new KeyValuePair <string, string>("tglShorts", "ct_shorts"), new KeyValuePair <string, string>("tglGloves", "ct_gloves"), new KeyValuePair <string, string>("tglPanst", "ct_panst"), new KeyValuePair <string, string>("tglSocks", "ct_socks"), new KeyValuePair <string, string>("tglInnerShoes", "ct_shoes_inner"), new KeyValuePair <string, string>("tglOuterShoes", "ct_shoes_outer") }; for (var index = 0; index < cats.Length; index++) { var pair = cats[index]; SetupTexControls(e, MakerConstants.GetBuiltInCategory("03_ClothesTop", pair.Key), owner, pair.Value, index + 1); } GetOverlayController().CurrentCoordinate.Subscribe(type => RefreshInterface(-1)); }
public static void CreateCustomControls() { // Craete controls in tabs foreach (var window in Object.FindObjectsOfType <CvsSelectWindow>()) { CreateCustomControlsInCategory(window); } if (_accessoryWindowEntries.Any()) { CreateCustomAccessoryWindowControls(); } if (_sidebarEntries.Any()) { KoikatuAPI.Instance.StartCoroutine(CreateSidebarWindow()); } MakerLoadToggle.CreateCustomToggles(); MakerCoordinateLoadToggle.CreateCustomToggles(); FixAccessoryTextScaling(); }
/// <summary> /// Add a toggle to the bottom of the "Load character" window that allows for partial loading of characters. /// </summary> public MakerLoadToggle AddLoadToggle(MakerLoadToggle toggle) { return(MakerLoadToggle.AddLoadToggle(toggle)); }
internal static void InitializeMaker() { MakerLoadToggle.Setup(); MakerCoordinateLoadToggle.Setup(); _accessoryControlShowState = true; }
public static void InitializeMaker() { DebugControls(); MakerLoadToggle.Setup(); MakerCoordinateLoadToggle.Setup(); }
internal static void InitializeMaker() { MakerLoadToggle.Setup(); MakerCoordinateLoadToggle.Setup(); }
private static void DebugControls() { var instance = KoikatuAPI.Instance; var cat = MakerConstants.Face.All; AddControl(new MakerSeparator(cat, instance)); AddControl(new MakerSeparator(cat, instance)); AddControl(new MakerSeparator(cat, instance)); AddControl(new MakerToggle(cat, "test toggle", instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerButton("test btn", cat, instance)) .OnClick.AddListener(() => KoikatuAPI.Logger.LogMessage("Clicked")); AddControl(new MakerColor("test color", true, cat, Color.magenta, instance)) .ValueChanged.Subscribe(color => KoikatuAPI.Logger.LogMessage(color)); AddControl(new MakerDropdown("test toggle", new[] { "t0", "t1", "t2", "t3" }, cat, 1, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerRadioButtons(cat, instance, "radio btns", "b1", "b2", "b3")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerSlider(cat, "test slider", 0, 1, 1, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerText("test text test text test text test text test text test text test text test text test text test text", cat, instance)); //AddControl(new MakerTextbox(cat, "test textbox", "String test", instance)) // .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerLoadToggle.AddLoadToggle(new MakerLoadToggle("Test toggle")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerLoadToggle.AddLoadToggle(new MakerLoadToggle("Test toggle 2")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerCoordinateLoadToggle.AddLoadToggle(new MakerCoordinateLoadToggle("Test toggle")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); MakerCoordinateLoadToggle.AddLoadToggle(new MakerCoordinateLoadToggle("Test toggle 2")) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddSidebarControl(new SidebarToggle("Test toggle", false, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddSidebarControl(new SidebarToggle("Test toggle2", true, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddAccessoryWindowControl(new MakerToggle(cat, "test toggle", null)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage($"Toggled to {b} in accessory slot index {AccessoriesApi.SelectedMakerAccSlot}")); AddAccessoryWindowControl(new MakerColor("test accessory color", false, cat, Color.cyan, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage($"Color to {b} in accessory slot index {AccessoriesApi.SelectedMakerAccSlot}")); var copyCat = new MakerCategory(cat.CategoryName, "Test", 0, "Test subcategory"); _categories.Add(copyCat); AddControl(new MakerSlider(copyCat, "test slider copyCat", 0, 1, 1, instance)) .ValueChanged.Subscribe(b => KoikatuAPI.Logger.LogMessage(b)); AddControl(new MakerSeparator(copyCat, instance)); for (int i = 0; i < 12; i++) { AddControl(new MakerSlider(MakerConstants.Face.FaceType, "test slider", 0, 1, 1, instance)); } var acc = new MakerSlider(MakerConstants.Face.FaceType, "test acc slider", 0, 1, 1, instance); AddAccessoryWindowControl(acc); var wrapped = new AccessoryControlWrapper <MakerSlider, float>(acc); wrapped.VisibleIndexChanged += (sender, args) => KoikatuAPI.Logger.LogMessage("VisibleIndexChanged"); wrapped.AccessoryKindChanged += (sender, args) => KoikatuAPI.Logger.LogMessage("AccessoryKindChanged"); wrapped.ValueChanged += (sender, args) => KoikatuAPI.Logger.LogMessage($"ValueChanged {wrapped.GetSelectedValue()} for acc {wrapped.CurrentlySelectedIndex}"); }