Beispiel #1
0
        private void WriteTileLayerBlock(ContentWriter output, MultiTileGridLayer layer)
        {
            output.Write((short)layer.TileWidth);
            output.Write((short)layer.TileHeight);
            output.Write((short)layer.TilesWide);
            output.Write((short)layer.TilesHigh);

            int tscount = 0;

            foreach (LocatedTileStack stack in layer.TileStacks)
            {
                tscount++;
            }

            output.Write(tscount);
            foreach (LocatedTileStack stack in layer.TileStacks)
            {
                output.Write((short)stack.X);
                output.Write((short)stack.Y);
                output.Write((short)stack.Stack.Count);

                foreach (Tile tile in stack.Stack)
                {
                    output.Write((short)tile.Uid);
                }
            }
        }
        private void InitializeBrush(DynamicTileBrush brush)
        {
            _layerControl.ReferenceWidth  = brush.BrushClass.TemplateWidth * brush.TileWidth + 1;
            _layerControl.ReferenceHeight = brush.BrushClass.TemplateHeight * brush.TileHeight + 1;

            _layer = new MultiTileGridLayer("Default", brush.TileWidth, brush.TileHeight, brush.BrushClass.TemplateWidth, brush.BrushClass.TemplateHeight);
            for (int i = 0; i < brush.BrushClass.SlotCount; i++)
            {
                LocatedTile tile = brush.GetLocatedTile(i);
                if (tile.Tile != null)
                {
                    _layer.AddTile(tile.X, tile.Y, tile.Tile);
                }
            }

            _rootLayer.Layers.Clear();
            _rootLayer.Layers.Add(new TileGridLayerPresenter(_layerContext, _layer));
            _rootLayer.Layers.Add(new LocalRenderLayerPresenter(new OverlayRenderCore(this)));
            _rootLayer.Layers.Add(new GridLayerPresenter()
            {
                GridSpacingX = brush.TileWidth,
                GridSpacingY = brush.TileHeight,
            });

            _nameField.Text = brush.Name;

            _brush = brush;

            SelectCurrentPrototype();
            SelectCurrentTileSize();
        }
Beispiel #3
0
        public FloatTileSelectionCommand(MultiTileGridLayer source, ITileSelectionLayer selectLayer)
        {
            _tileSource = source;
            _command    = new TileReplace2DCommand(source);

            _selectLayer = selectLayer;
        }
Beispiel #4
0
        public void RenamePoolByProperty1()
        {
            Layer    layer        = new MultiTileGridLayer("layer", 16, 16, 16, 16);
            Property nameProperty = layer.LookupProperty("Name");

            RenameLayer(layer, nameProperty);
        }
Beispiel #5
0
        public void CreateTileLayer()
        {
            TileLayer layer = new MultiTileGridLayer("layer", 16, 24, 30, 50);

            Assert.AreEqual(16, layer.TileWidth);
            Assert.AreEqual(24, layer.TileHeight);
        }
Beispiel #6
0
        public void RenamePoolByProperty2()
        {
            Layer    layer        = new MultiTileGridLayer("layer", 16, 16, 16, 16);
            Property nameProperty = layer.PredefinedProperties["Name"];

            RenameLayer(layer, nameProperty);
        }
Beispiel #7
0
 public void AddTiles(MultiTileGridLayer layer, IEnumerable <TileCoord> tileLocations)
 {
     foreach (TileCoord coord in tileLocations)
     {
         AddTile(layer, coord);
     }
 }
        public void AddTileOutOfBounds()
        {
            TileGridLayer layer = new MultiTileGridLayer("tiles", 16, 16, 10, 10);

            try {
                layer.AddTile(-1, 2, _tile1);
                Assert.Fail();
            }
            catch { }

            try {
                layer.AddTile(2, -1, _tile1);
                Assert.Fail();
            }
            catch { }

            try {
                layer.AddTile(10, 8, _tile1);
                Assert.Fail();
            }
            catch { }

            try {
                layer.AddTile(8, 10, _tile1);
                Assert.Fail();
            }
            catch { }
        }
