using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; using JetBrains.Annotations; using UnityEngine.InputSystem.LowLevel; using UnityEngine.EventSystems; public class KeyNumber : MonoBehaviour { [Header("Old")] [SerializeField] Text _inputField;//input value [SerializeField] Text _inputText; [SerializeField] GameObject _keyboardNumber; [SerializeField] GameObject _fractions; [Header("TMP")] //[SerializeField] TMP_InputField _inputValueTMP;//input value public TMP_Text _inputTextTMP; [SerializeField] GameObject _keyboardNumberPro; [SerializeField] GameObject _fractionsPro; // [Header("Short")] // [SerializeField] GameObject _keyboardNumberShort; // [SerializeField] TMP_InputField _inputFieldShort;//input value // [SerializeField] GameObject _ButtonLeft; // [SerializeField] GameObject _ButtonRight; public TMP_InputField _inputValueTMP; public TMPSelectFlag _selectFlag; private void Awake() { //KEYBOARDNUMBER if( _keyboardNumber == null) { _keyboardNumber = Get.o2("HIDER", "KEYBOARDNUMBER"); if (_keyboardNumber == null) { Debug.Log("Could not get access to KEYBOARDNUMBER reference"); } } if (_fractions == null) { _fractions = Get.o3("HIDER", "KEYBOARDNUMBER", "FRACTIONS"); if (_fractions == null) { Debug.Log("Could not get access to FRACTIONS reference"); } } // Désactiver le clavier natif sur l'input du keyboard sur mobile/WebGL if (_inputValueTMP != null) { _inputValueTMP.onSelect.AddListener(_ => { if (Application.isMobilePlatform || Application.platform == RuntimePlatform.WebGLPlayer) { _inputValueTMP.DeactivateInputField(); EventSystem.current.SetSelectedGameObject(null); } }); } } // public void Open(Text im) // { // _G.VTcat = "ST"; // _inputText = im; // _keyboardNumber.SetActive(true); // _keyboardNumber.transform.localPosition = new Vector3(0, 0, 0); // _fractions.SetActive(false); // if (_G.System == 2) _fractions.SetActive(false); // string Vs = DOIT.ConvertStringToNumber(_inputText.text).ToString();//DOIT.CSs(_inputText.text); // _inputField.text = DOIT.ConvertStringToNumber(Vs).ToString(); // _G.VT = _inputText;//IM; // _G.VT.name = im.name; // _G.Vo = DOIT.ConvertStringToNumber(_inputText.text); // //Add key board // //if (_G.Mobile == false) _inputText.ActivateInputField(); // //print("IsMobile()=="+_G.Mobile); // } public void OpenPro(TMP_Text im) { _G.VTcat = "TMP"; _inputTextTMP = im; print("im====="+im.text); _keyboardNumberPro.SetActive(true); _keyboardNumberPro.transform.localPosition = new Vector3(0, 0, 0); _fractionsPro.SetActive(false); if (_G.System == 2){ _fractionsPro.SetActive(false);} float inchVal = DOIT.ConvertStringToNumber(_inputTextTMP.text); float displayVal = (_G.System == 2) ? Mathf.Floor(inchVal * 2.54f * 10f) / 10f : inchVal; _inputValueTMP.text = displayVal.ToString(); _G.VTP = im;//IM; _G.Vo = inchVal; print("_G.VTP.name==" + _G.VTP.name);//nW // Pré-sélection : le premier chiffre tapé efface la valeur affichée if (_selectFlag != null) _selectFlag.replaceNext = true; //Add key board if (_G.Mobile == false) {_inputValueTMP.ActivateInputField();} } public void change(string buttonClickedValue) { string txt = _inputValueTMP.text ?? ""; // Nettoyage optionnel txt = txt.Replace((char)8203, ' ').Replace(" ", ""); bool mustReplace = (txt == "0" && buttonClickedValue != ".") || (_selectFlag != null && _selectFlag.replaceNext); if (mustReplace) { _inputValueTMP.text = buttonClickedValue; // ✅ remplace tout if (_selectFlag != null) _selectFlag.replaceNext = false; // ✅ reset seulement ici } else { _inputValueTMP.text = txt + buttonClickedValue; // ✅ append } // ✅ Désélectionner après StartCoroutine(DeselectNextFrame()); } IEnumerator DeselectNextFrame() { yield return null; _inputValueTMP.DeactivateInputField(); EventSystem.current.SetSelectedGameObject(null); } public void back() { if (_G.VTcat != "TMP") { if (_inputValueTMP.text.Length != 0) _inputValueTMP.text = _inputValueTMP.text.Substring(0, _inputValueTMP.text.Length - 1); } else { if (_inputValueTMP.text.Length != 0) _inputValueTMP.text = _inputValueTMP.text.Substring(0, _inputValueTMP.text.Length - 1); } } public void AddValue(string Direction) { float OldValue; OldValue = DOIT.ConvertStringToNumber(_G.VTP.GetComponent().text); _inputTextTMP.text = DOIT.CSs(_inputValueTMP.text) + _G.Sys; if (_G.VTP.name.Contains("Input")) { _G.VTP.transform.parent.parent.gameObject.GetComponent().text = DOIT.CSs(_inputValueTMP.text); } SetMesure(OldValue, DOIT.ConvertStringToNumber(_inputValueTMP.text + _G.Sys), Direction); _keyboardNumberPro.SetActive(false); if (Get.o2("Canvas", "SETDIM") != null && Get.o2("Canvas", "SETDIM").activeInHierarchy) if (Draw2DNavigation._instance != null) Draw2DNavigation._instance.FitToView(); // float OldValue = 0f; // print("_G.VTcat ===="+_G.VTcat ); // if(_G.VTcat == "ST" ) // { // Text text = null; // if (_G.VT != null) // { // text = _G.VT.GetComponent(); // } // else // { // Debug.Log("_G.VT is null"); // return; // } // if (text != null) // { // OldValue = DOIT.ConvertStringToNumber(_G.VT.GetComponent().text); // _G.VT.GetComponent().text = DOIT.CSs(_inputField.text) + _G.Sys; // if (_G.VT.name == "Text") { _G.VT.transform.parent.gameObject.GetComponent().text = DOIT.CSs(_inputField.text); } // SetMesure(OldValue, DOIT.ConvertStringToNumber(_inputField.text),Direction); // _keyboardNumber.SetActive(false); // return; // } // } // if (_G.VTP.TryGetComponent(out TextMeshProUGUI vtTMPUGUI)) // { // OldValue = DOIT.ConvertStringToNumber(vtTMPUGUI.text); // } // // _G.VTP.GetComponent().text = DOIT.CSs(_inputValueTMP.text) + _G.Sys; // // if (_G.VTP.transform.parent.parent.gameObject.TryGetComponent(out TMP_inputText parentParentInputfield)) // // { // // parentParentInputfield.text = DOIT.CSs(_inputValueTMP.text); // // } // // SetMesure(OldValue, DOIT.ConvertStringToNumber(_inputValueTMP.text)); // // _keyboardNumberPro.SetActive(false); } public static float CheckObjectWallHeightDistance(float NewWallHeight, float Delta ) { float Distance = 0; for (int i = 0; i < _G.OBJnum; i++) { if (DOIT.exist(i) && _G.OBJs[i][22] != "ceil") { //float NewWallHeight GameObject Object = Get.o2("SCENE", _G.OBJs[i][0]); float H = DOIT.ConvertStringToNumber(_G.OBJs[i][7]); float ObjectTop = Object.transform.position.y + H * 0.5f+Delta; Distance = NewWallHeight * 0.5f - ObjectTop; print("DistanceOver====ObjectTop===" + ObjectTop); print("DistanceOver====Delta==" + Delta); if (Distance < 0) return Distance; } } return Distance; } public void fraction(string K) { if (_G.VTcat != "TMP") { float V = Mathf.Floor(DOIT.ConvertStringToNumber(_inputText.text)); V += DOIT.ConvertStringToNumber(K.Split("/")[0]) / DOIT.ConvertStringToNumber(K.Split("/")[1]); _inputText.text = V.ToString(); } // else // { // float VP = Mathf.Floor(DOIT.ConvertStringToNumber(_inputValueTMP.text)); // VP += DOIT.ConvertStringToNumber(K.Split("/")[0]) / DOIT.ConvertStringToNumber(K.Split("/")[1]); // _inputValueTMP.text = VP.ToString(); // } } public static void SetMesure(float OldValue, float NewValue, string Direction) { // if (NewValue >= 480) NewValue = 480; // string VTname = _G.VT.name; if (NewValue >= 480) NewValue = 480; string VTname = _G.VTP.name; Debug.Log("VTname : " + VTname); if (VTname.IndexOf("mCe") != -1) { _G.HEIGHT = NewValue; } if (VTname == "InputPanel") { string Category=_G.VT.transform.parent.name; print("Category====="+Category);//Category=====InputE if(Category=="InputE"){ print("Category====NV="+DOIT.ConvertNumberToString(NewValue));//Category=====InputE _G.VT.transform.parent.gameObject.GetComponent().text = DOIT.ConvertNumberToString(NewValue); } else{ //_G.VT.transform.parent.gameObject.GetComponent().text = PanelPNL.MinMaxCorection(NewValue, Category)+_G.Sys; } //Redo show //UIT_PANELPnl.ShowSelecdedOnChange(); } if (VTname == "mW" && Get.o2("Canvas", "SETDIM").activeInHierarchy ){ print("Add to plan2D"); TMP_InputField wallIF = _G.VTP.GetComponentInParent(); WallLine wallLine = _G.VTP.GetComponentInParent(); if (wallIF != null) wallIF.text = DOIT.CNs(NewValue); if (wallLine != null) WallLine.RedimensionLength(Direction, wallLine.gameObject, OldValue, NewValue); } if (Get.o2("Canvas", "PanelPosition").activeInHierarchy) { if (VTname == "mL")//Mesure Left { RepositionPNL.NewPositionOnWall("mL",NewValue-OldValue); } if (VTname == "mR")//Mesure Right { RepositionPNL.NewPositionOnWall("mR",NewValue-OldValue); } if (VTname == "mW")//Mesure Right { RepositionPNL.NewPositionOnWall("mW",NewValue-OldValue); } } // if (_G.VTcat != "TMP") // { // string VTname = _G.VT.name; // Debug.Log("VTname : " + VTname); // if (NewValue >= 480) NewValue = 480; // if (VTname.IndexOf("mCe") != -1) { // _G.HEIGHT = NewValue; // } // if (VTname.IndexOf("m1") != -1) { recalROOM(NewValue); } // if (VTname == "InputPanel") // { // string Category=_G.VT.transform.parent.name; // print("Category====="+Category);//Category=====InputE // if(Category=="InputE"){ // print("Category====NV="+DOIT.ConvertNumberToString(NewValue));//Category=====InputE // _G.VT.transform.parent.gameObject.GetComponent().text = DOIT.ConvertNumberToString(NewValue); // } // else{ // //_G.VT.transform.parent.gameObject.GetComponent().text = PanelPNL.MinMaxCorection(NewValue, Category)+_G.Sys; // } // //Redo show // //UIT_PANELPnl.ShowSelecdedOnChange(); // } // if (VTname == "mW" && Get.o2("Canvas", "SETDIM").activeInHierarchy ){ // print("Add to plan2D"); // _G.VT.transform.parent.gameObject.GetComponent().text = DOIT.CNs(NewValue); // GameObject Line=_G.VT.transform.parent.parent.parent.gameObject; // WallLine.RedimensionLength(Direction,Line,OldValue,NewValue); // } // //OBJECT ON WALL POSITION AND SIZES // if (Get.o2("Canvas", "PanelPosition").activeInHierarchy) // { // if (VTname == "mL")//Mesure Left // { // RepositionPNL.NewPositionOnWall("mL",NewValue-OldValue); // } // if (VTname == "mR")//Mesure Right // { // RepositionPNL.NewPositionOnWall("mR",NewValue-OldValue); // } // if (VTname == "mW")//Mesure Right // { // RepositionPNL.NewPositionOnWall("mW",NewValue-OldValue); // } // } // } // else // { // string VTPname = _G.VTP.name; // print("_G.VTP.name====" + _G.VTP.name); // GameObject titleObject = Get.o1("CABINETpnl/Title"); // string Title = titleObject == null ? "" : titleObject.GetComponent().text; // if (VTPname == "mCe") // { // RoomCreation.SetRoomHeight(DOIT.ConvertStringToNumber(NewValue + _G.Sys)); // } // } } static void recalROOM(float NewValue) { //print("recalROOM==="); Debug.Log("recalROOM from KeyNumber.cs"); if (NewValue > 480) { NewValue = 480; } if (_G.ROOM == "R7") { SetPlan.RedrawRoom78(_G.VT.name, NewValue); } if (_G.ROOM == "R8") { SetPlan.RedrawRoom78(_G.VT.name, NewValue); } if (_G.ROOM == "RDRAW") { //DRAW.RedrawRoom(_G.VT.name, NewValue); } if (_G.ROOM != "RDRAW" && _G.ROOM != "R7" && _G.ROOM != "R8") { //SetPlan.RedrawRoom(_G.VT.name, NewValue); //SetPlan.Rooms(); } } public void closePNL() { Debug.Log("Close Panel KeyboardNumber"); _keyboardNumber.SetActive(false); //_keyboardNumberPro.SetActive(false); //_keyboardNumberShort.SetActive(false); } // public void closePNLPRO() // { // _keyboardNumberPro.SetActive(false); // } public static bool Wallexist(int wn) { bool wall = false; string wallnum = "w" + wn.ToString(); /*foreach(Transform child in Get.o1("Plan").transform){ if(child.name==wallnum)wall=true; }*/ wall = true; return wall; } public void close() { _keyboardNumber.SetActive(true); } public void OpenFraction() { _fractions.SetActive(true); //_fractionsPro.SetActive(true); } }