Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
    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);
        }
    }
Ejemplo n.º 3
0
    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();
        }
    }