private int GetOutput() { if (!this.GetPin("Area").IsConnected()) { return(-1); } var area = AreaFactory.Create(this.GetPin("Area").GetValue()); if (!(area is RectArea)) { return(-2); } if (this.GetPin("TileID").IsConnected() && !int.TryParse(this.GetPin("TileID").GetValue(), out var _)) { return(-2); } return(this.GetTiles().Count()); }
public override void Update(GameTime gameTime) { if (!this.GetPin("Copy").IsConnected() || this.GetPin("Copy").GetValue() != "1") { return; } if (!this.GetPin("Area").IsConnected()) { this.Settings["Value"] = ""; return; } var area = AreaFactory.Create(this.GetPin("Area").GetValue()); if (!(area is RectArea)) { return; } this.Settings["Value"] = string.Join(";", this.GetTiles().Select(t => t.ToString())); }
private IEnumerable <TileInfo> GetTiles() { var tiles = new List <TileInfo>(); var area = AreaFactory.Create(this.GetPin("Area").GetValue()); if (!(area is RectArea rectArea)) { return(tiles); } var areaRect = rectArea.GetTileArea().GetRect(); for (var y = areaRect.Y; y < areaRect.Y + areaRect.Height; y++) { for (var x = areaRect.X; x < areaRect.X + areaRect.Width; x++) { tiles.Add(new TileInfo(x, y)); } } return(tiles); }