diff --git a/Ijw.DirectX b/Ijw.DirectX index 962a3a8025..fbb1468509 160000 --- a/Ijw.DirectX +++ b/Ijw.DirectX @@ -1 +1 @@ -Subproject commit 962a3a80251feaeb085486572932118bdd955faa +Subproject commit fbb1468509fc358522b04ffc97b59a38dc9c9902 diff --git a/OpenRa.Game/Effects/MoveFlash.cs b/OpenRa.Game/Effects/MoveFlash.cs index 5a7a94b55b..bcf0b3a8da 100644 --- a/OpenRa.Game/Effects/MoveFlash.cs +++ b/OpenRa.Game/Effects/MoveFlash.cs @@ -24,7 +24,7 @@ namespace OpenRa.Game.Effects public IEnumerable Render() { - yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, 0); + yield return new Renderable(anim.Image, pos - .5f * anim.Image.size, 8); } } } diff --git a/OpenRa.Game/Sound.cs b/OpenRa.Game/Sound.cs index 70dac031c0..41fc97adf7 100644 --- a/OpenRa.Game/Sound.cs +++ b/OpenRa.Game/Sound.cs @@ -9,6 +9,11 @@ namespace OpenRa.Game { static ISoundEngine soundEngine; static Cache sounds; + static ISound music; + //TODO: read these from somewhere? + static float soundVolume; + static float musicVolume; + static ISoundSource LoadSound(string filename) { @@ -27,6 +32,9 @@ namespace OpenRa.Game { soundEngine = new ISoundEngine(); sounds = new Cache(LoadSound); + music = null; + soundVolume = soundEngine.SoundVolume; + musicVolume = soundEngine.SoundVolume; } public static void Play(string name) @@ -35,7 +43,42 @@ namespace OpenRa.Game // todo: positioning soundEngine.Play2D(sound, false /* loop */, false, false); } - + + public static void PlayMusic(string name) + { + var sound = sounds[name]; + music = soundEngine.Play2D(sound, true /* loop */, false, false); + music.Volume = musicVolume; + } + + public static void Pause(bool doPause) + { + soundEngine.SetAllSoundsPaused(doPause); + } + + public static void setVolume(float vol) + { + soundVolume = vol; + soundEngine.SoundVolume = vol; + } + + public static void setMusicVolume(float vol) + { + musicVolume = vol; + if (music != null) + music.Volume = vol; + } + + public static void seekMusic(uint delta) + { + if (music != null) + { + music.PlayPosition += delta; + if (music.PlayPosition < 0 || music.PlayPosition > music.PlayLength) + music.PlayPosition = 0; + } + } + public static void PlayVoice(string phrase, Actor voicedUnit) { if (voicedUnit == null) return; diff --git a/OpenRa.Game/Traits/TraitsInterfaces.cs b/OpenRa.Game/Traits/TraitsInterfaces.cs index da62f96de9..aaa9bb8ebd 100644 --- a/OpenRa.Game/Traits/TraitsInterfaces.cs +++ b/OpenRa.Game/Traits/TraitsInterfaces.cs @@ -50,6 +50,7 @@ namespace OpenRa.Game.Traits interface IRenderModifier { IEnumerable ModifyRender(Actor self, IEnumerable r); } interface IDamageModifier { float GetDamageModifier(); } interface ISpeedModifier { float GetSpeedModifier(); } + interface IPaletteModifier { void AdjustPalette(Bitmap b); } interface IPips { IEnumerable GetPips(); } interface ITags { IEnumerable GetTags(); } interface IMovement diff --git a/units.ini b/units.ini index 99dba0767b..a4da075087 100755 --- a/units.ini +++ b/units.ini @@ -368,7 +368,7 @@ Traits=Building, RenderBuilding, AcceptsOre, StoresOre Dimensions=3,3 Footprint=_x_ xxx x== SelectionPriority=3 -OrePips=18 +OrePips=17 LongDesc=Converts Ore and Gems into money [SILO] Description=Silo