public void Awake() { Instance = this; map = new sbyte [mapSize * mapSize]; kingdomMap = new sbyte [mapSize * mapSize]; tileKnowledge = ExtensionMethods.LoadXML(tileKnowledgeAsset.text, typeof(TileKnowledge)) as TileKnowledge; tileKnowledge.Initialize(); RandomGenerate(); cellSize = tilemap.cellSize; halfCellSize = cellSize / 2f; tileMapSize = (float)mapSize * cellSize.x; }
public void Clone(TileKnowledge tileKnowledge) { path = tileKnowledge.path; tiles.Clear(); tileIDPool = tileKnowledge.tileIDPool; for (int i = 0; i < tileKnowledge.tiles.Count; ++i) { TileType tileType = new TileType(); tileType.Clone(tileKnowledge.tiles [i]); tiles.Add(tileType); } }
private void OnGUI() { if (box == null) { box = new GUIStyle("box"); } //Debug.Log ( "hmm " + Selection.activeObject.GetType () ); EditorGUILayout.TextField(errorMessage); EditorGUILayout.BeginHorizontal(); { if (GUILayout.Button("Load Tile Knowledge")) { if (Selection.activeObject != null && Selection.activeObject.GetType() == typeof(TextAsset)) { TileKnowledge tempTileKnowledge = (TileKnowledge)ExtensionMethods.LoadXML((Selection.activeObject as TextAsset).text, typeof(TileKnowledge)); if (tempTileKnowledge == null) { errorMessage = "Failed to load Tile Knowledge."; } else { tempTileKnowledge.path = AssetDatabase.GetAssetPath(Selection.activeObject); //CreateTileKnowledge (); tileKnowledge = new TileKnowledge(); tileKnowledge.Clone(tempTileKnowledge); errorMessage = "Tile Knowledge loaded. " + tempTileKnowledge.path; } //TileKnowledge tempTileKnowledge = Selection.activeObject as TileKnowledge; //tempTileKnowledge.path = AssetDatabase.GetAssetPath ( tempTileKnowledge ); //CreateTileKnowledge (); //tileKnowledge.Clone ( tempTileKnowledge ); //errorMessage = "Tile Knowledge loaded. " + tempTileKnowledge.path; } else { errorMessage = "Failed to load Tile Knowledge."; } } else if (GUILayout.Button("New Tile Knowledge")) { string path = EditorUtility.SaveFilePanelInProject("Create Tile Knowledge", "TileKnowledge", "xml", "Create Tile Knowledge"); if (path.Length > 0) { tileKnowledge = new TileKnowledge(); tileKnowledge.path = path; ExtensionMethods.CreateXML(tileKnowledge, typeof(TileKnowledge), path); AssetDatabase.Refresh(); errorMessage = "Tile Knowledge created. " + tileKnowledge.path; } else { errorMessage = "Failed to create Tile Knowledge."; } //TileKnowledge tempTileKnowledge = ScriptableObject.CreateInstance<TileKnowledge> (); //string path = EditorUtility.SaveFilePanelInProject ( "Create Tile Knowledge", "TileKnowledge", "asset", "Create Tile Knowledge" ); //if ( path.Length > 0 ) //{ // tempTileKnowledge.path = path; // AssetDatabase.CreateAsset ( tempTileKnowledge, path ); // CreateTileKnowledge (); // tileKnowledge.Clone ( tempTileKnowledge ); // errorMessage = "Tile Knowledge created. " + tempTileKnowledge.path; //} //else // errorMessage = "Failed to create Tile Knowledge."; } EditorGUI.BeginDisabledGroup(tileKnowledge == null); { if (GUILayout.Button("Save Tile Knowledge")) { if (tileKnowledge.path.Length > 0) { ExtensionMethods.CreateXML(tileKnowledge, typeof(TileKnowledge), tileKnowledge.path); AssetDatabase.Refresh(); errorMessage = "Tile Knowledge saved. " + tileKnowledge.path; } else { errorMessage = "Failed to save Tile Knowledge."; } //AssetDatabase.DeleteAsset ( tileKnowledge.path ); //TileKnowledge tempTileKnowledge = ScriptableObject.CreateInstance<TileKnowledge> (); //tempTileKnowledge.Clone ( tileKnowledge ); //if ( tempTileKnowledge.path.Length > 0 ) //{ // AssetDatabase.CreateAsset ( tempTileKnowledge, tempTileKnowledge.path ); // errorMessage = "Tile Knowledge saved. " + tempTileKnowledge.path; //} //else // errorMessage = "Failed to save Tile Knowledge."; } } EditorGUI.EndDisabledGroup(); } EditorGUILayout.EndHorizontal(); //if ( GUILayout.Button ( "FIX" ) ) //{ // for ( int i = 0; i < tileKnowledge.tileTypes.Count; ++i ) // { // for ( int a = 0; a < tileKnowledge.tileTypes [ i ].Count; ++a ) // tileKnowledge.tiles.Add ( tileKnowledge.tileTypes [ i ] [ a ] ); // } // tileKnowledge.tileTypes.Clear (); // tileKnowledge.tiles = new List<TileType> ( tileKnowledge.tiles.OrderBy ( m => m.id ) ); //} if (tileKnowledge != null) { //if ( tileKnowledge.tileTypes.Count != (int)TileTypes.Total ) //{ // if ( tileKnowledge.tileTypes.Count < (int)TileTypes.Total ) // { // for ( int i = 0; i < (int)TileTypes.Total - tileKnowledge.tileTypes.Count; ++i ) // tileKnowledge.tileTypes.Add ( new List<TileType> () ); // } // else // { // for ( int i = tileKnowledge.tileTypes.Count; i >= (int)TileTypes.Total; --i ) // tileKnowledge.tileTypes.RemoveAt ( i ); // } //} EditorGUILayout.BeginHorizontal(); { type = (TileTypes)EditorGUILayout.EnumPopup("Type", type); if (GUILayout.Button("Add Tile")) { Tile tileBase = null; if (Selection.activeObject != null && Selection.activeObject.GetType() == typeof(Tile)) { tileBase = Selection.activeObject as Tile; } TileType newTileType = new TileType(); newTileType.tileBase = tileBase; newTileType.type = (int)type; if (tileBase != null) { newTileType.tilePath = AssetDatabase.GetAssetPath(Selection.activeObject); } tileKnowledge.AddTile(newTileType); //CloneTileType ( newTileType ); } } EditorGUILayout.EndHorizontal(); scroll = EditorGUILayout.BeginScrollView(scroll); { for (int a = 0; a < tileKnowledge.tiles.Count; ++a) { TileType tileType = tileKnowledge.tiles[a]; if (tileType.tilePath.Length > 0 && tileType.tileBase == null) { tileType.tileBase = AssetDatabase.LoadAssetAtPath <Tile> (tileType.tilePath); } EditorGUILayout.BeginHorizontal(); { tileType.type = (int)(TileTypes)EditorGUILayout.EnumPopup((TileTypes)tileType.type); tileType.tileBase = EditorGUILayout.ObjectField(tileType.tileBase, typeof(Tile), false) as Tile; tileType.tilePath = tileType.tileBase != null?AssetDatabase.GetAssetPath(tileType.tileBase) : ""; if (GUILayout.Button("Remove")) { tileKnowledge.tiles.RemoveAt(a); --a; } } EditorGUILayout.EndHorizontal(); } //if ( tileKnowledge.tileTypes.Count == (int)TileTypes.Total ) //{ // for ( int i = 0; i < (int)TileTypes.Total; ++i ) // { // for ( int a = 0; a < tileKnowledge.tileTypes [ i ].Count; ++a ) // { // TileType tileType = tileKnowledge.tileTypes [ i ] [ a ]; // if ( tileType.tilePath.Length > 0 && tileType.tileBase == null ) // tileType.tileBase = AssetDatabase.LoadAssetAtPath<Tile> ( tileType.tilePath ); // EditorGUILayout.BeginHorizontal (); // { // int prevType = tileType.type; // tileType.type = (int)(TileTypes)EditorGUILayout.EnumPopup ( (TileTypes)tileType.type ); // tileType.tileBase = EditorGUILayout.ObjectField ( tileType.tileBase, typeof ( Tile ), false ) as Tile; // tileType.tilePath = tileType.tileBase != null ? AssetDatabase.GetAssetPath ( tileType.tileBase ) : ""; // if ( GUILayout.Button ( "Remove" ) ) // { // tileKnowledge.tileTypes [ i ].RemoveAt ( a ); // --a; // } // else if ( prevType != tileType.type ) // { // tileKnowledge.tileTypes [ tileType.type ].Add ( tileType ); // tileKnowledge.tileTypes [ i ].RemoveAt ( a ); // --a; // } // } // EditorGUILayout.EndHorizontal (); // } // } //} } EditorGUILayout.EndScrollView(); } }