public override BehaviourResult Clicked(RayMeshGeometry3DHitTestResult rayMeshResult, BoardVisual board)
 {
     HexSideVisual hexSideVisual = rayMeshResult.VisualHit as HexSideVisual;
     if (hexSideVisual != null)
     {
         _Location = hexSideVisual.Location;
         board.SetNeutral();
         ((BuildShipAction)_OriginatingAction).Intersection = hexSideVisual.Location;
         return BehaviourResult.Success;
     }
     return BehaviourResult.NoSuccess;
 }
 public override BehaviourResult Clicked(RayMeshGeometry3DHitTestResult rayMeshResult, BoardVisual board)
 {
     BuildPointVisual buildPoint = rayMeshResult.VisualHit as BuildPointVisual;
     if (buildPoint != null)
     {
         //board.Game.PlayerOnTurn.Towns.Add(buildPoint.Location);
         board.SetNeutral();
         ((BuildTownAction)_OriginatingAction).Location = buildPoint.Location;
         return BehaviourResult.Success;
     }
     return BehaviourResult.NoSuccess;
 }
 public override BehaviourResult Clicked(RayMeshGeometry3DHitTestResult rayMeshResult, BoardVisual board)
 {
     Road hsv = rayMeshResult.VisualHit as Road;
     if (hsv != null)
     {
         hsv.IsRoadSelected = true;
     }
     BuildPointVisual buildPoint = rayMeshResult.VisualHit as BuildPointVisual;
     if (buildPoint != null)
     {
         //board.Game.PlayerOnTurn.Cities.Add(buildPoint.Location);
         _Location = buildPoint.Location;
         board.SetNeutral();
         ((BuildCityAction)_OriginatingAction).Location = buildPoint.Location;
         return BehaviourResult.Success;
     }
     return BehaviourResult.NoSuccess;
 }
 public override BehaviourResult Clicked(RayMeshGeometry3DHitTestResult rayMeshResult, BoardVisual board)
 {
     HexSideVisual hexSide = rayMeshResult.VisualHit as HexSideVisual;
     if (hexSide != null)
     {
         if (_ShipToMove == null)
         {
             // player has not yet selected a ship to move. Show moveable ships
             //board.SetMoveShip();
             _ShipToMove = hexSide.Location;
             board.SetMoveToShip(_ShipToMove);
             return BehaviourResult.NoSuccess;
         }
         else
         {
             MoveShipAction moveShip = _OriginatingAction as MoveShipAction;
             moveShip.OldLocation = _ShipToMove;
             moveShip.NewLocation = hexSide.Location;
             board.SetNeutral();
             return BehaviourResult.Success;
         }
     }
     return BehaviourResult.NoSuccess;
 }
 public override void RemoveStartState(BoardVisual board)
 {
     board.SetNeutral();
 }