public void JoinRightwardTo(ScreenCanvas canvas)
        {
            var tileTopOne = (int)Math.Round(this.Margin.Top / Screen.Tileset.TileSize);
            var tileTopTwo = (int)Math.Round(canvas.Margin.Top / Screen.Tileset.TileSize);

            var startPoint = Math.Max(tileTopOne, tileTopTwo);
            var endPoint = Math.Min(tileTopOne + Screen.Height, tileTopTwo + canvas.Screen.Height);

            var startTileOne = (startPoint - tileTopOne);
            var startTileTwo = (startPoint - tileTopTwo);
            var length = endPoint - startPoint;

            var join = new MegaMan.Common.Join();
            join.screenOne = Screen.Name;
            join.screenTwo = canvas.Screen.Name;
            join.direction = Common.JoinDirection.Both;
            join.type = Common.JoinType.Vertical;
            join.offsetOne = startTileOne;
            join.offsetTwo = startTileTwo;
            join.Size = length;

            Screen.Stage.AddJoin(join);
        }
Example #2
0
        public void JoinDownwardTo(ScreenCanvas canvas)
        {
            var tileLeftOne = (int)Math.Round(this.Margin.Left / Screen.Tileset.TileSize);
            var tileLeftTwo = (int)Math.Round(canvas.Margin.Left / Screen.Tileset.TileSize);

            var startPoint = Math.Max(tileLeftOne, tileLeftTwo);
            var endPoint   = Math.Min(tileLeftOne + Screen.Width, tileLeftTwo + canvas.Screen.Width);

            var startTileOne = (startPoint - tileLeftOne);
            var startTileTwo = (startPoint - tileLeftTwo);
            var length       = endPoint - startPoint;

            var join = new MegaMan.Common.Join();

            join.screenOne = Screen.Name;
            join.screenTwo = canvas.Screen.Name;
            join.direction = Common.JoinDirection.Both;
            join.type      = Common.JoinType.Horizontal;
            join.offsetOne = startTileOne;
            join.offsetTwo = startTileTwo;
            join.Size      = length;

            Screen.Stage.AddJoin(join);
        }