Esempio n. 1
0
    static public void SaveTilesDataXml(TilesData state, string datapath, bool isNewWorld = false)
    {
        if (isNewWorld)
        {
            if (File.Exists(datapath))
            {
                try
                {
                    File.Delete(datapath);
                }
                catch (Exception x)
                {
                    Debug.Log("############# Error TilesData NOT File Delete: " + datapath + " : " + x.Message);
                }
            }
        }

        //Type[] extraTypes = { typeof(FieldData), typeof(ObjectData), typeof(ObjectDataUfo) };
        //##
        state.TilesXML = state.TilesD.ToList();

        //##
        Debug.Log("SaveXml GridData D:" + state.TilesD.Count() + "   XML:" + state.TilesXML.Count() + "     datapath=" + datapath);

        XmlSerializer serializer = new XmlSerializer(typeof(TilesData), extraTypes);

        FileStream fs = new FileStream(datapath, FileMode.Create);

        serializer.Serialize(fs, state);
        fs.Close();

        state.TilesXML = null;
        //Debug.Log("Saved Xml GridData L:" + state.Fields.Count() + "  D:" + state.FieldsD.Count() + "   XML:" + state.FieldsXML.Count() + "     datapath=" + datapath);
    }
Esempio n. 2
0
    public void SaveTilesData()
    {
        TilesData tilesDataSavw = new TilesData()
        {
            TilesD = m_CollectionDataMapTiles
        };

        Serializator.SaveTilesDataXml(tilesDataSavw, Storage.Instance.DataPathTiles, true);
    }
Esempio n. 3
0
    static public TilesData LoadTilesXml(string datapath)
    {
        string    stepErr = "start";
        TilesData state   = null;

        try
        {
            Debug.Log("Loaded Xml GridData start...");

            stepErr = ".1";
            stepErr = ".2";
            //XmlSerializer serializer = new XmlSerializer(typeof(TilesData), extraTypes);
            //stepErr = ".3";
            //FileStream fs = new FileStream(datapath, FileMode.Open);
            //stepErr = ".4";

            //state = (TilesData)serializer.Deserialize(fs);
            //stepErr = ".5";
            //fs.Close();
            var encoding = Encoding.GetEncoding("UTF-8");
            stepErr = ".3";
            XmlSerializer serializer = new XmlSerializer(typeof(TilesData), extraTypes);
            stepErr = ".4";
            using (StreamReader reader = new StreamReader(datapath, Encoding.UTF8, true))
            {
                stepErr = ".5";
                state   = (TilesData)serializer.Deserialize(reader);
            }
            stepErr      = ".6";
            state.TilesD = state.TilesXML.ToDictionary(x => x.Key, x => x.Value);
            stepErr      = ".7";
            Debug.Log("Loaded Xml CasePersonData :" + state.TilesD.Count() + "     datapath=" + datapath);
            state.TilesXML = null;
        }
        catch (Exception x)
        {
            state = null;
            Debug.Log("Error DeXml: " + x.Message + " " + stepErr);
        }

        return(state);
    }
Esempio n. 4
0
    public void OnEnable()
    {
        Instance = this;
        // Each editor window contains a root VisualElement object
        VisualElement root = rootVisualElement;

        TilesData = AssetDatabase.LoadAssetAtPath <TilesData>("Assets/Resources/Data/Map/TilesData.asset");

        // Import UXML
        var           visualTree    = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/Editor/MapEditor.uxml");
        VisualElement labelFromUXML = visualTree.CloneTree();
        var           styleSheet    = AssetDatabase.LoadAssetAtPath <StyleSheet>("Assets/Editor/MapEditor.uss");

        labelFromUXML.styleSheets.Add(styleSheet);
        root.Add(labelFromUXML);

        m_height = root.Q <BaseField <int> >("Height");
        m_width  = root.Q <BaseField <int> >("Width");

        var applyChangesBtn = root.Q <Button>("ApplyChangesBtn");

        applyChangesBtn.clicked += ApplyChangesClicked;

        m_mapEditorView = root.Q <VisualElement>("Map");
        m_mapName       = root.Q <TextField>("MapName");

        var saveBtn = root.Q <Button>("SaveBtn");

        saveBtn.clicked += SaveBtnClicked;

        DirectionArrows.Clear();
        DirectionArrows.Add(EDirection.Up, AssetDatabase.LoadAssetAtPath <Sprite>("Assets/Editor/Sprites/ArrowUp.png"));
        DirectionArrows.Add(EDirection.Right, AssetDatabase.LoadAssetAtPath <Sprite>("Assets/Editor/Sprites/ArrowRight.png"));
        DirectionArrows.Add(EDirection.Down, AssetDatabase.LoadAssetAtPath <Sprite>("Assets/Editor/Sprites/ArrowDown.png"));
        DirectionArrows.Add(EDirection.Left, AssetDatabase.LoadAssetAtPath <Sprite>("Assets/Editor/Sprites/ArrowLeft.png"));

        m_mapButtonsList = root.Q <ListView>("MapList");
        m_mapBtn         = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/Editor/MapBtn.uxml");
        LoadMaps();
    }
