示例#1
0
        private static void DoTruckExtents(FileInfo targetXml)
        {
            var xml     = XmlHelpers.ReadFragments(targetXml.FullName);
            var extents = TruckHelpers.GetExtents(xml.Element("Truck"));

            Console.WriteLine($"Extents: {(extents.minX, extents.minY, extents.minZ)} .. {(extents.maxX, extents.maxY, extents.maxZ)}");
        }
示例#2
0
        /// <summary>
        /// Rename all trucks to include their mass in the name.
        /// </summary>
        public static void RenameTrucks(DirectoryInfo directory, GameLanguage language)
        {
            var directoryLocation = IOHelpers.NormalizeDirectory(directory.FullName);
            var strings           = GetStrings(directory, language, out var stringsMap, out var stringsLocation);

            Console.WriteLine("Processing trucks data.");
            var newTruckNames = new List <KeyValuePair <string, string> > ();
            var trucks        = Directory.EnumerateFiles(Path.Combine(directoryLocation, @"[media]\classes\trucks"), "*.xml");

            foreach (var truckXmlLocation in trucks)
            {
                var root       = XmlHelpers.ReadFragments(truckXmlLocation);
                var nameIdNode = root.Element("Truck")?.Element("GameData")?.Element("UiDesc")?.Attribute("UiName");
                var nameId     = nameIdNode?.Value;
                if (nameId == null)
                {
                    continue;
                }
                var originalId = GetOriginalId(nameId);
                var mass       = TruckHelpers.GetMass(root.Element("Truck"));
                if (mass < 100)
                {
                    continue;
                }

                var newId = GetNewId(originalId, truckXmlLocation[directoryLocation.Length..]);
示例#3
0
        private static int DoTruckCraneSocketAddTopCentral(FileInfo targetXml)
        {
            var xml             = XmlHelpers.ReadFragments(targetXml.FullName);
            var truck           = xml.Element("Truck");
            var lastCraneSocket = truck.Element("GameData").Elements("CraneSocket").LastOrDefault();

            if (lastCraneSocket == null)
            {
                Console.WriteLine("No existing crane sockets found!");
                return(1);
            }
            var extents = TruckHelpers.GetExtents(truck);
            var pos     = $"(0; {extents.maxY:0.###}; 0)";

            Console.WriteLine($"{targetXml.Name}: adding new crane socket at {pos}");
            var newCraneSocket = new XElement("CraneSocket", new XAttribute("Pos", pos));

            lastCraneSocket.AddAfterSelf(newCraneSocket);
            lastCraneSocket.AddAfterSelf(new XText("\r\n\t\t"));
            XmlHelpers.WriteFragments(targetXml.FullName, xml.Nodes());
            return(0);
        }