mirror of
https://github.com/Phantop/LADXHD.git
synced 2024-11-01 04:14:22 +00:00
51 lines
1.6 KiB
C#
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|