Terraria.Mount.AimAbility C# (CSharp) Method

AimAbility() public method

public AimAbility ( Player mountedPlayer, Vector2 mousePosition ) : bool
mountedPlayer Player
mousePosition Vector2
return bool
        public bool AimAbility(Player mountedPlayer, Vector2 mousePosition)
        {
            this._aiming = true;
            switch (this._type)
            {
                case 8:
                    Vector2 v = this.ClampToDeadZone(mountedPlayer, mousePosition) - mountedPlayer.Center;
                    Mount.DrillMountData drillMountData = (Mount.DrillMountData)this._mountSpecificData;
                    float num1 = Utils.ToRotation(v);
                    if ((double)num1 < 0.0)
                        num1 += 6.283185f;
                    drillMountData.diodeRotationTarget = num1;
                    float num2 = drillMountData.diodeRotation % 6.283185f;
                    if ((double)num2 < 0.0)
                        num2 += 6.283185f;
                    if ((double)num2 < (double)num1)
                    {
                        if ((double)num1 - (double)num2 > 3.14159274101257)
                            num2 += 6.283185f;
                    }
                    else if ((double)num2 - (double)num1 > 3.14159274101257)
                        num2 -= 6.283185f;
                    drillMountData.diodeRotation = num2;
                    drillMountData.crosshairPosition = mousePosition;
                    return true;
                case 9:
                    int num3 = this._frameExtra;
                    int num4 = mountedPlayer.direction;
                    float num5 = MathHelper.ToDegrees(Utils.ToRotation(this.ClampToDeadZone(mountedPlayer, mousePosition) - mountedPlayer.Center));
                    if ((double)num5 > 90.0)
                    {
                        mountedPlayer.direction = -1;
                        num5 = 180f - num5;
                    }
                    else if ((double)num5 < -90.0)
                    {
                        mountedPlayer.direction = -1;
                        num5 = -180f - num5;
                    }
                    else
                        mountedPlayer.direction = 1;
                    this._flipDraw = mountedPlayer.direction > 0 && (double)mountedPlayer.velocity.X < 0.0 || mountedPlayer.direction < 0 && (double)mountedPlayer.velocity.X > 0.0;
                    if ((double)num5 >= 0.0)
                    {
                        if ((double)num5 < 22.5)
                            this._frameExtra = 8;
                        else if ((double)num5 < 67.5)
                            this._frameExtra = 9;
                        else if ((double)num5 < 112.5)
                            this._frameExtra = 10;
                    }
                    else if ((double)num5 > -22.5)
                        this._frameExtra = 8;
                    else if ((double)num5 > -67.5)
                        this._frameExtra = 7;
                    else if ((double)num5 > -112.5)
                        this._frameExtra = 6;
                    float abilityCharge = this.AbilityCharge;
                    if ((double)abilityCharge > 0.0)
                    {
                        Vector2 vector2_1;
                        vector2_1.X = mountedPlayer.position.X + (float)(mountedPlayer.width / 2);
                        vector2_1.Y = mountedPlayer.position.Y + (float)mountedPlayer.height;
                        int num6 = (this._frameExtra - 6) * 2;
                        for (int index = 0; index < 2; ++index)
                        {
                            Vector2 vector2_2;
                            vector2_2.Y = vector2_1.Y + Mount.scutlixEyePositions[num6 + index].Y;
                            vector2_2.X = mountedPlayer.direction != -1 ? vector2_1.X + Mount.scutlixEyePositions[num6 + index].X + (float)this._data.xOffset : vector2_1.X - Mount.scutlixEyePositions[num6 + index].X - (float)this._data.xOffset;
                            Lighting.AddLight((int)((double)vector2_2.X / 16.0), (int)((double)vector2_2.Y / 16.0), 1f * abilityCharge, 0.0f, 0.0f);
                        }
                    }
                    if (this._frameExtra == num3)
                        return mountedPlayer.direction != num4;
                    return true;
                default:
                    return false;
            }
        }