using UnityEngine; using UnityEngine.UI; using System.Globalization; using System.Data; public class Glass : MonoBehaviour { string V; public void StartPNL(){ StartPnl(); } public static void StartPnl() { DOIT.CloseALLPNLONLY(); _G.PON="GLASSpnl"; GameObject GlassPnl = Get.o2("PNL", "GLASSpnl"); GlassPnl.SetActive(true); SetCollection(); if (GameObject.Find("PATERN")) Destroy(GameObject.Find("PATERN")); if (GameObject.Find("PATERN2")) Destroy(GameObject.Find("PATERN2")); GameObject PATERN = new("PATERN", typeof(RectTransform)); PATERN.transform.SetParent(GlassPnl.transform, false); PATERN.SetActive(true); int nO = Get.GetObjectIndex(SceneModeManager.SelectedName); string[] code = _G.OBJs[nO][25].Split("_"[0]); //Fact float maxW = 180; float maxH = 300; float W = DOIT.ConvertStringToNumber(code[0]); float H = DOIT.ConvertStringToNumber(code[1]); float f = maxW/W; if (H* f > maxH) f = maxH/H ; float sx = DOIT.ConvertStringToNumber(code[3]); float sy = DOIT.ConvertStringToNumber(code[4]); float XW = DOIT.ConvertStringToNumber(code[0]); float YH = DOIT.ConvertStringToNumber(code[1]); float px = -XW / 2f + sx / 2f; float py = YH / 2f - sy / 2f; //Door 1 GameObject door = CreateDoorsbtn(PATERN, "1", code[2], sx *f, sy * f, px * f, py * f,f); for (int i = 0; i < 10; i++) { int a = i * 4; if (code.Length > 6 + a) { px += DOIT.ConvertStringToNumber(code[3 + a]); if (px >= XW / 2) { px = -XW / 2f + DOIT.ConvertStringToNumber(code[7 + a]) / 2f; py -= DOIT.ConvertStringToNumber(code[4 + a]) / 2 + DOIT.ConvertStringToNumber(code[8 + a]) / 2; } //door door = CreateDoorsbtn(PATERN, (i + 2).ToString(CultureInfo.InvariantCulture), code[6 + a], DOIT.ConvertStringToNumber(code[7 + a]) * f, DOIT.ConvertStringToNumber(code[8 + a]) * f, px * f, py * f,f); //CreateDoorsbtn(PATERN, (i + 2).ToString(CultureInfo.InvariantCulture), code[6 + a], DOIT.ConvertStringToNumber(code[7 + a]) * f, DOIT.ConvertStringToNumber(code[8 + a]) * f, px * f, py * f,f); } }//fin for PATERN.transform.localPosition = new Vector3(-282, -10, 1); //Door 2 if (_G.OBJs[nO][26].Length>1) { string[] code2 = _G.OBJs[nO][26].Split("_"[0]); GameObject PATERN2 = new GameObject("PATERN2", typeof(RectTransform)); PATERN2.transform.SetParent(GameObject.Find("GLASSpnl").transform,false); PATERN2.SetActive(true); GameObject door2 = CreateDoorsbtn(PATERN2, "1", code2[2], sx * f, sy * f, px * f, py * f, f); for (int i = 0; i < 10; i++) { int a = i * 4; if (code2.Length > 6 + a) { px += DOIT.ConvertStringToNumber(code2[3 + a]); if (px >= XW / 2) { px = -XW / 2f + DOIT.ConvertStringToNumber(code2[7 + a]) / 2f; py -= DOIT.ConvertStringToNumber(code2[4 + a]) / 2 + DOIT.ConvertStringToNumber(code2[8 + a]) / 2; } //door door2 = CreateDoorsbtn(PATERN2, (i + 2).ToString(CultureInfo.InvariantCulture), code2[6 + a], DOIT.ConvertStringToNumber(code2[7 + a]) * f, DOIT.ConvertStringToNumber(code2[8 + a]) * f, px * f, py * f, f); } } PATERN.transform.localPosition = new Vector3(-200, -10, 1); PATERN2.transform.localPosition = new Vector3(-350, -10, 1); }//fin for } public static void SetCollection() { //GameObject GlassContainer=Get.o2(_G.PON+"/GlassModels/Viewport","Content"); GameObject MenoContainer=Get.o2(_G.PON+"/Models/Viewport","Content"); GameObject Color=Get.o2(_G.PON+"/","Color"); if(_G.PATH=="kwizine") { string GlassRecipe = UIT.Value(Library.GlobalStart,"1",Header.Glass);//GlassRecipe=====1=end print("GlassRecipe=====1="+GlassRecipe); if (GlassRecipe.Contains("end")) { GlassRecipe = "1_2_3_?_1?n";//Glass model, } //print("GlassRecipe=====2="+GlassRecipe); string[] RecipeGlass = GlassRecipe.Split("?"); DOIT.AllChildOff(MenoContainer); string[] MenoAvailable=RecipeGlass[1].Split("_"); //MenoContainer.transform.Find("none").gameObject.SetActive(true); foreach(string MenoModel in MenoAvailable) { print("MenoModel====="+MenoModel); MenoContainer.transform.Find(MenoModel).gameObject.SetActive(true); } Set.alpha(Color,RecipeGlass[2]=="y"); } } public static GameObject CreateDoorsbtn(GameObject patern, string dn, string p, float Sx, float Sy, float Px, float Py,float f) { GameObject BTN = Instantiate(GameObject.Find("HIDER").transform.Find("Patern").gameObject); BTN.SetActive(true); BTN.transform.Find("Background").GetComponent().sizeDelta = new Vector2(Sx, Sy); BTN.transform.Find("Background").transform.Find("Checkmark").GetComponent().sizeDelta = new Vector2(Sx, Sy); BTN.transform.Find("GLASS").GetComponent().sizeDelta = new Vector2(Sx - 4 * f, Sy - 4 * f); if (p == "o") { BTN.transform.Find("OPEN").gameObject.SetActive(true); BTN.GetComponent().interactable = false; } BTN.transform.SetParent(patern.transform,false); BTN.name = "door"+dn; // CHANGEMENT IMPORTANT: utiliser GetComponent() et anchoredPosition RectTransform rectTransform = BTN.GetComponent(); rectTransform.anchoredPosition = new Vector2(Px, Py); // Utiliser anchoredPosition au lieu de position return BTN; } public void showPatern() { GameObject pat = Get.o2(_G.PON,"PATERN");//GameObject.Find("PATERN"); V=Get.TogOn(Get.o2("GLASSpnl/GlassModels/Viewport","Content")).name; string NenoSelect=Get.TogOn(Get.o2("GLASSpnl/Models/Viewport","Content")).name; // if (GameObject.Find("NONE").GetComponent().isOn == true) V = "NONE"; // else // { // V=GlassSelect.name; // } Sprite Image=null; if( V!="none"){Image=Resources.Load("ICONS/GLASS/p"+NenoSelect);} for (int i=1; i< pat.transform.childCount+1; i++){ GameObject D=pat.transform.Find("door"+ i.ToString()).gameObject; if (D.GetComponent().isOn == true){ if (V != "none"){ D.transform.Find("GLASS").gameObject.GetComponent().overrideSprite = Image; D.transform.Find("GLASS").gameObject.SetActive(true); } else {D.transform.Find("GLASS").gameObject.SetActive(false);} } } if (GameObject.Find("PATERN2")){ GameObject pat2 = GameObject.Find("PATERN2").gameObject; Image=Resources.Load("ICONS/GLASS/"+V) as Sprite; for (int i=1; i< pat.transform.childCount+1; i++){ GameObject D2=pat2.transform.Find("door"+ i.ToString(CultureInfo.InvariantCulture)).gameObject; if (D2.GetComponent().isOn == true){ if (V != "NONE"){ D2.transform.Find("GLASS").gameObject.GetComponent().overrideSprite = Image; D2.transform.Find("GLASS").gameObject.SetActive(true); } } else {D2.transform.Find("GLASS").gameObject.SetActive(false);} } } } public void changePatern() { GameObject pat = GameObject.Find("PATERN"); GameObject GlassSelect=Get.TogOn(Get.o2("GLASSpnl/Models/Viewport","Content")); V=GlassSelect.name; for (int i = 1; i < pat.transform.childCount + 1; i++) { //SetCode("p", i); if (pat.transform.Find("door" + i.ToString()).transform.Find("GLASS").gameObject.activeSelf == true) {SetCode(V, i);} else{SetCode("p", i);} } if (GameObject.Find("PATERN2")) { GameObject pat2 = GameObject.Find("PATERN2"); for (int i = 1; i < pat2.transform.childCount + 1; i++) { //setCode2("p", i); if (pat.transform.Find("door" + i.ToString()).transform.Find("GLASS").gameObject.activeSelf == true) {setCode2(V, i);} else{SetCode("p", i);} } } int nO = Get.GetObjectIndex(SceneModeManager.SelectedName); DOIT.REDOCAB(nO); DOIT.CloseALLPNL(); } public void SetCode(string V,int i) { //print("V=="+V); //print("i=="+i); string GlassModel=Get.TogOn(Get.o2("GLASSpnl/GlassModels/Viewport","Content")).name; string ColorCode=Get.TogOn(Get.o2("GLASSpnl","Color")).name; string Patern=Get.TogOn(Get.o2("GLASSpnl/Models/Viewport","Content")).name; if(V!="p") {V=GlassModel+"?"+Patern+"?"+ColorCode;} int nO = Get.GetObjectIndex(SceneModeManager.SelectedName); string[] code= _G.OBJs[nO][25].Split("_"[0]); int a = (i+i-1)*2; if(code[a]!="o" && code[a]!="c" )code[a] = V; if(code[a]=="OPEN")code[a]="o"; _G.OBJs[nO][25] = ""; for (int k = 0; k < code.Length; k++) { _G.OBJs[nO][25] = _G.OBJs[nO][25] + code[k].ToString() + "_"; } _G.OBJs[nO][25] = _G.OBJs[nO][25][..^1]; //GameObject CAB = GameObject.Find(_G.OBJs[nO][0]); //print("_G.OBJs[nO][25]=================================================================="+_G.OBJs[nO][25]); // DestroyImmediate(CAB); // if (_G.OBJs[nO][5] == "BA") ConstructBASE.AddCab(nO); // if (_G.OBJs[nO][5] == "WA") ConstructWALL.AddCab(nO); // if (_G.OBJs[nO][5] == "TA") ConstructTALL.AddCab(nO); // if (_G.OBJs[nO][5] == "CB") ConstructCORNERBASE.AddCab(nO); // if (_G.OBJs[nO][5] == "CW") ConstructCORNERWALL.AddCab(nO); } public void setCode2(string V, int i) { int nO = Get.GetObjectIndex(SceneModeManager.SelectedName); string[] code = _G.OBJs[nO][26].Split("_"[0]); int a = (i + i - 1) * 2; if (code[a] != "o") code[a] = V; if (code[a] == "g13") code[a] = "o"; _G.OBJs[nO][26] = ""; for (int k = 0; k < code.Length; k++) { _G.OBJs[nO][26] = _G.OBJs[nO][26] + code[k].ToString(CultureInfo.InvariantCulture) + "_"; } _G.OBJs[nO][26] = _G.OBJs[nO][26][..^1]; // GameObject CAB = GameObject.Find(_G.OBJs[nO][0]).gameObject; // DestroyImmediate(CAB); // if (_G.OBJs[nO][5] == "BA") ConstructBASE.AddCab(nO); // if (_G.OBJs[nO][5] == "WA") ConstructWALL.AddCab(nO); // if (_G.OBJs[nO][5] == "TA") ConstructTALL.AddCab(nO); // if (_G.OBJs[nO][5] == "CB") ConstructCORNERBASE.AddCab(nO); // if (_G.OBJs[nO][5] == "CW") ConstructCORNERWALL.AddCab(nO); } public static float getBorder(string num) { float B = 2; switch (num) { case "106": B = 3; break; case "107": B = 3; break; case "108": B = 3;break; case "211": B = 3; break; case "212": B = 3; break; case "213": B = 3; break; case "214": B = 3; break; case "215": B = 2; break; case "216": B = 3; break; case "217": B = 3; break; case "218": B = 4; break; case "219": B = 3; break; case "220": B = 2; break; case "221": B = 3; break; case "222": B = 3; break; case "223": B = 3; break; case "224": B = 2; break; case "225": B = 2.5f; break; case "226": B = 3; break; case "227": B = 3; break; case "228": B = 3; break; case "229": B = 3; break; case "230": B = 4; break; case "231": B = 2; break; case "232": B = 3; break; } return B; } public void DoorClick() { print("_G.PON===="+_G.PON+" name==="+name); showPatern(); } public static void DoorSelectionOff() { GameObject pat = Get.o2(_G.PON,"PATERN");//GameObject.Find("PATERN"); DOIT.AllTogchildfalse(pat); } }