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)
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 }
141 }