Beispiel #9
0
        private void InitializeBrush(StaticTileBrush brush)
        {
            int tilesW = brush.TilesWide + 12;
            int tilesH = brush.TilesHigh + 12;

            _layerControl.ReferenceWidth  = tilesW * brush.TileWidth + 1;
            _layerControl.ReferenceHeight = tilesH * brush.TileHeight + 1;

            _layer = new MultiTileGridLayer("Default", brush.TileWidth, brush.TileHeight, tilesW, tilesH);
            foreach (LocatedTile tile in brush.Tiles)
            {
                if (tile.Tile != null)
                {
                    _layer.AddTile(tile.X, tile.Y, tile.Tile);
                }
            }

            _rootLayer.Layers.Clear();
            _rootLayer.Layers.Add(new TileGridLayerPresenter(_layerContext, _layer));
            _rootLayer.Layers.Add(new GridLayerPresenter()
            {
                GridSpacingX = brush.TileWidth,
                GridSpacingY = brush.TileHeight,
            });

            _nameField.Text = brush.Name;

            _brush = brush;

            SelectCurrentTileSize();
        }
Beispiel #10
0
        private TileGridLayer ProcessTileLayer(TileGridLayer layer, TilePool layerTilePool, Dictionary <Guid, Guid> tileUidMap)
        {
            MultiTileGridLayer outLayer = new MultiTileGridLayer(layer.Name, layer.TileWidth, layer.TileHeight, layer.TilesWide, layer.TilesHigh)
            {
                IsVisible  = layer.IsVisible,
                Opacity    = layer.Opacity,
                RasterMode = layer.RasterMode,
            };

            foreach (Property prop in layer.PropertyManager.CustomProperties)
            {
                outLayer.PropertyManager.CustomProperties.Add(prop);
            }

            foreach (LocatedTile tile in layer.Tiles)
            {
                Guid tileUid;
                if (!tileUidMap.TryGetValue(tile.Tile.Uid, out tileUid))
                {
                    Tile mappedTile = layerTilePool.Tiles.Add(tile.Tile.Pool.Tiles.GetTileTexture(tile.Tile.Uid));
                    tileUidMap[tile.Tile.Uid] = mappedTile.Uid;
                    tileUid = mappedTile.Uid;

                    foreach (Property prop in tile.Tile.PropertyManager.CustomProperties)
                    {
                        mappedTile.PropertyManager.CustomProperties.Add(prop);
                    }
                }

                outLayer.AddTile(tile.X, tile.Y, layerTilePool.Tiles[tileUid]);
            }

            return(outLayer);
        }
 public TileReplace2DCommand(MultiTileGridLayer source, Dictionary <TileCoord, TileStack> tileData)
     : this(source)
 {
     foreach (KeyValuePair <TileCoord, TileStack> kv in tileData)
     {
         _tiles[kv.Key] = new TileRecord(_tileSource[kv.Key], kv.Value);
     }
 }
Beispiel #12
0
        public void CloneTileLayer()
        {
            TileLayer layer  = new MultiTileGridLayer("layer", 16, 24, 30, 50);
            TileLayer layer2 = layer.Clone() as TileLayer;

            Assert.AreEqual(16, layer2.TileWidth);
            Assert.AreEqual(24, layer2.TileHeight);
        }
Beispiel #13
0
        public void LayerOpacityLowRange()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            layer.Opacity = -0.5f;

            Assert.AreEqual(0f, layer.Opacity);
        }
Beispiel #14
0
        public void LayerOpacityHighRange()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            layer.Opacity = 1.5f;

            Assert.AreEqual(1.0f, layer.Opacity);
        }
Beispiel #15
0
 public void AddTiles(MultiTileGridLayer layer, Rectangle tileRegion)
 {
     for (int y = tileRegion.Top; y < tileRegion.Bottom; y++)
     {
         for (int x = tileRegion.Left; x < tileRegion.Right; x++)
         {
             AddTile(layer, new TileCoord(x, y));
         }
     }
 }
