public void Aim(Ship ship, int port, ShipUpdateInfo info)
        {
            //get player ship position
            Vector2 dif = PROP.players[0].ship.position;

            //get weapon position
            Vector2 wepPos = ship.GetWeaponPosition(port);

            //subtract to get Change vector
            dif.X -= wepPos.X;
            dif.Y -= wepPos.Y;

            dif.Normalize();    //normalize for direciton

            ship.SetWeaponRotation(port, dif);
        }
        public static Ship CreateShip(ShipType ship, Vector2 position, Vector2 newDirection)
        {
            Ship s;    //to return

            switch (ship)
            {
                //----------------------------------------------------------------
                case ShipType.player:
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipRound);
                    s.LoadContent();
                    s.name = "Interceptor";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Properties and Behaviors
                    s.speed = 0.3f;
                    //Weapons
                    s.AddWeaponPort(new Vector2(  0, 18));
                    s.AddWeaponPort(new Vector2(-35, 12));
                    s.AddWeaponPort(new Vector2( 35, 12));
                    s.AddWeaponPort(new Vector2( 10,-18));
                    s.AddWeaponPort(new Vector2(-10,-18));
                    s.AddWeaponPort(new Vector2( 10, -28));
                    s.AddWeaponPort(new Vector2(-10, -28));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    s.AddWeapon(CreateWeapon(WeaponType.UpShooter));
                    s.AddWeapon(CreateWeapon(WeaponType.UpShooter));
                    //*********** DEFER ALL BEHAVIORS ... elsewhere....
                    break;

                //----------------------------------------------------------------
                case ShipType.demoEnemy:
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipTriangle);
                    s.LoadContent();
                    s.name = "Ugly";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Properties and behaviors
                    s.moveMethod = new MMDownWithin100ofCenterX();
                    s.fireMethod = new FMSInterval(15, 400);
                    s.speed = 0.1f;
                    s.points = 22;
                    s.health = 2;
                    //Weapons
                    s.AddWeaponPort(new Vector2( 28, -28));
                    s.AddWeaponPort(new Vector2(-28, -28));
                    //s.AddWeaponPort(new Vector2( 13,   5));
                    //s.AddWeaponPort(new Vector2(-13,   5));
                    s.AddWeapon(CreateWeapon(WeaponType.BasicCanon));
                    s.AddWeapon(CreateWeapon(WeaponType.SideShooter));
                    //s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    //s.AddWeapon(CreateWeapon(WeaponType.UpShooter));
                    //s.AddWeapon(CreateWeapon(WeaponType.SideShooter));
                    //s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    break;

                //----------------------------------------------------------------
                case ShipType.demoEnemy2:    //########################
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipSmall1);
                    s.LoadContent();
                    s.name = "SmallBlack";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Ship properties
                    s.points = 3;
                    s.health = 1;
                    s.speed = 0.1f;
                    s.moveMethod = new MMSnakeFast(((double)MathHelper.ToRadians(60f) / 1000), 1000);
                    s.fireMethod = new FMSasap();
                    //Weapons
                    s.AddWeaponPort(new Vector2(0, 10));
                    s.AddWeapon(CreateWeapon(WeaponType.BasicCanon));
                    return s;

                //----------------------------------------------------------------
                case ShipType.demoEnemy3:
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipTriangle);
                    s.LoadContent();
                    s.name = "Ugly";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Properties and behaviors
                    s.moveMethod = new MMLinear();
                    s.fireMethod = new FMSInterval(50, 2000);
                    s.speed = 0.15f;
                    s.points = 22;
                    s.health = 10;
                    //Weapons
                    //s.AddWeaponPort(new Vector2(28, -28));
                    //s.AddWeaponPort(new Vector2(-28, -28));
                    s.AddWeaponPort(new Vector2(13, 5));
                    s.AddWeaponPort(new Vector2(-13, 5));
                    s.AddWeapon(CreateWeapon(WeaponType.BasicCanon));
                    s.AddWeapon(CreateWeapon(WeaponType.BasicCanon));
                    //s.AddWeapon(CreateWeapon(WeaponType.IntCanon));
                    //s.AddWeapon(CreateWeapon(WeaponType.IntCanon));
                    break;

                //----------------------------------------------------------------
                case ShipType.demoEnemy4:
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipSkull);
                    s.LoadContent();
                    s.name = "Weeeee";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Properties and behaviors
                    s.moveMethod = new MMLinear();
                    s.fireMethod = new FMSInterval(100,1000);
                    s.speed = 0.1f;
                    s.points = 22;
                    s.health = 6;
                    //Weapons
                    s.AddWeaponPort(new Vector2(13, 5));
                    s.AddWeaponPort(new Vector2(-13, 5));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    break;

                //---------------Jose ADDED ---------------------------

                case ShipType.shipEnemy1:
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipEnemy1);
                    s.LoadContent();
                    s.name = "shipEnemy1";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Properties and behaviors

                    s.moveMethod = new MMCardinalSpeedup(MMCardinalSpeedup.speedUpDir.SE, 0.4, 400);
                    s.fireMethod = new FMSInterval(80, 1000);
                    s.speed = 0.1f;
                    s.points = 22;
                    s.health = 6;
                    //Weapons
                    s.AddWeaponPort(new Vector2(13, 5));
                    s.AddWeaponPort(new Vector2(-13, 5));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    break;

                case ShipType.shipEnemy2:
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipEnemy2);
                    s.LoadContent();
                    s.name = "shipEnemy2";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Properties and behaviors

                    s.moveMethod = new MMManeuver1();
                    s.fireMethod = new FMSInterval(80, 1000);
                    s.speed = 0.1f;
                    s.points = 22;
                    s.health = 6;
                    //Weapons
                    s.AddWeaponPort(new Vector2(13, 5));
                    s.AddWeaponPort(new Vector2(-13, 5));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    break;

                case ShipType.shipEnemy3:
                    //Create Ship, load the texture, and size properties
                    s = new Ship(Textures.TextureName.ShipEnemy3);
                    s.LoadContent();
                    s.name = "shipEnemy3";
                    //Positioning
                    s.SetRotation(newDirection);
                    s.MoveTo(position);
                    //Properties and behaviors

                    s.moveMethod = new MMSnakeFastB(((double)MathHelper.ToRadians(60f) / 1000), 400);
                    s.fireMethod = new FMSInterval(80, 1000);
                    s.speed = 0.1f;
                    s.points = 22;
                    s.health = 6;
                    //Weapons
                    s.AddWeaponPort(new Vector2(13, 5));
                    s.AddWeaponPort(new Vector2(-13, 5));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    s.AddWeapon(CreateWeapon(WeaponType.TripleCanon));
                    break;

                //----------------Jose ADDED END ------------------------------------------------

                default:
                    s = CreateShip(ShipType.demoEnemy, position, newDirection);
                    break;
            }

            switch (Properties.difficulty)
            {
                case Difficulty.Easy:
                    s.points /= 2;
                    s.health /= 2;
                    break;

                case Difficulty.Medium: //standard
                    break;

                case Difficulty.Hard:
                    s.points = (int)(s.points * 1.5f);
                    s.health = (int)(s.health * 1.5f);
                    break;

                case Difficulty.Insanity:
                    s.points *= 3;
                    s.health *= 3;
                    s.speed *= 1.5;
                    break;
            }

            return s;
        }
 public void Aim(Ship ship, int port, ShipUpdateInfo info)
 {
     ship.SetWeaponRotation(port, ship.rotation);
 }