using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Globalization; using System.Linq; public class correction : MonoBehaviour { public static void C83(int nO) { _G.OBJs[nO][83] = Get.LibraryValue(_G.OBJs[nO][1], CsvHeaders.Exterior_Finish_Recipe, DataTypes.Cabinet); } public static void C14(int nO) { string[] ADN = _G.OBJs[nO]; float Px = DOIT.ConvertStringToNumber(ADN[15]); float Py = DOIT.ConvertStringToNumber(ADN[16]); float Pz = DOIT.ConvertStringToNumber(ADN[17]); if (ADN[22] != "floor" && ADN[22] != "ceil") { Vector3 WallPosition = Get.o2("ROOM", ADN[22]).transform.position; ADN[14] = (Px - WallPosition.x).ToString() + "," + (Py - WallPosition.y).ToString() + "," + (Pz - WallPosition.z).ToString(); } else ADN[14] = ADN[15] + "," + ADN[16] + "," + ADN[17]; } public static void C34(int nO) { // string[] C = _G.OBJs[nO]; // if (_O.Kicks== "LEG_FRONT") // { // C[34] = _G.caKH + ",0,0,0,1,0,0"; // if (C[4] == "B2" || C[4] == "B3") { C[34] = _G.caKH + ",0,0,0,0,1,1"; } // if (C[4] == "B4" || C[4] == "B5") { C[34] = _G.caKH + ",0,0,0,0,1,0"; } // if (C[4] == "B9" || C[4] == "B10") { C[34] = _G.caKH + ",0,0,0,0,1,1"; } // } // if (_O.Kicks == "LEGS_ONLY") { C[34] = _G.caKH + ",0,0,0,0,0,0"; } // if (_O.Kicks == "NO_LEGS") { C[34] = _G.caKH + ",1,1,1,1,1,1"; } // if (_O.Kicks== "FRONT_SIDE_BACK") { C[34] = _G.caKH + ",1,1,1,1,1,1"; } } public static void C28(int nO) { _G.OBJs[nO][28] = "0"; float CabDepth=DOIT.ConvertStringToNumber(_P.List["BASE_DEPTH"]); if (_G.OBJs[nO][4] == "W2" || _G.OBJs[nO][4] == "W3" || _G.OBJs[nO][4] == "W4" || _G.OBJs[nO][4] == "W4") { _G.OBJs[nO][28] = _G.caWD.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "B2" || _G.OBJs[nO][4] == "B3" || _G.OBJs[nO][4] == "B4" || _G.OBJs[nO][4] == "B4") { _G.OBJs[nO][28] = CabDepth.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "B9") { _G.OBJs[nO][28] = CabDepth.ToString(CultureInfo.InvariantCulture); CabDepth.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "B10") { _G.OBJs[nO][28] = _G.OBJs[nO][8]; } if (_G.OBJs[nO][4] == "W9") { _G.OBJs[nO][28] = CabDepth.ToString(CultureInfo.InvariantCulture); _G.caWD.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "W10") { _G.OBJs[nO][28] = _G.OBJs[nO][8]; } } public static void C29(int nO) { _G.OBJs[nO][29] = "0"; float CabDepth=DOIT.ConvertStringToNumber(_P.List["BASE_DEPTH"]); if (_G.OBJs[nO][4] == "W2" || _G.OBJs[nO][4] == "W3" || _G.OBJs[nO][4] == "W4" || _G.OBJs[nO][4] == "W4") { _G.OBJs[nO][29] = _G.caWD.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "B2" || _G.OBJs[nO][4] == "B3" || _G.OBJs[nO][4] == "B4" || _G.OBJs[nO][4] == "B4") { _G.OBJs[nO][29] = CabDepth.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "B9") { _G.OBJs[nO][29] = _G.OBJs[nO][8]; } if (_G.OBJs[nO][4] == "B10") { _G.OBJs[nO][29] = CabDepth.ToString(CultureInfo.InvariantCulture); CabDepth.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "W9") { _G.OBJs[nO][29] = _G.OBJs[nO][8]; CabDepth.ToString(CultureInfo.InvariantCulture); } if (_G.OBJs[nO][4] == "W10") { _G.OBJs[nO][29] = _G.caWD.ToString(CultureInfo.InvariantCulture); } } public static void C26(int nO) { _G.OBJs[nO][26] = "666666"; } public static void C85(int nO) { _G.OBJs[nO][85] = UIT.Global(Header.KnobV,_G.G);//GlobalSelectionManager.GetValue(GlobalOption.KNOB_7); //("correction====85====="+_G.OBJs[nO][85]); } public static void C86(int nO) { _G.OBJs[nO][86] = UIT.Global(Header.KnobH,_G.G);//GlobalSelectionManager.GetValue(GlobalOption.KNOBT_10); //print("correction====86==="+_G.OBJs[nO][86]); } public static void C41(int nO) { if(_G.OBJs[nO][2]=="Bloc"){ // Recette de materiau d'un bloc. UIT_MATERIAL.GetMaterial n'accepte que // 2 champs (ID), 3 champs (couleur simple) ou une recette complete dont le // champ 1 EST une couleur ("none?#737373?#ffffffff?..."). Tout le reste part dans // GetMaterialbyFullRecipe et casse sur "Invalid color string format". // Les fichiers generes par l'IA ecrivent soit "CT.2" (un simple ID de texture), // soit une recette de moulure "COUN109,1,1780FF,r0,S" = {ID},{n},{couleur},{rot},{fini}. string[] R41 = (_G.OBJs[nO][41] ?? "").Replace(",", "?").Split('?'); bool R41ok = R41.Length == 2 || R41.Length == 3 || (R41.Length >= 4 && IsColor(R41[1])); if (!R41ok) { // Format moulure : on conserve la couleur et le fini choisis, on reconstruit // une vraie recette 8 champs. if (R41.Length >= 3 && IsColor(R41[2])) _G.OBJs[nO][41] = UIT_MATERIAL.GetRecipeColorFromSimpleColor( R41[2] + "?" + (R41.Length >= 5 ? R41[4] : "S") + "?none"); // Sinon la couleur voulue est parfois la seule chose d'exploitable du fichier : // les generations IA laissent O41 inutilisable ("CT.2") mais renseignent O62/O63. // Un bloc cree dans l'application n'ecrit jamais O62, donc rien n'est detourne ici. else if (IsColor(_G.OBJs[nO][62])) _G.OBJs[nO][41] = UIT_MATERIAL.GetRecipeColorFromSimpleColor( _G.OBJs[nO][62] + "?Matt?none"); // En dernier recours, le comptoir global du fichier. else _G.OBJs[nO][41] = UIT.Global(Header.Counter, _G.G); } //print("Form correction _G.OBJs[nO][41]==="+_G.OBJs[nO][41]);//Form correction _G.OBJs[nO][41]===null,1,1,FFFFFF,FFFFFF,0,0,S,FFFFFF,,1,1,0.05,0.5,0 //if(_G.OBJs[nO][41].Split(",")[0]=="null"){_G.OBJs[nO][41]="null,1,1,FFFFFF,FFFFFF,0,0,S,FFFFFF,,1,1,0.05,0.5,0";} } if(_G.OBJs[nO][41]=="none")_G.OBJs[nO][41]=UIT.Global(Header.Counter,_G.G); // //print("_G.OBJs[nO][41]===="+_G.OBJs[nO][41]); // if (Get.ExistOnList(_G.LibraryCounters.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value), _G.OBJs[nO][41]) == false) // { // if (_G.OBJs[nO][41].Split(',')[0].IndexOf("CT.") == -1) { _G.OBJs[nO][41] = UIT.Global(Header.Counter,_G.G);}//GlobalSelectionManager.GetValue(GlobalOption.COUN_8); } // if (_G.OBJs[nO][41].Split(',').Length < 10) _G.OBJs[nO][41] = UIT.Global(Header.Counter,_G.G);//GlobalSelectionManager.GetValue(GlobalOption.COUN_8); // } // if (_G.OBJs[nO][41].Split(',').Length > 2) { } // if (Get.ExistOnList(_G.LibraryCounters.ToDictionary(kvp => kvp.Key, kvp => (CsvData)kvp.Value), _G.OBJs[nO][41])) { } } // Une couleur au sens de DOIT.CSc : au moins 6 chiffres hexadecimaux une fois // retires les '#', '.' et '+'. static bool IsColor(string s) { if (string.IsNullOrEmpty(s)) return false; s = s.Replace("#", "").Replace(".", "").Replace("+", ""); if (s.Length < 6) return false; for (int i = 0; i < 6; i++) { if (!System.Uri.IsHexDigit(s[i])) return false; } return true; } public static void C11(int nO) { _G.OBJs[nO][11] = "0"; } // Categorie (O2) / type (O4) absents du fichier : StringXML renvoie "none", et // LoadXML.CreateObjects n'appelle alors AUCUN Construct* -> l'objet n'apparait pas // dans la scene (cas rencontre avec BLOC101 : ni ni dans le .udt). // On les reconstruit a partir du modele (O1 : BLOC101, PATI101, STOV101...). public static void C2(int nO) { string[] C = _G.OBJs[nO]; string model = C[1]; if (string.IsNullOrEmpty(model) || model == "none" || model.Length < 4) return; string code = model[..4].ToUpper(); string cat = ""; string type = ""; string prefix = code.ToLower(); switch (code) { case "BLOC": cat = "Bloc"; type = "BL"; break; case "PATI": cat = "Patio"; type = "Patio"; break; case "DOOR": cat = "Door"; type = "Door"; break; case "OPEN": cat = "Opening"; type = "Open"; break; case "WIND": cat = "Window"; type = "wind"; break; case "SLID": case "SLIS": cat = "Slider"; type = "Slider"; prefix = "slid"; break; case "PICT": cat = "Picture"; break; case "MIRR": case "MIRD": cat = "Mirrors"; prefix = "mirr"; break; case "PANE": cat = "Panel"; type = "panel"; break; case "FRID": cat = "Appliance"; type = "frid"; break; case "STOV": case "BUIL": case "TOPS": case "PLAT": cat = "Appliance"; type = "stov"; prefix = "stov"; break; case "HOOW": case "HOOC": cat = "Appliance"; type = "hood"; prefix = "hood"; break; case "DISH": cat = "Appliance"; type = "dish"; break; case "MICR": cat = "Appliance"; type = "micr"; break; case "WADR": cat = "Appliance"; type = "wadr"; break; case "CELL": cat = "Appliance"; type = "wine"; break; case "SMAL": cat = "Small"; type = "Smallelectro"; break; case "TOIL": cat = "Toilet"; break; case "SHOW": cat = "Shower"; break; case "BATH": cat = "Bath"; break; case "BASI": cat = "BathSink"; break; case "VASE": cat = "Vase"; type = "Vase"; break; case "FLOW": case "ORNA": cat = "Ornament"; prefix = "orna"; break; case "LAMP": cat = "Lamp"; break; case "TABL": cat = "Table"; break; case "CHAI": cat = "Chair"; break; case "STOO": cat = "Stool"; break; } if (cat == "") return; _G.OBJs[nO][2] = cat; if (type != "" && (string.IsNullOrEmpty(C[4]) || C[4] == "none")) _G.OBJs[nO][4] = type; // Nom de scene inutilisable : partout dans le code on fait OBJs[n][0][..4]. if (string.IsNullOrEmpty(C[0]) || C[0].Length < 4) { _G.OBJs[nO][0] = prefix + nO.ToString(); _G.OBJs[nO][89] = _G.OBJs[nO][0]; } } //public static void C61(int nO) //{ // _G.OBJs[nO][61] = _G.GLOBAL[_G.G][0]; //} public static void C61pnl(int nO) { _G.OBJs[nO][61] = UIT.Global(Header.Ext,_G.G);//GlobalSelectionManager.GetValue(GlobalOption.EXTPNL_2); } //public static void C64(int nO) //{ // _G.OBJs[nO][64] = "NONE?90?6?0"; ; //} }