public KillRulesController(IKillRulesView view, Plane planeTemplate)
 {
     Plane = planeTemplate;
     _view = view;
     _view.SetController(this);
     _view.GetGraphics();
 }
 public GameBoardController(IGameBoardView view)
 {
     _planeTemplate = new Plane();
     _view = view;
     Common.GameBoardController = this;
     _oponentType = "network";
     _planeOrientation = "up";
 }
Exemple #3
0
 private static void RotatePlaneMatrix(Plane plane)
 {
     var matrixOperation = new MatrixOperations();
     plane.PlaneMatrix = matrixOperation.Rotate(plane.PlaneMatrix, plane.NumberOfRows,
         plane.NumberOfColumns);
     var temp = plane.NumberOfRows;
     plane.NumberOfRows = plane.NumberOfColumns;
     plane.NumberOfColumns = temp;
 }
Exemple #4
0
 public void SetPlaneLeft(Plane plane)
 {
     plane.Orientation = "left";
     for (var i = 0; i < 3; i++)
     {
         RotatePlaneMatrix(plane);
     }
     UpdateKillPoints(plane);
 }
Exemple #5
0
        public void SetPlaneDown(Plane plane)
        {
            plane.Orientation = "down";

            for (var i = 0; i < 2; i++)
            {
                RotatePlaneMatrix(plane);
            }

            UpdateKillPoints(plane);
        }
Exemple #6
0
 private static void UpdateKillPoints(Plane plane)
 {
     plane.KillPoints.Clear();
     for (var i = 0; i < plane.NumberOfRows; i++)
     {
         for (var j = 0; j < plane.NumberOfColumns; j++)
         {
             if (plane.PlaneMatrix[i, j] == 2)
                 plane.KillPoints.Add(new MatrixCoordinate(i, j));
         }
     }
 }
