コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
 private void MakerExiting(object sender, EventArgs e)
 {
     _textureChanged?.Dispose();
     _texChangeWatcher?.Dispose();
     _bytesToLoad = null;
     _lastError   = null;
     _loadToggle  = null;
 }
コード例 #5
0
        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}"));
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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
        }
コード例 #8
0
        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();
        }
コード例 #9
0
        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;
        }
コード例 #10
0
        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);
                    }
                }
            }
        }
コード例 #11
0
        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));
        }
コード例 #12
0
        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();
        }
コード例 #13
0
 /// <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));
 }
コード例 #14
0
 internal static void InitializeMaker()
 {
     MakerLoadToggle.Setup();
     MakerCoordinateLoadToggle.Setup();
     _accessoryControlShowState = true;
 }
コード例 #15
0
 public static void InitializeMaker()
 {
     DebugControls();
     MakerLoadToggle.Setup();
     MakerCoordinateLoadToggle.Setup();
 }
コード例 #16
0
 internal static void InitializeMaker()
 {
     MakerLoadToggle.Setup();
     MakerCoordinateLoadToggle.Setup();
 }
コード例 #17
0
        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}");
        }