    001    package net.minecraft.src;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005
    006    @SideOnly(Side.CLIENT)
    007    public class SoundUpdaterMinecart implements IUpdatePlayerListBox
    008    {
    009        private final SoundManager theSoundManager;
    010
    011        /** Minecart which sound is being updated. */
    012        private final EntityMinecart theMinecart;
    013
    014        /** The player that is getting the minecart sound updates. */
    015        private final EntityPlayerSP thePlayer;
    016        private boolean field_82473_d = false;
    017        private boolean field_82474_e = false;
    018        private boolean field_82471_f = false;
    019        private boolean field_82472_g = false;
    020        private float field_82480_h = 0.0F;
    021        private float field_82481_i = 0.0F;
    022        private float field_82478_j = 0.0F;
    023        private double field_82479_k = 0.0D;
    024
    025        public SoundUpdaterMinecart(SoundManager par1SoundManager, EntityMinecart par2EntityMinecart, EntityPlayerSP par3EntityPlayerSP)
    026        {
    027            this.theSoundManager = par1SoundManager;
    028            this.theMinecart = par2EntityMinecart;
    029            this.thePlayer = par3EntityPlayerSP;
    030        }
    031
    032        /**
    033         * Updates the JList with a new model.
    034         */
    035        public void update()
    036        {
    037            boolean var1 = false;
    038            boolean var2 = this.field_82473_d;
    039            boolean var3 = this.field_82474_e;
    040            boolean var4 = this.field_82471_f;
    041            float var5 = this.field_82481_i;
    042            float var6 = this.field_82480_h;
    043            float var7 = this.field_82478_j;
    044            double var8 = this.field_82479_k;
    045            this.field_82473_d = this.thePlayer != null && this.theMinecart.riddenByEntity == this.thePlayer;
    046            this.field_82474_e = this.theMinecart.isDead;
    047            this.field_82479_k = (double)MathHelper.sqrt_double(this.theMinecart.motionX * this.theMinecart.motionX + this.theMinecart.motionZ * this.theMinecart.motionZ);
    048            this.field_82471_f = this.field_82479_k >= 0.01D;
    049
    050            if (var2 && !this.field_82473_d)
    051            {
    052                this.theSoundManager.stopEntitySound(this.thePlayer);
    053            }
    054
    055            if (this.field_82474_e || !this.field_82472_g && this.field_82481_i == 0.0F && this.field_82478_j == 0.0F)
    056            {
    057                if (!var3)
    058                {
    059                    this.theSoundManager.stopEntitySound(this.theMinecart);
    060
    061                    if (var2 || this.field_82473_d)
    062                    {
    063                        this.theSoundManager.stopEntitySound(this.thePlayer);
    064                    }
    065                }
    066
    067                this.field_82472_g = true;
    068
    069                if (this.field_82474_e)
    070                {
    071                    return;
    072                }
    073            }
    074
    075            if (!this.theSoundManager.isEntitySoundPlaying(this.theMinecart) && this.field_82481_i > 0.0F)
    076            {
    077                this.theSoundManager.playEntitySound("minecart.base", this.theMinecart, this.field_82481_i, this.field_82480_h, false);
    078                this.field_82472_g = false;
    079                var1 = true;
    080            }
    081
    082            if (this.field_82473_d && !this.theSoundManager.isEntitySoundPlaying(this.thePlayer) && this.field_82478_j > 0.0F)
    083            {
    084                this.theSoundManager.playEntitySound("minecart.inside", this.thePlayer, this.field_82478_j, 1.0F, true);
    085                this.field_82472_g = false;
    086                var1 = true;
    087            }
    088
    089            if (this.field_82471_f)
    090            {
    091                if (this.field_82480_h < 1.0F)
    092                {
    093                    this.field_82480_h += 0.0025F;
    094                }
    095
    096                if (this.field_82480_h > 1.0F)
    097                {
    098                    this.field_82480_h = 1.0F;
    099                }
    100
    101                float var10 = MathHelper.clamp_float((float)this.field_82479_k, 0.0F, 4.0F) / 4.0F;
    102                this.field_82478_j = 0.0F + var10 * 0.75F;
    103                var10 = MathHelper.clamp_float(var10 * 2.0F, 0.0F, 1.0F);
    104                this.field_82481_i = 0.0F + var10 * 0.7F;
    105            }
    106            else if (var4)
    107            {
    108                this.field_82481_i = 0.0F;
    109                this.field_82480_h = 0.0F;
    110                this.field_82478_j = 0.0F;
    111            }
    112
    113            if (!this.field_82472_g)
    114            {
    115                if (this.field_82480_h != var6)
    116                {
    117                    this.theSoundManager.setEntitySoundPitch(this.theMinecart, this.field_82480_h);
    118                }
    119
    120                if (this.field_82481_i != var5)
    121                {
    122                    this.theSoundManager.setEntitySoundVolume(this.theMinecart, this.field_82481_i);
    123                }
    124
    125                if (this.field_82478_j != var7)
    126                {
    127                    this.theSoundManager.setEntitySoundVolume(this.thePlayer, this.field_82478_j);
    128                }
    129            }
    130
    131            if (!var1 && (this.field_82481_i > 0.0F || this.field_82478_j > 0.0F))
    132            {
    133                this.theSoundManager.updateSoundLocation(this.theMinecart);
    134
    135                if (this.field_82473_d)
    136                {
    137                    this.theSoundManager.updateSoundLocation(this.thePlayer, this.theMinecart);
    138                }
    139            }
    140            else
    141            {
    142                if (this.theSoundManager.isEntitySoundPlaying(this.theMinecart))
    143                {
    144                    this.theSoundManager.stopEntitySound(this.theMinecart);
    145                }
    146
    147                if (this.theSoundManager.isEntitySoundPlaying(this.thePlayer))
    148                {
    149                    this.theSoundManager.stopEntitySound(this.thePlayer);
    150                }
    151            }
    152        }
    153    }