Esempio n. 5
0
        public void AddTileMap(Image image)
        {
            Bitmap bitmap = new Bitmap(image);

            //int currentImageID = TileSetImages.Count + StartIndex;
            //TileSetImages.Add(bitmap);
            for (int i = 0; i <= image.Height - TileSize; i += TileSize)
            {
                for (int j = 0; j <= image.Width - TileSize; j += TileSize)
                {
                    Rectangle target = new Rectangle(j, i, TileSize, TileSize);
                    Bitmap    tmp    = bitmap.Clone(target, System.Drawing.Imaging.PixelFormat.DontCare);
                    Tiles.Add(tmp);
                    TilesData.Add(new TileData(this.StartIndex + Tiles.Count - 1, i / TileSize, j / TileSize));
                }
            }
            bitmap.Dispose();
            if (TileUpdated != null)
            {
                TileUpdated.Invoke(this, new EventArgs());
            }
        }
Esempio n. 6
0
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        Vector2Int tileAmt = property.FindPropertyRelative("tileAmts").vector2IntValue;
        //target
        TilesData data = property.FindPropertyRelative("tilesData").objectReferenceValue as TilesData;

        //Debug.Log(property.FindPropertyRelative("tilesData").objectReferenceValue.name);

        // Using BeginProperty / EndProperty on the parent property means that
        // prefab override logic works on the entire property.
        label = EditorGUI.BeginProperty(position, label, property);

        int oldIndentlevel = EditorGUI.indentLevel;

        // Draw the top label
        EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
        EditorGUI.indentLevel += 1;

        // Draw the tiles data
        position.height = 16.0f;
        position.y     += 16;
        EditorGUI.PropertyField(position, property.FindPropertyRelative("tilesData"), new GUIContent("Data"));

        // Draw the tiles amount
        position.y += 16;
        //tileAmt = EditorGUI.Vector2IntField(position, "Size", tileAmt);
        EditorGUI.PropertyField(position, property.FindPropertyRelative("tileAmts"), new GUIContent("Size"));

        // Ok now we draw the mini tilemap
        position.y += 16;

        if (data == null)
        {
            EditorGUI.PrefixLabel(position, new GUIContent("No data found!"));
        }
        else if (tileAmt.x <= 0 || tileAmt.y <= 0 || tileAmt.x > GlobalTilemapVariables.MAXTILES.x || tileAmt.y > GlobalTilemapVariables.MAXTILES.y)
        {
            EditorGUI.PrefixLabel(position, new GUIContent("Tile amount invalid!"));
        }
        else
        {
            SerializedProperty idArrayProperty = property.FindPropertyRelative("tilesIdList");



            while (idArrayProperty.arraySize != (tileAmt.x * tileAmt.y))
            {
                if (idArrayProperty.arraySize < (tileAmt.x * tileAmt.y))
                {
                    idArrayProperty.InsertArrayElementAtIndex(idArrayProperty.arraySize);
                }
                else if (idArrayProperty.arraySize > (tileAmt.x * tileAmt.y))
                {
                    idArrayProperty.DeleteArrayElementAtIndex(idArrayProperty.arraySize - 1);
                }
            }


            List <string> possibleTileStringValues = new List <string>();
            List <int>    possibleTileValues       = new List <int>();
            for (int i = 0; i < data.tileList.Count; ++i)
            {
                possibleTileStringValues.Add(i.ToString());
                possibleTileValues.Add(i);
            }

            for (int y = 0; y < tileAmt.y; ++y)
            {
                for (int x = 0; x < tileAmt.x; ++x)
                {
                    Rect tileElemPosition = position;
                    tileElemPosition.x      = position.x + x * tileElemSize.x;
                    tileElemPosition.y      = position.y + y * tileElemSize.y;
                    tileElemPosition.width  = tileElemSize.x;
                    tileElemPosition.height = tileElemSize.y;
                    //EditorGUI.IntField(tileElemPosition, GUIContent.none, 0);

                    int arrayIndex = x + y * tileAmt.x;
                    idArrayProperty.GetArrayElementAtIndex(arrayIndex).intValue = EditorGUI.IntPopup(tileElemPosition,
                                                                                                     idArrayProperty.GetArrayElementAtIndex(arrayIndex).intValue,
                                                                                                     possibleTileStringValues.ToArray(), possibleTileValues.ToArray());
                }
            }
        }



        // Reset indent level
        EditorGUI.indentLevel = oldIndentlevel;

        EditorGUI.EndProperty();
    }
