/// <summary> /// Adds stones to the board in a rectangular area. /// </summary> /// <param name="x1">The left coordinate of the rectangle.</param> /// <param name="y1">The top coordinate of the rectangle.</param> /// <param name="x2">The right coordinate of the rectangle.</param> /// <param name="y2">The bottom coordinate of the rectangle.</param> /// <param name="c">The color of the stone to add (or empty to clear).</param> public void SetupMove(int x1, int y1, int x2, int y2, Content c) { var p = _sgfProperties.SingleOrDefault(x => x.Name == ColorToSGFProp[c]); if (p == null) { p = new SGFProperty() { Name = ColorToSGFProp[c] }; _sgfProperties.Add(p); } var composed = $"{Point.ConvertToSGF(x1, y1)}:{Point.ConvertToSGF(x2, y2)}"; var v = new SGFPropValue(composed); p.Values.Add(v); for (var i = x1; i <= x2; i++) { for (var j = y1; j <= y2; j++) { Board[i, j] = c; } } _setupMoves = null; }
/// <summary> /// Adds a stone to the board as a setup move. /// </summary> /// <param name="x">The X coordinate of the setup move.</param> /// <param name="y">The Y coordinate of the setup move.</param> /// <param name="c">The color of the stone to add (or empty to clear).</param> public void SetupMove(int x, int y, Content c) { var p = _sgfProperties.SingleOrDefault(z => z.Name == ColorToSGFProp[c]); if (p == null) { p = new SGFProperty() { Name = ColorToSGFProp[c] }; _sgfProperties.Add(p); } var v = new SGFPropValue(Point.ConvertToSGF(x, y)); p.Values.Add(v); Board[x, y] = c; _setupMoves = null; }