diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 0fee134c9a5..375befd5b4a 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -78,6 +78,7 @@ 1. [FMS] Fixed issue with airport loading timing out on MSFS2024 - @tracernz (Mike) 1. [A32NX] Fixed APU fire detection - @tracernz (Mike) 1. [A380X/COND] Fix wasm crash during rapid decompression - @mjuhe (Miquel Juhe) +1. [A380X/FCU] Fix display of values on FCU during light test - @heclak (Heclak) ## 0.12.0 diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/html_ui/Fonts/fbw-a380x/A380X_FCU.ttf b/fbw-a380x/src/base/flybywire-aircraft-a380-842/html_ui/Fonts/fbw-a380x/A380X_FCU.ttf index 5016a4257ea..6469170783c 100644 Binary files a/fbw-a380x/src/base/flybywire-aircraft-a380-842/html_ui/Fonts/fbw-a380x/A380X_FCU.ttf and b/fbw-a380x/src/base/flybywire-aircraft-a380-842/html_ui/Fonts/fbw-a380x/A380X_FCU.ttf differ diff --git a/fbw-a380x/src/base/flybywire-aircraft-a380-842/html_ui/Images/fbw-a380x/fcu/TEST.png b/fbw-a380x/src/base/flybywire-aircraft-a380-842/html_ui/Images/fbw-a380x/fcu/TEST.png new file mode 100644 index 00000000000..03456c533c2 Binary files /dev/null and b/fbw-a380x/src/base/flybywire-aircraft-a380-842/html_ui/Images/fbw-a380x/fcu/TEST.png differ diff --git a/fbw-a380x/src/fonts/A380X_FCU.sfd b/fbw-a380x/src/fonts/A380X_FCU.sfd index 7b6d4bf2d69..2a39043f653 100644 --- a/fbw-a380x/src/fonts/A380X_FCU.sfd +++ b/fbw-a380x/src/fonts/A380X_FCU.sfd @@ -22,7 +22,7 @@ OS2Version: 4 OS2_WeightWidthSlopeOnly: 0 OS2_UseTypoMetrics: 1 CreationTime: 1603675803 -ModificationTime: 1706370840 +ModificationTime: 1732268502 PfmFamily: 17 TTFWeight: 400 TTFWidth: 5 @@ -85,8 +85,8 @@ NameList: AGL For New Fonts DisplaySize: -48 AntiAlias: 1 FitToEm: 0 -WinInfo: 58 29 11 -BeginChars: 65539 36 +WinInfo: 0 29 11 +BeginChars: 65539 37 StartChar: .notdef Encoding: 65536 -1 0 @@ -218,21 +218,21 @@ EndChar StartChar: period Encoding: 46 46 5 -Width: 180 +Width: 0 GlyphClass: 1 Flags: W LayerCount: 2 Fore SplineSet -28 -100 m 128,-1,1 - 28 -71 28 -71 49 -50 c 128,-1,2 - 70 -29 70 -29 99 -29 c 128,-1,3 - 128 -29 128 -29 149 -50 c 128,-1,4 - 170 -71 170 -71 170 -100 c 128,-1,5 - 170 -129 170 -129 149 -150 c 128,-1,6 - 128 -171 128 -171 99 -171 c 128,-1,7 - 70 -171 70 -171 49 -150 c 128,-1,0 - 28 -129 28 -129 28 -100 c 128,-1,1 +-70 -100 m 128,-1,1 + -70 -71 -70 -71 -49 -50 c 128,-1,2 + -28 -29 -28 -29 1 -29 c 128,-1,3 + 30 -29 30 -29 51 -50 c 128,-1,4 + 72 -71 72 -71 72 -100 c 128,-1,5 + 72 -129 72 -129 51 -150 c 128,-1,6 + 30 -171 30 -171 1 -171 c 128,-1,7 + -28 -171 -28 -171 -49 -150 c 128,-1,0 + -70 -129 -70 -129 -70 -100 c 128,-1,1 EndSplineSet Validated: 1 EndChar @@ -1993,6 +1993,7 @@ SplineSet 159 798 159 798 191 766 c 128,-1,8 223 734 223 734 223 689 c 128,-1,9 EndSplineSet +Validated: 1 EndChar StartChar: d @@ -2208,5 +2209,173 @@ LayerCount: 2 Fore Validated: 1 EndChar + +StartChar: asterisk +Encoding: 42 42 36 +Width: 800 +Flags: W +LayerCount: 2 +Fore +SplineSet +451 403 m 4,0,1 + 447 396 447 396 440 396 c 6,2,-1 + 354 396 l 6,3,4 + 347 396 347 396 343 403 c 4,5,6 + 332 421 332 421 323 437 c 4,7,8 + 318 446 318 446 318 457 c 132,-1,9 + 318 468 318 468 323 477 c 4,10,11 + 371 557 371 557 384 578 c 4,12,13 + 388 585 388 585 397 585 c 132,-1,14 + 406 585 406 585 410 578 c 4,15,16 + 417 567 417 567 440 528.5 c 132,-1,17 + 463 490 463 490 471 477 c 4,18,19 + 477 468 477 468 477 457.5 c 132,-1,20 + 477 447 477 447 471 437 c 4,21,22 + 458 415 458 415 451 403 c 4,0,1 +264 366 m 4,23,24 + 282 377 282 377 304 377 c 6,25,-1 + 524 377 l 6,26,27 + 531 377 531 377 537 372 c 4,28,29 + 552 355 552 355 584 321 c 4,30,31 + 593 311 593 311 593 298 c 4,32,33 + 593 284 593 284 583 274 c 4,34,35 + 558 248 558 248 539 230 c 4,36,37 + 532 222 532 222 520 222 c 6,38,-1 + 301 222 l 6,39,40 + 282 222 282 222 266 231 c 4,41,42 + 261 234 261 234 190 275 c 4,43,44 + 177 282 177 282 177 298 c 4,45,46 + 177 313 177 313 190 321 c 4,47,48 + 197 325 197 325 224 341.5 c 132,-1,49 + 251 358 251 358 264 366 c 4,23,24 +451 196 m 4,50,51 + 458 184 458 184 471 162 c 4,52,53 + 477 152 477 152 477 141.5 c 132,-1,54 + 477 131 477 131 471 122 c 4,55,56 + 427 48 427 48 410 21 c 4,57,58 + 406 14 406 14 397 14 c 132,-1,59 + 388 14 388 14 384 21 c 4,60,61 + 377 33 377 33 354 71 c 132,-1,62 + 331 109 331 109 323 122 c 4,63,64 + 318 131 318 131 318 142 c 132,-1,65 + 318 153 318 153 323 162 c 4,66,67 + 339 189 339 189 343 196 c 4,68,69 + 347 202 347 202 354 202 c 6,70,-1 + 440 202 l 6,71,72 + 447 202 447 202 451 196 c 4,50,51 +695 319 m 0,73,74 + 685 308 685 308 666 307 c 0,75,76 + 665 307 665 307 659 306.5 c 128,-1,77 + 653 306 653 306 649 306 c 0,78,79 + 627 306 627 306 611 317 c 0,80,81 + 592 329 592 329 548 382 c 0,82,83 + 541 390 541 390 541 401 c 0,84,85 + 541 430 541 430 541 453 c 0,86,87 + 541 481 541 481 541 502.5 c 128,-1,88 + 541 524 541 524 541 551.5 c 128,-1,89 + 541 579 541 579 541 612 c 0,90,91 + 541 625 541 625 547 637 c 0,92,93 + 580 710 580 710 602 758 c 0,94,95 + 608 771 608 771 623 771 c 0,96,97 + 631 771 631 771 638 767 c 0,98,99 + 655 753 655 753 668 735 c 0,100,101 + 682 716 682 716 692 694 c 0,102,103 + 703 669 703 669 703 641 c 2,104,-1 + 703 346 l 2,105,106 + 703 339 703 339 702 332 c 0,107,108 + 700 324 700 324 695 319 c 0,73,74 +114 325 m 0,109,110 + 110 327 110 327 107 330 c 0,111,112 + 97 339 97 339 97 352 c 2,113,-1 + 97 645 l 2,114,115 + 97 681 97 681 115 711 c 0,116,117 + 115 712 115 712 121 723 c 0,118,119 + 127 733 127 733 139 733 c 0,120,121 + 147 733 147 733 152 727 c 0,122,123 + 158 722 158 722 196 684 c 128,-1,124 + 234 646 234 646 247 633 c 0,125,126 + 259 621 259 621 259 605 c 2,127,-1 + 259 388 l 2,128,129 + 259 377 259 377 249 372 c 0,130,131 + 238 365 238 365 204.5 346 c 128,-1,132 + 171 327 171 327 162 322 c 0,133,134 + 152 317 152 317 141 317 c 0,135,136 + 132 317 132 317 124 320 c 0,137,138 + 117 323 117 323 114 325 c 0,109,110 +153 743 m 0,139,140 + 151 751 151 751 153 754.5 c 128,-1,141 + 155 758 155 758 164 767 c 0,142,143 + 169 772 169 772 179 778 c 0,144,145 + 200 793 200 793 226 793 c 2,146,-1 + 555 793 l 1,147,-1 + 572 792 l 2,148,149 + 573 792 573 792 576 791.5 c 128,-1,150 + 579 791 579 791 581 791 c 0,151,152 + 589 790 589 790 594 785 c 0,153,154 + 600 779 600 779 598 771 c 0,155,156 + 593 761 593 761 542 647 c 0,157,158 + 536 633 536 633 521 633 c 2,159,-1 + 272 633 l 2,160,161 + 260 633 260 633 252 642 c 0,162,163 + 157 735 157 735 153 743 c 0,139,140 +695 278 m 0,164,165 + 700 273 700 273 702 265 c 0,166,167 + 703 258 703 258 703 251 c 2,168,-1 + 703 -45 l 2,169,170 + 703 -72 703 -72 692 -97 c 0,171,172 + 682 -119 682 -119 668 -138 c 0,173,174 + 655 -156 655 -156 638 -170 c 0,175,176 + 631 -175 631 -175 623 -175 c 0,177,178 + 608 -175 608 -175 602 -161 c 0,179,180 + 600 -157 600 -157 577.5 -107.5 c 128,-1,181 + 555 -58 555 -58 547 -40 c 0,182,183 + 541 -28 541 -28 541 -15 c 0,184,185 + 541 18 541 18 541 45.5 c 128,-1,186 + 541 73 541 73 541 94.5 c 128,-1,187 + 541 116 541 116 541 144 c 0,188,189 + 541 167 541 167 541 196 c 0,190,191 + 541 206 541 206 548 214 c 0,192,193 + 592 268 592 268 611 280 c 0,194,195 + 627 291 627 291 649 291 c 0,196,197 + 653 291 653 291 659 290.5 c 128,-1,198 + 665 290 665 290 666 290 c 0,199,200 + 685 289 685 289 695 278 c 0,164,165 +153 -143 m 0,201,202 + 157 -135 157 -135 252 -42 c 0,203,204 + 260 -34 260 -34 272 -34 c 2,205,-1 + 521 -34 l 2,206,207 + 536 -34 536 -34 542 -47 c 0,208,209 + 593 -161 593 -161 598 -172 c 0,210,211 + 600 -179 600 -179 594 -185 c 0,212,213 + 589 -190 589 -190 581 -191 c 0,214,215 + 580 -191 580 -191 576.5 -191.5 c 128,-1,216 + 573 -192 573 -192 572 -192 c 2,217,-1 + 555 -193 l 1,218,-1 + 226 -193 l 2,219,220 + 200 -193 200 -193 179 -178 c 0,221,222 + 169 -172 169 -172 164 -167 c 0,223,224 + 155 -158 155 -158 153 -154.5 c 128,-1,225 + 151 -151 151 -151 153 -143 c 0,201,202 +114 275 m 0,226,227 + 117 277 117 277 124 280 c 0,228,229 + 132 283 132 283 141 283 c 0,230,231 + 152 283 152 283 162 278 c 0,232,233 + 171 273 171 273 204.5 254 c 128,-1,234 + 238 235 238 235 249 228 c 0,235,236 + 259 223 259 223 259 212 c 2,237,-1 + 259 -6 l 2,238,239 + 259 -22 259 -22 247 -33 c 0,240,241 + 234 -46 234 -46 196 -84 c 128,-1,242 + 158 -122 158 -122 152 -127 c 0,243,244 + 147 -133 147 -133 139 -133 c 0,245,246 + 127 -133 127 -133 121 -123 c 256,247,248 + 115 -113 115 -113 115 -112 c 0,249,250 + 97 -81 97 -81 97 -45 c 2,251,-1 + 97 247 l 2,252,253 + 97 261 97 261 107 269 c 0,254,255 + 110 272 110 272 114 275 c 0,226,227 +EndSplineSet +Validated: 2049 +EndChar EndChars EndSplineFont diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Components/Altitude.tsx b/fbw-a380x/src/systems/instruments/src/FCU/Components/Altitude.tsx index a2b25c61d63..35829716f51 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Components/Altitude.tsx +++ b/fbw-a380x/src/systems/instruments/src/FCU/Components/Altitude.tsx @@ -19,7 +19,7 @@ export class Altitude extends DisplayComponent { private readonly altText = MappedSubject.create( ([isLightTest, altitude]) => { if (isLightTest) { - return '88888'; + return '8.8.8.8.8'; } const value = Math.floor(Math.max(altitude, 100)); return value.toString().padStart(5, '0'); diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Components/Baro.tsx b/fbw-a380x/src/systems/instruments/src/FCU/Components/Baro.tsx index 4fe6fd83fcd..363526576cd 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Components/Baro.tsx +++ b/fbw-a380x/src/systems/instruments/src/FCU/Components/Baro.tsx @@ -47,7 +47,7 @@ export class Baro extends DisplayComponent { private readonly baroText = MappedSubject.create( ([mode, correction, isLightTest]) => { if (isLightTest) { - return '88.88'; + return '8.8.8.8'; } switch (mode) { case 'STD': @@ -66,10 +66,18 @@ export class Baro extends DisplayComponent { ); private readonly preSelBaroText = MappedSubject.create( - ([correction, isVisible]) => - isVisible ? (correction < 100 ? correction.toFixed(2) : correction.toFixed(0).padStart(4, '0')) : '', + ([correction, isVisible, isLightTest]) => { + if (isLightTest) { + return '8.8.8.8'; + } else if (isVisible) { + return correction < 100 ? correction.toFixed(2) : correction.toFixed(0).padStart(4, '0'); + } else { + return ''; + } + }, this.correction, this.isPreSelVisible, + this.isLightTestActive, ); onAfterRender(_node: VNode): void { @@ -97,7 +105,8 @@ export class Baro extends DisplayComponent { > QNH - { }} > QFE - + */} {this.preSelBaroText} diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Components/Heading.tsx b/fbw-a380x/src/systems/instruments/src/FCU/Components/Heading.tsx index 3cde4bb987d..68476f1c811 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Components/Heading.tsx +++ b/fbw-a380x/src/systems/instruments/src/FCU/Components/Heading.tsx @@ -10,16 +10,19 @@ export class Heading extends DisplayComponent { return (
- + + TRUE + + HDG - + TRK - + --- - + ° diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Components/NdData.tsx b/fbw-a380x/src/systems/instruments/src/FCU/Components/NdData.tsx index 7537ca539f5..fe072e8d95f 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Components/NdData.tsx +++ b/fbw-a380x/src/systems/instruments/src/FCU/Components/NdData.tsx @@ -2,8 +2,17 @@ // SPDX-License-Identifier: GPL-3.0 import { NavAidMode } from '@flybywiresim/fbw-sdk'; -import { ConsumerSubject, DisplayComponent, EventBus, FSComponent, VNode } from '@microsoft/msfs-sdk'; +import { + Subject, + ConsumerSubject, + DisplayComponent, + EventBus, + FSComponent, + VNode, + SubscribableMapFunctions, +} from '@microsoft/msfs-sdk'; import { FcuEvents } from 'instruments/src/FCU/Publishers/FcuPublisher'; +import { OverheadEvents } from '../../MsfsAvionicsCommon/providers/OverheadPublisher'; export interface NdDataProps { readonly bus: EventBus; @@ -22,7 +31,7 @@ export class NdData extends DisplayComponent { [NavAidMode.ADF]: '/Images/fbw-a380x/fcu/ADF2.png', }; - private readonly sub = this.props.bus.getSubscriber(); + private readonly sub = this.props.bus.getSubscriber(); private readonly navaidMode1 = ConsumerSubject.create( this.sub.on(this.props.index === 2 ? 'fcu_right_navaid_mode_1' : 'fcu_left_navaid_mode_1'), @@ -33,6 +42,15 @@ export class NdData extends DisplayComponent { NavAidMode.Off, ); + private lightsTest = Subject.create(false); + + onAfterRender(_node: VNode): void { + this.sub + .on('ovhd_ann_lt_test_active') + .whenChanged() + .handle((v) => this.lightsTest.set(v)); + } + render(): VNode | null { return (
{ }} >
- - - - - + + + + + + {/* LIGHT TESTS */} + + + + +
NdData.NAVAID_1_IMAGES[v])} /> - - - + + + NdData.NAVAID_2_IMAGES[v])} /> + {/* LIGHT TESTS */} + + + + +
); diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Components/VerticalSpeed.tsx b/fbw-a380x/src/systems/instruments/src/FCU/Components/VerticalSpeed.tsx index 4d852f7b75c..402d2e5e74f 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Components/VerticalSpeed.tsx +++ b/fbw-a380x/src/systems/instruments/src/FCU/Components/VerticalSpeed.tsx @@ -10,12 +10,12 @@ export class VerticalSpeed extends DisplayComponent { return (
- - V/S - - + FPA + + V/S + ----- diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Managers/HeadingManager.ts b/fbw-a380x/src/systems/instruments/src/FCU/Managers/HeadingManager.ts index 3ef20270f58..f08d9ace0fa 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Managers/HeadingManager.ts +++ b/fbw-a380x/src/systems/instruments/src/FCU/Managers/HeadingManager.ts @@ -14,6 +14,7 @@ export class HeadingManager extends TemporaryHax implements Instrument { private _rotaryEncoderIncrement = 0.1; private _rotaryEncoderPreviousTimestamp = 0; + private textTRUE?: ReturnType; private textHDG?: ReturnType; private textTRK?: ReturnType; private signDegrees?: ReturnType; @@ -39,6 +40,7 @@ export class HeadingManager extends TemporaryHax implements Instrument { } public init(): void { + this.textTRUE = this.getTextElement('TRUE'); this.textHDG = this.getTextElement('HDG'); this.textTRK = this.getTextElement('TRK'); this.signDegrees = this.getTextElement('DEGREES'); @@ -220,14 +222,16 @@ export class HeadingManager extends TemporaryHax implements Instrument { this.isTRKMode = _isTRKMode; this.showSelectedHeading = _showSelectedHeading; this.currentValue = _value; + this.setTextElementActive(this.textTRUE, false); this.setTextElementActive(this.textHDG, !this.isTRKMode); this.setTextElementActive(this.textTRK, !!this.isTRKMode); this.lightsTest = _lightsTest; if (this.lightsTest) { + this.setTextElementActive(this.textTRUE, true); this.setTextElementActive(this.textHDG, true); this.setTextElementActive(this.textTRK, true); this.setElementVisibility(this.signDegrees, true); - this.textValueContent = '.8.8.8'; + this.textValueContent = '8.8.8'; return; } if ((this.isManagedArmed || this.isManagedActive) && !this.showSelectedHeading) { diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Managers/SpeedManager.ts b/fbw-a380x/src/systems/instruments/src/FCU/Managers/SpeedManager.ts index d5b1a7bbf5d..e97e890d55e 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Managers/SpeedManager.ts +++ b/fbw-a380x/src/systems/instruments/src/FCU/Managers/SpeedManager.ts @@ -207,7 +207,7 @@ export class SpeedManager extends TemporaryHax implements Instrument { } this.lightsTest = _lightsTest; if (this.lightsTest) { - this.textValueContent = '.8.8.8'; + this.textValueContent = '8.8.8'; this.setTextElementActive(this.textSPD, true); this.setTextElementActive(this.textMACH, true); this.setTextElementActive(this.textKNOTS, true); diff --git a/fbw-a380x/src/systems/instruments/src/FCU/Managers/VerticalSpeedManager.ts b/fbw-a380x/src/systems/instruments/src/FCU/Managers/VerticalSpeedManager.ts index b371fcc44a6..fe76a376740 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/Managers/VerticalSpeedManager.ts +++ b/fbw-a380x/src/systems/instruments/src/FCU/Managers/VerticalSpeedManager.ts @@ -207,7 +207,7 @@ export class VerticalSpeedManager extends TemporaryHax implements Instrument { if (this.lightsTest) { this.setTextElementActive(this.textVS, true); this.setTextElementActive(this.textFPA, true); - this.textValueContent = '+8.888'; + this.textValueContent = '+*.8.8.8'; return; } this.setTextElementActive(this.textVS, !this.isFPAMode); @@ -217,7 +217,7 @@ export class VerticalSpeedManager extends TemporaryHax implements Instrument { if (this.isActive && this.currentState != A320_Neo_FCU_VSpeed_State.Idle) { const sign = currentValue < 0 ? '-' : '+'; if (this.isFPAMode) { - this.textValueContent = `${sign}${MathUtils.round(Math.abs(currentValue), 0.1).toFixed(1)}`; + this.textValueContent = `${sign.padStart(2, '\u00A0')}${MathUtils.round(Math.abs(currentValue), 0.1).toFixed(1)}`; } else if (this.currentState === A320_Neo_FCU_VSpeed_State.Zeroing) { this.textValueContent = '~00oo'; } else { diff --git a/fbw-a380x/src/systems/instruments/src/FCU/style.scss b/fbw-a380x/src/systems/instruments/src/FCU/style.scss index 74d7e17372a..e3b7acb317d 100644 --- a/fbw-a380x/src/systems/instruments/src/FCU/style.scss +++ b/fbw-a380x/src/systems/instruments/src/FCU/style.scss @@ -141,9 +141,9 @@ text.Label.Visible { } #FCU_CONTENT #Mainframe #LargeScreen #Heading { - width: 30%; + width: 50%; height: 100%; - left: 50%; + left: 30%; position: absolute; }