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); }
public void SaveTilesData() { TilesData tilesDataSavw = new TilesData() { TilesD = m_CollectionDataMapTiles }; Serializator.SaveTilesDataXml(tilesDataSavw, Storage.Instance.DataPathTiles, true); }
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); }
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(); }
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()); } }
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(); }
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(); } }