Changeset 273:066f7271e849 for src/mlx
- Timestamp:
- 07/03/12 17:30:04 (12 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- src/mlx
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/mlx/acft.py
r271 r273 122 122 123 123 self._checkers.append(checks.ReverserChecker()) 124 125 if flight.aircraftType is not None and config.enableApproachCallouts: 126 approachCallouts = flight.config.getApproachCallouts(flight.aircraftType) 127 if approachCallouts: 128 self._checkers.append(checks.ApproachCalloutsPlayer(approachCallouts)) 124 129 125 130 self._smoothedIAS = SmoothedValue() -
src/mlx/checks.py
r271 r273 219 219 #--------------------------------------------------------------------------------------- 220 220 221 class ApproachCalloutsPlayer(StateChecker): 222 """A state checker that plays a sequence of approach callouts. 223 224 It tracks the altitude during the descent and landing phases and 225 if the altitude crosses one that has a callout associated with and 226 the vertical speed is negative, that callout will be played.""" 227 def __init__(self, approachCallouts): 228 """Construct the approach callouts player.""" 229 self._approachCallouts = approachCallouts 230 self._altitudes = approachCallouts.getAltitudes(descending = False) 231 232 def check(self, flight, aircraft, logger, oldState, state): 233 """Check if we need to play a callout.""" 234 if (flight.stage==const.STAGE_DESCENT or \ 235 flight.stage==const.STAGE_LANDING) and state.vs<0: 236 oldRadioAltitude = oldState.radioAltitude 237 radioAltitude = state.radioAltitude 238 for altitude in self._altitudes: 239 if radioAltitude<=altitude and \ 240 oldRadioAltitude>altitude: 241 startSound(self._approachCallouts[altitude]) 242 break 243 244 #--------------------------------------------------------------------------------------- 245 221 246 class StateChangeLogger(StateChecker): 222 247 """Base class for classes the instances of which check if a specific change has -
src/mlx/config.py
r270 r273 157 157 index += 1 158 158 159 def getAltitudes(self, descending = True): 160 """Get the altitudes in decreasing order by default.""" 161 altitudes = self._mapping.keys() 162 altitudes.sort(reverse = descending) 163 return altitudes 164 165 def __nonzero__(self): 166 """Return if there is anything in the mapping.""" 167 return not not self._mapping 168 159 169 def __eq__(self, other): 160 170 """Determine if the approach callout mapping is equal to the given … … 172 182 173 183 def __getitem__(self, altitude): 174 """Get the file that is associated with the highest altitude not higher 175 than the given one. 184 """Get the file that is associated with the given altitude. 176 185 177 186 If no such file found, return None.""" 178 candidate = None 179 for (alt, path) in self._mapping.iteritems(): 180 if alt<=altitude: 181 if candidate is None or alt>candidate[0]: 182 candidate = (alt, path) 183 184 return candidate 187 return self._mapping[altitude] if altitude in self._mapping else None 185 188 186 189 def __iter__(self): 187 190 """Iterate over the pairs of altitudes and paths in decreasing order of 188 191 the altitude.""" 189 altitudes = self._mapping.keys() 190 altitudes.sort(reverse = True) 192 altitudes = self.getAltitudes() 191 193 192 194 for altitude in altitudes: -
src/mlx/pyuipc_sim.py
r243 r273 552 552 elif offset==0x0570: # Altitude 553 553 self.altitude = value / const.FEETTOMETRES / 65536.0 / 65536.0 554 self.radioAltitude = self.altitude - 517 554 555 elif offset==0x0578: # Pitch 555 556 self.pitch = value * 360.0 / 65536.0 / 65536.0 … … 668 669 raise FSUIPCException(ERR_DATA) 669 670 elif offset==0x31e4: # Radio altitude 671 self.radioAltitude = value / const.FEETTOMETRES / 65536.0 672 self.altitude = self.radioAltitude + 517 673 elif offset==0x31e4: # Radio altitude 670 674 raise FSUIPCException(ERR_DATA) 671 675 elif offset==0x320c:
Note:
See TracChangeset
for help on using the changeset viewer.