using UnityEngine; using UnityEngine.UI; using TMPro; using System.Collections.Generic; using System.Linq; using UnityEngine.U2D; using System; public class KnobPNL : MonoBehaviour { public GameObject _PANEL; public GameObject _ColorPicker1; public GameObject _ColorPicker2; public GameObject _MODEL; public TMP_Dropdown _Finish1; public TMP_Dropdown _Finish2; public GameObject _ModelContainer; public TMP_Text W; public TMP_Text H; public TMP_Text D; public TMP_Text _C1; public TMP_Text _C2; [SerializeField] GameObject[] _buttons; public GameObject CategorySelector; public void StartPNL(string name) { DOIT.CloseALLPNL(); _G.PON="KNOBpnl"; GameObject PNL=Get.o2("PNL","KNOBpnl"); PNL.SetActive(true); _G.PNL = name; PNL.transform.localPosition = new Vector3(0, 0,0); //Set Panel _ColorPicker1.SetActive(true); _ColorPicker2.SetActive(false); //Collection Selector CategorySelector.SetActive(false); //Add Models AddModelsOnPanel("KNOB","Standard"); FillFinishDropdown(); float ModelPosition=-72; _MODEL.transform.localPosition=new Vector3(ModelPosition,47,0); } public void AddModelsOnPanel(string Name, string category) { DOIT.AllChildOff(_ModelContainer); string atlasPath = "ATLAS/" + Name[..4] + "_" + category; _buttons = new GameObject[_ModelContainer.transform.childCount]; for (int i = 0; i < _buttons.Length; i++) _buttons[i] = _ModelContainer.transform.GetChild(i).gameObject; for (int i = 0; i < _buttons.Length; i++) { _buttons[i].transform.Find("Background").GetComponent().sprite = null; } AtlasCache.ClearCache(); SpriteAtlas atlas = AtlasCache.GetAtlas(atlasPath); Sprite[] sprites = GetSortedSprites(atlas); for (int i = 0; i < sprites.Length; i++) { _buttons[i].SetActive(i < sprites.Length); if (i >= sprites.Length) continue; _buttons[i].transform.Find("Background").GetComponent().sprite = sprites[i]; _buttons[i].transform.Find("Image/Text").GetComponent().text = sprites[i].name.Replace("(Clone)", ""); _buttons[i].transform.Find("Image/Text").GetComponent().color = Color.white; _buttons[i].name = "K_" + sprites[i].name.Replace("(Clone)", ""); } } public static Sprite[] GetSortedSprites(SpriteAtlas atlas) { Sprite[] sprites = new Sprite[atlas.spriteCount]; atlas.GetSprites(sprites); Array.Sort(sprites, (a, b) => { int numA = int.Parse(a.name.Replace("(Clone)", "")); int numB = int.Parse(b.name.Replace("(Clone)", "")); return numA.CompareTo(numB); }); return sprites; } public void AddBTNSELECTION(Sprite I, GameObject SEL,GameObject PNL) { GameObject Sel=Instantiate(SEL); Sel.transform.SetParent(PNL.transform, false); Sel.name = "K_"+I.name; Sel.transform.Find("Image/Text").gameObject.GetComponent().text = I.name; Sel.transform.Find("Background").GetComponent().sprite = I; Sel.SetActive(true); } public static void AddColorSelections() { string model = Get.ToggleOnInChild("Canvas/Panel_SCENE/PNL/Objec3Dpnl/3DMODEL/Viewport/Content3DObject"); GameObject DropdownSizes = Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/DropdownSizes"); TMP_Dropdown dropDown = null; int ind = -1; if (DropdownSizes) { dropDown = DropdownSizes.GetComponent(); } if (dropDown != null) { ind = dropDown.value; } string size = ""; if (ind > -1 && dropDown.options.Count > 0) { size = dropDown.options[ind].text.Replace("mm", ""); } DOIT.DELETEAllChild("Canvas/Panel_SCENE/PNL/Objec3Dpnl/ColorView/Viewport/Content"); List colors = new(); List mats = new(); string colorName = ""; string material = ""; if (model != "NONE" && model != "K_0") { foreach (var C in _G.LibraryKnobs) { var data = C.Value; colorName = data.GetPropertyValue(CsvHeaders.Language); material = data.GetPropertyValue(CsvHeaders.Material); if (data.GetPropertyValue(CsvHeaders.Model) == model && !colors.Contains(colorName) && data.GetPropertyValue(CsvHeaders.Center_To_Center) == size) { colors.Add(colorName); mats.Add(material); } } for (int i = 0; i < colors.Count; i++) { //if(colors[i]=="ALL"){for(int k=0; k<132; k+=4){addcolorBtn(_C.TRANS[k],); } AddcolorBtn(colors[i], mats[i]); } Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/ColorView/Viewport/Content").transform.GetChild(0).GetComponent().isOn = true; } ShowSelection(); } public static void AddcolorBtn(string col, string mat) { //print("col===="+col); GameObject Sel = (GameObject)Instantiate(Get.o2("Objec3Dpnl", "BTNCOLORS")); GameObject PNL = Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/ColorView/Viewport/Content"); Sel.transform.SetParent(PNL.transform, false); Sel.name = col; Sel.transform.Find("Text").gameObject.GetComponent().text = col;//TRANS.color(col); Sel.transform.Find("Color1").GetComponent().color = _C.Matcol(mat);//Resources.Load("ICONS/KNOBS/KN."+i.ToString()); Sel.gameObject.SetActive(true); //Sel.GetComponent().onValueChanged.AddListener ( delegate { ShowSizeSelections(col,model); }); Sel.GetComponent().onValueChanged.AddListener(delegate { ShowSelection(); }); } public void ShowbySize() { AddColorSelections(); } public static void ShowSelection() { string model = Get.ToggleOnInChild("Canvas/Panel_SCENE/PNL/Objec3Dpnl/3DMODEL/Viewport/Content3DObject"); string col = Get.ToggleOnInChild("Canvas/Panel_SCENE/PNL/Objec3Dpnl/ColorView/Viewport/Content"); TMP_Dropdown dropDown = Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/DropdownSizes").GetComponent(); int ind = dropDown.value; string size = ""; if (dropDown.options.Count > 0) { size = dropDown.options[ind].text.Replace("mm", ""); } string name = ""; if (model != "NONE"&& model != "K_0") { foreach (var C in _G.LibraryKnobs) {//Find name model on list var data = C.Value; var m = data.GetPropertyValue(CsvHeaders.Model); string language = data.GetPropertyValue(CsvHeaders.Language); string ctc = data.GetPropertyValue(CsvHeaders.Center_To_Center); if (m == model && language == col && ctc == size && language != "ALL") { name = data.GetPropertyValue(CsvHeaders.ID); } if (m == model && language == "ALL" && ctc == size) { name = data.GetPropertyValue(CsvHeaders.ID); } } } _G.SC[0] = name; print("name===" + name); Get.o2("Canvas/Panel_SCENE/PNL/Objec3Dpnl/", "SHOWSELECTION").SetActive(true); Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/SHOWSELECTION/DES/ID").GetComponent().text = name; Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/SHOWSELECTION/DES/Model").GetComponent().text = model; Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/SHOWSELECTION/DES/Color").GetComponent().text = col; Get.o1("Canvas/Panel_SCENE/PNL/Objec3Dpnl/SHOWSELECTION/DES/Size").GetComponent().text = string.IsNullOrEmpty(size) ? size: size + "mm"; } //---------------------------SELECTION----------------------------------------------- public void AddSizeSelections() { print("----Print AddSizeSelection----"); //GameObject model=Get.TogOn(_ModelContainer); string modelName=UIT.TogOn("MODEL"); print("----Print AddSizeSelection----"+modelName); if(!modelName.Contains("NONE") && modelName!="K_0"){ W.text = _OL.GetValue(modelName, "w"); H.text = _OL.GetValue(modelName, "h"); D.text = _OL.GetValue(modelName, "d"); } else{ W.text = "0"; H.text = "0"; D.text = "0"; } } //---------------------------ADD----------------------------------------------- public void Add() { if(_G.PON=="KNOBpnl") { string Door_Drawer = "KnobV";// int ADNNunber = 85; if (_G.PNL == "KNOBT") { Door_Drawer = "KnobH"; ADNNunber = 86;} GameObject model=Get.TogOn(_ModelContainer); string VH=UIT.Global(Door_Drawer,_G.G).Split('?')[1]; string Color=_C1.text+"_"+_Finish1.options[0].text+"_"+"none"; string w = DOIT.CSsdecimal(W.text); string h = DOIT.CSsdecimal(H.text); string d = DOIT.CSsdecimal(D.text); string code = model.name+"?"+ VH+"?"+ Color +"?"+w+"?"+h+"?"+d; print("Knob code =====" + code); //Knob code =====K_6?V?#737373_Matt_none?6.57?0.39?10 if (_P.List["GLOBAL_QTY"] == "0") { SELECTMETHODE(code,ADNNunber); } else { if (SceneModeManager.SelectedName != "") { DOUNIQUE(code, ADNNunber); } else { DOGLOBAL(code, Door_Drawer, ADNNunber); } } } } public void DOGLOBAL(string code,string Door_Drawer,int ADNNunber) { UIT.GlobalSet(Door_Drawer,code,_G.G); DOIT.AddtoCodeCabGlobal(ADNNunber, code, _G.G); //GlobalOptionChangeCommand globalCommand = new(kDT, _G.G, newValue); //CommandHandler.Instance.AddToHistory(globalCommand); DOIT.REDOALLCab_GNum(_G.G); DOIT.CloseALLPNL(); GameObject.Find("PNL").transform.Find("GLOBALGPNL").gameObject.SetActive(true); GLOBALSELECTION_PNL.StartPNL(_G.G); //_MOL.SetMolding(); } public static void DOUNIQUE(string code,int ADNNunber) { int nO = Get.GetObjectIndex(SceneModeManager.SelectedName); _G.OBJs[nO][ADNNunber] = code; _G.OBJs[nO][60] = "UNIQUE"; DOIT.CloseALLPNL(); _MOL.SetMolding(); } public static void SELECTMETHODE(string code,int ADNNunber) { if(ADNNunber == 85)UIT.GlobalSet(Header.KnobV, code, _G.G); if(ADNNunber == 86)UIT.GlobalSet(Header.KnobH, code, _G.G); List CabinetsToModify = Get.CabinetsToModifyInt(); foreach(int Ind in CabinetsToModify) { string[] ADN = _G.OBJs[Ind]; ADN[ADNNunber] = code; DOIT.REDOCAB(Ind); } DOIT.CloseALLPNL(); DOIT.AllSelOff(); _MOL.SetMolding(); } //Finish public void FillFinishDropdown() { if (_Finish1.options.Count == 1) { _Finish1.ClearOptions(); _Finish2.ClearOptions(); List list = new() { TRANS.This("T_Matt"), TRANS.This("T_Semi"), TRANS.This("T_Gloss") }; _Finish1.AddOptions(list); _Finish2.AddOptions(list); } } }