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)}"); }
/// <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..]);
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); }