private void TileLayersPropertyChanged(TileLayerCollection oldTileLayers, TileLayerCollection newTileLayers) { tileContainer.ClearTileLayers(); if (oldTileLayers != null) { oldTileLayers.CollectionChanged -= TileLayerCollectionChanged; } if (newTileLayers != null) { newTileLayers.CollectionChanged += TileLayerCollectionChanged; tileContainer.AddTileLayers(0, newTileLayers); var firstTileLayer = TileLayers.FirstOrDefault(); if (TileLayer != firstTileLayer) { TileLayer = firstTileLayer; } } else { TileLayer = null; } }
public ILayer <GameActor> GetLayer(LayerType layerType) { if (layerType == LayerType.Object || layerType == LayerType.ForegroundObject) { return(ObjectLayers.FirstOrDefault(x => x.LayerType == layerType)); } return(TileLayers.FirstOrDefault(x => x.LayerType == layerType)); }
/// <summary> /// Returns the tile layer with the given name. /// </summary> /// <param name="name">The name of the tile layer to find.</param> /// <returns>The tile layer with the given name.</returns> public TileLayer GetTileLayer(string name) { try { return(TileLayers.Find(item => item.Name == name)); } catch { throw new Exception("\nCould not find the given TileLayer."); } }
private void UpdateTileLayer() { TileLayer tileLayer = null; if (TileLayers != null) { tileLayer = TileLayers.FirstOrDefault(); } if (TileLayer != tileLayer) { TileLayer = tileLayer; } }
private void TileLayerPropertyChanged(TileLayer tileLayer) { if (tileLayer != null) { if (TileLayers == null) { TileLayers = new TileLayerCollection(); } if (TileLayers.Count == 0) { TileLayers.Add(tileLayer); } else if (TileLayers[0] != tileLayer) { TileLayers[0] = tileLayer; } } if (tileLayer != null && tileLayer.Background != null) { if (storedBackground == null) { storedBackground = Background; } Background = tileLayer.Background; } else if (storedBackground != null) { Background = storedBackground; storedBackground = null; } if (tileLayer != null && tileLayer.Foreground != null) { if (storedForeground == null) { storedForeground = Foreground; } Foreground = tileLayer.Foreground; } else if (storedForeground != null) { Foreground = storedForeground; storedForeground = null; } }
private void TileLayerPropertyChanged(TileLayer tileLayer) { if (tileLayer != null) { if (TileLayers == null) { TileLayers = new ObservableCollection <TileLayer>(new TileLayer[] { tileLayer }); } else if (TileLayers.Count == 0) { TileLayers.Add(tileLayer); } else if (TileLayers[0] != tileLayer) { TileLayers[0] = tileLayer; } } }
private void TileLayerCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Add: AddTileLayers(e.NewStartingIndex, e.NewItems.Cast <TileLayer>()); break; case NotifyCollectionChangedAction.Remove: RemoveTileLayers(e.OldStartingIndex, e.OldItems.Count); break; #if !SILVERLIGHT case NotifyCollectionChangedAction.Move: #endif case NotifyCollectionChangedAction.Replace: RemoveTileLayers(e.NewStartingIndex, e.OldItems.Count); AddTileLayers(e.NewStartingIndex, e.NewItems.Cast <TileLayer>()); break; case NotifyCollectionChangedAction.Reset: ClearTileLayers(); if (e.NewItems != null) { AddTileLayers(0, e.NewItems.Cast <TileLayer>()); } break; default: break; } var tileLayer = TileLayers.FirstOrDefault(); if (TileLayer != tileLayer) { TileLayer = tileLayer; } }
public void LoadAlgorithmSettings() { FloorSettings.Clear(); TileLayers.Clear(); TileData.Clear(); Items.Clear(); Npcs.Clear(); Rooms.Clear(); if (Algorithm > -1) { FloorAlgorithm settingsGuide = GameData.FloorAlgorithmDex[Algorithm]; for (int i = 0; i < settingsGuide.FloorSettings.Count; i++) { FloorSettings.Add(settingsGuide.FloorSettings[i].Item1, 0); } for (int i = 0; i < settingsGuide.LayerSettings.Count; i++) { TileLayers.Add(settingsGuide.LayerSettings[i], new List <Maps.TileAnim>()); } for (int i = 0; i < settingsGuide.TileSettings.Count; i++) { TileData.Add(settingsGuide.TileSettings[i], new List <Maps.TileData>()); } for (int i = 0; i < settingsGuide.ItemGroups.Count; i++) { Items.Add(settingsGuide.ItemGroups[i], new List <Tuple <ItemPreset, int> >()); } for (int i = 0; i < settingsGuide.NpcGroups.Count; i++) { Npcs.Add(settingsGuide.NpcGroups[i], new List <Tuple <NpcPreset, int> >()); } for (int i = 0; i < settingsGuide.RoomGroups.Count; i++) { Rooms.Add(settingsGuide.RoomGroups[i], new List <Tuple <int, int> >()); } } }
public TmxMap(XMLReader reader, string?filePath = null) { XMLReader?xMap = reader.Element("map"); if (xMap == null) { return; } Version = xMap.Attribute("version"); TiledVersion = xMap.Attribute("tiledversion"); Width = xMap.AttributeInt("width"); Height = xMap.AttributeInt("height"); TileWidth = xMap.AttributeInt("tilewidth"); TileHeight = xMap.AttributeInt("tileheight"); HexSideLength = xMap.AttributeIntN("hexsidelength"); Orientation = xMap.AttributeEnum <Orientation>("orientation"); StaggerAxis = xMap.AttributeEnum <StaggerAxis>("staggeraxis"); StaggerIndex = xMap.AttributeEnum <StaggerIndex>("staggerindex"); RenderOrder = xMap.AttributeEnum <RenderOrder>("renderorder"); NextObjectId = xMap.AttributeIntN("nextobjectid"); BackgroundColor = TmxHelpers.ParseTmxColor(xMap.Attribute("backgroundcolor")); Properties = TmxHelpers.GetPropertyDict(xMap.Element("properties")); foreach (XMLReader e in xMap.Elements("tileset")) { string?fileSource = e.Attribute("source"); int firstGid = e.AttributeInt("firstgid"); // Check if external file. if (!string.IsNullOrEmpty(fileSource)) { if (filePath != null) { string directory = AssetLoader.GetDirectoryName(filePath); fileSource = AssetLoader.GetNonRelativePath(directory, fileSource); } var textAsset = Engine.AssetLoader.Get <TextAsset>(fileSource); if (textAsset?.Content == null) { Engine.Log.Warning("Couldn't load external tileset.", MessageSource.TMX); continue; } var externalReader = new XMLReader(textAsset.Content); XMLReader?tileSetElement = externalReader.Element("tileset"); if (tileSetElement == null) { continue; } Tilesets.Add(new TmxTileset(firstGid, tileSetElement)); continue; } Tilesets.Add(new TmxTileset(firstGid, e)); } foreach (XMLReader e in xMap.Elements().Where(x => x.Name == "layer" || x.Name == "objectgroup" || x.Name == "imagelayer" || x.Name == "group")) { TmxLayer layer; switch (e.Name) { case "layer": var tileLayer = new TmxLayer(e, Width, Height); layer = tileLayer; TileLayers.Add(tileLayer); break; case "objectgroup": var objectLayer = new TmxObjectLayer(e); layer = objectLayer; ObjectLayers.Add(objectLayer); break; case "imagelayer": var imageLayer = new TmxImageLayer(e); layer = imageLayer; ImageLayers.Add(imageLayer); break; case "group": var group = new TmxGroupedLayers(e, Width, Height); layer = group; Groups.Add(group); break; default: Engine.Log.Warning($"Unknown TMX layer type {e.Name}.", MessageSource.TMX); continue; } Layers.Add(layer); } }
public TileLayer GetLayerByName(string name) { return(TileLayers.Find(delegate(TileLayer t) { return t.Name.Equals(name); })); }