Breakable light (#3237)

This commit is contained in:
Alex Evgrashin
2021-02-16 11:40:43 +03:00
committed by GitHub
parent 1e0da06488
commit 292a618141
4 changed files with 79 additions and 27 deletions

View File

@@ -120,12 +120,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
void ILand.Land(LandEventArgs eventArgs)
{
var soundCollection = _prototypeManager.Index<SoundCollectionPrototype>("GlassBreak");
var file = _random.Pick(soundCollection.PickFiles);
EntitySystem.Get<AudioSystem>().PlayFromEntity(file, Owner);
PlayBreakSound();
State = LightBulbState.Broken;
}
@@ -133,5 +128,13 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
{
State = LightBulbState.Broken;
}
public void PlayBreakSound()
{
var soundCollection = _prototypeManager.Index<SoundCollectionPrototype>("GlassBreak");
var file = _random.Pick(soundCollection.PickFiles);
EntitySystem.Get<AudioSystem>().PlayFromEntity(file, Owner);
}
}
}

View File

@@ -221,9 +221,25 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
case PowerChangedMessage:
UpdateLight();
break;
case DamageChangedMessage msg:
TryDestroyBulb(msg);
break;
}
}
private void TryDestroyBulb(DamageChangedMessage msg)
{
if (!msg.TookDamage)
return;
if (LightBulb == null || LightBulb.State == LightBulbState.Broken)
return;
LightBulb.State = LightBulbState.Broken;
LightBulb.PlayBreakSound();
UpdateLight();
}
void IMapInit.MapInit()
{
if (_hasLampOnSpawn)