Exemple #7
0
 public void SetPlaneRight(Plane plane)
 {
     plane.Orientation = "right";
     RotatePlaneMatrix(plane);
     UpdateKillPoints(plane);
 }
 private Plane GetPlaneRotation(MatrixCoordinate tileLocation)
 {
     var plane = new Plane
     {
         PlaneMatrix = _planeTemplate.PlaneMatrix,
         KillPoints = _planeTemplate.KillPoints.ToList()
     };
     var planeRotator = new PlaneRotator();
     switch (_planeOrientation)
     {
         case "up":
             if (tileLocation.Row <= 6 && tileLocation.Column >= 1 && tileLocation.Column <= 8)
             {
                 tileLocation.Column -= 1;
                 BuildPlane(tileLocation, plane);
             }
             break;
         case "down":
             if (tileLocation.Row >= 3 && tileLocation.Column >= 1 && tileLocation.Column <= 8)
             {
                 tileLocation.Column -= 1;
                 tileLocation.Row -= 3;
                 planeRotator.SetPlaneDown(plane);
                 BuildPlane(tileLocation, plane);
             }
             break;
         case "right":
             if (tileLocation.Column >= 3 && tileLocation.Row >= 1 && tileLocation.Row <= 8)
             {
                 tileLocation.Column -= 3;
                 tileLocation.Row -= 1;
                 planeRotator.SetPlaneRight(plane);
                 BuildPlane(tileLocation, plane);
             }
             break;
         case "left":
             if (tileLocation.Column <= 6 && tileLocation.Row >= 1 && tileLocation.Row <= 8)
             {
                 tileLocation.Row -= 1;
                 planeRotator.SetPlaneLeft(plane);
                 BuildPlane(tileLocation, plane);
             }
             break;
     }
     return plane;
 }
 private MatrixCoordinate GetKillPoint(Plane plane)
 {
     return plane.KillPoints.Find(
         killpoint =>
             killpoint.Row == _currentAttackPoint.Row - plane.PlaneStartPosition.Row &&
             killpoint.Column == _currentAttackPoint.Column - plane.PlaneStartPosition.Column);
 }
 private bool CheckPlaneDuplicates(MatrixCoordinate matrixCoordinate, Plane plane)
 {
     var row = 0;
     for (var i = matrixCoordinate.Row; i < matrixCoordinate.Row + plane.NumberOfRows; i++, row++)
     {
         var column = 0;
         for (var j = matrixCoordinate.Column;
             j < matrixCoordinate.Column + plane.NumberOfColumns;
             j++, column++)
         {
             if (_localPlayer.PlaneMatrix[i, j] == 0 ||
                 plane.PlaneMatrix[row, column] != 1 && plane.PlaneMatrix[row, column] != 2) continue;
             MessageBox.Show(@"Planes intersecting, retry!");
             return true;
         }
     }
     return false;
 }
 private void BuildPlane(MatrixCoordinate matrixCoordinate, Plane plane)
 {
     if (CheckPlaneDuplicates(matrixCoordinate, plane)) return;
     _localPlayer.PlanesAlive++;
     _localPlayer.PlanesList.Add(plane);
     var row = 0;
     for (var i = matrixCoordinate.Row; i < matrixCoordinate.Row + plane.NumberOfRows; i++, row++)
     {
         var column = 0;
         for (var j = matrixCoordinate.Column;
             j < matrixCoordinate.Column + plane.NumberOfColumns;
             j++, column++)
         {
             if (plane.PlaneMatrix[row, column] == 0) continue;
             _playerPanelEngine.UpdateTile(i, j, Color.Blue);
             _localPlayer.PlaneMatrix[i, j] = plane.PlaneMatrix[row, column];
         }
     }
 }
        private void BuildOponentPlane(MatrixCoordinate startCoordinate, string direction)
        {
            var plane = new Plane();
            var planeRotator = new PlaneRotator();
            switch (direction)
            {
                case "up":

                    break;
                case "down":
                    planeRotator.SetPlaneDown(plane);
                    break;
                case "right":
                    planeRotator.SetPlaneRight(plane);
                    break;
                case "left":
                    planeRotator.SetPlaneLeft(plane);
                    break;
            }
            plane.PlaneStartPosition = startCoordinate;
            BuildDestroyedPlane(plane, false);
        }
 private void BuildDestroyedPlane(Plane plane, bool friendlyPlane)
 {
     var row = 0;
     for (var i = plane.PlaneStartPosition.Row;
         i < plane.PlaneStartPosition.Row + plane.NumberOfRows;
         i++, row++)
     {
         var column = 0;
         for (var j = plane.PlaneStartPosition.Column;
             j < plane.PlaneStartPosition.Column + plane.NumberOfColumns;
             j++, column++)
         {
             if (plane.PlaneMatrix[row, column] != 0)
             {
                 if (friendlyPlane)
                 {
                     _playerPanelEngine.UpdateTile(i, j, Color.Red);
                 }
                 else
                 {
                     _oponentPanelEngine.UpdateTile(i, j, Color.Red);
                 }
                 _localPlayer.PlaneMatrix[i, j] = 3;
             }
         }
     }
 }
 private static bool PlaneContains(MatrixCoordinate hitpoint, Plane plane)
 {
     return hitpoint.Row >= plane.PlaneStartPosition.Row &&
            hitpoint.Row <= plane.PlaneStartPosition.Row + plane.NumberOfRows &&
            hitpoint.Column >= plane.PlaneStartPosition.Column &&
            hitpoint.Column <= plane.PlaneStartPosition.Column + plane.NumberOfColumns;
 }
        public void SetKillRules()
        {
            if (_network == null) return;
            if (_network.ConnectionType != ConnectionType.Server) return;

            var killRulesView = new KillRulesView();
            var killRulesController = new KillRulesController(killRulesView, _planeTemplate);
            if (killRulesView.ShowDialog() != DialogResult.OK) return;
            _planeTemplate = killRulesController.Plane;
        }