diff --git a/fbw-a32nx/src/systems/instruments/src/ND/instrument.tsx b/fbw-a32nx/src/systems/instruments/src/ND/instrument.tsx index 9066f2aa403..9ba3f7bdc67 100644 --- a/fbw-a32nx/src/systems/instruments/src/ND/instrument.tsx +++ b/fbw-a32nx/src/systems/instruments/src/ND/instrument.tsx @@ -11,7 +11,14 @@ import { InstrumentBackplane, Subject, } from '@microsoft/msfs-sdk'; -import { a320EfisRangeSettings, a320TerrainThresholdPadValue, ArincEventBus, EfisSide } from '@flybywiresim/fbw-sdk'; +import { + a320EfisRangeSettings, + a320NdModeChange, + a320NdRangeChange, + a320TerrainThresholdPadValue, + ArincEventBus, + EfisSide, +} from '@flybywiresim/fbw-sdk'; import { NDComponent } from '@flybywiresim/navigation-display'; import { NDSimvarPublisher, NDSimvars } from './NDSimvarPublisher'; @@ -146,6 +153,8 @@ class NDInstrument implements FsInstrument { side={this.efisSide} rangeValues={a320EfisRangeSettings} terrainThresholdPaddingText={a320TerrainThresholdPadValue} + rangeChangeMessage={a320NdRangeChange} + modeChangeMessage={a320NdModeChange} /> , document.getElementById('ND_CONTENT'), diff --git a/fbw-a32nx/src/systems/instruments/src/ND/style.scss b/fbw-a32nx/src/systems/instruments/src/ND/style.scss index bff2254fe3b..8211b13e690 100644 --- a/fbw-a32nx/src/systems/instruments/src/ND/style.scss +++ b/fbw-a32nx/src/systems/instruments/src/ND/style.scss @@ -21,3 +21,7 @@ background: $display-background; fill: rgb(4,4,5); } + +.mode-range-change { + font-size: 27.5px; +} diff --git a/fbw-a380x/src/systems/instruments/src/ND/NDControlEvents.ts b/fbw-a380x/src/systems/instruments/src/ND/NDControlEvents.ts index 253518737e2..02241171a1e 100644 --- a/fbw-a380x/src/systems/instruments/src/ND/NDControlEvents.ts +++ b/fbw-a380x/src/systems/instruments/src/ND/NDControlEvents.ts @@ -77,4 +77,9 @@ export interface NDControlEvents { * Event for the CHRONO button being pushed */ chrono_pushed: void; + + /** + * Set if a range change is in progress for VD (true, false) + */ + set_range_change: boolean; } diff --git a/fbw-a380x/src/systems/instruments/src/ND/VerticalDisplay.tsx b/fbw-a380x/src/systems/instruments/src/ND/VerticalDisplay.tsx index 0d1671ad770..53102345a00 100644 --- a/fbw-a380x/src/systems/instruments/src/ND/VerticalDisplay.tsx +++ b/fbw-a380x/src/systems/instruments/src/ND/VerticalDisplay.tsx @@ -17,6 +17,7 @@ import { } from '@microsoft/msfs-sdk'; import { NDSimvars } from 'instruments/src/ND/NDSimvarPublisher'; import { DmcLogicEvents } from 'instruments/src/MsfsAvionicsCommon/providers/DmcPublisher'; +import { NDControlEvents } from './NDControlEvents'; import './style.scss'; import { SimplaneValues } from 'instruments/src/MsfsAvionicsCommon/providers/SimplaneValueProvider'; @@ -36,7 +37,7 @@ export class VerticalDisplayDummy extends DisplayComponent private readonly maxAlt = 24000; private readonly sub = this.props.bus.getArincSubscriber< - GenericFcuEvents & NDSimvars & DmcLogicEvents & SimplaneValues + GenericFcuEvents & NDSimvars & DmcLogicEvents & SimplaneValues & NDControlEvents >(); private topRef = FSComponent.createRef(); @@ -47,6 +48,8 @@ export class VerticalDisplayDummy extends DisplayComponent (r) => a380EfisRangeSettings[r], ); + private readonly rangeChangeInProgress = ConsumerSubject.create(this.sub.on('set_range_change').whenChanged(), false); + private readonly visible = MappedSubject.create( ([mode, range]) => [EfisNdMode.PLAN, EfisNdMode.ROSE_ILS, EfisNdMode.ROSE_VOR].includes(mode) || range === -1 ? 'none' : 'block', @@ -189,6 +192,11 @@ export class VerticalDisplayDummy extends DisplayComponent FL + (it ? 'visible' : 'hidden'))}> + + VD RANGE CHANGE + + ); } diff --git a/fbw-a380x/src/systems/instruments/src/ND/instrument.tsx b/fbw-a380x/src/systems/instruments/src/ND/instrument.tsx index a9b6a5eb8c7..9942344a5dd 100644 --- a/fbw-a380x/src/systems/instruments/src/ND/instrument.tsx +++ b/fbw-a380x/src/systems/instruments/src/ND/instrument.tsx @@ -16,6 +16,8 @@ import { import { A380EfisNdRangeValue, a380EfisRangeSettings, + a380NdModeChange, + a380NdRangeChange, a380TerrainThresholdPadValue, ArincEventBus, BtvSimvarPublisher, @@ -243,6 +245,8 @@ class NDInstrument implements FsInstrument { side={this.efisSide} rangeValues={a380EfisRangeSettings} terrainThresholdPaddingText={a380TerrainThresholdPadValue} + rangeChangeMessage={a380NdRangeChange} + modeChangeMessage={a380NdModeChange} /> { rangeValues: T[]; terrainThresholdPaddingText: string; + + rangeChangeMessage: string; + + modeChangeMessage: string; } export class NDComponent extends DisplayComponent> { @@ -213,6 +217,10 @@ export class NDComponent extends DisplayComponent> this.invalidateRange(); }); + this.rangeChangeInProgress.sub((rangechange) => { + this.props.bus.getPublisher().pub('set_range_change', rangechange); + }); + sub .on('ndMode') .whenChanged() @@ -453,8 +461,13 @@ export class NDComponent extends DisplayComponent> HDG - - RANGE CHANGE + + {this.props.rangeChangeMessage} extends DisplayComponent> )} x={384} y={320} - class="Green FontIntermediate" + class="Green mode-range-change" > - MODE CHANGE + {this.props.modeChangeMessage} diff --git a/fbw-common/src/systems/instruments/src/ND/NDControlEvents.ts b/fbw-common/src/systems/instruments/src/ND/NDControlEvents.ts index bfc2900c00c..8399ad6794e 100644 --- a/fbw-common/src/systems/instruments/src/ND/NDControlEvents.ts +++ b/fbw-common/src/systems/instruments/src/ND/NDControlEvents.ts @@ -77,4 +77,9 @@ export interface NDControlEvents { * Event for the CHRONO button being pushed */ chrono_pushed: void; + + /** + * Set if a range change is in progress for VD (true, false) + */ + set_range_change: boolean; } diff --git a/fbw-common/src/systems/instruments/src/NavigationDisplay.ts b/fbw-common/src/systems/instruments/src/NavigationDisplay.ts index d31ff64fc96..5b1ed4b954e 100644 --- a/fbw-common/src/systems/instruments/src/NavigationDisplay.ts +++ b/fbw-common/src/systems/instruments/src/NavigationDisplay.ts @@ -21,6 +21,14 @@ export const a320TerrainThresholdPadValue = '0'; export const a380TerrainThresholdPadValue = '\\xa0'; +export const a320NdRangeChange = 'RANGE CHANGE'; + +export const a380NdRangeChange = 'ND RANGE CHANGE'; + +export const a320NdModeChange = 'MODE CHANGE'; + +export const a380NdModeChange = 'ND MODE CHANGE'; + export enum EfisNdMode { ROSE_ILS, ROSE_VOR,