Beispiel #16
0
        private void ApplyNew()
        {
            _layer = new MultiTileGridLayer(
                _nameField.Text.Trim(),
                (int)_tileWidthField.Value,
                (int)_tileHeightField.Value,
                _level);

            _layer.Opacity   = (float)_opacityField.Value;
            _layer.GridColor = new Treefrog.Framework.Imaging.Color(_gridColorButton.Color.R, _gridColorButton.Color.G, _gridColorButton.Color.B, 128);
        }
Beispiel #17
0
        public TileEraseTool(CommandHistory history, MultiTileGridLayer layer, ObservableCollection <Annotation> annots)
            : base(history, layer)
        {
            _annots = annots;

            _previewMarker = new SelectionAnnot(new Point(0, 0))
            {
                Fill = new SolidColorBrush(new Color(192, 0, 0, 128)),
            };

            _annots.Add(_previewMarker);
        }
Beispiel #18
0
 private void AddTile(MultiTileGridLayer layer, TileCoord location)
 {
     if (!_tiles.ContainsKey(location))
     {
         TileStack stack = layer.TileStacksAt(location);
         if (!TileStack.NullOrEmpty(stack))
         {
             _tiles.Add(location, stack);
         }
         _tileAnnot.AddTileLocation(location);
     }
 }
        public void CreateLayer()
        {
            TileGridLayer layer = new MultiTileGridLayer("tiles", 16, 24, 10, 20);

            Assert.AreEqual(16, layer.TileWidth);
            Assert.AreEqual(24, layer.TileHeight);
            Assert.AreEqual(10, layer.TilesWide);
            Assert.AreEqual(20, layer.TilesHigh);
            Assert.AreEqual(16 * 10, layer.LayerWidth);
            Assert.AreEqual(24 * 20, layer.LayerHeight);
            Assert.IsTrue(layer.IsResizable);
        }
Beispiel #20
0
        public void AddProperty()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            AttachEvents(layer);

            Property prop = new StringProperty("author", "Justin");

            layer.CustomProperties.Add(prop);

            Assert.AreEqual(EventFlags.Modified, _eventsFired);
        }
Beispiel #21
0
        public void ChangeLayerVisibility()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            AttachEvents(layer);

            Assert.AreEqual(true, layer.IsVisible);

            layer.IsVisible = false;

            Assert.AreEqual(EventFlags.VisibilityChanged | EventFlags.Modified, _eventsFired);
            Assert.AreEqual(false, layer.IsVisible);
        }
Beispiel #22
0
        public void ChangeLayerVisibiliityProperty()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            AttachEvents(layer);

            Assert.AreEqual(true, layer.IsVisible);

            layer.PredefinedProperties["Visible"].Parse("false");

            Assert.AreEqual(EventFlags.VisibilityChanged | EventFlags.Modified, _eventsFired);
            Assert.AreEqual(false, layer.IsVisible);
        }
        public void GetTilesAtLocation()
        {
            TileGridLayer layer = new MultiTileGridLayer("tiles", 16, 16, 10, 10);

            layer.AddTile(2, 3, _tile1);
            layer.AddTile(6, 7, _tile2);

            Assert.AreEqual(1, layer.TilesAt(new TileCoord(2, 3)).Count());
            Assert.AreEqual(0, layer.TilesAt(new TileCoord(1, 3)).Count());
            Assert.AreEqual(0, layer.TilesAt(new TileCoord(3, 3)).Count());
            Assert.AreEqual(0, layer.TilesAt(new TileCoord(1, 2)).Count());
            Assert.AreEqual(0, layer.TilesAt(new TileCoord(1, 4)).Count());
        }
Beispiel #24
0
        public void ChangeLayerOpacity()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            AttachEvents(layer);

            Assert.AreEqual(1f, layer.Opacity);

            layer.Opacity = 0.5f;

            Assert.AreEqual(EventFlags.OpacityChanged | EventFlags.Modified, _eventsFired);
            Assert.AreEqual(0.5f, layer.Opacity);
        }
