Include add/replace playlist entries support using map.yaml
This commit is contained in:
@@ -80,7 +80,7 @@ namespace OpenRA
|
||||
|
||||
using (new PerfTimer("Music"))
|
||||
music = LoadYamlRules(musicCache, m.Music,
|
||||
NoMapRules,
|
||||
map != null ? map.MusicDefinitions : NoMapRules,
|
||||
(k, _) => new MusicInfo(k.Key, k.Value));
|
||||
|
||||
using (new PerfTimer("TileSets"))
|
||||
|
||||
@@ -18,6 +18,7 @@ using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using OpenRA.FileSystem;
|
||||
using OpenRA.GameRules;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Network;
|
||||
using OpenRA.Support;
|
||||
@@ -228,6 +229,7 @@ namespace OpenRA
|
||||
[FieldLoader.Ignore] public List<MiniYamlNode> VoxelSequenceDefinitions = new List<MiniYamlNode>();
|
||||
[FieldLoader.Ignore] public List<MiniYamlNode> WeaponDefinitions = new List<MiniYamlNode>();
|
||||
[FieldLoader.Ignore] public List<MiniYamlNode> VoiceDefinitions = new List<MiniYamlNode>();
|
||||
[FieldLoader.Ignore] public List<MiniYamlNode> MusicDefinitions = new List<MiniYamlNode>();
|
||||
[FieldLoader.Ignore] public List<MiniYamlNode> NotificationDefinitions = new List<MiniYamlNode>();
|
||||
[FieldLoader.Ignore] public List<MiniYamlNode> TranslationDefinitions = new List<MiniYamlNode>();
|
||||
[FieldLoader.Ignore] public List<MiniYamlNode> PlayerDefinitions = new List<MiniYamlNode>();
|
||||
@@ -360,6 +362,7 @@ namespace OpenRA
|
||||
VoxelSequenceDefinitions = MiniYaml.NodesOrEmpty(yaml, "VoxelSequences");
|
||||
WeaponDefinitions = MiniYaml.NodesOrEmpty(yaml, "Weapons");
|
||||
VoiceDefinitions = MiniYaml.NodesOrEmpty(yaml, "Voices");
|
||||
MusicDefinitions = MiniYaml.NodesOrEmpty(yaml, "Music");
|
||||
NotificationDefinitions = MiniYaml.NodesOrEmpty(yaml, "Notifications");
|
||||
TranslationDefinitions = MiniYaml.NodesOrEmpty(yaml, "Translations");
|
||||
PlayerDefinitions = MiniYaml.NodesOrEmpty(yaml, "Players");
|
||||
@@ -572,6 +575,7 @@ namespace OpenRA
|
||||
root.Add(new MiniYamlNode("VoxelSequences", null, VoxelSequenceDefinitions));
|
||||
root.Add(new MiniYamlNode("Weapons", null, WeaponDefinitions));
|
||||
root.Add(new MiniYamlNode("Voices", null, VoiceDefinitions));
|
||||
root.Add(new MiniYamlNode("Music", null, MusicDefinitions));
|
||||
root.Add(new MiniYamlNode("Notifications", null, NotificationDefinitions));
|
||||
root.Add(new MiniYamlNode("Translations", null, TranslationDefinitions));
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ using Eluant;
|
||||
using OpenRA.Effects;
|
||||
using OpenRA.FileFormats;
|
||||
using OpenRA.FileSystem;
|
||||
using OpenRA.GameRules;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Effects;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
@@ -55,14 +56,22 @@ namespace OpenRA.Mods.Common.Scripting
|
||||
}
|
||||
|
||||
Action onComplete;
|
||||
[Desc("Play track defined in music.yaml or keep it empty for a random song.")]
|
||||
[Desc("Play track defined in music.yaml or map.yaml, or keep track empty for playing a random song.")]
|
||||
public void PlayMusic(string track = null, LuaFunction func = null)
|
||||
{
|
||||
if (!playlist.IsMusicAvailable)
|
||||
return;
|
||||
|
||||
var musicInfo = !string.IsNullOrEmpty(track) ? world.Map.Rules.Music[track]
|
||||
: playlist.GetNextSong();
|
||||
MusicInfo musicInfo;
|
||||
if (string.IsNullOrEmpty(track))
|
||||
musicInfo = playlist.GetNextSong();
|
||||
else if (world.Map.Rules.Music.ContainsKey(track))
|
||||
musicInfo = world.Map.Rules.Music[track];
|
||||
else
|
||||
{
|
||||
Log.Write("lua", "Missing music track: " + track);
|
||||
return;
|
||||
}
|
||||
|
||||
if (func != null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user