Esempio n. 7
0
    public void LoadTextures()
    {
        m_collectionTextureTiles = new Dictionary <string, Texture2D>();
        //???? CollectionTiles = new Dictionary<string, TileBase>();
        m_collectionSpriteTiles = new Dictionary <string, Sprite>();

        //var listTiles = Resources.LoadAll<Tile>("Textures/Terra/Floor/Tiles/").ToList();
        //var listTilesPrefabs = Resources.LoadAll<Tile>("Textures/TilesPrefab/Tiles/").ToList();
        //var listTilesWorld = Resources.LoadAll<Tile>("Tiles/").ToList();

        //listTiles.AddRange(listTilesPrefabs);
        //listTiles.AddRange(listTilesWorld);

        //m_listTiles = listTiles.ToArray();


        //????
        //foreach (var tileItem in m_listTiles)
        //{
        //    if (CollectionTiles.ContainsKey(tileItem.name))
        //    {
        //        Debug.Log("########## LoadTextures CollectionTiles already exit :" + tileItem.name);
        //        continue;
        //    }
        //    CollectionTiles.Add(tileItem.name, tileItem);
        //}

        //m_listTextursTerra = Resources.LoadAll<Texture2D>("Textures/Terra/Floor/").ToList();
        //m_listTextursPrefabs = Resources.LoadAll<Texture2D>("Textures/TilesPrefab/").ToList();
        //m_listTextursWorld = Resources.LoadAll<Texture2D>("Textures/World/").ToList();
        //Legacy code load from Resources


        //foreach (var imageItem in ListTexturs)
        //{
        //    if (m_collectionTextureTiles.ContainsKey(imageItem.name))
        //    {
        //        Debug.Log("########## LoadTextures CollectionTextureTiles already exit :" + imageItem.name);
        //        continue;
        //    }
        //    m_collectionTextureTiles.Add(imageItem.name, imageItem);

        //    Sprite spriteTile = Sprite.Create(imageItem, new Rect(0.0f, 0.0f, imageItem.width, imageItem.height), new Vector2(0.5f, 0.5f), 100.0f);
        //    m_collectionSpriteTiles.Add(imageItem.name, spriteTile);
        //}

        foreach (var spriteTile in Storage.Palette.GetSpriteAtlasTiles())
        {
            if (m_collectionTextureTiles.ContainsKey(spriteTile.name))
            {
                Debug.Log("########## LoadTextures CollectionTextureTiles already exit :" + spriteTile.name);
                continue;
            }
            //m_collectionTextureTiles.Add(imageItem.name, imageItem);

            //Sprite spriteTile = Sprite.Create(imageItem, new Rect(0.0f, 0.0f, imageItem.width, imageItem.height), new Vector2(0.5f, 0.5f), 100.0f);
            string name = spriteTile.name.Replace("(Clone)", "");
            m_collectionSpriteTiles.Add(name, spriteTile);
        }


        TilesData data = Serializator.LoadTilesXml(Storage.Instance.DataPathTiles);

        if (data != null)
        {
            m_CollectionDataMapTiles = data.TilesD;
        }
        else
        {
            Debug.Log("############ Not load Tiles from XML " + Storage.Instance.DataPathTiles);
            Storage.TilesManager.UpdateGridTiles();
        }
    }