void OnDisable() { if(atkWindow != null) { atkWindow.Close(); atkWindow = null; } }
void OnDisable() { if (unitListWindow != null) { unitListWindow.Close(); unitListWindow = null; } if (atkListWindow != null) { atkListWindow.Close(); atkListWindow = null; } if(maskWindow != null) { maskWindow.Close(); maskWindow = null; } }
/******SPELL******************************/ void showSpellCardInfo() { if (GUILayout.Button("Attack List")) { AttackListWindow.CardEdit(true); atkListWindow = (AttackListWindow)EditorWindow.GetWindow(typeof(AttackListWindow)); } currentAtk = atkDataList.findByID(cardDataList.cardList[toggledIndex].linkedTo); if (currentAtk != null) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(currentAtk.aName); EditorGUILayout.TextField("Pattern: " + currentAtk.pattern, GUILayout.ExpandWidth(false)); EditorGUILayout.TextField("Damage: " + currentAtk.expectedMin + " - " + currentAtk.expectedMax, GUILayout.ExpandWidth(false)); EditorGUILayout.TextField("Range: " + currentAtk.range, GUILayout.ExpandWidth(false)); EditorGUILayout.EndHorizontal(); } else EditorGUILayout.LabelField("No Attack selected", EditorStyles.boldLabel); }
void OnGUI() { /***********************************/ //Header /***********************************/ GUILayout.Label("Unit Data Editor", EditorStyles.boldLabel); if (unitDataList == null) { EditorGUILayout.LabelField("No Attack database available, error."); } /******************************************/ //Sanity Checks and setups /******************************************/ GUILayout.Space(20); if (unitDataList.unitList == null) { Debug.Log("New List was made"); unitDataList.unitList = new List<UnitData>(); toggledIndex = 0; } if (buttonToggled == null || buttonToggled.Count < unitDataList.unitList.Count) { buttonToggled = new List<bool>(); toggledIndex = 0; for (int i = 0; i < unitDataList.unitList.Count; i++) buttonToggled.Add(false); } if (toggledIndex > unitDataList.unitList.Count) { Debug.Log("Index was out of bounds"); toggledIndex = unitDataList.unitList.Count - 1; } /************************************************************/ /******************************************/ //Display things /******************************************/ if (unitDataList != null) { GUILayout.BeginHorizontal(); GUILayout.Space(10); if (GUILayout.Button("Prev", GUILayout.ExpandWidth(false))) { findPrev(); } GUILayout.Space(5); if (GUILayout.Button("Next", GUILayout.ExpandWidth(false))) { findNext(); } GUILayout.Space(60); if (GUILayout.Button("Add Item", GUILayout.ExpandWidth(false))) { AddUnit(); unitDataList.unitList[toggledIndex].uType = filterType; } if (GUILayout.Button("Delete Item", GUILayout.ExpandWidth(false))) { DeleteUnit(toggledIndex); } filterType = (UnitTypes)EditorGUILayout.EnumPopup(filterType); if (GUILayout.Button("Sort", GUILayout.ExpandWidth(false))) { sortByName(); } GUILayout.EndHorizontal(); if (unitDataList.unitList == null) { Debug.Log("Mistakes were made - You should never reach this"); } /****************************************/ //How the list will look /***************************************/ if (unitDataList.unitList.Count > 0) { if (unitDataList.unitList[toggledIndex].uType != filterType) { toggledIndex = 0; findNext(); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(); //----------Show all the buttons----------- showScrollButtons(); //----------------------------------------- EditorGUILayout.EndVertical(); GUILayout.Space(5); EditorGUILayout.BeginVertical(); //---------Current selection info----------- statScroll = GUILayout.BeginScrollView(statScroll,false, false); GUILayout.BeginHorizontal(); unitDataList.unitList[toggledIndex].uName = EditorGUILayout.TextField("Unit Name", unitDataList.unitList[toggledIndex].uName); unitDataList.unitList[toggledIndex].uType = (UnitTypes)EditorGUILayout.EnumPopup("Unit Type", unitDataList.unitList[toggledIndex].uType); if (unitDataList.unitList[toggledIndex].uType != filterType) filterType = unitDataList.unitList[toggledIndex].uType; GUILayout.EndHorizontal(); GUILayout.Space(5); unitDataList.unitList[toggledIndex].isHero = EditorGUILayout.Toggle("Hero", unitDataList.unitList[toggledIndex].isHero, GUILayout.ExpandWidth(false)); GUILayout.Space(10); EditorGUILayout.LabelField("Stats", EditorStyles.boldLabel); unitDataList.unitList[toggledIndex].maxHp = EditorGUILayout.IntField("HP", unitDataList.unitList[toggledIndex].maxHp, GUILayout.ExpandWidth(false)); unitDataList.unitList[toggledIndex].maxSpeed = EditorGUILayout.Slider("Speed", unitDataList.unitList[toggledIndex].maxSpeed, 5, 20, GUILayout.ExpandWidth(false)); if (unitDataList.unitList[toggledIndex].isHero) { unitDataList.unitList[toggledIndex].impulse = EditorGUILayout.IntSlider("Impulse", unitDataList.unitList[toggledIndex].impulse, 3, 6, GUILayout.ExpandWidth(false)); unitDataList.unitList[toggledIndex].memory = EditorGUILayout.IntSlider("Memory", unitDataList.unitList[toggledIndex].memory, 0, 5, GUILayout.ExpandWidth(false)); } /*****************************************/ //Atk/Def Factors /*****************************************/ EditorGUILayout.Space(); showFactors = EditorGUILayout.Foldout(showFactors, "Type Factors"); if (showFactors) { GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Attack Factors"); EditorGUILayout.LabelField("Defence Factors"); GUILayout.EndHorizontal(); for (int i = 0; i < (int)DamageType.TOTAL; i++) { GUILayout.BeginHorizontal(); unitDataList.unitList[toggledIndex].typeAtk[i] = EditorGUILayout.Slider(Enum.GetName(typeof(DamageType), i), unitDataList.unitList[toggledIndex].typeAtk[i], 0.5f, 2.0f); unitDataList.unitList[toggledIndex].typeDef[i] = EditorGUILayout.Slider(Enum.GetName(typeof(DamageType), i), unitDataList.unitList[toggledIndex].typeDef[i], 0.5f, 2.0f); GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button("Reset Attack Factors")) for (int i = 0; i < (int)DamageType.TOTAL; i++) { unitDataList.unitList[toggledIndex].typeAtk[i] = 1.0f; } if (GUILayout.Button("Reset Defence Factors")) for (int i = 0; i < (int)DamageType.TOTAL; i++) { unitDataList.unitList[toggledIndex].typeDef[i] = 1.0f; } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); /*************************************/ //UnitAttack WindowSpawn /************************************/ GUILayout.Space(10); EditorGUILayout.LabelField("Unit Attacks", EditorStyles.boldLabel); atkScroll = EditorGUILayout.BeginScrollView(atkScroll, GUILayout.Height(120)); foreach(string x in unitDataList.unitList[toggledIndex].attacksData.ToList<String>()) { AttackData knownAtk = atkDataList.findByID(x); if(knownAtk != null) { EditorGUILayout.BeginHorizontal(); //EditorGUILayout.PrefixLabel(knownAtk.aName); showAttackSummary(knownAtk); if (GUILayout.Button("Remove", GUILayout.Width(120f))) RemoveAttack((toggledIndex), x); EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndScrollView(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Attack List")) { AttackListWindow.CardEdit(false); atkWindow = (AttackListWindow)EditorWindow.GetWindow(typeof(AttackListWindow)); } if (GUILayout.Button("Clear Residual Data")) refreshUnitsAttackLists(); EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); GUILayout.EndHorizontal(); } else { GUILayout.Label("This Unit List is Empty."); } if (GUI.changed) { EditorUtility.SetDirty(unitDataList); } } }