LADXHD/InGame/GameObjects/Things/ObjWaterfallSound.cs
2023-12-14 17:21:22 -05:00

51 lines
1.6 KiB
C#

using Microsoft.Xna.Framework;
using ProjectZ.InGame.GameObjects.Base;
using ProjectZ.InGame.GameObjects.Base.CObjects;
using ProjectZ.InGame.GameObjects.Base.Components;
using ProjectZ.InGame.Map;
namespace ProjectZ.InGame.GameObjects.Things
{
class ObjWaterfallSound : GameObject
{
private const int Range = 128;
private static Vector2 _maxPosition;
private static float _maxDistance;
private static double _lastTime;
private static float _soundTimer;
public ObjWaterfallSound() : base("editor shore sound") { }
public ObjWaterfallSound(Map.Map map, int posX, int posY) : base(map)
{
EntityPosition = new CPosition(posX, posY, 0);
AddComponent(UpdateComponent.Index, new UpdateComponent(Update));
}
private void Update()
{
var distance = (EntityPosition.Position - MapManager.ObjLink.EntityPosition.Position).Length();
if (distance < _maxDistance)
{
_maxDistance = distance;
_maxPosition = EntityPosition.Position;
}
// @HACK: only update the sound from one object
if (_lastTime == Game1.TotalGameTime)
return;
_lastTime = Game1.TotalGameTime;
_soundTimer -= Game1.DeltaTime;
if (_soundTimer < 0)
{
_soundTimer += Game1.RandomNumber.Next(64, 80);
Game1.GameManager.PlaySoundEffect("D378-30-1E", true, _maxPosition, Range);
_maxDistance = float.MaxValue;
}
}
}
}