diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 27662a7158..c05208bc4f 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -533,38 +533,32 @@ namespace OpenRA if (world == null) return; - // Don't tick when the shellmap is disabled - if (world.ShouldTick) + var isNetTick = LocalTick % NetTickScale == 0; + + if (!isNetTick || orderManager.IsReadyForNextFrame) { - var isNetTick = LocalTick % NetTickScale == 0; + ++orderManager.LocalFrameNumber; - if (!isNetTick || orderManager.IsReadyForNextFrame) + Log.Write("debug", "--Tick: {0} ({1})", LocalTick, isNetTick ? "net" : "local"); + + if (BenchmarkMode) + Log.Write("cpu", "{0};{1}".F(LocalTick, PerfHistory.Items["tick_time"].LastValue)); + + if (isNetTick) + orderManager.Tick(); + + Sync.CheckSyncUnchanged(world, () => { - ++orderManager.LocalFrameNumber; + world.OrderGenerator.Tick(world); + world.Selection.Tick(world); + }); - Log.Write("debug", "--Tick: {0} ({1})", LocalTick, isNetTick ? "net" : "local"); + world.Tick(); - if (BenchmarkMode) - Log.Write("cpu", "{0};{1}".F(LocalTick, PerfHistory.Items["tick_time"].LastValue)); - - if (isNetTick) - orderManager.Tick(); - - Sync.CheckSyncUnchanged(world, () => - { - world.OrderGenerator.Tick(world); - world.Selection.Tick(world); - }); - - world.Tick(); - - PerfHistory.Tick(); - } - else if (orderManager.NetFrameNumber == 0) - orderManager.LastTickTime = RunTime; - } - else PerfHistory.Tick(); + } + else if (orderManager.NetFrameNumber == 0) + orderManager.LastTickTime = RunTime; // Wait until we have done our first world Tick before TickRendering if (orderManager.LocalFrameNumber > 0) diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index 009acc4382..d8734021b1 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -132,9 +132,6 @@ namespace OpenRA.Graphics RefreshPalette(); - if (World.Type == WorldType.Shellmap && !Game.Settings.Game.ShowShellmap) - return; - var renderables = GenerateRenderables(); var bounds = Viewport.GetScissorBounds(World.Type != WorldType.Editor); Game.Renderer.EnableScissor(bounds); diff --git a/OpenRA.Game/Settings.cs b/OpenRA.Game/Settings.cs index db8f32ecaf..b6147fd195 100644 --- a/OpenRA.Game/Settings.cs +++ b/OpenRA.Game/Settings.cs @@ -158,8 +158,6 @@ namespace OpenRA public string Platform = "Default"; - public bool ShowShellmap = true; - public bool ViewportEdgeScroll = true; public bool LockMouseWindow = false; public MouseScrollType MiddleMouseScroll = MouseScrollType.Standard; diff --git a/OpenRA.Game/Sound/Sound.cs b/OpenRA.Game/Sound/Sound.cs index dac136810c..aab58260ab 100644 --- a/OpenRA.Game/Sound/Sound.cs +++ b/OpenRA.Game/Sound/Sound.cs @@ -32,6 +32,8 @@ namespace OpenRA Stream GetPCMInputStream(); } + public enum SoundType { World, UI } + public sealed class Sound : IDisposable { readonly ISoundEngine soundEngine; @@ -92,10 +94,11 @@ namespace OpenRA soundEngine.SetListenerPosition(position); } - ISound Play(Player player, string name, bool headRelative, WPos pos, float volumeModifier = 1f, bool loop = false) + ISound Play(SoundType type, Player player, string name, bool headRelative, WPos pos, float volumeModifier = 1f, bool loop = false) { - if (string.IsNullOrEmpty(name)) + if (string.IsNullOrEmpty(name) || (DisableWorldSounds && type == SoundType.World)) return null; + if (player != null && player != player.World.LocalPlayer) return null; @@ -119,14 +122,15 @@ namespace OpenRA soundEngine.Volume = 1f; } - public ISound Play(string name) { return Play(null, name, true, WPos.Zero, 1f); } - public ISound Play(string name, WPos pos) { return Play(null, name, false, pos, 1f); } - public ISound Play(string name, float volumeModifier) { return Play(null, name, true, WPos.Zero, volumeModifier); } - public ISound Play(string name, WPos pos, float volumeModifier) { return Play(null, name, false, pos, volumeModifier); } - public ISound PlayToPlayer(Player player, string name) { return Play(player, name, true, WPos.Zero, 1f); } - public ISound PlayToPlayer(Player player, string name, WPos pos) { return Play(player, name, false, pos, 1f); } - public ISound PlayLooped(string name) { return PlayLooped(name, WPos.Zero); } - public ISound PlayLooped(string name, WPos pos) { return Play(null, name, true, pos, 1f, true); } + public bool DisableWorldSounds { get; set; } + public ISound Play(SoundType type, string name) { return Play(type, null, name, true, WPos.Zero, 1f); } + public ISound Play(SoundType type, string name, WPos pos) { return Play(type, null, name, false, pos, 1f); } + public ISound Play(SoundType type, string name, float volumeModifier) { return Play(type, null, name, true, WPos.Zero, volumeModifier); } + public ISound Play(SoundType type, string name, WPos pos, float volumeModifier) { return Play(type, null, name, false, pos, volumeModifier); } + public ISound PlayToPlayer(SoundType type, Player player, string name) { return Play(type, player, name, true, WPos.Zero, 1f); } + public ISound PlayToPlayer(SoundType type, Player player, string name, WPos pos) { return Play(type, player, name, false, pos, 1f); } + public ISound PlayLooped(SoundType type, string name) { return PlayLooped(type, name, WPos.Zero); } + public ISound PlayLooped(SoundType type, string name, WPos pos) { return Play(type, null, name, true, pos, 1f, true); } public void PlayVideo(byte[] raw, int channels, int sampleBits, int sampleRate) { @@ -300,13 +304,13 @@ namespace OpenRA } // Returns true if played successfully - public bool PlayPredefined(Ruleset ruleset, Player p, Actor voicedActor, string type, string definition, string variant, + public bool PlayPredefined(SoundType soundType, Ruleset ruleset, Player p, Actor voicedActor, string type, string definition, string variant, bool relative, WPos pos, float volumeModifier, bool attenuateVolume) { if (ruleset == null) throw new ArgumentNullException("ruleset"); - if (definition == null) + if (definition == null || (DisableWorldSounds && soundType == SoundType.World)) return false; if (ruleset.Voices == null || ruleset.Notifications == null) @@ -375,7 +379,7 @@ namespace OpenRA if (type == null || notification == null) return false; - return PlayPredefined(rules, player, null, type.ToLowerInvariant(), notification, variant, true, WPos.Zero, 1f, false); + return PlayPredefined(SoundType.UI, rules, player, null, type.ToLowerInvariant(), notification, variant, true, WPos.Zero, 1f, false); } public void Dispose() diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index f9608dfd77..f78c4d4721 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -307,7 +307,6 @@ namespace OpenRA public event Action ActorAdded = _ => { }; public event Action ActorRemoved = _ => { }; - public bool ShouldTick { get { return Type != WorldType.Shellmap || Game.Settings.Game.ShowShellmap; } } public bool Paused { get; internal set; } public bool PredictedPaused { get; internal set; } public bool PauseStateLocked { get; set; } diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj index a4e7d02fea..6d004f6c4f 100644 --- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj +++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj @@ -72,7 +72,6 @@ - diff --git a/OpenRA.Mods.Cnc/Projectiles/IonCannon.cs b/OpenRA.Mods.Cnc/Projectiles/IonCannon.cs index cd1f938058..96dac28b53 100644 --- a/OpenRA.Mods.Cnc/Projectiles/IonCannon.cs +++ b/OpenRA.Mods.Cnc/Projectiles/IonCannon.cs @@ -40,7 +40,7 @@ namespace OpenRA.Mods.Cnc.Effects anim.PlayThen(sequence, () => Finish(world)); if (weapon.Report != null && weapon.Report.Any()) - Game.Sound.Play(weapon.Report.Random(firedBy.World.SharedRandom), launchPos); + Game.Sound.Play(SoundType.World, weapon.Report.Random(firedBy.World.SharedRandom), launchPos); } public void Tick(World world) diff --git a/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs b/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs index 03cc029aaf..0c0e64e2f9 100644 --- a/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs +++ b/OpenRA.Mods.Cnc/Traits/SupportPowers/IonCannonPower.cs @@ -71,7 +71,7 @@ namespace OpenRA.Mods.Cnc.Traits self.World.AddFrameEndTask(w => { PlayLaunchSounds(); - Game.Sound.Play(info.OnFireSound, self.World.Map.CenterOfCell(order.TargetLocation)); + Game.Sound.Play(SoundType.World, info.OnFireSound, self.World.Map.CenterOfCell(order.TargetLocation)); w.Add(new IonCannon(self.Owner, info.WeaponInfo, w, self.CenterPosition, order.TargetLocation, info.Effect, info.EffectSequence, info.EffectPalette, info.WeaponDelay)); diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncMainMenuLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncMainMenuLogic.cs deleted file mode 100644 index c068bb9114..0000000000 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncMainMenuLogic.cs +++ /dev/null @@ -1,32 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2016 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. For more - * information, see COPYING. - */ -#endregion - -using OpenRA.Mods.Common.Widgets; -using OpenRA.Mods.Common.Widgets.Logic; -using OpenRA.Widgets; - -namespace OpenRA.Mods.Cnc.Widgets.Logic -{ - public class CncMainMenuLogic : MainMenuLogic - { - [ObjectCreator.UseCtor] - public CncMainMenuLogic(Widget widget, World world, ModData modData) - : base(widget, world, modData) - { - var shellmapDecorations = widget.Get("SHELLMAP_DECORATIONS"); - shellmapDecorations.IsVisible = () => menuType != MenuType.None && Game.Settings.Game.ShowShellmap; - shellmapDecorations.Get("RECBLOCK").IsVisible = () => world.WorldTick / 25 % 2 == 0; - - var shellmapDisabledDecorations = widget.Get("SHELLMAP_DISABLED_DECORATIONS"); - shellmapDisabledDecorations.IsVisible = () => !Game.Settings.Game.ShowShellmap; - } - } -} diff --git a/OpenRA.Mods.Common/Activities/Air/HeliFly.cs b/OpenRA.Mods.Common/Activities/Air/HeliFly.cs index 6f584e2fb4..c5a57c5ba4 100644 --- a/OpenRA.Mods.Common/Activities/Air/HeliFly.cs +++ b/OpenRA.Mods.Common/Activities/Air/HeliFly.cs @@ -59,7 +59,7 @@ namespace OpenRA.Mods.Common.Activities if (!playedSound && helicopter.Info.TakeoffSound != null && self.IsAtGroundLevel()) { - Game.Sound.Play(helicopter.Info.TakeoffSound); + Game.Sound.Play(SoundType.World, helicopter.Info.TakeoffSound); playedSound = true; } diff --git a/OpenRA.Mods.Common/Activities/Air/HeliLand.cs b/OpenRA.Mods.Common/Activities/Air/HeliLand.cs index 727f1dfe45..8012cfba0d 100644 --- a/OpenRA.Mods.Common/Activities/Air/HeliLand.cs +++ b/OpenRA.Mods.Common/Activities/Air/HeliLand.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Activities if (!playedSound && helicopter.Info.LandingSound != null && !self.IsAtGroundLevel()) { - Game.Sound.Play(helicopter.Info.LandingSound); + Game.Sound.Play(SoundType.World, helicopter.Info.LandingSound); playedSound = true; } diff --git a/OpenRA.Mods.Common/Activities/Rearm.cs b/OpenRA.Mods.Common/Activities/Rearm.cs index 173f3e47b5..b15bea3146 100644 --- a/OpenRA.Mods.Common/Activities/Rearm.cs +++ b/OpenRA.Mods.Common/Activities/Rearm.cs @@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Activities var sound = pool.Info.RearmSound; if (sound != null) - Game.Sound.PlayToPlayer(self.Owner, sound, self.CenterPosition); + Game.Sound.PlayToPlayer(SoundType.World, self.Owner, sound, self.CenterPosition); ammoPoolsReloadTimes[pool] = pool.Info.ReloadDelay; } diff --git a/OpenRA.Mods.Common/Activities/Transform.cs b/OpenRA.Mods.Common/Activities/Transform.cs index 3fde4c1799..46ca3cad08 100644 --- a/OpenRA.Mods.Common/Activities/Transform.cs +++ b/OpenRA.Mods.Common/Activities/Transform.cs @@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Activities self.Dispose(); foreach (var s in Sounds) - Game.Sound.PlayToPlayer(self.Owner, s, self.CenterPosition); + Game.Sound.PlayToPlayer(SoundType.World, self.Owner, s, self.CenterPosition); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Notification, self.Owner.Faction.InternalName); diff --git a/OpenRA.Mods.Common/Projectiles/NukeLaunch.cs b/OpenRA.Mods.Common/Projectiles/NukeLaunch.cs index f8f0ce1be3..c9ada19373 100644 --- a/OpenRA.Mods.Common/Projectiles/NukeLaunch.cs +++ b/OpenRA.Mods.Common/Projectiles/NukeLaunch.cs @@ -60,7 +60,7 @@ namespace OpenRA.Mods.Common.Effects pos = launchPos; if (weapon.Report != null && weapon.Report.Any()) - Game.Sound.Play(weapon.Report.Random(firedBy.World.SharedRandom), pos); + Game.Sound.Play(SoundType.World, weapon.Report.Random(firedBy.World.SharedRandom), pos); if (skipAscent) ticks = turn; diff --git a/OpenRA.Mods.Common/Scripting/Global/MediaGlobal.cs b/OpenRA.Mods.Common/Scripting/Global/MediaGlobal.cs index e7dd34b189..dfc7e6765e 100644 --- a/OpenRA.Mods.Common/Scripting/Global/MediaGlobal.cs +++ b/OpenRA.Mods.Common/Scripting/Global/MediaGlobal.cs @@ -52,7 +52,8 @@ namespace OpenRA.Mods.Common.Scripting [Desc("Play a sound file")] public void PlaySound(string file) { - Game.Sound.Play(file); + // TODO: Investigate how scripts use this function, and think about exposing the UI vs World distinction if needed + Game.Sound.Play(SoundType.World, file); } [Desc("Play track defined in music.yaml or map.yaml, or keep track empty for playing a random song.")] diff --git a/OpenRA.Mods.Common/Traits/Armament.cs b/OpenRA.Mods.Common/Traits/Armament.cs index 06f493fc13..a3af586e38 100644 --- a/OpenRA.Mods.Common/Traits/Armament.cs +++ b/OpenRA.Mods.Common/Traits/Armament.cs @@ -245,7 +245,7 @@ namespace OpenRA.Mods.Common.Traits self.World.Add(projectile); if (args.Weapon.Report != null && args.Weapon.Report.Any()) - Game.Sound.Play(args.Weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); + Game.Sound.Play(SoundType.World, args.Weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); foreach (var na in self.TraitsImplementing()) na.Attacking(self, target, this, barrel); diff --git a/OpenRA.Mods.Common/Traits/Attack/AttackCharge.cs b/OpenRA.Mods.Common/Traits/Attack/AttackCharge.cs index 6c7582ac19..1938155b3d 100644 --- a/OpenRA.Mods.Common/Traits/Attack/AttackCharge.cs +++ b/OpenRA.Mods.Common/Traits/Attack/AttackCharge.cs @@ -100,7 +100,7 @@ namespace OpenRA.Mods.Common.Traits notify.Charging(self, target); if (!string.IsNullOrEmpty(attack.info.ChargeAudio)) - Game.Sound.Play(attack.info.ChargeAudio, self.CenterPosition); + Game.Sound.Play(SoundType.World, attack.info.ChargeAudio, self.CenterPosition); return ActivityUtils.SequenceActivities(new Wait(attack.info.InitialChargeDelay), new ChargeFire(attack, target), this); } diff --git a/OpenRA.Mods.Common/Traits/Buildings/Building.cs b/OpenRA.Mods.Common/Traits/Buildings/Building.cs index 34c49e7bd9..be480f8d25 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/Building.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/Building.cs @@ -236,7 +236,7 @@ namespace OpenRA.Mods.Common.Traits RemoveSmudges(); foreach (var s in Info.UndeploySounds) - Game.Sound.PlayToPlayer(self.Owner, s, self.CenterPosition); + Game.Sound.PlayToPlayer(SoundType.World, self.Owner, s, self.CenterPosition); } void INotifyTransform.OnTransform(Actor self) { } diff --git a/OpenRA.Mods.Common/Traits/Buildings/Gate.cs b/OpenRA.Mods.Common/Traits/Buildings/Gate.cs index 898bd85a85..4ba1ca58cc 100644 --- a/OpenRA.Mods.Common/Traits/Buildings/Gate.cs +++ b/OpenRA.Mods.Common/Traits/Buildings/Gate.cs @@ -62,7 +62,7 @@ namespace OpenRA.Mods.Common.Traits // Gate was fully open if (Position == OpenPosition) { - Game.Sound.Play(info.ClosingSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, info.ClosingSound, self.CenterPosition); self.World.ActorMap.AddInfluence(self, this); } @@ -72,7 +72,7 @@ namespace OpenRA.Mods.Common.Traits { // Gate was fully closed if (Position == 0) - Game.Sound.Play(info.OpeningSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, info.OpeningSound, self.CenterPosition); Position++; diff --git a/OpenRA.Mods.Common/Traits/Cloak.cs b/OpenRA.Mods.Common/Traits/Cloak.cs index 3e5706a8b8..2ddfab5bcf 100644 --- a/OpenRA.Mods.Common/Traits/Cloak.cs +++ b/OpenRA.Mods.Common/Traits/Cloak.cs @@ -148,7 +148,7 @@ namespace OpenRA.Mods.Common.Traits cloakedToken = upgradeManager.GrantCondition(self, Info.CloakedCondition); if (!self.TraitsImplementing().Any(a => a != this && a.Cloaked)) - Game.Sound.Play(Info.CloakSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, Info.CloakSound, self.CenterPosition); } else if (!isCloaked && wasCloaked) { @@ -156,7 +156,7 @@ namespace OpenRA.Mods.Common.Traits cloakedToken = upgradeManager.RevokeCondition(self, cloakedToken); if (!self.TraitsImplementing().Any(a => a != this && a.Cloaked)) - Game.Sound.Play(Info.UncloakSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, Info.UncloakSound, self.CenterPosition); } wasCloaked = isCloaked; diff --git a/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs b/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs index 2d55f69fe3..3b302c0a78 100644 --- a/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs +++ b/OpenRA.Mods.Common/Traits/Crates/CrateAction.cs @@ -73,7 +73,7 @@ namespace OpenRA.Mods.Common.Traits public virtual void Activate(Actor collector) { - Game.Sound.PlayToPlayer(collector.Owner, info.Notification); + Game.Sound.PlayToPlayer(SoundType.World, collector.Owner, info.Notification); if (info.Effect != null) collector.World.AddFrameEndTask(w => w.Add(new CrateEffect(collector, info.Effect, info.Palette))); diff --git a/OpenRA.Mods.Common/Traits/Crushable.cs b/OpenRA.Mods.Common/Traits/Crushable.cs index 23c44f10ac..def92d8b5d 100644 --- a/OpenRA.Mods.Common/Traits/Crushable.cs +++ b/OpenRA.Mods.Common/Traits/Crushable.cs @@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Traits if (!CrushableInner(crushClasses, crusher.Owner)) return; - Game.Sound.Play(info.CrushSound, crusher.CenterPosition); + Game.Sound.Play(SoundType.World, info.CrushSound, crusher.CenterPosition); self.Kill(crusher); } diff --git a/OpenRA.Mods.Common/Traits/EjectOnDeath.cs b/OpenRA.Mods.Common/Traits/EjectOnDeath.cs index 1f9d99434a..b04bbaa52b 100644 --- a/OpenRA.Mods.Common/Traits/EjectOnDeath.cs +++ b/OpenRA.Mods.Common/Traits/EjectOnDeath.cs @@ -82,7 +82,7 @@ namespace OpenRA.Mods.Common.Traits w.Add(pilot); pilot.QueueActivity(new Parachute(pilot, cp)); }); - Game.Sound.Play(info.ChuteSound, cp); + Game.Sound.Play(SoundType.World, info.ChuteSound, cp); } else { diff --git a/OpenRA.Mods.Common/Traits/Explodes.cs b/OpenRA.Mods.Common/Traits/Explodes.cs index 3fd58b3dd3..8173e72b45 100644 --- a/OpenRA.Mods.Common/Traits/Explodes.cs +++ b/OpenRA.Mods.Common/Traits/Explodes.cs @@ -88,7 +88,7 @@ namespace OpenRA.Mods.Common.Traits return; if (weapon.Report != null && weapon.Report.Any()) - Game.Sound.Play(weapon.Report.Random(e.Attacker.World.SharedRandom), self.CenterPosition); + Game.Sound.Play(SoundType.World, weapon.Report.Random(e.Attacker.World.SharedRandom), self.CenterPosition); if (info.Type == ExplosionType.Footprint && buildingInfo != null) { diff --git a/OpenRA.Mods.Common/Traits/ParaDrop.cs b/OpenRA.Mods.Common/Traits/ParaDrop.cs index 68e1c99a75..30f2ae4ce3 100644 --- a/OpenRA.Mods.Common/Traits/ParaDrop.cs +++ b/OpenRA.Mods.Common/Traits/ParaDrop.cs @@ -88,7 +88,7 @@ namespace OpenRA.Mods.Common.Traits w.Add(a); a.QueueActivity(new Parachute(a, self.CenterPosition)); }); - Game.Sound.Play(info.ChuteSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, info.ChuteSound, self.CenterPosition); } static bool IsSuitableCell(Actor actorToDrop, CPos p) diff --git a/OpenRA.Mods.Common/Traits/Parachutable.cs b/OpenRA.Mods.Common/Traits/Parachutable.cs index 7301c197ef..4d705f8b90 100644 --- a/OpenRA.Mods.Common/Traits/Parachutable.cs +++ b/OpenRA.Mods.Common/Traits/Parachutable.cs @@ -88,7 +88,7 @@ namespace OpenRA.Mods.Common.Traits var onWater = info.WaterTerrainTypes.Contains(self.World.Map.GetTerrainInfo(cell).Type); var sound = onWater ? info.WaterImpactSound : info.GroundImpactSound; - Game.Sound.Play(sound, self.CenterPosition); + Game.Sound.Play(SoundType.World, sound, self.CenterPosition); var sequence = onWater ? info.WaterCorpseSequence : info.GroundCorpseSequence; var palette = onWater ? info.WaterCorpsePalette : info.GroundCorpsePalette; diff --git a/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs b/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs index 0ca7bf6fe8..ea80e3001b 100644 --- a/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs +++ b/OpenRA.Mods.Common/Traits/Player/PlaceBuilding.cs @@ -86,7 +86,7 @@ namespace OpenRA.Mods.Common.Traits if (playSounds) foreach (var s in buildingInfo.BuildSounds) - Game.Sound.PlayToPlayer(order.Player, s, building.CenterPosition); + Game.Sound.PlayToPlayer(SoundType.World, order.Player, s, building.CenterPosition); playSounds = false; } @@ -110,7 +110,7 @@ namespace OpenRA.Mods.Common.Traits pluggable.EnablePlug(host, plugInfo.Type); foreach (var s in buildingInfo.BuildSounds) - Game.Sound.PlayToPlayer(order.Player, s, host.CenterPosition); + Game.Sound.PlayToPlayer(SoundType.World, order.Player, s, host.CenterPosition); } else { @@ -126,7 +126,7 @@ namespace OpenRA.Mods.Common.Traits }); foreach (var s in buildingInfo.BuildSounds) - Game.Sound.PlayToPlayer(order.Player, s, building.CenterPosition); + Game.Sound.PlayToPlayer(SoundType.World, order.Player, s, building.CenterPosition); } if (producer.Actor != null) diff --git a/OpenRA.Mods.Common/Traits/ProductionParadrop.cs b/OpenRA.Mods.Common/Traits/ProductionParadrop.cs index 73a93a38c1..060ba6cfa0 100644 --- a/OpenRA.Mods.Common/Traits/ProductionParadrop.cs +++ b/OpenRA.Mods.Common/Traits/ProductionParadrop.cs @@ -86,7 +86,7 @@ namespace OpenRA.Mods.Common.Traits cargo.Delivered(self); self.World.AddFrameEndTask(ww => DoProduction(self, producee, exit, factionVariant)); - Game.Sound.Play(info.ChuteSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, info.ChuteSound, self.CenterPosition); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.ReadyAudio, self.Owner.Faction.InternalName); })); diff --git a/OpenRA.Mods.Common/Traits/Sellable.cs b/OpenRA.Mods.Common/Traits/Sellable.cs index f31ac98497..a50cc69c66 100644 --- a/OpenRA.Mods.Common/Traits/Sellable.cs +++ b/OpenRA.Mods.Common/Traits/Sellable.cs @@ -58,7 +58,7 @@ namespace OpenRA.Mods.Common.Traits self.CancelActivity(); foreach (var s in info.SellSounds) - Game.Sound.PlayToPlayer(self.Owner, s, self.CenterPosition); + Game.Sound.PlayToPlayer(SoundType.UI, self.Owner, s, self.CenterPosition); foreach (var ns in self.TraitsImplementing()) ns.Selling(self); diff --git a/OpenRA.Mods.Common/Traits/Sound/AmbientSound.cs b/OpenRA.Mods.Common/Traits/Sound/AmbientSound.cs index ecc872432d..1aba3c51db 100644 --- a/OpenRA.Mods.Common/Traits/Sound/AmbientSound.cs +++ b/OpenRA.Mods.Common/Traits/Sound/AmbientSound.cs @@ -50,9 +50,9 @@ namespace OpenRA.Mods.Common.Traits.Sound if (wasDisabled && Info.Interval <= 0) { if (self.OccupiesSpace != null) - currentSound = Game.Sound.PlayLooped(Info.SoundFile, self.CenterPosition); + currentSound = Game.Sound.PlayLooped(SoundType.World, Info.SoundFile, self.CenterPosition); else - currentSound = Game.Sound.PlayLooped(Info.SoundFile); + currentSound = Game.Sound.PlayLooped(SoundType.World, Info.SoundFile); } wasDisabled = false; @@ -66,9 +66,9 @@ namespace OpenRA.Mods.Common.Traits.Sound interval = Info.Interval; if (self.OccupiesSpace != null) - Game.Sound.Play(Info.SoundFile, self.CenterPosition); + Game.Sound.Play(SoundType.World, Info.SoundFile, self.CenterPosition); else - Game.Sound.Play(Info.SoundFile); + Game.Sound.Play(SoundType.World, Info.SoundFile); } } } diff --git a/OpenRA.Mods.Common/Traits/Sound/AttackSounds.cs b/OpenRA.Mods.Common/Traits/Sound/AttackSounds.cs index 9e4e81339c..bf6fede1de 100644 --- a/OpenRA.Mods.Common/Traits/Sound/AttackSounds.cs +++ b/OpenRA.Mods.Common/Traits/Sound/AttackSounds.cs @@ -43,7 +43,7 @@ namespace OpenRA.Mods.Common.Traits.Sound void PlaySound(Actor self) { if (info.Sounds.Any()) - Game.Sound.Play(info.Sounds.Random(self.World.SharedRandom), self.CenterPosition); + Game.Sound.Play(SoundType.World, info.Sounds.Random(self.World.SharedRandom), self.CenterPosition); } void INotifyAttack.Attacking(Actor self, Target target, Armament a, Barrel barrel) diff --git a/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs b/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs index 6c2e1050a2..3aad4a72f1 100644 --- a/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs +++ b/OpenRA.Mods.Common/Traits/Sound/SoundOnDamageTransition.cs @@ -40,12 +40,12 @@ namespace OpenRA.Mods.Common.Traits.Sound if (e.DamageState == DamageState.Dead) { var sound = info.DestroyedSounds.RandomOrDefault(rand); - Game.Sound.Play(sound, self.CenterPosition); + Game.Sound.Play(SoundType.World, sound, self.CenterPosition); } else if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) { var sound = info.DamagedSounds.RandomOrDefault(rand); - Game.Sound.Play(sound, self.CenterPosition); + Game.Sound.Play(SoundType.World, sound, self.CenterPosition); } } } diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/GrantExternalConditionPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/GrantExternalConditionPower.cs index 74575a64dd..b0098a2deb 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/GrantExternalConditionPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/GrantExternalConditionPower.cs @@ -53,7 +53,7 @@ namespace OpenRA.Mods.Common.Traits public override void SelectTarget(Actor self, string order, SupportPowerManager manager) { - Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound); + Game.Sound.PlayToPlayer(SoundType.World, manager.Self.Owner, Info.SelectTargetSound); self.World.OrderGenerator = new SelectUpgradeTarget(Self.World, order, manager, this); } @@ -65,7 +65,7 @@ namespace OpenRA.Mods.Common.Traits if (wsb != null && wsb.DefaultAnimation.HasSequence(info.Sequence)) wsb.PlayCustomAnimation(self, info.Sequence, () => wsb.CancelCustomAnimation(self)); - Game.Sound.Play(info.OnFireSound, self.World.Map.CenterOfCell(order.TargetLocation)); + Game.Sound.Play(SoundType.World, info.OnFireSound, self.World.Map.CenterOfCell(order.TargetLocation)); foreach (var a in UnitsInRange(order.TargetLocation)) { diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/SpawnActorPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SpawnActorPower.cs index 323c950f5e..9cfb0db453 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/SpawnActorPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/SpawnActorPower.cs @@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Traits { var location = self.World.Map.CenterOfCell(order.TargetLocation); - Game.Sound.Play(info.DeploySound, location); + Game.Sound.Play(SoundType.World, info.DeploySound, location); if (!string.IsNullOrEmpty(info.EffectSequence) && !string.IsNullOrEmpty(info.EffectPalette)) w.Add(new SpriteEffect(location, w, info.EffectImage, info.EffectSequence, info.EffectPalette)); diff --git a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs index 48ec944a29..130a07aa9a 100644 --- a/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs +++ b/OpenRA.Mods.Common/Traits/SupportPowers/SupportPower.cs @@ -89,21 +89,21 @@ namespace OpenRA.Mods.Common.Traits public virtual void Charging(Actor self, string key) { - Game.Sound.PlayToPlayer(self.Owner, Info.BeginChargeSound); + Game.Sound.PlayToPlayer(SoundType.UI, self.Owner, Info.BeginChargeSound); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.BeginChargeSpeechNotification, self.Owner.Faction.InternalName); } public virtual void Charged(Actor self, string key) { - Game.Sound.PlayToPlayer(self.Owner, Info.EndChargeSound); + Game.Sound.PlayToPlayer(SoundType.UI, self.Owner, Info.EndChargeSound); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.EndChargeSpeechNotification, self.Owner.Faction.InternalName); } public virtual void SelectTarget(Actor self, string order, SupportPowerManager manager) { - Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound); + Game.Sound.PlayToPlayer(SoundType.UI, manager.Self.Owner, Info.SelectTargetSound); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.SelectTargetSpeechNotification, self.Owner.Faction.InternalName); self.World.OrderGenerator = new SelectGenericPowerTarget(order, manager, info.Cursor, MouseButton.Left); @@ -125,7 +125,7 @@ namespace OpenRA.Mods.Common.Traits { var renderPlayer = Self.World.RenderPlayer; var isAllied = Self.Owner.IsAlliedWith(renderPlayer); - Game.Sound.Play(isAllied ? Info.LaunchSound : Info.IncomingSound); + Game.Sound.Play(SoundType.UI, isAllied ? Info.LaunchSound : Info.IncomingSound); // IsAlliedWith returns true if renderPlayer is null, so we are safe here. var toPlayer = isAllied ? renderPlayer ?? Self.Owner : renderPlayer; diff --git a/OpenRA.Mods.Common/Traits/ThrowsShrapnel.cs b/OpenRA.Mods.Common/Traits/ThrowsShrapnel.cs index 628ffdff76..8e5a5277a1 100644 --- a/OpenRA.Mods.Common/Traits/ThrowsShrapnel.cs +++ b/OpenRA.Mods.Common/Traits/ThrowsShrapnel.cs @@ -85,7 +85,7 @@ namespace OpenRA.Mods.Common.Traits self.World.Add(projectile); if (args.Weapon.Report != null && args.Weapon.Report.Any()) - Game.Sound.Play(args.Weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); + Game.Sound.Play(SoundType.World, args.Weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); } }); } diff --git a/OpenRA.Mods.Common/Traits/Transforms.cs b/OpenRA.Mods.Common/Traits/Transforms.cs index 68f9ea2708..c85938a798 100644 --- a/OpenRA.Mods.Common/Traits/Transforms.cs +++ b/OpenRA.Mods.Common/Traits/Transforms.cs @@ -103,7 +103,7 @@ namespace OpenRA.Mods.Common.Traits // Only play the "Cannot deploy here" audio // for non-queued orders foreach (var s in info.NoTransformSounds) - Game.Sound.PlayToPlayer(self.Owner, s); + Game.Sound.PlayToPlayer(SoundType.World, self.Owner, s); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.NoTransformNotification, self.Owner.Faction.InternalName); diff --git a/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDamageState.cs b/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDamageState.cs index 630d5d372d..85520d5e3e 100644 --- a/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDamageState.cs +++ b/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDamageState.cs @@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Traits conditionToken = manager.GrantCondition(self, info.Condition); var sound = info.EnabledSounds.RandomOrDefault(Game.CosmeticRandom); - Game.Sound.Play(sound, self.CenterPosition); + Game.Sound.Play(SoundType.World, sound, self.CenterPosition); } void INotifyDamageStateChanged.DamageStateChanged(Actor self, AttackInfo e) @@ -80,7 +80,7 @@ namespace OpenRA.Mods.Common.Traits conditionToken = manager.RevokeCondition(self, conditionToken); var sound = info.DisabledSounds.RandomOrDefault(Game.CosmeticRandom); - Game.Sound.Play(sound, self.CenterPosition); + Game.Sound.Play(SoundType.World, sound, self.CenterPosition); } } } diff --git a/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDeploy.cs b/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDeploy.cs index 3272deeb24..e0c6eb11f6 100644 --- a/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDeploy.cs +++ b/OpenRA.Mods.Common/Traits/Upgrades/GrantConditionOnDeploy.cs @@ -204,7 +204,7 @@ namespace OpenRA.Mods.Common.Traits return; if (!string.IsNullOrEmpty(info.DeploySound)) - Game.Sound.Play(info.DeploySound, self.CenterPosition); + Game.Sound.Play(SoundType.World, info.DeploySound, self.CenterPosition); // Revoke upgrades that are used while undeployed. if (!init) @@ -227,7 +227,7 @@ namespace OpenRA.Mods.Common.Traits return; if (!string.IsNullOrEmpty(info.UndeploySound)) - Game.Sound.Play(info.UndeploySound, self.CenterPosition); + Game.Sound.Play(SoundType.World, info.UndeploySound, self.CenterPosition); if (!init) OnUndeployStarted(); diff --git a/OpenRA.Mods.Common/Traits/Upgrades/ProximityExternalCondition.cs b/OpenRA.Mods.Common/Traits/Upgrades/ProximityExternalCondition.cs index 3bfea5b832..4cfba835c3 100644 --- a/OpenRA.Mods.Common/Traits/Upgrades/ProximityExternalCondition.cs +++ b/OpenRA.Mods.Common/Traits/Upgrades/ProximityExternalCondition.cs @@ -81,7 +81,7 @@ namespace OpenRA.Mods.Common.Traits if (cachedDisabled != disabled) { - Game.Sound.Play(disabled ? info.DisableSound : info.EnableSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, disabled ? info.DisableSound : info.EnableSound, self.CenterPosition); desiredRange = disabled ? WDist.Zero : info.Range; desiredVRange = disabled ? WDist.Zero : info.MaximumVerticalOffset; cachedDisabled = disabled; diff --git a/OpenRA.Mods.Common/Traits/Voiced.cs b/OpenRA.Mods.Common/Traits/Voiced.cs index 88e27d2ff5..55a04554c2 100644 --- a/OpenRA.Mods.Common/Traits/Voiced.cs +++ b/OpenRA.Mods.Common/Traits/Voiced.cs @@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits var type = Info.VoiceSet.ToLowerInvariant(); var volume = Info.Volume; - return Game.Sound.PlayPredefined(self.World.Map.Rules, null, self, type, phrase, variant, true, WPos.Zero, volume, true); + return Game.Sound.PlayPredefined(SoundType.World, self.World.Map.Rules, null, self, type, phrase, variant, true, WPos.Zero, volume, true); } public bool PlayVoiceLocal(Actor self, string phrase, string variant, float volume) @@ -59,7 +59,7 @@ namespace OpenRA.Mods.Common.Traits return false; var type = Info.VoiceSet.ToLowerInvariant(); - return Game.Sound.PlayPredefined(self.World.Map.Rules, null, self, type, phrase, variant, false, self.CenterPosition, volume, true); + return Game.Sound.PlayPredefined(SoundType.World, self.World.Map.Rules, null, self, type, phrase, variant, false, self.CenterPosition, volume, true); } public bool HasVoice(Actor self, string voice) diff --git a/OpenRA.Mods.Common/Traits/World/MusicPlaylist.cs b/OpenRA.Mods.Common/Traits/World/MusicPlaylist.cs index 3510b733b8..3cda83ef79 100644 --- a/OpenRA.Mods.Common/Traits/World/MusicPlaylist.cs +++ b/OpenRA.Mods.Common/Traits/World/MusicPlaylist.cs @@ -32,6 +32,9 @@ namespace OpenRA.Mods.Common.Traits "It cannot be paused, but can be overridden by selecting a new track.")] public readonly string BackgroundMusic = null; + [Desc("Disable all world sounds (combat etc).")] + public readonly bool DisableWorldSounds = false; + public object Create(ActorInitializer init) { return new MusicPlaylist(init.World, this); } } @@ -55,6 +58,9 @@ namespace OpenRA.Mods.Common.Traits this.info = info; this.world = world; + if (info.DisableWorldSounds) + Game.Sound.DisableWorldSounds = true; + IsMusicInstalled = world.Map.Rules.InstalledMusic.Any(); if (!IsMusicInstalled) return; @@ -220,6 +226,8 @@ namespace OpenRA.Mods.Common.Traits { if (currentSong != null) Game.Sound.StopMusic(); + + Game.Sound.DisableWorldSounds = false; } } } diff --git a/OpenRA.Mods.Common/Warheads/CreateEffectWarhead.cs b/OpenRA.Mods.Common/Warheads/CreateEffectWarhead.cs index 62a0b76e5f..1c0650744d 100644 --- a/OpenRA.Mods.Common/Warheads/CreateEffectWarhead.cs +++ b/OpenRA.Mods.Common/Warheads/CreateEffectWarhead.cs @@ -115,7 +115,7 @@ namespace OpenRA.Mods.Common.Warheads var impactSound = ImpactSounds.RandomOrDefault(Game.CosmeticRandom); if (impactSound != null) - Game.Sound.Play(impactSound, pos); + Game.Sound.Play(SoundType.World, impactSound, pos); } public bool IsValidImpact(WPos pos, Actor firedBy) diff --git a/OpenRA.Mods.Common/Widgets/ChatDisplayWidget.cs b/OpenRA.Mods.Common/Widgets/ChatDisplayWidget.cs index 24b7064ea5..cb5e25fe90 100644 --- a/OpenRA.Mods.Common/Widgets/ChatDisplayWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ChatDisplayWidget.cs @@ -87,7 +87,7 @@ namespace OpenRA.Mods.Common.Widgets recentLines.Add(new ChatLine(from, text, Game.LocalTick + RemoveTime, c)); if (Notification != null) - Game.Sound.Play(Notification); + Game.Sound.Play(SoundType.UI, Notification); while (recentLines.Count > LogLength) recentLines.RemoveAt(0); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs index de41ecf354..f4951ab4e4 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs @@ -105,12 +105,19 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (button.Pause && world.LobbyInfo.IsSinglePlayer) world.SetPauseState(true); + var cachedDisableWorldSounds = Game.Sound.DisableWorldSounds; + if (button.DisableWorldSounds) + Game.Sound.DisableWorldSounds = true; + widgetArgs = widgetArgs ?? new WidgetArgs(); widgetArgs.Add("onExit", () => { if (button.HideIngameUI) worldRoot.IsVisible = () => true; + if (button.DisableWorldSounds) + Game.Sound.DisableWorldSounds = cachedDisableWorldSounds; + if (button.Pause && world.LobbyInfo.IsSinglePlayer) world.SetPauseState(cachedPause); diff --git a/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs index c39265cabf..3654697830 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/SettingsLogic.cs @@ -154,7 +154,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic BindCheckboxPref(panel, "PIXELDOUBLE_CHECKBOX", ds, "PixelDouble"); BindCheckboxPref(panel, "CURSORDOUBLE_CHECKBOX", ds, "CursorDouble"); BindCheckboxPref(panel, "FRAME_LIMIT_CHECKBOX", ds, "CapFramerate"); - BindCheckboxPref(panel, "SHOW_SHELLMAP", gs, "ShowShellmap"); BindCheckboxPref(panel, "DISPLAY_TARGET_LINES_CHECKBOX", gs, "DrawTargetLine"); BindCheckboxPref(panel, "PLAYER_STANCE_COLORS_CHECKBOX", gs, "UsePlayerStanceColors"); @@ -278,15 +277,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic Action ResetDisplayPanel(Widget panel) { var ds = Game.Settings.Graphics; - var gs = Game.Settings.Game; var ps = Game.Settings.Player; var dds = new GraphicSettings(); - var dgs = new GameSettings(); var dps = new PlayerSettings(); return () => { - gs.ShowShellmap = dgs.ShowShellmap; - ds.CapFramerate = dds.CapFramerate; ds.MaxFramerate = dds.MaxFramerate; ds.Language = dds.Language; diff --git a/OpenRA.Mods.Common/Widgets/MenuButtonWidget.cs b/OpenRA.Mods.Common/Widgets/MenuButtonWidget.cs index 140fcc4fca..ce4e151e4b 100644 --- a/OpenRA.Mods.Common/Widgets/MenuButtonWidget.cs +++ b/OpenRA.Mods.Common/Widgets/MenuButtonWidget.cs @@ -16,6 +16,7 @@ namespace OpenRA.Mods.Common.Widgets public readonly string MenuContainer = "INGAME_MENU"; public readonly bool Pause = true; public readonly bool HideIngameUI = true; + public readonly bool DisableWorldSounds = false; [ObjectCreator.UseCtor] public MenuButtonWidget(ModData modData) diff --git a/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs b/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs index 4831991b0d..a61bb2a50e 100644 --- a/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ProductionPaletteWidget.cs @@ -218,14 +218,14 @@ namespace OpenRA.Mods.Common.Widgets { if (PickUpCompletedBuildingIcon(icon, item)) { - Game.Sound.Play(TabClick); + Game.Sound.Play(SoundType.UI, TabClick); return true; } if (item != null && item.Paused) { // Resume a paused item - Game.Sound.Play(TabClick); + Game.Sound.Play(SoundType.UI, TabClick); World.IssueOrder(Order.PauseProduction(CurrentQueue.Actor, icon.Name, false)); return true; } @@ -233,7 +233,7 @@ namespace OpenRA.Mods.Common.Widgets if (CurrentQueue.BuildableItems().Any(a => a.Name == icon.Name)) { // Queue a new item - Game.Sound.Play(TabClick); + Game.Sound.Play(SoundType.UI, TabClick); Game.Sound.PlayNotification(World.Map.Rules, World.LocalPlayer, "Speech", CurrentQueue.Info.QueuedAudio, World.LocalPlayer.Faction.InternalName); World.IssueOrder(Order.StartProduction(CurrentQueue.Actor, icon.Name, handleCount)); return true; @@ -247,7 +247,7 @@ namespace OpenRA.Mods.Common.Widgets if (item == null) return false; - Game.Sound.Play(TabClick); + Game.Sound.Play(SoundType.UI, TabClick); if (item.Paused || item.Done || item.TotalCost == item.RemainingCost) { @@ -271,7 +271,7 @@ namespace OpenRA.Mods.Common.Widgets return false; // Directly cancel, skipping "on-hold" - Game.Sound.Play(TabClick); + Game.Sound.Play(SoundType.UI, TabClick); Game.Sound.PlayNotification(World.Map.Rules, World.LocalPlayer, "Speech", CurrentQueue.Info.CancelledAudio, World.LocalPlayer.Faction.InternalName); World.IssueOrder(Order.CancelProduction(CurrentQueue.Actor, icon.Name, handleCount)); @@ -289,7 +289,7 @@ namespace OpenRA.Mods.Common.Widgets : false; if (!handled) - Game.Sound.Play(DisabledTabClick); + Game.Sound.Play(SoundType.UI, DisabledTabClick); return true; } diff --git a/OpenRA.Mods.Common/Widgets/RadarWidget.cs b/OpenRA.Mods.Common/Widgets/RadarWidget.cs index 010a13ca2c..e516f601fb 100644 --- a/OpenRA.Mods.Common/Widgets/RadarWidget.cs +++ b/OpenRA.Mods.Common/Widgets/RadarWidget.cs @@ -333,7 +333,7 @@ namespace OpenRA.Mods.Common.Widgets // Enable/Disable the radar var enabled = IsEnabled(); if (enabled != cachedEnabled) - Game.Sound.Play(enabled ? RadarOnlineSound : RadarOfflineSound); + Game.Sound.Play(SoundType.UI, enabled ? RadarOnlineSound : RadarOfflineSound); cachedEnabled = enabled; if (enabled) diff --git a/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs index 2819ab21f5..dd40499c22 100644 --- a/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs +++ b/OpenRA.Mods.Common/Widgets/SupportPowersWidget.cs @@ -115,7 +115,7 @@ namespace OpenRA.Mods.Common.Widgets { if (!clicked.Power.Active) { - Game.Sound.PlayToPlayer(spm.Self.Owner, clicked.Power.Info.InsufficientPowerSound); + Game.Sound.PlayToPlayer(SoundType.UI, spm.Self.Owner, clicked.Power.Info.InsufficientPowerSound); Game.Sound.PlayNotification(spm.Self.World.Map.Rules, spm.Self.Owner, "Speech", clicked.Power.Info.InsufficientPowerSpeechNotification, spm.Self.Owner.Faction.InternalName); } diff --git a/OpenRA.Mods.D2k/Activities/SwallowActor.cs b/OpenRA.Mods.D2k/Activities/SwallowActor.cs index a5f220c772..39a1cd36e0 100644 --- a/OpenRA.Mods.D2k/Activities/SwallowActor.cs +++ b/OpenRA.Mods.D2k/Activities/SwallowActor.cs @@ -76,7 +76,7 @@ namespace OpenRA.Mods.D2k.Activities var attackPosition = self.CenterPosition; var affectedPlayers = targets.Select(x => x.Owner).Distinct().ToList(); - Game.Sound.Play(swallow.Info.WormAttackSound, self.CenterPosition); + Game.Sound.Play(SoundType.World, swallow.Info.WormAttackSound, self.CenterPosition); Game.RunAfterDelay(1000, () => { diff --git a/OpenRA.Mods.D2k/Traits/SpiceBloom.cs b/OpenRA.Mods.D2k/Traits/SpiceBloom.cs index e14f46ac9f..f38d8ac402 100644 --- a/OpenRA.Mods.D2k/Traits/SpiceBloom.cs +++ b/OpenRA.Mods.D2k/Traits/SpiceBloom.cs @@ -152,7 +152,7 @@ namespace OpenRA.Mods.D2k.Traits self.World.Add(projectile); if (args.Weapon.Report != null && args.Weapon.Report.Any()) - Game.Sound.Play(args.Weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); + Game.Sound.Play(SoundType.World, args.Weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); } }); } diff --git a/OpenRA.Mods.RA/Activities/Leap.cs b/OpenRA.Mods.RA/Activities/Leap.cs index 39b548296b..7f8a90865d 100644 --- a/OpenRA.Mods.RA/Activities/Leap.cs +++ b/OpenRA.Mods.RA/Activities/Leap.cs @@ -50,7 +50,7 @@ namespace OpenRA.Mods.RA.Activities self.Trait().Attacking(self, Target.FromActor(target), a); if (weapon.Report != null && weapon.Report.Any()) - Game.Sound.Play(weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); + Game.Sound.Play(SoundType.World, weapon.Report.Random(self.World.SharedRandom), self.CenterPosition); } public override Activity Tick(Actor self) diff --git a/OpenRA.Mods.RA/Activities/Teleport.cs b/OpenRA.Mods.RA/Activities/Teleport.cs index 3f58bf1309..2806374b7d 100644 --- a/OpenRA.Mods.RA/Activities/Teleport.cs +++ b/OpenRA.Mods.RA/Activities/Teleport.cs @@ -60,8 +60,8 @@ namespace OpenRA.Mods.RA.Activities destination = bestCell.Value; - Game.Sound.Play(sound, self.CenterPosition); - Game.Sound.Play(sound, self.World.Map.CenterOfCell(destination)); + Game.Sound.Play(SoundType.World, sound, self.CenterPosition); + Game.Sound.Play(SoundType.World, sound, self.World.Map.CenterOfCell(destination)); self.Trait().SetPosition(self, destination); self.Generation++; diff --git a/OpenRA.Mods.RA/Traits/MadTank.cs b/OpenRA.Mods.RA/Traits/MadTank.cs index 271e6c7929..431aafd19c 100644 --- a/OpenRA.Mods.RA/Traits/MadTank.cs +++ b/OpenRA.Mods.RA/Traits/MadTank.cs @@ -159,9 +159,9 @@ namespace OpenRA.Mods.RA.Traits wfsb.PlayCustomAnimationRepeating(self, info.ThumpSequence); deployed = true; self.QueueActivity(new Wait(info.ChargeDelay, false)); - self.QueueActivity(new CallFunc(() => Game.Sound.Play(info.ChargeSound, self.CenterPosition))); + self.QueueActivity(new CallFunc(() => Game.Sound.Play(SoundType.World, info.ChargeSound, self.CenterPosition))); self.QueueActivity(new Wait(info.DetonationDelay, false)); - self.QueueActivity(new CallFunc(() => Game.Sound.Play(info.DetonationSound, self.CenterPosition))); + self.QueueActivity(new CallFunc(() => Game.Sound.Play(SoundType.World, info.DetonationSound, self.CenterPosition))); self.QueueActivity(new CallFunc(Detonate)); } diff --git a/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs b/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs index ab5ddddb1d..29f08a6bc7 100644 --- a/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs +++ b/OpenRA.Mods.RA/Traits/SupportPowers/ChronoshiftPower.cs @@ -55,7 +55,7 @@ namespace OpenRA.Mods.RA.Traits public override void SelectTarget(Actor self, string order, SupportPowerManager manager) { - Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound); + Game.Sound.PlayToPlayer(SoundType.UI, manager.Self.Owner, Info.SelectTargetSound); self.World.OrderGenerator = new SelectChronoshiftTarget(Self.World, order, manager, this); } diff --git a/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs b/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs index e3dcbe80a2..27c425341d 100644 --- a/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs +++ b/OpenRA.Mods.RA/Traits/SupportPowers/GpsPower.cs @@ -74,7 +74,7 @@ namespace OpenRA.Mods.RA.Traits self.World.AddFrameEndTask(w => { - Game.Sound.PlayToPlayer(self.Owner, Info.LaunchSound); + Game.Sound.PlayToPlayer(SoundType.World, self.Owner, Info.LaunchSound); Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", Info.LaunchSpeechNotification, self.Owner.Faction.InternalName); diff --git a/OpenRA.Mods.TS/Traits/SupportPowers/AttackOrderPower.cs b/OpenRA.Mods.TS/Traits/SupportPowers/AttackOrderPower.cs index 5b6160b4e8..d348496745 100644 --- a/OpenRA.Mods.TS/Traits/SupportPowers/AttackOrderPower.cs +++ b/OpenRA.Mods.TS/Traits/SupportPowers/AttackOrderPower.cs @@ -37,7 +37,7 @@ namespace OpenRA.Mods.TS.Traits public override void SelectTarget(Actor self, string order, SupportPowerManager manager) { - Game.Sound.PlayToPlayer(manager.Self.Owner, Info.SelectTargetSound); + Game.Sound.PlayToPlayer(SoundType.UI, manager.Self.Owner, Info.SelectTargetSound); self.World.OrderGenerator = new SelectAttackPowerTarget(self, order, manager, info.Cursor, MouseButton.Left, attack); } diff --git a/mods/cnc/chrome/ingame.yaml b/mods/cnc/chrome/ingame.yaml index 8b0d861e32..95ec3ca692 100644 --- a/mods/cnc/chrome/ingame.yaml +++ b/mods/cnc/chrome/ingame.yaml @@ -91,6 +91,7 @@ Container@OBSERVER_WIDGETS: Height: 25 TooltipText: Menu TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true Children: Image: X: 7 @@ -275,6 +276,7 @@ Container@PLAYER_WIDGETS: Font: Bold TooltipText: Menu TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true Children: Image@ICON: X: 7 diff --git a/mods/cnc/chrome/mainmenu.yaml b/mods/cnc/chrome/mainmenu.yaml index daf4f8eecb..e4e32ad134 100644 --- a/mods/cnc/chrome/mainmenu.yaml +++ b/mods/cnc/chrome/mainmenu.yaml @@ -1,35 +1,13 @@ Container@MENU_BACKGROUND: Width: WINDOW_RIGHT Height: WINDOW_BOTTOM - Logic: CncMainMenuLogic + Logic: MainMenuLogic Children: Container@MUSICBUTTONS: Logic: MusicControllerLogic Children: LogicKeyListener@MUSICCONTROLLER_KEYHANDLER: Container@SHELLMAP_DECORATIONS: - Children: - Image@RETICLE: - X: (WINDOW_RIGHT-WIDTH)/2 - Y: (WINDOW_BOTTOM-HEIGHT)/2 - Width: 512 - Height: 512 - ImageCollection: shellmap - ImageName: reticle - Label@REC: - X: (WINDOW_RIGHT-512)/2+10 - Y: (WINDOW_BOTTOM+512)/2-28 - Height: 18 - Font: Bold - Text: REC - Image@RECBLOCK: - X: (WINDOW_RIGHT-512)/2+40 - Y: (WINDOW_BOTTOM+512)/2-25 - Width: 16 - Height: 16 - ImageCollection: shellmapbits - ImageName: record - Container@SHELLMAP_DISABLED_DECORATIONS: Children: Image@NOD: X: WINDOW_RIGHT/2-384 diff --git a/mods/cnc/chrome/settings.yaml b/mods/cnc/chrome/settings.yaml index 72c991492f..afed569054 100644 --- a/mods/cnc/chrome/settings.yaml +++ b/mods/cnc/chrome/settings.yaml @@ -152,28 +152,21 @@ Container@SETTINGS_PANEL: Height: 20 Font: Regular Text: Player Stance Colors - Checkbox@SHOW_SHELLMAP: - X: 15 - Y: 185 - Width: 200 - Height: 20 - Font: Regular - Text: Show Shellmap Label@PLAYER: Text: Player: X: 15 - Y: 225 + Y: 195 TextField@PLAYERNAME: Text: Name X: 65 - Y: 215 + Y: 185 Width: 145 Height: 25 MaxLength: 16 ColorPreviewManager@COLOR_MANAGER: DropDownButton@PLAYERCOLOR: X: 215 - Y: 215 + Y: 185 Width: 70 Height: 25 IgnoreChildMouseOver: true diff --git a/mods/cnc/maps/blank-shellmap/map.bin b/mods/cnc/maps/blank-shellmap/map.bin new file mode 100644 index 0000000000..8d718ac90a Binary files /dev/null and b/mods/cnc/maps/blank-shellmap/map.bin differ diff --git a/mods/cnc/maps/blank-shellmap/map.png b/mods/cnc/maps/blank-shellmap/map.png new file mode 100644 index 0000000000..d866c8c7b8 Binary files /dev/null and b/mods/cnc/maps/blank-shellmap/map.png differ diff --git a/mods/cnc/maps/blank-shellmap/map.yaml b/mods/cnc/maps/blank-shellmap/map.yaml new file mode 100644 index 0000000000..f7b2177266 --- /dev/null +++ b/mods/cnc/maps/blank-shellmap/map.yaml @@ -0,0 +1,35 @@ +MapFormat: 11 + +RequiresMod: cnc + +Title: Blank Shellmap + +Author: Paul Chote + +Tileset: DESERT + +MapSize: 5,5 + +Bounds: 1,1,1,1 + +Visibility: Shellmap + +Categories: Shellmap + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: Random + +Actors: + +Rules: + World: + -SpawnMPUnits: + -MPStartLocations: + -CrateSpawner: + MusicPlaylist: + BackgroundMusic: map1 + DisableWorldSounds: true \ No newline at end of file diff --git a/mods/cnc/maps/shellmap/map.bin b/mods/cnc/maps/shellmap/map.bin deleted file mode 100644 index 91476e7ec0..0000000000 Binary files a/mods/cnc/maps/shellmap/map.bin and /dev/null differ diff --git a/mods/cnc/maps/shellmap/map.png b/mods/cnc/maps/shellmap/map.png deleted file mode 100644 index 0fd2bf9949..0000000000 Binary files a/mods/cnc/maps/shellmap/map.png and /dev/null differ diff --git a/mods/cnc/maps/shellmap/map.yaml b/mods/cnc/maps/shellmap/map.yaml deleted file mode 100644 index 01029aaf48..0000000000 --- a/mods/cnc/maps/shellmap/map.yaml +++ /dev/null @@ -1,961 +0,0 @@ -MapFormat: 11 - -RequiresMod: cnc - -Title: shellmap - -Author: Chris Forbes - -Tileset: WINTER - -MapSize: 96,48 - -Bounds: 8,1,80,45 - -Visibility: Shellmap - -Categories: Shellmap - -Players: - PlayerReference@Nod: - Name: Nod - Faction: nod - Color: FE1100 - Allies: Nod - Enemies: GDI, Creeps - PlayerReference@GDI: - Name: GDI - Faction: gdi - Color: F5D378 - Allies: GDI - Enemies: Nod, Creeps - PlayerReference@Neutral: - Name: Neutral - OwnsWorld: True - NonCombatant: True - Faction: gdi - PlayerReference@Creeps: - Name: Creeps - NonCombatant: True - Faction: Random - Enemies: Nod, GDI - -Actors: - Actor4: fix - Location: 59,44 - Owner: GDI - Actor5: tran - Location: 60,45 - Owner: GDI - Actor6: cycl - Location: 64,44 - Owner: GDI - Actor7: cycl - Location: 64,43 - Owner: GDI - Actor8: cycl - Location: 63,43 - Owner: GDI - Actor9: cycl - Location: 62,43 - Owner: GDI - Actor10: cycl - Location: 61,43 - Owner: GDI - Actor11: cycl - Location: 60,43 - Owner: GDI - Actor12: cycl - Location: 59,43 - Owner: GDI - Actor13: cycl - Location: 58,43 - Owner: GDI - Actor14: cycl - Location: 57,43 - Owner: GDI - Actor15: cycl - Location: 56,43 - Owner: GDI - Actor16: cycl - Location: 56,44 - Owner: GDI - Actor17: atwr - Location: 55,42 - Owner: GDI - Actor18: nuke - Location: 70,45 - Owner: GDI - Actor19: nuke - Location: 72,45 - Owner: GDI - Actor20: hq - Location: 54,42 - Owner: GDI - Actor21: t07 - Location: 53,42 - Owner: GDI - Actor22: tc01 - Location: 53,43 - Owner: GDI - Actor23: e1 - Location: 57,44 - Owner: GDI - Actor24: e2 - Location: 65,44 - Owner: GDI - Actor25: e2 - Location: 64,45 - Owner: GDI - Actor26: atwr - Location: 66,42 - Owner: GDI - Actor27: tc02 - Location: 65,42 - Owner: GDI - Actor28: fact - Location: 11,3 - Owner: Nod - Actor29: nuke - Location: 14,1 - Owner: Nod - Actor30: nuke - Location: 16,1 - Owner: Nod - Actor31: silo - Location: 19,1 - Owner: Nod - Actor32: silo - Location: 19,2 - Owner: Nod - Actor33: proc - Location: 15,3 - Owner: Nod - Actor34: tc04 - Location: 11,0 - Owner: Neutral - Actor37: tc05 - Location: 8,0 - Owner: Neutral - Actor38: tc02 - Location: 8,2 - Owner: Neutral - Actor39: tc04 - Location: 8,3 - Owner: Neutral - Actor40: t06 - Location: 8,6 - Owner: Neutral - Actor43: afld - Location: 9,7 - Owner: Nod - Actor42: hq - Location: 10,4 - Owner: Nod - Actor45: sam - Location: 25,6 - Owner: Nod - Actor46: sam - Location: 29,6 - Owner: Nod - Actor47: sam - Location: 53,2 - Owner: Nod - Actor48: sam - Location: 79,5 - Owner: Nod - Actor49: hand - Location: 15,8 - Owner: Nod - Actor50: cycl - Location: 13,11 - Owner: Nod - Actor51: cycl - Location: 13,10 - Owner: Nod - Actor52: cycl - Location: 12,10 - Owner: Nod - Actor53: cycl - Location: 12,11 - Owner: Nod - Actor54: cycl - Location: 11,11 - Owner: Nod - Actor55: cycl - Location: 10,11 - Owner: Nod - Actor56: cycl - Location: 9,11 - Owner: Nod - Actor57: cycl - Location: 8,11 - Owner: Nod - Actor58: cycl - Location: 8,10 - Owner: Nod - Actor59: cycl - Location: 8,9 - Owner: Nod - Actor60: cycl - Location: 8,8 - Owner: Nod - Actor61: cycl - Location: 8,7 - Owner: Nod - Actor62: brik - Location: 15,14 - Owner: Nod - Actor63: brik - Location: 14,14 - Owner: Nod - Actor64: brik - Location: 14,13 - Owner: Nod - Actor65: brik - Location: 15,13 - Owner: Nod - Actor66: brik - Location: 13,14 - Owner: Nod - Actor67: brik - Location: 12,14 - Owner: Nod - Actor68: brik - Location: 12,15 - Owner: Nod - Actor69: brik - Location: 11,15 - Owner: Nod - Actor70: brik - Location: 10,15 - Owner: Nod - Actor71: brik - Location: 9,15 - Owner: Nod - Actor72: brik - Location: 8,15 - Owner: Nod - Actor73: brik - Location: 19,9 - Owner: Nod - Actor74: brik - Location: 19,10 - Owner: Nod - Actor75: brik - Location: 18,10 - Owner: Nod - Actor76: brik - Location: 18,9 - Owner: Nod - Actor77: brik - Location: 19,8 - Owner: Nod - Actor78: brik - Location: 19,7 - Owner: Nod - Actor79: brik - Location: 20,7 - Owner: Nod - Actor80: brik - Location: 20,6 - Owner: Nod - Actor81: brik - Location: 20,5 - Owner: Nod - Actor82: brik - Location: 21,5 - Owner: Nod - Actor83: brik - Location: 22,5 - Owner: Nod - Actor84: brik - Location: 23,5 - Owner: Nod - Actor85: brik - Location: 24,5 - Owner: Nod - Actor91: brik - Location: 27,5 - Owner: Nod - Actor90: brik - Location: 28,5 - Owner: Nod - Actor89: brik - Location: 29,5 - Owner: Nod - Actor88: brik - Location: 30,5 - Owner: Nod - Actor87: brik - Location: 31,5 - Owner: Nod - Actor35: gun - Location: 20,11 - Owner: Nod - TurretFacing: 160 - Actor36: gun - Location: 16,14 - Owner: Nod - TurretFacing: 184 - Actor41: brik - Location: 32,5 - Owner: Nod - Actor44: brik - Location: 32,4 - Owner: Nod - Actor86: brik - Location: 31,4 - Owner: Nod - Actor96: gun - Location: 33,5 - Owner: Nod - TurretFacing: 144 - Actor97: gun - Location: 39,3 - Owner: Nod - TurretFacing: 128 - Actor98: nuke - Location: 22,1 - Owner: Nod - Actor99: nuke - Location: 24,1 - Owner: Nod - Actor100: tc04 - Location: 26,0 - Owner: Neutral - Actor101: tc05 - Location: 41,0 - Owner: Neutral - Actor102: t17 - Location: 40,0 - Owner: Neutral - Actor103: tc01 - Location: 51,1 - Owner: Neutral - Actor104: tc03 - Location: 55,1 - Owner: Neutral - Actor105: tc05 - Location: 60,1 - Owner: Neutral - Actor106: t08 - Location: 61,4 - Owner: Neutral - Actor107: tc05 - Location: 67,3 - Owner: Neutral - Actor109: tc04 - Location: 80,0 - Owner: Neutral - Actor110: tc04 - Location: 83,1 - Owner: Neutral - Actor111: tc05 - Location: 85,3 - Owner: Neutral - Actor112: tc02 - Location: 86,6 - Owner: Neutral - Actor92: brik - Location: 26,5 - Owner: Nod - Actor93: brik - Location: 25,5 - Owner: Nod - Actor94: brik - Location: 39,1 - Owner: Nod - Actor95: brik - Location: 39,2 - Owner: Nod - Actor113: brik - Location: 38,2 - Owner: Nod - Actor114: brik - Location: 38,1 - Owner: Nod - Actor115: tc02 - Location: 36,0 - Owner: Neutral - Actor116: proc - Location: 57,4 - Owner: Nod - Actor117: silo - Location: 54,5 - Owner: Nod - Actor118: silo - Location: 54,6 - Owner: Nod - Actor119: e1 - Location: 12,5 - Owner: Nod - Actor120: e1 - Location: 11,6 - Owner: Nod - Actor121: e6 - Location: 14,4 - Owner: Nod - Actor122: e3 - Location: 18,4 - Owner: Nod - Actor123: e3 - Location: 38,3 - Owner: Nod - Actor124: e3 - Location: 59,8 - Owner: Nod - Actor125: e3 - Location: 58,9 - Owner: Nod - Actor126: ltnk - Location: 21,4 - Owner: Nod - Actor127: ltnk - Location: 22,4 - Owner: Nod - Actor128: ltnk - Location: 23,4 - Owner: Nod - Actor129: bggy - Location: 11,10 - Owner: Nod - Actor130: bggy - Location: 10,10 - Owner: Nod - Actor131: gun - Location: 13,16 - Owner: Nod - TurretFacing: 160 - Actor132: gun - Location: 12,16 - Owner: Nod - TurretFacing: 160 - Actor133: brik - Location: 9,16 - Owner: Nod - Actor134: brik - Location: 8,16 - Owner: Nod - Actor135: tc01 - Location: 10,16 - Owner: Neutral - Actor136: v07 - Location: 8,17 - Owner: Neutral - Actor138: v01 - Location: 36,16 - Owner: Neutral - Actor139: v02 - Location: 37,19 - Owner: Neutral - Actor140: v03 - Location: 31,18 - Owner: Neutral - Actor141: v11 - Location: 33,19 - Owner: Neutral - Actor142: v04 - Location: 34,16 - Owner: Neutral - Actor143: v06 - Location: 40,17 - Owner: Neutral - Actor144: c1 - Location: 34,18 - Owner: Neutral - Actor145: c4 - Location: 37,21 - Owner: Neutral - Actor146: c9 - Location: 40,15 - Owner: Neutral - Actor147: c5 - Location: 39,16 - Owner: Neutral - Actor148: cycl - Location: 31,20 - Owner: Neutral - Actor149: cycl - Location: 32,20 - Owner: Neutral - Actor150: cycl - Location: 33,20 - Owner: Neutral - Actor151: cycl - Location: 34,20 - Owner: Neutral - Actor152: cycl - Location: 34,21 - Owner: Neutral - Actor153: cycl - Location: 34,22 - Owner: Neutral - Actor154: cycl - Location: 35,22 - Owner: Neutral - Actor155: cycl - Location: 35,23 - Owner: Neutral - Actor156: gun - Location: 34,23 - Owner: Nod - TurretFacing: 96 - Actor157: sam - Location: 32,22 - Owner: Nod - Actor158: e1 - Location: 32,21 - Owner: Nod - Actor159: e1 - Location: 33,21 - Owner: Nod - Actor160: e1 - Location: 40,12 - Owner: Nod - Actor161: e1 - Location: 39,13 - Owner: Nod - Actor162: cycl - Location: 50,5 - Owner: Nod - Actor163: cycl - Location: 51,5 - Owner: Nod - Actor167: cycl - Location: 51,8 - Owner: Nod - Actor165: cycl - Location: 51,6 - Owner: Nod - Actor166: cycl - Location: 51,7 - Owner: Nod - Actor168: cycl - Location: 51,9 - Owner: Nod - Actor169: cycl - Location: 51,10 - Owner: Nod - Actor170: cycl - Location: 52,10 - Owner: Nod - Actor171: cycl - Location: 52,9 - Owner: Nod - Actor172: tc04 - Location: 47,4 - Owner: Neutral - Actor173: v02 - Location: 49,6 - Owner: Neutral - Actor174: v04 - Location: 49,7 - Owner: Neutral - Actor175: v10 - Location: 47,7 - Owner: Neutral - Actor176: v08 - Location: 47,10 - Owner: Neutral - Actor177: c3 - Location: 48,9 - Owner: Neutral - Actor178: c4 - Location: 44,12 - Owner: Neutral - Actor179: v09 - Location: 44,10 - Owner: Neutral - Actor180: wood - Location: 71,12 - Owner: Neutral - Actor181: wood - Location: 71,13 - Owner: Neutral - Actor182: wood - Location: 71,14 - Owner: Neutral - Actor183: wood - Location: 71,15 - Owner: Neutral - Actor184: wood - Location: 71,16 - Owner: Neutral - Actor185: wood - Location: 71,17 - Owner: Neutral - Actor186: wood - Location: 71,18 - Owner: Neutral - Actor187: wood - Location: 71,19 - Owner: Neutral - Actor188: wood - Location: 47,16 - Owner: Neutral - Actor189: wood - Location: 48,16 - Owner: Neutral - Actor190: wood - Location: 49,16 - Owner: Neutral - Actor191: wood - Location: 50,16 - Owner: Neutral - Actor192: wood - Location: 51,16 - Owner: Neutral - Actor193: wood - Location: 52,16 - Owner: Neutral - Actor194: wood - Location: 52,15 - Owner: Neutral - Actor195: wood - Location: 52,14 - Owner: Neutral - Actor196: wood - Location: 52,13 - Owner: Neutral - Actor197: v18 - Location: 51,15 - Owner: Neutral - Actor198: v18 - Location: 51,14 - Owner: Neutral - Actor199: v18 - Location: 50,14 - Owner: Neutral - Actor200: v18 - Location: 50,15 - Owner: Neutral - Actor201: v16 - Location: 49,14 - Owner: Neutral - Actor202: v16 - Location: 49,15 - Owner: Neutral - Actor203: v16 - Location: 48,15 - Owner: Neutral - Actor204: v16 - Location: 48,14 - Owner: Neutral - Actor205: v16 - Location: 47,14 - Owner: Neutral - Actor206: v16 - Location: 47,15 - Owner: Neutral - Actor207: v14 - Location: 50,13 - Owner: Neutral - Actor208: v14 - Location: 51,13 - Owner: Neutral - Actor212: v06 - Location: 48,13 - Owner: Neutral - Actor213: v07 - Location: 41,20 - Owner: Neutral - Actor211: v15 - Location: 47,13 - Owner: Neutral - Actor215: c1 - Location: 42,21 - Owner: Neutral - Actor216: c7 - Location: 43,20 - Owner: Neutral - Actor217: c10 - Location: 45,22 - Owner: Neutral - Actor218: c9 - Location: 44,21 - Owner: Neutral - Actor219: e1 - Location: 45,27 - Owner: Nod - Actor220: e1 - Location: 46,28 - Owner: Nod - Actor222: v01 - Location: 69,19 - Owner: Neutral - Actor223: t03 - Location: 72,18 - Owner: Neutral - Actor224: tc05 - Location: 61,10 - Owner: Neutral - Actor225: tc04 - Location: 60,12 - Owner: Neutral - Actor226: tc01 - Location: 59,16 - Owner: Neutral - Actor227: tc03 - Location: 57,16 - Owner: Neutral - Actor228: tc04 - Location: 57,17 - Owner: Neutral - Actor229: v04 - Location: 58,19 - Owner: Neutral - Actor230: tc04 - Location: 75,10 - Owner: Neutral - Actor231: tc02 - Location: 75,16 - Owner: Neutral - Actor232: tc05 - Location: 79,17 - Owner: Neutral - Actor233: tc04 - Location: 79,12 - Owner: Neutral - Actor234: tc01 - Location: 83,14 - Owner: Neutral - Actor235: wood - Location: 81,20 - Owner: Neutral - Actor236: wood - Location: 81,21 - Owner: Neutral - Actor237: wood - Location: 81,22 - Owner: Neutral - Actor238: t17 - Location: 82,22 - Owner: Neutral - Actor239: c4 - Location: 84,17 - Owner: Neutral - Actor240: e1 - Location: 79,9 - Owner: Nod - Actor241: e1 - Location: 78,10 - Owner: Nod - Actor242: e3 - Location: 58,1 - Owner: Nod - Actor243: e3 - Location: 52,8 - Owner: Nod - Actor244: cycl - Location: 52,27 - Owner: Nod - Actor245: cycl - Location: 52,26 - Owner: Nod - Actor246: cycl - Location: 51,26 - Owner: Nod - Actor247: cycl - Location: 51,27 - Owner: Nod - Actor248: cycl - Location: 62,26 - Owner: Nod - Actor249: cycl - Location: 62,27 - Owner: Nod - Actor250: cycl - Location: 63,27 - Owner: Nod - Actor251: cycl - Location: 63,26 - Owner: Nod - Actor252: gun - Location: 53,27 - Owner: Nod - TurretFacing: 128 - Actor253: gun - Location: 50,27 - Owner: Nod - TurretFacing: 128 - Actor254: gun - Location: 61,27 - Owner: Nod - TurretFacing: 128 - Actor255: gun - Location: 64,27 - Owner: Nod - TurretFacing: 128 - Actor256: v03 - Location: 68,21 - Owner: Neutral - Actor257: v02 - Location: 67,19 - Owner: Neutral - Actor258: tc05 - Location: 70,21 - Owner: Neutral - Actor259: v07 - Location: 69,23 - Owner: Neutral - Actor260: c3 - Location: 67,21 - Owner: Neutral - Actor262: c9 - Location: 65,22 - Owner: Neutral - Actor263: c7 - Location: 66,20 - Owner: Neutral - Actor264: e2 - Location: 70,43 - Owner: GDI - Actor265: e2 - Location: 71,43 - Owner: GDI - Actor266: tc04 - Location: 47,42 - Owner: Neutral - Actor267: tc05 - Location: 73,42 - Owner: Neutral - Actor268: tc05 - Location: 44,42 - Owner: Neutral - Actor269: tc01 - Location: 75,44 - Owner: Neutral - Actor270: t11 - Location: 43,44 - Owner: Neutral - Actor271: t01 - Location: 41,41 - Owner: Neutral - Actor272: tc04 - Location: 40,41 - Owner: Neutral - Actor273: tc04 - Location: 38,43 - Owner: Neutral - Actor274: tc05 - Location: 35,42 - Owner: Neutral - Actor275: tc01 - Location: 32,44 - Owner: Neutral - Actor276: tc04 - Location: 30,42 - Owner: Neutral - Actor277: tc05 - Location: 23,42 - Owner: Neutral - Actor278: v03 - Location: 26,44 - Owner: Neutral - Actor279: tc04 - Location: 17,41 - Owner: Neutral - Actor280: tc01 - Location: 18,44 - Owner: Neutral - Actor281: tc04 - Location: 14,43 - Owner: Neutral - Actor282: tc04 - Location: 12,41 - Owner: Neutral - Actor283: tc04 - Location: 9,43 - Owner: Neutral - Actor284: tc04 - Location: 77,41 - Owner: Neutral - Actor285: tc04 - Location: 79,43 - Owner: Neutral - Actor286: tc01 - Location: 82,42 - Owner: Neutral - Actor287: tc05 - Location: 82,43 - Owner: Neutral - Actor288: tc05 - Location: 85,42 - Owner: Neutral - Actor289: wood - Location: 72,26 - Owner: Neutral - Actor290: wood - Location: 71,26 - Owner: Neutral - Actor291: wood - Location: 70,26 - Owner: Neutral - Actor292: wood - Location: 69,26 - Owner: Neutral - Actor293: wood - Location: 68,26 - Owner: Neutral - Actor294: c4 - Location: 71,25 - Owner: Neutral - Actor295: v05 - Location: 72,20 - Owner: Neutral - Actor164: nuke - Location: 8,12 - Owner: Nod - Actor209: nuke - Location: 10,12 - Owner: Nod - Actor210: nuke - Location: 53,45 - Owner: GDI - Actor214: nuke - Location: 55,45 - Owner: GDI - Actor221: jeep - Location: 57,45 - Owner: GDI - boat1: boat - Location: 45,33 - Owner: GDI - boat2: boat - Location: 39,37 - Owner: GDI - boat3: boat - Location: 70,33 - Owner: GDI - boat4: boat - Location: 79,37 - Owner: GDI - lst1: lst - Location: 53,35 - Owner: GDI - Facing: 64 - lst2: lst - Location: 58,35 - Owner: GDI - Facing: 64 - lst3: lst - Location: 63,35 - Owner: GDI - Facing: 64 - ftnk1: ftnk - Location: 67,22 - Owner: Nod - Facing: 228 - ftnk2: ftnk - Location: 65,20 - Owner: Nod - Facing: 192 - Actor300: split3 - Owner: Neutral - Location: 13,21 - Actor299: split3 - Owner: Neutral - Location: 73,6 - -Rules: cnc|rules/campaign-palettes.yaml, rules.yaml diff --git a/mods/cnc/maps/shellmap/rules.yaml b/mods/cnc/maps/shellmap/rules.yaml deleted file mode 100644 index dd30591281..0000000000 --- a/mods/cnc/maps/shellmap/rules.yaml +++ /dev/null @@ -1,18 +0,0 @@ -World: - -SpawnMPUnits: - -MPStartLocations: - -CrateSpawner: - MenuPaletteEffect: - Effect: Desaturated - LuaScript: - Scripts: shellmap.lua - MusicPlaylist: - BackgroundMusic: map1 - -LST: - Mobile: - Speed: 42 - -BOAT: - Mobile: - Speed: 42 diff --git a/mods/cnc/maps/shellmap/shellmap.lua b/mods/cnc/maps/shellmap/shellmap.lua deleted file mode 100644 index 2b72205e06..0000000000 --- a/mods/cnc/maps/shellmap/shellmap.lua +++ /dev/null @@ -1,30 +0,0 @@ - -ticks = 0 -speed = 5 - -Tick = function() - ticks = ticks + 1 - local t = (ticks + 45) % (360 * speed) * (math.pi / 180) / speed; - Camera.Position = viewportOrigin + WVec.New(-15360 * math.sin(t), 4096 * math.cos(t), 0) -end - -WorldLoaded = function() - viewportOrigin = Camera.Position - LoadTransport(lst1, "htnk") - LoadTransport(lst2, "mcv") - LoadTransport(lst3, "htnk") - local units = { boat1, boat2, boat3, boat4, lst1, lst2, lst3} - for i, unit in ipairs(units) do - LoopTrack(unit, CPos.New(8, unit.Location.Y), CPos.New(87, unit.Location.Y)) - end -end - -LoopTrack = function(actor, left, right) - actor.ScriptedMove(left) - actor.Teleport(right) - actor.CallFunc(function() LoopTrack(actor, left, right) end) -end - -LoadTransport = function(transport, passenger) - transport.LoadPassenger(Actor.Create(passenger, false, { Owner = transport.Owner, Facing = transport.Facing })) -end \ No newline at end of file diff --git a/mods/d2k/chrome/ingame-observer.yaml b/mods/d2k/chrome/ingame-observer.yaml index c57c1140f4..ea88067bf6 100644 --- a/mods/d2k/chrome/ingame-observer.yaml +++ b/mods/d2k/chrome/ingame-observer.yaml @@ -7,6 +7,7 @@ Container@OBSERVER_WIDGETS: Text: Options (Esc) Font: Bold Key: escape + DisableWorldSounds: true MenuButton@OBSERVER_STATS_BUTTON: MenuContainer: INGAME_OBSERVERSTATS_BG HideIngameUI: False diff --git a/mods/d2k/chrome/ingame-player.yaml b/mods/d2k/chrome/ingame-player.yaml index 659a51d73a..d81993e30f 100644 --- a/mods/d2k/chrome/ingame-player.yaml +++ b/mods/d2k/chrome/ingame-player.yaml @@ -49,6 +49,7 @@ Container@PLAYER_WIDGETS: Background: TooltipText: Debug Menu TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true VisualHeight: 0 Children: Image@ICON: @@ -121,6 +122,7 @@ Container@PLAYER_WIDGETS: Background: TooltipText: Options TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true VisualHeight: 0 Children: Image@ICON: diff --git a/mods/d2k/maps/shellmap/rules.yaml b/mods/d2k/maps/shellmap/rules.yaml index 27a52e0df1..59a89e5d9e 100644 --- a/mods/d2k/maps/shellmap/rules.yaml +++ b/mods/d2k/maps/shellmap/rules.yaml @@ -13,6 +13,7 @@ World: Maximum: 3 MusicPlaylist: BackgroundMusic: options + DisableWorldSounds: true LuaScript: Scripts: d2k-shellmap.lua diff --git a/mods/ra/chrome/ingame-observer.yaml b/mods/ra/chrome/ingame-observer.yaml index 96a12da0b6..21191e2e96 100644 --- a/mods/ra/chrome/ingame-observer.yaml +++ b/mods/ra/chrome/ingame-observer.yaml @@ -60,6 +60,7 @@ Container@OBSERVER_WIDGETS: Background: sidebar-button-observer TooltipText: Options TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true VisualHeight: 0 Children: Image@ICON: diff --git a/mods/ra/chrome/ingame-player.yaml b/mods/ra/chrome/ingame-player.yaml index f1ac520c14..c5245b459c 100644 --- a/mods/ra/chrome/ingame-player.yaml +++ b/mods/ra/chrome/ingame-player.yaml @@ -111,6 +111,7 @@ Container@PLAYER_WIDGETS: Background: sidebar-button TooltipText: Debug Menu TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true VisualHeight: 0 Children: Image@ICON: @@ -127,6 +128,7 @@ Container@PLAYER_WIDGETS: Background: sidebar-button TooltipText: Options TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true VisualHeight: 0 Children: Image@ICON: diff --git a/mods/ra/chrome/settings.yaml b/mods/ra/chrome/settings.yaml index ef9c0c2240..d2fddd9e3f 100644 --- a/mods/ra/chrome/settings.yaml +++ b/mods/ra/chrome/settings.yaml @@ -165,28 +165,21 @@ Background@SETTINGS_PANEL: Height: 20 Font: Regular Text: Player Stance Colors - Checkbox@SHOW_SHELLMAP: - X: 15 - Y: 195 - Width: 200 - Height: 20 - Font: Regular - Text: Show Shellmap Label@PLAYER: Text: Player: X: 15 - Y: 240 + Y: 205 TextField@PLAYERNAME: Text: Name X: 65 - Y: 230 + Y: 195 Width: 145 Height: 25 MaxLength: 16 ColorPreviewManager@COLOR_MANAGER: DropDownButton@PLAYERCOLOR: X: 215 - Y: 230 + Y: 195 Width: 70 Height: 25 IgnoreChildMouseOver: true diff --git a/mods/ra/maps/desert-shellmap/rules.yaml b/mods/ra/maps/desert-shellmap/rules.yaml index 96760317c5..63f2a7a1cb 100644 --- a/mods/ra/maps/desert-shellmap/rules.yaml +++ b/mods/ra/maps/desert-shellmap/rules.yaml @@ -7,6 +7,7 @@ World: -MPStartLocations: MusicPlaylist: BackgroundMusic: intro + DisableWorldSounds: true ResourceType@ore: ValuePerUnit: 0 LuaScript: diff --git a/mods/ts/chrome/ingame-player.yaml b/mods/ts/chrome/ingame-player.yaml index f4892cfec4..e70784c33d 100644 --- a/mods/ts/chrome/ingame-player.yaml +++ b/mods/ts/chrome/ingame-player.yaml @@ -53,6 +53,7 @@ Container@PLAYER_WIDGETS: Background: sidebar-button TooltipText: Debug Menu TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true VisualHeight: 0 Children: Image@ICON: @@ -130,6 +131,7 @@ Container@PLAYER_WIDGETS: Background: sidebar-button TooltipText: Options TooltipContainer: TOOLTIP_CONTAINER + DisableWorldSounds: true VisualHeight: 0 Children: Image@ICON: diff --git a/mods/ts/maps/fields-of-green/map.yaml b/mods/ts/maps/fields-of-green/map.yaml index 88c2c68da3..c7c0017e0d 100644 --- a/mods/ts/maps/fields-of-green/map.yaml +++ b/mods/ts/maps/fields-of-green/map.yaml @@ -1433,6 +1433,7 @@ Rules: ValuePerUnit: 0 MusicPlaylist: BackgroundMusic: intro + DisableWorldSounds: true GlobalLightingPaletteEffect: Blue: 0.7 Ambient: 0.7