public LeftHook(string binaryStringValue, int height) { this.height = height * 4; this.binaryStringValue = binaryStringValue; signal = Signals.Nth; NorthGlue = GlueFactory.LeftHook(); SouthGlue = GlueFactory.PreReadLeft(signal); }
private void SetUp() { var id = Guid.NewGuid(); for (var i = 0; i < height; i++) { var tile = Tile(i); tile.North = i == 0 ? GlueFactory.PreReadLeft(signal) : G(id); id = Guid.NewGuid(); if (i + 1 == height) { tile.Up = G(id); tile.South = GlueFactory.RightTurn(); } else { tile.South = G(id); } tiles.Add(tile); } var leftZ1 = Tile(height); leftZ1.Down = G(id); id = Guid.NewGuid(); leftZ1.East = G(id); var rightZ1 = Tile(height + 1); rightZ1.West = leftZ1.East; rightZ1.East = GlueFactory.Reader(signal); tiles.Add(leftZ1); tiles.Add(rightZ1); }
private void Setup() { tiles.AddRange(new [] { bottomRightZ0, bottomRightZ1, bottomMiddle }); bottomRightZ0.North = GlueFactory.LeftWall; bottomRightZ0.Up = Bind(bottomRightZ0, bottomRightZ1); bottomRightZ1.Down = bottomRightZ0.Up; bottomRightZ1.West = Bind(bottomRightZ1, bottomMiddle); bottomMiddle.East = bottomRightZ1.West; bottomMiddle.North = Bind(0, 1); var height = bits * 4; for (var i = 0; i <= height; i++) { var tile = Tile(i); tile.North = Bind(i, i + 1); tile.South = Bind(i - 1, i); tiles.Add(tile); } var lastAdded = tiles.Last(); lastAdded.North = Bind(lastAdded, topMiddle); topMiddle.South = lastAdded.North; tiles.Add(topMiddle); topMiddle.West = Bind(topMiddle, topLeft); topLeft.East = topMiddle.West; tiles.Add(topLeft); // 2n + 2 start north and south var leftSideHeight = height * 2 + 4; var id = Guid.NewGuid(); topLeft.Down = new Glue(id.ToString()); for (var i = 0; i < leftSideHeight; i++) { var tile = Tile("LeftSide", i); tiles.Add(tile); tile.South = new Glue(id.ToString()); id = Guid.NewGuid(); tile.North = new Glue(id.ToString()); if (i == 0) { tile.Up = tile.South; tile.South = new Glue(); } if (i + 1 == leftSideHeight) { tile.East = tile.North; tile.North = new Glue(); } } var rightSideHeight = height + 2; for (var i = 0; i < rightSideHeight; i++) { var tile = Tile("RightSide", i); tiles.Add(tile); tile.North = new Glue(id.ToString()); id = Guid.NewGuid(); tile.South = new Glue(id.ToString()); if (i == 0) { tile.West = tile.North; tile.North = new Glue(); } if (i + 1 == rightSideHeight) { tile.South = GlueFactory.PreReadLeft(Signals.First); } } }