private int ConnectionsAviable(LevelPrefabSettings A) { int connections = 0; if (A.TopConnection) { connections++; } if (A.BottomConnection) { connections++; } if (A.RightConnection) { connections++; } if (A.LeftConnections) { connections++; } return(connections); }
public static void Register() { registeredPrefabs = 0; foreach (var item in LevelPrefabs) { LevelPrefabSettings A = item.GetComponent <LevelPrefabSettings>(); int code = LevelCoder.GetCode(A.getLevelSet()); if (prefabs.ContainsKey(code)) { if (!prefabs[code].Contains(A.gameObject)) { prefabs[code].Add(A.gameObject); } } else { prefabs.Add(code, new List <GameObject>() { A.gameObject }); } } MonoBehaviour.print("Registrados!"); }
private void OnGUI() { //Informo sobre cuantos objetos hay en prefabs. string Info = ""; Info += string.Format("La coleccion contiene {0} objetos.\n", LevelCollectionManager.LevelPrefabs.Count); if (LevelCollectionManager.registeredPrefabs != LocalPrefabs.Count) { Info += string.Format("Solo {0} objetos estan registrados!.\n", LevelCollectionManager.registeredPrefabs); } if (LevelCollectionManager.registeredPrefabs == LocalPrefabs.Count && LevelCollectionManager.registeredPrefabs != 0) { Info += "Todos los objetos estan registrados"; } if (!_Checked) { Info += "No se ha chequeado que todos los objetos esten registrados!\n"; } EditorGUILayout.HelpBox(Info, MessageType.Info); //Muestro una lista de prefabs. _scroolPos = EditorGUILayout.BeginScrollView(_scroolPos, false, false, new GUILayoutOption[] { GUILayout.MinHeight(220) }); if (LocalPrefabs.Count > 0) { List <GameObject> LevelsToRemove = new List <GameObject>(); foreach (var level in LocalPrefabs) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(string.Format("Codigo del Nivel: {0}.", LevelCoder.GetCode(level.GetComponent <LevelPrefabSettings>().getLevelSet())), new GUILayoutOption[] { GUILayout.MaxWidth(120) }); EditorGUILayout.ObjectField(level, typeof(GameObject), false); GUI.color = Color.red; if (GUILayout.Button("Remove")) { LevelsToRemove.Add(level); _Saved = false; _hasChanges = true; } GUI.color = Color.white; EditorGUILayout.EndHorizontal(); } if (LevelsToRemove.Count > 0) { foreach (var item in LevelsToRemove) { LocalPrefabs.Remove(item); } } } EditorGUILayout.EndScrollView(); //Permito Añadir y expandir la lista de prefabs. EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Nuevo Prefab de nivel: ", new GUILayoutOption[] { GUILayout.MaxWidth(150) }); ItemToAdd = (LevelPrefabSettings)EditorGUILayout.ObjectField(ItemToAdd, typeof(LevelPrefabSettings), true); EditorGUI.BeginDisabledGroup(!ItemToAdd); GUI.backgroundColor = Color.green; if (GUILayout.Button("Add")) { LocalPrefabs.Add(ItemToAdd.gameObject); ItemToAdd = null; _Saved = false; _Checked = false; _hasChanges = true; } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); //Permito que se guarden todos los cambios de manera segura en el Scriptable Object. EditorGUI.BeginDisabledGroup(!_hasChanges); if (GUILayout.Button("Save Changes")) { LevelCollectionManager.SavePrefabs(LocalPrefabs); LevelCollectionManager.Register(); LevelCollectionManager.CheckRegisteredList(); _hasChanges = false; _Saved = true; } EditorGUI.EndDisabledGroup(); GUI.backgroundColor = Color.white; if (_hasChanges && !_Saved) { EditorGUILayout.HelpBox("Hay cambios que no han sido guardados!", MessageType.Warning); } //--------------------------------Chequeos----------------------------------------------------------------------- EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Force Check All objects!")) { LevelCollectionManager.CheckRegisteredList(); _Checked = true; } EditorGUI.BeginDisabledGroup(!_Checked); if (GUILayout.Button("Force Register All objects!")) { LevelCollectionManager.Register(); } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); }
private void OnEnable() { Settings = (LevelPrefabSettings)target; }