private void ReadCrossroad(ICrossroad crossroad, IRoadmapFactory roadmapFactory, XmlNode crossroadNode) { var pivotPoint = ReadPoint(crossroadNode.SelectSingleNode("pivotPoint")); var index = ushort.Parse(crossroadNode.GetFieldValue("index")); crossroad.PivotPoint = pivotPoint; crossroad.Index = index; var junctionNodes = crossroadNode.SelectNodes("roadJunctions/roadJunction"); foreach (XmlNode junctionNode in junctionNodes) { IRoadJunction junction = roadmapFactory.Junction(); ReadRoadJunction(junction, roadmapFactory, junctionNode); crossroad.Junctions.Add(junction); } var boundNodes = crossroadNode.SelectNodes("bounds/point"); foreach (XmlNode pointNode in boundNodes) { crossroad.Bounds.Add(ReadPoint(pointNode)); } var semaphoreNodes = crossroadNode.SelectNodes("trafficLightSemaphores/semaphore"); foreach (XmlNode semaphoreNode in semaphoreNodes) { ITrafficLightSemaphore semaphore = roadmapFactory.TrafficLightSemaphore(); ReadTrafficLightSemaphore(semaphore, semaphoreNode); crossroad.TrafficLightSemaphores.Add(semaphore); } }
private void WriteTrafficLightSemaphore(ITrafficLightSemaphore semaphore, XmlDocument xml, XmlNode node) { node.AddFieldWithValue(xml, "unkn0_0", semaphore.Unkn0_0); node.AddFieldWithValue(xml, "unkn0_4", semaphore.Unkn0_4); node.AddFieldWithValue(xml, "unkn0_8", semaphore.Unkn0_8); node.AddFieldWithValue(xml, "unkn0_12", semaphore.Unkn0_12); node.AddFieldWithValue(xml, "unkn2", semaphore.Unkn2); var managedRoadsNode = xml.CreateElement("managedRoads"); node.AppendChild(managedRoadsNode); foreach (var value in semaphore.ManagedRoads) { managedRoadsNode.AddFieldWithValue(xml, "value", value.ToStrMaxAsNegOne()); } }
private void ReadTrafficLightSemaphore(ITrafficLightSemaphore semaphore, XmlNode semaphoreNode) { var unkn0_0 = byte.Parse(semaphoreNode.GetFieldValue("unkn0_0")); var unkn0_4 = byte.Parse(semaphoreNode.GetFieldValue("unkn0_4")); var unkn0_8 = byte.Parse(semaphoreNode.GetFieldValue("unkn0_8")); var unkn0_12 = byte.Parse(semaphoreNode.GetFieldValue("unkn0_12")); var unkn2 = ushort.Parse(semaphoreNode.GetFieldValue("unkn2")); semaphore.Unkn0_0 = unkn0_0; semaphore.Unkn0_4 = unkn0_4; semaphore.Unkn0_8 = unkn0_8; semaphore.Unkn0_12 = unkn0_12; semaphore.Unkn2 = unkn2; var managedRoadsValuesNodes = semaphoreNode.SelectNodes("managedRoads/value"); foreach (XmlNode valueNode in managedRoadsValuesNodes) { var valueStr = valueNode.InnerText; var value = StrWithMaxValueNegativeOneToUshort(valueStr); semaphore.ManagedRoads.Add(value); } }