Hydrothermal vents emit sounds & being inside the smoke makes the camera shake

This commit is contained in:
Joonas Rikkonen
2017-08-24 20:25:17 +03:00
parent 4bdbf05875
commit 65094a02c1
2 changed files with 17 additions and 5 deletions
@@ -111,7 +111,8 @@
<overridecommonness commonness="1" leveltype="Wastes" /> <overridecommonness commonness="1" leveltype="Wastes" />
<overridecommonness commonness="3" leveltype="Ridge" /> <overridecommonness commonness="3" leveltype="Ridge" />
<Sprite texture="Content/BackgroundSprites/seafloor.png" sourcerect="0,443,455,1605" origin="0.5,0.9"/> <Sprite texture="Content/BackgroundSprites/seafloor.png" sourcerect="0,443,455,1605" origin="0.5,0.9"/>
<Trigger position="0,5500" radius="2000" height="10000"> <Sound file ="Content/Sounds/Water/BlackSmoker.ogg" range="7000" position="0,4000"/>
<Trigger position="0,5500" radius="2000" height="10000" camerashake="5">
<Attack damage="10.0" duration="1.0" targetforce="10.0" damagetype="Burn" onlyhumans="true"/> <Attack damage="10.0" duration="1.0" targetforce="10.0" damagetype="Burn" onlyhumans="true"/>
</Trigger> </Trigger>
@@ -125,10 +126,11 @@
velocitymax="2000"/> velocitymax="2000"/>
</blacksmoker> </blacksmoker>
<blacksmoker spawnpos="SeaFloor" alignment="Top" minsize="1" maxsize="2" randomrotation="-90,90" commonness="0"> <blacksmoker spawnpos="SeaFloor" alignment="Top" minsize="1" maxsize="2" randomrotation="-10,10" commonness="0">
<overridecommonness commonness="1" leveltype="Wastes" /> <overridecommonness commonness="1" leveltype="Wastes" />
<Sprite texture="Content/BackgroundSprites/seafloor.png" sourcerect="463,1329,525,719" origin="0.5,0.9"/> <Sprite texture="Content/BackgroundSprites/seafloor.png" sourcerect="463,1329,525,719" origin="0.5,0.9"/>
<Trigger position="0,5500" radius="2000" height="10000"> <Sound file ="Content/Sounds/Water/BlackSmoker.ogg" range="7000" position="0,4000"/>
<Trigger position="0,5500" radius="2000" height="10000" camerashake="5">
<Attack damage="10.0" duration="1.0" targetforce="10.0" damagetype="Burn" onlyhumans="true"/> <Attack damage="10.0" duration="1.0" targetforce="10.0" damagetype="Burn" onlyhumans="true"/>
</Trigger> </Trigger>
<ParticleEmitter <ParticleEmitter
@@ -141,10 +143,11 @@
velocitymax="2000"/> velocitymax="2000"/>
</blacksmoker> </blacksmoker>
<blacksmoker spawnpos="SeaFloor" alignment="Top" minsize="1" maxsize="2" randomrotation="-90,90" commonness="0"> <blacksmoker spawnpos="SeaFloor" alignment="Top" minsize="1" maxsize="2" randomrotation="-10,10" commonness="0">
<overridecommonness commonness="1" leveltype="Wastes" /> <overridecommonness commonness="1" leveltype="Wastes" />
<Sprite texture="Content/BackgroundSprites/seafloor.png" sourcerect="1030,1245,440,803" origin="0.5,0.9"/> <Sprite texture="Content/BackgroundSprites/seafloor.png" sourcerect="1030,1245,440,803" origin="0.5,0.9"/>
<Trigger position="0,5500" radius="2000" height="10000"> <Sound file ="Content/Sounds/Water/BlackSmoker.ogg" range="7000" position="0,4000"/>
<Trigger position="0,5500" radius="2000" height="10000" camerashake="5">
<Attack damage="10.0" duration="1.0" targetforce="10.0" damagetype="Burn" onlyhumans="true"/> <Attack damage="10.0" duration="1.0" targetforce="10.0" damagetype="Burn" onlyhumans="true"/>
</Trigger> </Trigger>
<ParticleEmitter <ParticleEmitter
@@ -23,6 +23,8 @@ namespace Barotrauma
private List<Entity> triggerers = new List<Entity>(); private List<Entity> triggerers = new List<Entity>();
private float cameraShake;
public Vector2 WorldPosition public Vector2 WorldPosition
{ {
get { return ConvertUnits.ToDisplayUnits(physicsBody.Position); } get { return ConvertUnits.ToDisplayUnits(physicsBody.Position); }
@@ -52,6 +54,8 @@ namespace Barotrauma
physicsBody.FarseerBody.IsKinematic = true; physicsBody.FarseerBody.IsKinematic = true;
physicsBody.SetTransform(ConvertUnits.ToSimUnits(position), rotation); physicsBody.SetTransform(ConvertUnits.ToSimUnits(position), rotation);
cameraShake = ToolBox.GetAttributeFloat(element, "camerashake", 0.0f);
foreach (XElement subElement in element.Elements()) foreach (XElement subElement in element.Elements())
{ {
@@ -128,6 +132,11 @@ namespace Barotrauma
attack.DoDamage(null, damageable, WorldPosition, deltaTime, false); attack.DoDamage(null, damageable, WorldPosition, deltaTime, false);
} }
} }
if (triggerer == Character.Controlled || triggerer == Character.Controlled?.Submarine)
{
GameMain.GameScreen.Cam.Shake = Math.Max(GameMain.GameScreen.Cam.Shake, cameraShake);
}
} }
} }
} }