Exemple #1
0
        void MergeAndPrint(Map map, string key, MiniYaml value)
        {
            var nodes    = new List <MiniYamlNode>();
            var includes = new List <string>();

            if (value != null && value.Value != null)
            {
                // The order of the included files matter, so we can defer to system files
                // only as long as they are included first.
                var include = false;
                var files   = FieldLoader.GetValue <string[]>("value", value.Value);
                foreach (var f in files)
                {
                    include |= map.Package.Contains(f);
                    if (include)
                    {
                        nodes.AddRange(MiniYaml.FromStream(map.Open(f), f, false));
                    }
                    else
                    {
                        includes.Add(f);
                    }
                }
            }

            if (value != null)
            {
                nodes.AddRange(value.Nodes);
            }

            var output = new MiniYaml(includes.JoinWith(", "), nodes);

            Console.WriteLine(output.ToLines(key).JoinWith("\n"));
        }
Exemple #2
0
        public override IEnumerable <string> AfterUpdate(ModData modData)
        {
            if (resourceLayer.Nodes.Any())
            {
                yield return("Add the following definitions to your ResourceLayer and EditorResourceLayer definitions:\n\t" +
                             "RecalculateResourceDensity: true\n\t" +
                             resourceLayer.ToLines("ResourceTypes").JoinWith("\n\t"));
            }

            if (resourceLayer.Nodes.Any())
            {
                yield return("Add the following definitions to your ResourceRenderer definition:\n\t" +
                             resourceRenderer.ToLines("ResourceTypes").JoinWith("\n\t"));
            }

            if (values.Nodes.Any())
            {
                yield return("Add the following definition to your ^BasePlayer definition:\n\t" +
                             "PlayerResources:\n\t\t" +
                             values.ToLines("ResourceValues").JoinWith("\n\t\t"));
            }

            if (resourceLayer.Nodes.Any())
            {
                yield return("Support for AllowUnderActors, AllowUnderBuildings, and AllowOnRamps have been removed.\n" +
                             "You must define a custom ResourceLayer subclass if you want to customize the default behaviour.");
            }
        }
Exemple #3
0
        void MergeAndPrint(Map map, string key, MiniYaml value)
        {
            var nodes = new List<MiniYamlNode>();
            var includes = new List<string>();
            if (value != null && value.Value != null)
            {
                // The order of the included files matter, so we can defer to system files
                // only as long as they are included first.
                var include = false;
                var files = FieldLoader.GetValue<string[]>("value", value.Value);
                foreach (var f in files)
                {
                    include |= map.Package.Contains(f);
                    if (include)
                        nodes.AddRange(MiniYaml.FromStream(map.Open(f)));
                    else
                        includes.Add(f);
                }
            }

            if (value != null)
                nodes.AddRange(value.Nodes);

            var output = new MiniYaml(includes.JoinWith(", "), nodes);
            Console.WriteLine(output.ToLines(key).JoinWith("\n"));
        }
Exemple #4
0
 void TestMixedMerge(MiniYaml result)
 {
     Console.WriteLine(result.ToLines("result").JoinWith("\n"));
     Assert.That(result.Nodes.Any(n => n.Key == "FromA"), Is.True, "Node from A");
     Assert.That(result.Nodes.Any(n => n.Key == "FromB"), Is.True, "Node from B");
     Assert.That(result.Nodes.Any(n => n.Key == "FromARemovedA"), Is.Not.True, "Node from A removed by A");
     Assert.That(result.Nodes.Any(n => n.Key == "FromARemovedB"), Is.Not.True, "Node from A removed by B");
     Assert.That(result.Nodes.Any(n => n.Key == "FromBRemovedA"), Is.Not.True, "Node from B removed by A");
     Assert.That(result.Nodes.Any(n => n.Key == "FromBRemovedB"), Is.Not.True, "Node from B removed by B");
 }
Exemple #5
0
		void TestMixedMerge(MiniYaml result)
		{
			Console.WriteLine(result.ToLines("result").JoinWith("\n"));
			Assert.That(result.Nodes.Any(n => n.Key == "FromA"), Is.True, "Node from A");
			Assert.That(result.Nodes.Any(n => n.Key == "FromB"), Is.True, "Node from B");
			Assert.That(result.Nodes.Any(n => n.Key == "FromARemovedA"), Is.Not.True, "Node from A removed by A");
			Assert.That(result.Nodes.Any(n => n.Key == "FromARemovedB"), Is.Not.True, "Node from A removed by B");
			Assert.That(result.Nodes.Any(n => n.Key == "FromBRemovedA"), Is.Not.True, "Node from B removed by A");
			Assert.That(result.Nodes.Any(n => n.Key == "FromBRemovedB"), Is.Not.True, "Node from B removed by B");
		}
        public void Run(Utility utility, string[] args)
        {
            var modData = utility.ModData;

            var localizationName = args[1];

            var localizationFile = localizationName + ".yaml";

            if (File.Exists(localizationFile))
            {
                File.Delete(localizationFile);
            }
            using (StreamWriter writer = new StreamWriter(File.Create(localizationName + ".yaml")))
            {
                List <MiniYamlNode> subNodes  = new List <MiniYamlNode>();
                List <MiniYamlNode> ruleNodes = new List <MiniYamlNode>();
                foreach (var f in modData.Manifest.Rules)
                {
                    var actors = MiniYaml.FromStream(modData.DefaultFileSystem.Open(f), f);

                    // TODO: maybe can export actorInfos
                    foreach (var actor in actors)
                    {
                        foreach (var trait in actor.Value.Nodes)
                        {
                            // TODO: export the string which has translation attribute
                            if (trait.Key == "Tooltip")
                            {
                                ruleNodes.Add(new MiniYamlNode(actor.Key, new MiniYaml(trait.Value.Nodes[0].Value.Value)));
                            }
                        }
                    }
                }
                subNodes.Add(new MiniYamlNode("Rules", new MiniYaml(null, ruleNodes)));

                List <MiniYamlNode> nodes = new List <MiniYamlNode>();
                MiniYamlNode        node  = new MiniYamlNode(localizationName, new MiniYaml(localizationName.SetFirstLetterUpper(), subNodes));
                nodes.Add(node);

                MiniYaml tranlsation = new MiniYaml(null, nodes);
                foreach (var line in tranlsation.ToLines(localizationName))
                {
                    writer.WriteLine(line);
                }
            }
        }