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();
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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();
        }