using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; namespace TBTK { public class umEditorWindow : TBEditorWindow { [MenuItem ("Tools/TBTK/UnitManagerEditor", false, 10)] static void OpenUnitManagerEditor () { Init(); } private static UnitManager instance; private static umEditorWindow window; public static void Init(UnitManager umInstance=null) { // Get existing open window or if none, make a new one: window = (umEditorWindow)EditorWindow.GetWindow(typeof (umEditorWindow), false, "UnitManager"); window.minSize=new Vector2(500, 300); TBE.Init(); if(umInstance!=null) instance=umInstance; } private bool GetUnitManager(){ instance=(UnitManager)FindObjectOfType(typeof(UnitManager)); return instance==null ? false : true ; } public void OnGUI() { TBE.InitGUIStyle(); //if(!CheckIsPlaying()) return; if(window==null) Init(); if(instance==null && !GetUnitManager()) return; Undo.RecordObject(this, "window"); Undo.RecordObject(instance, "UnitManager"); float startX=5; float startY=5; width=150; Vector2 v2=Vector2.zero; Rect visibleRect=new Rect(startX, startY, window.position.width-startX*2, window.position.height-(startY+5)); Rect contentRect=new Rect(startX, startY, contentWidth-20, contentHeight); scrollPos = GUI.BeginScrollView(visibleRect, scrollPos, contentRect); float maxHeight=0; //float maxWidth=0; for(int i=0; i existingIDList=new List(); for(int i=0; i=0) fac.startingUnitList[i]=UnitDB.GetItem(unitIdx); if(GUI.Button(new Rect(startX+spaceX+width+3-height, startY, height, height), "-")) fac.startingUnitList.RemoveAt(i); startY+=spaceY; } int newUnitIdx=-1; newUnitIdx = EditorGUI.Popup(new Rect(startX+spaceX, startY, width-height, height), newUnitIdx, UnitDB.label); if(newUnitIdx>=0) fac.startingUnitList.Add(UnitDB.GetItem(newUnitIdx)); } } startY+=spaceY; foldSpawnGroup=EditorGUI.Foldout(new Rect(startX, startY+=spaceY, spaceX, height), foldSpawnGroup, "Spawn Info", TBE.foldoutS); if(foldSpawnGroup){ startX+=10; if(GUI.Button(new Rect(startX+spaceX-10, startY, width, height), "Add Group")){ List existingIDList=new List(); for(int i=0; i0 ? spaceY : 0), width, height, "-"); int abIdx=AbilityFDB.GetPrefabIndex(fac.abilityIDList[i]); abIdx = EditorGUI.Popup(new Rect(startX+spaceX, startY, width-height, height), abIdx, AbilityFDB.label); if(abIdx>=0) fac.abilityIDList[i]=AbilityFDB.GetItemID(abIdx); if(GUI.Button(new Rect(startX+spaceX+width+3-height, startY, height, height), "-")) fac.abilityIDList.RemoveAt(i); //startY+=spaceY; } if(fac.abilityIDList.Count0 ? spaceY : 0 ; newAbID = EditorGUI.Popup(new Rect(startX+spaceX, startY, width-height, height), newAbID, AbilityFDB.label); if(newAbID>=0) newAbID=AbilityFDB.GetItemID(newAbID); if(newAbID>=0 && !fac.abilityIDList.Contains(newAbID)) fac.abilityIDList.Add(newAbID); } } return new Vector2(startX, startY+spaceY); } private float DrawSpawnGroup(float startX, float startY, SpawnGroup group, Faction fac){ //~ public int ID; //~ public int countMin=5; //~ public int countMax=5; //~ public List unitList=new List(); //~ public List unitCountMinList=new List(); //~ public List unitCountMaxList=new List(); List nodeList=GridManager.GetSpawnGroup(fac.factionID, group.ID); TBE.Label(startX, startY+=spaceY, width, height, "Node Count: "+nodeList.Count, "The number of node available to this spawn group\nYou can edit this using GridEditor/Node/SpawnArea"); GUI.color=new Color(1f, .75f, .5f, 1); if(GUI.Button(new Rect(startX+spaceX+width-(widthS*2)-10, startY, widthS*2, height), "Remove")){ fac.spawnGroupList.Remove(group); return startY; } GUI.color=Color.white; TBE.Label(startX, startY+=spaceY, width, height, "SpawnCount (Min/Max):", "The number of unit to spawn"); group.countMin=EditorGUI.IntField(new Rect(startX+width+5, startY, widthS, height), group.countMin); group.countMax=EditorGUI.IntField(new Rect(startX+width+5+widthS, startY, widthS, height), group.countMax); while(group.unitCountMinList.Countgroup.unitList.Count) group.unitCountMinList.RemoveAt(group.unitCountMinList.Count-1); while(group.unitCountMaxList.Count>group.unitList.Count) group.unitCountMaxList.RemoveAt(group.unitCountMaxList.Count-1); //TBE.Label(startX+height, startY+=spaceY, width, height, " Units", ""); //TBE.Label(startX+width+height, startY, width, height, "Min/Max", ""); startX+=10; for(int i=0; i=0) group.unitList[i]=UnitDB.GetItem(unitIdx); group.unitCountMinList[i]=EditorGUI.IntField(new Rect(startX+width+5, startY, widthS, height), group.unitCountMinList[i]); group.unitCountMaxList[i]=EditorGUI.IntField(new Rect(startX+width+5+widthS, startY, widthS, height), group.unitCountMaxList[i]); if(GUI.Button(new Rect(startX+spaceX+width-height-10, startY, height, height), "-")) group.unitList.RemoveAt(i); } startX-=10; if(group.unitList.Count=0) group.unitList.Add(UnitDB.GetItem(newUnitIdx)); } return startY; } } }