Beispiel #25
0
        public void ChangeLayerOpacityProperty()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            AttachEvents(layer);

            Assert.AreEqual(1f, layer.Opacity);

            layer.PredefinedProperties["Opacity"].Parse("0.5");

            Assert.AreEqual(EventFlags.OpacityChanged | EventFlags.Modified, _eventsFired);
            Assert.AreEqual(0.5f, layer.Opacity);
        }
        public void GetTilesInRegion()
        {
            TileGridLayer layer = new MultiTileGridLayer("tiles", 16, 16, 10, 10);

            layer.AddTile(2, 3, _tile1);
            layer.AddTile(6, 7, _tile2);

            Assert.AreEqual(2, layer.TilesAt(new Rectangle(2, 2, 5, 6)).Count());
            Assert.AreEqual(1, layer.TilesAt(new Rectangle(3, 2, 5, 6)).Count());
            Assert.AreEqual(1, layer.TilesAt(new Rectangle(2, 4, 5, 6)).Count());
            Assert.AreEqual(1, layer.TilesAt(new Rectangle(2, 2, 4, 6)).Count());
            Assert.AreEqual(1, layer.TilesAt(new Rectangle(2, 2, 5, 5)).Count());
            Assert.AreEqual(0, layer.TilesAt(new Rectangle(3, 2, 5, 5)).Count());
        }
Beispiel #27
0
        public TileLayerForm(MultiTileGridLayer layer)
        {
            InitializeForm();

            Text = "Edit Tile Layer";

            _layer                 = layer;
            _nameField.Text        = _layer.Name;
            _opacityField.Value    = (decimal)_layer.Opacity;
            _tileWidthField.Value  = _layer.TileWidth;
            _tileHeightField.Value = _layer.TileHeight;
            _gridColorButton.Color = Color.FromArgb(255, _layer.GridColor.R, _layer.GridColor.G, _layer.GridColor.B);

            _tileHeightField.Enabled = false;
            _tileWidthField.Enabled  = false;

            _validateController.Validate();
        }
        public void AddTile()
        {
            TileGridLayer layer = new MultiTileGridLayer("tiles", 16, 16, 10, 10);

            AttachEvents(layer);

            layer.TileAdded += (s, e) =>
            {
                Assert.AreEqual(2, e.X);
                Assert.AreEqual(4, e.Y);
                Assert.AreSame(_tile1, e.Tile);
                Assert.AreEqual(1, layer.Tiles.Count());
                Assert.AreEqual(1, layer.TilesAt(new TileCoord(2, 4)).Count());
            };

            layer.AddTile(2, 4, _tile1);

            Assert.AreEqual(EventFlags.TileAdded | EventFlags.Modified, _eventsFired);
        }
Beispiel #29
0
        public void CloneLayerTest()
        {
            Layer layer = new MultiTileGridLayer("layer", 16, 16, 16, 16);

            layer.Opacity   = 0.5f;
            layer.IsVisible = false;

            Property prop = new StringProperty("author", "Justin");

            layer.CustomProperties.Add(prop);

            Layer layer2 = layer.Clone() as Layer;

            Assert.AreEqual(layer.Opacity, layer2.Opacity);
            Assert.AreEqual(layer.IsVisible, layer2.IsVisible);
            Assert.AreEqual(1, layer2.CustomProperties.Count);
            Assert.AreNotSame(prop, layer2.CustomProperties["author"]);
            Assert.AreEqual("Justin", layer2.CustomProperties["author"].ToString());
        }
Beispiel #30
0
        private List <TilePool> TilePoolsByLevel(Level level)
        {
            List <TilePool> pools = new List <TilePool>();

            foreach (Layer layer in level.Layers)
            {
                MultiTileGridLayer tileLayer = layer as MultiTileGridLayer;
                if (tileLayer != null)
                {
                    foreach (LocatedTile t in tileLayer.Tiles)
                    {
                        if (!pools.Contains(t.Tile.Pool))
                        {
                            pools.Add(t.Tile.Pool);
                        }
                    }
                }
            }

            return(pools);
        }