using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using System.Globalization; public class KnobPosition : MonoBehaviour { public static void StartPNL() { DOIT.CloseALLPNLONLY(); Get.o3("Panel_SCENE","PNL","KNOBpnl").SetActive(true); if (GameObject.Find("PATERN")) DestroyImmediate(GameObject.Find("PATERN").gameObject); if (GameObject.Find("PATERN2")) DestroyImmediate(GameObject.Find("PATERN2").gameObject); GameObject PATERN = new GameObject("PATERN", typeof(RectTransform)); PATERN.transform.SetParent(GameObject.Find("KNOBpnl").transform); PATERN.gameObject.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; GameObject knob = new GameObject(); //Door 1 GameObject door = CreateDoorsbtn(PATERN, "1", code[2], sx * f, sy * f, px * f, py * f, f); setknob("PATERN", "door1", code[5], code[2]); 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); setknob("PATERN", "door" + (i + 2).ToString(CultureInfo.InvariantCulture), code[9 + a], code[6 + a]); } }//fin for PATERN.transform.localPosition = new Vector3(-270, -10, 1); //Door 2 print("code[26]===" + _G.OBJs[nO][26]); if (_G.OBJs[nO][26] != "") { string[] code2 = _G.OBJs[nO][26].Split("_"[0]); GameObject PATERN2 = new GameObject("PATERN2", typeof(RectTransform)); PATERN2.transform.SetParent(GameObject.Find("KNOBpnl").transform); PATERN2.gameObject.SetActive(true); GameObject door2 = CreateDoorsbtn(PATERN2, "1", code2[2], sx * f, sy * f, px * f, py * f, f); setknob("PATERN2", "door1", code2[5], code2[3]); 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); setknob("PATERN2", "door" + (i + 2).ToString(CultureInfo.InvariantCulture), code2[9 + a], code2[6 + a]); } } PATERN.transform.localPosition = new Vector3(-200, -10, 1); PATERN2.transform.localPosition = new Vector3(-350, -10, 1); }//fin for DOIT.AllTogchildfalse(GameObject.Find("Square").gameObject); } public static GameObject CreateDoorsbtn(GameObject patern, string dn, string p, float Sx, float Sy, float Px, float Py, float f) { GameObject BTN = (GameObject)Instantiate(GameObject.Find("HIDER").transform.Find("PaternK").gameObject); BTN.gameObject.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("Hole").transform.GetComponent().sizeDelta = new Vector2(Sx - 4 * f, Sy - 4 * f); if (p == "o") { BTN.GetComponent().interactable = false; } BTN.transform.parent = patern.transform; BTN.name = "door" + dn; BTN.transform.position = new Vector3(Px, Py, 0); return BTN; } public void showPatern() { GameObject pat = GameObject.Find("PATERN").gameObject; string pos = "x"; for (int i = 1; i < 10; i++) { if (GameObject.Find("Square").transform.Find("P" + i.ToString(CultureInfo.InvariantCulture)).transform.GetComponent().isOn == true) pos = i.ToString(CultureInfo.InvariantCulture); } for (int i = 1; i < pat.transform.childCount + 1; i++) { if (pat.transform.Find("door" + i.ToString(CultureInfo.InvariantCulture)).transform.GetComponent().isOn == true) { setknob("PATERN", "door" + i.ToString(CultureInfo.InvariantCulture), pos, "p"); } } if (GameObject.Find("PATERN2")) { GameObject pat2 = GameObject.Find("PATERN2").gameObject; for (int i = 1; i < 10; i++) { if (GameObject.Find("Square").transform.Find("P" + i.ToString(CultureInfo.InvariantCulture)).transform.GetComponent().isOn == true) pos = i.ToString(CultureInfo.InvariantCulture); } for (int i = 1; i < pat.transform.childCount + 1; i++) { if (pat2.transform.Find("door" + i.ToString(CultureInfo.InvariantCulture)).transform.GetComponent().isOn == true) { setknob("PATERN2", "door" + i.ToString(CultureInfo.InvariantCulture), pos, "p"); } } } } public void changePatern() { GameObject pat = GameObject.Find("PATERN").gameObject; for (int i = 1; i < pat.transform.childCount + 1; i++) { string p = getp(pat, i); setCode(i, p, 25); } if (GameObject.Find("PATERN2")) { GameObject pat2 = GameObject.Find("PATERN2").gameObject; for (int i2 = 1; i2 < pat2.transform.childCount + 1; i2++) { string p = getp(pat2, i2); setCode(i2, p, 26); } } Resetcab(); DOIT.CloseALLPNL(); } public string getp(GameObject pat, int i) { string p = "0"; GameObject K = pat.transform.Find("door" + i.ToString(CultureInfo.InvariantCulture)).transform.Find("k1").gameObject; Vector2 pos = K.transform.localPosition; if (pos.x < 0 && pos.y > 0) p = "1"; if (pos.x == 0 && pos.y > 0) p = "2"; if (pos.x > 0 && pos.y > 0) p = "3"; if (pos.x < 0 && pos.y == 0) p = "4"; if (pos.x == 0 && pos.y == 0) p = "5"; if (pos.x > 0 && pos.y == 0) p = "6"; if (pos.x < 0 && pos.y < 0) p = "7"; if (pos.x == 0 && pos.y < 0) p = "8"; if (pos.x > 0 && pos.y < 0) p = "9"; if (K.gameObject.activeSelf == false) p = "0"; return p; } public void setCode(int i, string p, int nd) { int nO = Get.GetObjectIndex(SceneModeManager.SelectedName); string[] code = _G.OBJs[nO][nd].Split("_"[0]); int a = 5 + (i - 1) * 4; code[a] = p; _G.OBJs[nO][nd] = ""; for (int k = 0; k < code.Length; k++) { _G.OBJs[nO][nd] = _G.OBJs[nO][nd] + code[k].ToString(CultureInfo.InvariantCulture) + "_"; } _G.OBJs[nO][nd] = _G.OBJs[nO][nd].Substring(0, _G.OBJs[nO][nd].Length - 1); } public void Resetcab() { int nO = Get.GetObjectIndex(SceneModeManager.SelectedName); GameObject CAB = GameObject.Find(_G.OBJs[nO][0]); 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].Substring(0, _G.OBJs[nO][26].Length - 1); GameObject CAB = GameObject.Find(_G.OBJs[nO][0]); 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 static void setknob(string PAT, string d, string p, string o) { GameObject KNOB = GameObject.Find(PAT + "/" + d + "/k1").gameObject; GameObject HOLE = GameObject.Find(PAT + "/" + d + "/Hole").gameObject; Vector2 size = GameObject.Find(PAT + "/" + d + "/Background").GetComponent().sizeDelta; float dx = size.x / 2 - size.x / 10; float dy = size.y / 2 - size.y / 10; KNOB.SetActive(true); HOLE.SetActive(false); if (p == "1") { KNOB.transform.localPosition = new Vector3(-dx, dy, 1); } if (p == "2") { KNOB.transform.localPosition = new Vector3(0, dy, 1); } if (p == "3") { KNOB.transform.localPosition = new Vector3(dx, dy, 1); } if (p == "4") { KNOB.transform.localPosition = new Vector3(-dx, 0, 1); } if (p == "5") { KNOB.transform.localPosition = new Vector3(0, 0, 1); } if (p == "6") { KNOB.transform.localPosition = new Vector3(dx, 0, 1); } if (p == "7") { KNOB.transform.localPosition = new Vector3(-dx, -dy, 1); } if (p == "8") { KNOB.transform.localPosition = new Vector3(0, -dy, 1); } if (p == "9") { KNOB.transform.localPosition = new Vector3(dx, -dy, 1); } if (p == "x") { KNOB.SetActive(false); } if (o == "o") { KNOB.SetActive(false); HOLE.SetActive(true); } } public void NONE() { GameObject S = GameObject.Find("Square").gameObject; for (int i = 0; i < S.transform.childCount; i++) { S.transform.GetChild(i).transform.GetComponent().isOn = false; } showPatern(); } }