private void AddLayer <T>(UndertaleRoom.LayerType type, string name) where T : UndertaleRoom.Layer.LayerData, new() { UndertaleRoom room = this.DataContext as UndertaleRoom; // get last layer id var data = (Application.Current.MainWindow as MainWindow).Data; uint lastlayer_id = 0; for (var i = data.Rooms.Count - 1; i >= 0; i--) { var lastroom_layers = data.Rooms[i].Layers; if (lastroom_layers.Count != 0) { lastlayer_id = lastroom_layers[lastroom_layers.Count - 1].LayerId; break; } } UndertaleRoom.Layer layer = new UndertaleRoom.Layer(); layer.LayerName = (Application.Current.MainWindow as MainWindow).Data.Strings.MakeString(name); layer.LayerId = lastlayer_id + 1; layer.LayerType = type; layer.Data = new T(); room.Layers.Add(layer); SelectObject(layer); (this.DataContext as UndertaleRoom)?.SetupRoom(); }
private void AddLayer <T>(UndertaleRoom.LayerType type, string name) where T : UndertaleRoom.Layer.LayerData, new() { UndertaleRoom room = this.DataContext as UndertaleRoom; UndertaleRoom.Layer layer = new UndertaleRoom.Layer(); layer.LayerName = (Application.Current.MainWindow as MainWindow).Data.Strings.MakeString(name); layer.LayerId = 0; // TODO: find next ID layer.LayerType = type; layer.Data = new T(); room.Layers.Add(layer); SelectObject(layer); }
private void AddLayer <T>(UndertaleRoom.LayerType type, string name) where T : UndertaleRoom.Layer.LayerData, new() { UndertaleRoom room = this.DataContext as UndertaleRoom; var data = (Application.Current.MainWindow as MainWindow).Data; uint largest_layerid = 0; // Find the largest layer id // See #355 foreach (UndertaleRoom Room in data.Rooms) { foreach (UndertaleRoom.Layer Layer in Room.Layers) { if (Layer.LayerId > largest_layerid) { largest_layerid = Layer.LayerId; } } } UndertaleRoom.Layer layer = new UndertaleRoom.Layer(); layer.LayerName = data.Strings.MakeString(name); layer.LayerId = largest_layerid + 1; layer.LayerType = type; layer.Data = new T(); room.Layers.Add(layer); if (layer.LayerType == UndertaleRoom.LayerType.Assets) { // create a new pointer list if (layer.AssetsData.LegacyTiles == null) { layer.AssetsData.LegacyTiles = new UndertalePointerList <UndertaleRoom.Tile>(); } // create new sprite pointer list if (layer.AssetsData.Sprites == null) { layer.AssetsData.Sprites = new UndertalePointerList <UndertaleRoom.SpriteInstance>(); } } SelectObject(layer); (this.DataContext as UndertaleRoom)?.SetupRoom(); }