add a function to register a new inbound
This commit is contained in:
		| @@ -84,7 +84,7 @@ class Ant: | |||||||
|         node.Inbound.PlannedArrivalTime = eta |         node.Inbound.PlannedArrivalTime = eta | ||||||
|         node.Inbound.PlannedArrivalRoute = node.ArrivalCandidates[rwy.Name].ArrivalRoute |         node.Inbound.PlannedArrivalRoute = node.ArrivalCandidates[rwy.Name].ArrivalRoute | ||||||
|         node.Inbound.InitialArrivalTime = node.ArrivalCandidates[rwy.Name].InitialArrivalTime |         node.Inbound.InitialArrivalTime = node.ArrivalCandidates[rwy.Name].InitialArrivalTime | ||||||
|         self.RunwayManager.RunwayInbounds[rwy.Name] = node |         self.RunwayManager.registerNode(node, rwy.Name) | ||||||
|  |  | ||||||
|         delay = node.Inbound.PlannedArrivalTime - node.Inbound.InitialArrivalTime  |         delay = node.Inbound.PlannedArrivalTime - node.Inbound.InitialArrivalTime  | ||||||
|         if 0.0 < delay.total_seconds(): |         if 0.0 < delay.total_seconds(): | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ class Colony: | |||||||
|         node.Inbound.PlannedArrivalTime = eta |         node.Inbound.PlannedArrivalTime = eta | ||||||
|         node.Inbound.InitialArrivalTime = node.ArrivalCandidates[rwy.Name].InitialArrivalTime |         node.Inbound.InitialArrivalTime = node.ArrivalCandidates[rwy.Name].InitialArrivalTime | ||||||
|         node.Inbound.PlannedTrackmiles = node.ArrivalCandidates[rwy.Name].Trackmiles |         node.Inbound.PlannedTrackmiles = node.ArrivalCandidates[rwy.Name].Trackmiles | ||||||
|         rwyManager.RunwayInbounds[rwy.Name] = node |         rwyManager.registerNode(node, rwy.Name) | ||||||
|  |  | ||||||
|         return True |         return True | ||||||
|  |  | ||||||
|   | |||||||
| @@ -143,3 +143,22 @@ class RunwayManager: | |||||||
|                 eta = candidate |                 eta = candidate | ||||||
|  |  | ||||||
|         return selectedRunway, eta, lostTime |         return selectedRunway, eta, lostTime | ||||||
|  |  | ||||||
|  |     def registerNode(self, node : Node, runway : str): | ||||||
|  |         self.RunwayInbounds[runway] = node | ||||||
|  |  | ||||||
|  |          # find the corresponding IAF | ||||||
|  |         iaf = node.ArrivalCandidates[runway].ArrivalRoute[0].Waypoint.Name | ||||||
|  |         if iaf in self.IafInbounds: | ||||||
|  |             delta = 100000.0 | ||||||
|  |             targetLevel = None | ||||||
|  |  | ||||||
|  |             # find the planned level | ||||||
|  |             for level in self.IafInbounds[iaf]: | ||||||
|  |                 difference = abs(level - node.ArrivalCandidates[runway].ArrivalRoute[0].Altitude) | ||||||
|  |                 if difference < delta: | ||||||
|  |                     delta = difference | ||||||
|  |                     targetLevel = level | ||||||
|  |  | ||||||
|  |             if targetLevel in self.IafInbounds[iaf]: | ||||||
|  |                 self.IafInbounds[iaf][targetLevel] = node | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user