Split 2020 and 2024 packages due to Avionics framework package

This commit is contained in:
Kilian committed 2025-02-22 02:49:51 +01:00
1 parent 7112433747
commit 2604fbb75d
113 files changed
+6147 -151

No files matched your search

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1 @@
#KH_CTRL{align-items:center;display:flex;height:80px;justify-content:space-around}#KH_CTRL .button{border:1px solid #000;border-radius:5px;padding-left:7px;padding-right:7px}#KH_CTRL .button .icon{margin-top:6px;width:30px}#KH_CTRL .button:hover:not([disabled]){background-color:var(--buttonHoverColor)}#KH_CTRL .button.d180{transform:rotate(180deg)}#KH_CTRL .button.d90{transform:rotate(90deg)}@font-face{font-family:Consolas;font-style:normal;font-weight:100;src:url(assets/fonts/Consolas.ttf) format("truetype")}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:#d3d3d3}::-webkit-scrollbar-thumb{background:gray;height:200px}::-webkit-scrollbar-thumb:hover{background:#a9a9a9}#root{--buttonHoverColor:#d3d3d3;--fss-select-hover:#d3d3d3;background-image:url(../EFB/Images/bg.png);background-size:100% 100%;color:#000;font-size:25px;height:100%;padding:3vw;width:594px}#root #KH_FE_FPLAN{height:calc(100vh - 6vw - 180px);margin-bottom:3vw;margin-top:100px;overflow-x:hidden;overflow-y:scroll;width:100%}#root #KH_FE_FPLAN #OFP div,#root #KH_FE_FPLAN #TLR div{font-size:unset!important;line-height:unset!important}#root #KH_FE_FPLAN #OFP pre,#root #KH_FE_FPLAN #TLR pre{font-family:Consolas!important;font-size:13px;line-height:14px;white-space:pre}#root #KH_FE_FPLAN #OFP img{width:100%}#root #KH_FE_FPLAN.p2{height:calc(100vh - 6vw - 240px);margin-top:160px}
@@ -0,0 +1,7 @@
<link rel="stylesheet" href="index.css" />
<script type="text/html" import-script="/Pages/VCockpit/Instruments/FSS_B727/KH_FE_FPLAN/index.js"></script>
<script type="text/html" import-script="/JS/dataStorage.js"></script>
<script type="text/html" id="kh-fe-fplan">
<div id="root"></div>
</script>
@@ -0,0 +1 @@
class t{get isAlive(){return this._isAlive}get isPaused(){return this._isPaused}constructor(t,e,s){this.handler=t,this.initialNotifyFunc=e,this.onDestroy=s,this._isAlive=!0,this._isPaused=!1,this.canInitialNotify=void 0!==e}initialNotify(){if(!this._isAlive)throw new Error("HandlerSubscription: cannot notify a dead Subscription.");this.initialNotifyFunc&&this.initialNotifyFunc(this)}pause(){if(!this._isAlive)throw new Error("Subscription: cannot pause a dead Subscription.");return this._isPaused=!0,this}resume(t=!1){if(!this._isAlive)throw new Error("Subscription: cannot resume a dead Subscription.");return this._isPaused?(this._isPaused=!1,t&&this.initialNotify(),this):this}destroy(){this._isAlive&&(this._isAlive=!1,this.onDestroy&&this.onDestroy(this))}}class e{constructor(t,e={},s){this.subscribe=t,this.state=e,this.currentHandler=s,this.isConsumer=!0,this.activeSubs=new Map}handle(t,e=!1){let i;i=void 0!==this.currentHandler?e=>{this.currentHandler(e,this.state,t)}:t;let n=this.activeSubs.get(t);n||(n=[],this.activeSubs.set(t,n));const r=new s(this.subscribe(i,e),(e=>{const s=this.activeSubs.get(t);s&&(s.splice(s.indexOf(e),1),0===s.length&&this.activeSubs.delete(t))}));return r.isAlive?n.push(r):0===n.length&&this.activeSubs.delete(t),r}off(t){var e;const s=this.activeSubs.get(t);s&&(null===(e=s.shift())||void 0===e||e.destroy(),0===s.length&&this.activeSubs.delete(t))}atFrequency(t,s=!0){const i={previousTime:Date.now(),firstRun:s};return new e(this.subscribe,i,this.getAtFrequencyHandler(t))}getAtFrequencyHandler(t){const e=1e3/t;return(t,s,i)=>{const n=Date.now(),r=n-s.previousTime;if(e<=r||s.firstRun){for(;s.previousTime+e<n;)s.previousTime+=e;s.firstRun&&(s.firstRun=!1),this.with(t,i)}}}withPrecision(t){return new e(this.subscribe,{lastValue:0,hasLastValue:!1},this.getWithPrecisionHandler(t))}getWithPrecisionHandler(t){return(e,s,i)=>{const n=e,r=Math.pow(10,t),a=Math.round(n*r)/r;s.hasLastValue&&a===s.lastValue||(s.hasLastValue=!0,s.lastValue=a,this.with(a,i))}}whenChangedBy(t){return new e(this.subscribe,{lastValue:0,hasLastValue:!1},this.getWhenChangedByHandler(t))}getWhenChangedByHandler(t){return(e,s,i)=>{const n=e,r=Math.abs(n-s.lastValue);(!s.hasLastValue||r>=t)&&(s.hasLastValue=!0,s.lastValue=n,this.with(e,i))}}whenChanged(){return new e(this.subscribe,{lastValue:"",hasLastValue:!1},this.getWhenChangedHandler())}getWhenChangedHandler(){return(t,e,s)=>{e.hasLastValue&&e.lastValue===t||(e.hasLastValue=!0,e.lastValue=t,this.with(t,s))}}onlyAfter(t){return new e(this.subscribe,{previousTime:Date.now()},this.getOnlyAfterHandler(t))}getOnlyAfterHandler(t){return(e,s,i)=>{Date.now()-s.previousTime>t&&(s.previousTime+=t,this.with(e,i))}}with(t,e){void 0!==this.currentHandler?this.currentHandler(t,this.state,e):e(t)}}class s{get isAlive(){return this.sub.isAlive}get isPaused(){return this.sub.isPaused}get canInitialNotify(){return this.sub.canInitialNotify}constructor(t,e){this.sub=t,this.onDestroy=e}pause(){return this.sub.pause(),this}resume(t=!1){return this.sub.resume(t),this}destroy(){this.sub.destroy(),this.onDestroy(this)}}class i{constructor(t){this.bus=t}on(t){return new e(((e,s)=>this.bus.on(t,e,s)))}}class n{constructor(t=!1,e=!0){this._topicSubsMap=new Map,this._wildcardSubs=new Array,this._notifyDepthMap=new Map,this._wildcardNotifyDepth=0,this._eventCache=new Map,this.onWildcardSubDestroyedFunc=this.onWildcardSubDestroyed.bind(this),this._busId=Math.floor(2147483647*Math.random());const s="undefined"==typeof RegisterGenericDataListener?o:c;this._busSync=new s(this.pub.bind(this),this._busId),!0===e&&(this.syncEvent("event_bus","resync_request",!1),this.on("event_bus",(t=>{"resync_request"==t&&this.resyncEvents()})))}on(e,s,i=!1){let n=this._topicSubsMap.get(e);void 0===n&&(this._topicSubsMap.set(e,n=[]),this.pub("event_bus_topic_first_sub",e,!1,!1));const r=new t(s,(t=>{const s=this._eventCache.get(e);void 0!==s&&t.handler(s.data)}),(t=>{var s;if(0===(null!==(s=this._notifyDepthMap.get(e))&&void 0!==s?s:0)){const s=this._topicSubsMap.get(e);s&&s.splice(s.indexOf(t),1)}}));return n.push(r),i?r.pause():r.initialNotify(),r}off(t,e){const s=this._topicSubsMap.get(t),i=null==s?void 0:s.find((t=>t.handler===e));null==i||i.destroy()}onAll(e){const s=new t(e,void 0,this.onWildcardSubDestroyedFunc);return this._wildcardSubs.push(s),s}offAll(t){const e=this._wildcardSubs.find((e=>e.handler===t));null==e||e.destroy()}pub(t,e,s=!1,i=!0){var n;i&&this._eventCache.set(t,{data:e,synced:s});const r=this._topicSubsMap.get(t);if(void 0!==r){let a=!1;const o=null!==(n=this._notifyDepthMap.get(t))&&void 0!==n?n:0;this._notifyDepthMap.set(t,o+1);const c=r.length;for(let n=0;n<c;n++)try{const t=r[n];t.isAlive&&!t.isPaused&&t.handler(e),a||(a=!t.isAlive)}catch(n){console.error(`EventBus: error in handler: ${n}. topic: ${t}. data: ${e}. sync: ${s}. isCached: ${i}`,{error:n,topic:t,data:e,sync:s,isCached:i,subs:r}),n instanceof Error&&console.error(n.stack)}if(this._notifyDepthMap.set(t,o),a&&0===o){const e=rLine truncated
View File
File renamed without changes.
View File
File renamed without changes.
File renamed without changes.
File renamed without changes.
+9
View File
@@ -0,0 +1,9 @@
module.exports = {
printWidth: 120,
tabWidth: 2,
semi: true,
trailingComma: 'es5',
singleQuote: true,
arrowParens: 'always',
plugins: ['prettier-plugin-organize-imports'],
};
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1,30 @@
#KH_CTRL {
height: 80px;
display: flex;
justify-content: space-around;
align-items: center;
.button {
border-radius: 5px;
border: solid 1px #000;
padding-left: 7px;
padding-right: 7px;
.icon {
width: 30px;
margin-top: 6px;
}
&:hover:not([disabled]) {
background-color: var(--buttonHoverColor);
}
&.d180 {
transform: rotate(180deg);
}
&.d90 {
transform: rotate(90deg);
}
}
}
@@ -0,0 +1,83 @@
import {
ComponentProps,
ComputedSubject,
DisplayComponent,
FSComponent,
NodeReference,
Subscribable,
VNode,
} from '@microsoft/msfs-sdk';
import './controls.scss';
interface ControlsProps extends ComponentProps {
containerRef: NodeReference<HTMLDivElement>;
reload: () => void;
position: Subscribable<number>;
page: number;
}
export class Controls extends DisplayComponent<ControlsProps> {
private cycleRef = FSComponent.createRef<HTMLDivElement>();
private toTopRef = FSComponent.createRef<HTMLDivElement>();
private reloadRef = FSComponent.createRef<HTMLDivElement>();
private switchPosRef = FSComponent.createRef<HTMLDivElement>();
private buttonName = ComputedSubject.create<number, string>(0, (val) => {
if (val === 1) return '/Pages/VCockpit/Instruments/FSS_B727/KH_FE_FPLAN/assets/img/compass.png';
else if (val === 2) return '/Pages/VCockpit/Instruments/FSS_B727/KH_FE_FPLAN/assets/img/wrench.png';
return '';
});
constructor(props: ControlsProps) {
super(props);
props.position.sub((p) => this.buttonName.set(p));
}
private cycle = (): void => {
if (this.props.page === 0) SimVar.SetSimVarValue('L:KH_FE_FPLAN_P1', 'bool', true);
else if (this.props.page === 1) SimVar.SetSimVarValue('L:KH_FE_FPLAN_P1', 'bool', false);
};
private toTop = (): void => {
if (!this.props.containerRef.instance) return;
this.props.containerRef.instance.scrollTop = 0;
};
private switchPosition = (): void => {
if (this.props.position.get() === 1) SimVar.SetSimVarValue('L:KH_FE_FPLAN_BOARD', 'number', 2);
else if (this.props.position.get() === 2) SimVar.SetSimVarValue('L:KH_FE_FPLAN_BOARD', 'number', 1);
};
public render = (): VNode => (
<div id="KH_CTRL">
{this.props.page === 1 && (
<div ref={this.cycleRef} class="button">
<img class="icon" src="/Pages/VCockpit/Instruments/FSS_B727/EFB/Images/get.png" />
</div>
)}
<div ref={this.toTopRef} class="button d90">
<img class="icon" src="/Pages/VCockpit/Instruments/FSS_B727/EFB/Images/get.png" />
</div>
<div ref={this.reloadRef} class="button">
<img class="icon" src="/Pages/VCockpit/Instruments/FSS_B727/EFB/Images/cloud.png" />
</div>
<div ref={this.switchPosRef} class="button">
<img class="icon" src={this.buttonName} />
</div>
{this.props.page === 0 && (
<div ref={this.cycleRef} class="button d180">
<img class="icon" src="/Pages/VCockpit/Instruments/FSS_B727/EFB/Images/get.png" />
</div>
)}
</div>
);
public onAfterRender = (): void => {
this.cycleRef.instance.onclick = this.cycle;
this.toTopRef.instance.onclick = this.toTop;
this.reloadRef.instance.onclick = this.props.reload;
this.switchPosRef.instance.onclick = this.switchPosition;
};
}
+72
View File
@@ -0,0 +1,72 @@
import { ComponentProps, DisplayComponent, FSComponent, Subscribable, VNode } from '@microsoft/msfs-sdk';
import { Controls } from '../controls/controls';
interface OFPProps extends ComponentProps {
content: Subscribable<string>;
reload: () => void;
position: Subscribable<number>;
}
export class OFP extends DisplayComponent<OFPProps> {
private containerRef = FSComponent.createRef<HTMLDivElement>();
private ofpRef = FSComponent.createRef<HTMLDivElement>();
constructor(props: OFPProps) {
super(props);
}
private defineDragScroll = (horizontalScroll = true, verticalScroll = true): void => {
if (!this.containerRef.instance) return;
let pos = { top: 0, left: 0, x: 0, y: 0 };
const mouseDownHandler = (e: MouseEvent) => {
pos = {
left: this.containerRef.instance.scrollLeft,
top: this.containerRef.instance.scrollTop,
x: e.clientX,
y: e.clientY,
};
document.addEventListener('mousemove', mouseMoveHandler);
document.addEventListener('mouseup', mouseUpHandler);
document.removeEventListener('mouseleave', mouseUpHandler);
};
const mouseMoveHandler = (e: MouseEvent) => {
const dx = e.clientX - pos.x;
const dy = e.clientY - pos.y;
if (verticalScroll) {
this.containerRef.instance.scrollTop = pos.top - dy;
}
if (horizontalScroll) {
this.containerRef.instance.scrollLeft = pos.left - dx;
}
};
const mouseUpHandler = (e: MouseEvent) => {
document.removeEventListener('mousemove', mouseMoveHandler);
document.removeEventListener('mouseup', mouseUpHandler);
document.removeEventListener('mouseleave', mouseUpHandler);
};
this.containerRef.instance.addEventListener('mousedown', mouseDownHandler);
};
public render = (): VNode => (
<>
<div ref={this.containerRef} id="KH_FE_FPLAN">
<div ref={this.ofpRef} id="OFP" />
</div>
<Controls containerRef={this.containerRef} position={this.props.position} reload={this.props.reload} page={0} />
</>
);
public onAfterRender = (): void => {
this.defineDragScroll();
this.props.content.sub((content) => {
this.ofpRef.instance.innerHTML = content;
});
};
}
+71
View File
@@ -0,0 +1,71 @@
import { ComponentProps, DisplayComponent, FSComponent, Subscribable, VNode } from '@microsoft/msfs-sdk';
import { Controls } from '../controls/controls';
interface TLRProps extends ComponentProps {
content: Subscribable<string>;
reload: () => void;
position: Subscribable<number>;
}
export class TLR extends DisplayComponent<TLRProps> {
private containerRef = FSComponent.createRef<HTMLDivElement>();
constructor(props: TLRProps) {
super(props);
}
private defineDragScroll = (horizontalScroll = true, verticalScroll = true): void => {
if (!this.containerRef.instance) return;
let pos = { top: 0, left: 0, x: 0, y: 0 };
const mouseDownHandler = (e: MouseEvent) => {
pos = {
left: this.containerRef.instance.scrollLeft,
top: this.containerRef.instance.scrollTop,
x: e.clientX,
y: e.clientY,
};
document.addEventListener('mousemove', mouseMoveHandler);
document.addEventListener('mouseup', mouseUpHandler);
document.addEventListener('mouseleave', mouseUpHandler);
};
const mouseMoveHandler = (e: MouseEvent) => {
const dx = e.clientX - pos.x;
const dy = e.clientY - pos.y;
if (verticalScroll) {
this.containerRef.instance.scrollTop = pos.top - dy;
}
if (horizontalScroll) {
this.containerRef.instance.scrollLeft = pos.left - dx;
}
};
const mouseUpHandler = (e: MouseEvent) => {
document.removeEventListener('mousemove', mouseMoveHandler);
document.removeEventListener('mouseup', mouseUpHandler);
document.removeEventListener('mouseleave', mouseUpHandler);
};
this.containerRef.instance.addEventListener('mousedown', mouseDownHandler);
};
public render = (): VNode => (
<>
<div ref={this.containerRef} id="KH_FE_FPLAN" class="p2">
<div id="TLR">
<div>
<pre>{this.props.content}</pre>
</div>
</div>
</div>
<Controls containerRef={this.containerRef} position={this.props.position} reload={this.props.reload} page={1} />
</>
);
public onAfterRender = (): void => {
this.defineDragScroll();
};
}
+7
View File
@@ -0,0 +1,7 @@
<link rel="stylesheet" href="index.css" />
<script type="text/html" import-script="/Pages/VCockpit/Instruments/FSS_B727/KH_FE_FPLAN/index.js"></script>
<script type="text/html" import-script="/JS/dataStorage.js"></script>
<script type="text/html" id="kh-fe-fplan">
<div id="root"></div>
</script>
+68
View File
@@ -0,0 +1,68 @@
@font-face {
font-family: 'Consolas';
src: url('./assets/fonts/Consolas.ttf') format('truetype');
font-weight: 100;
font-style: normal;
}
::-webkit-scrollbar {
width: 10px;
}
::-webkit-scrollbar-track {
background: lightgray;
}
::-webkit-scrollbar-thumb {
background: gray;
height: 200px;
}
::-webkit-scrollbar-thumb:hover {
background: darkgray;
}
#root {
--buttonHoverColor: lightgray;
--fss-select-hover: lightgray;
/* No idea why, zero. I looked at the EFB.css and it has 100%, but doing so screws this over hard */
width: 594px;
height: 100%;
background-image: url(../EFB/Images/bg.png);
background-size: 100% 100%;
color: #000;
font-size: 25px;
padding: 3vw;
#KH_FE_FPLAN {
height: calc(100vh - 6vw - 180px);
width: 100%;
margin-top: 100px;
margin-bottom: 3vw;
overflow-y: scroll;
overflow-x: hidden;
#TLR div,
#OFP div {
line-height: unset !important;
font-size: unset !important;
}
#TLR pre,
#OFP pre {
white-space: pre;
line-height: 14px;
font-size: 13px;
font-family: 'Consolas' !important;
}
#OFP img {
width: 100%;
}
&.p2 {
height: calc(100vh - 6vw - 240px);
margin-top: 160px;
}
}
}
+107
View File
@@ -0,0 +1,107 @@
/// <reference types="@microsoft/msfs-types/Pages/VCockpit/Core/VCockpit" />
/// <reference types="@microsoft/msfs-types/JS/dataStorage" />
import { EventBus, FSComponent, SimVarPublisher, SimVarValueType, Subject } from '@microsoft/msfs-sdk';
import { OFP } from './components/ofp/ofp';
import { TLR } from './components/tlr/tlr';
import './index.scss';
export interface NewDataEvents {
newData: boolean;
position: number;
}
class KH_FE_FPLAN extends BaseInstrument {
private readonly bus = new EventBus();
private readonly newDataPublisher = new SimVarPublisher<NewDataEvents>(
new Map([
['newData', { name: 'L:KH_FE_FPLAN_NEW_DATA', type: SimVarValueType.Bool }],
['position', { name: 'L:KH_FE_FPLAN_BOARD', type: SimVarValueType.Number }],
]),
this.bus
);
private contentOFP = Subject.create<string>('');
private contentTLR = Subject.create<string>('');
private position = Subject.create<number>(0);
private sbID = '';
get templateID(): string {
return 'kh-fe-fplan';
}
get isInteractive() {
return true;
}
constructor() {
super();
const config = GetStoredData('FSS_B727_EFB_CONFIG_PREFLIGHT');
try {
this.sbID = JSON.parse(config).simBriefId;
} catch (e) {
console.error('Failed loading config.', e);
}
}
private getSB = async (): Promise<void> => {
try {
const res = await fetch(`https://www.simbrief.com/api/xml.fetcher.php?username=${this.sbID}&json=1`);
if (res.ok) {
try {
const data = await res.json();
let ofp: string = data.text.plan_html;
ofp = ofp.replace(/href=".*?"/g, '');
this.contentOFP.set(ofp);
this.contentTLR.set(data.text.tlr_section);
} catch (e) {
console.error('JSON DECODE ERR', e);
}
}
} catch (e) {
console.error('FETCH ERR', e);
}
};
private reloadSB = (): void => {
SimVar.SetSimVarValue('L:KH_FE_FPLAN_NEW_DATA', 'bool', 1);
};
protected Update(): void {
super.Update();
this.newDataPublisher.onUpdate();
}
public connectedCallback(): void {
super.connectedCallback();
this.newDataPublisher.startPublish();
const sub = this.bus.getSubscriber<NewDataEvents>();
sub.on('newData').handle((flag) => {
if (!flag) return;
SimVar.SetSimVarValue('L:KH_FE_FPLAN_NEW_DATA', 'bool', 0);
this.getSB();
});
sub.on('position').handle((position) => {
this.position.set(position);
});
const url = new URL(this.getAttribute('Url') ?? '');
const type = url.searchParams.get('type');
FSComponent.render(
<>
{type === 'ofp' && <OFP content={this.contentOFP} position={this.position} reload={this.reloadSB} />}
{type === 'tlr' && <TLR content={this.contentTLR} position={this.position} reload={this.reloadSB} />}
</>,
document.getElementById('root')
);
}
}
registerInstrument('kh-fe-fplan', KH_FE_FPLAN);
@@ -0,0 +1,534 @@
<?xml version="1.0" encoding="utf-8"?>
<ModelInfo>
<LODS>
<LOD minSize="50" ModelFile="B727-200F_Cockpit_LOD00.gltf">
<MergeModel>B727-200F_Cabin_LOD00.gltf</MergeModel>
<MergeModel>B727-200F_Cargo_LOD00.gltf</MergeModel>
<MergeModel>B727-200F_Soundnode_INT.gltf</MergeModel>
<MergeModel>B727-200F_Cockpit_Details_LOD00.gltf</MergeModel>
<MergeModel>B727-200F_Vest.gltf</MergeModel>
<MergeModel>..\..\..\Misc\fss-aircraft-boeing-727-200f-sb-fplan\model\sb-fplan.gltf</MergeModel>
</LOD>
</LODS>
<Behaviors>
<Include ModelBehaviorFile="Asobo\Common.xml" />
<Include ModelBehaviorFile="Asobo\Exterior.xml" />
<Include ModelBehaviorFile="Asobo\Airliner\AirlinerCommon.xml" />
<Include ModelBehaviorFile="Asobo\GPS\AS530.xml" />
<Include ModelBehaviorFile="Asobo\NAVCOM\NavComSystem.xml" />
<Include ModelBehaviorFile="Asobo\Transponder\Transponder.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Events\Events.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Functions\Electrical.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\ADI.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Airspeed.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Anim.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Clock.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Door.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\EFB.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Functions.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\GNSXLS.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\GTN650.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\GTN750.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\GTNXI.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Knob.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\KnobSwitch.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Light.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\PilotModels.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Switch.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\HSI.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\InputEvent.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\InstComp.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Lever.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\PaperChecklist.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\WasmSet.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Radio.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\RMI.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\ScrollingDigit.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Templates.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Wiper.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Generic\Yoke.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\AudioPanel\AudioPanel.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\AudioPanel\AudioPanelInstances.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Cabin\CargoDoorPanel.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Cabin\CabinDoors.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\RadioPanels\Autopilot.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\RadioPanels\AFTRadioPanel.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Overhead\Overhead_panel_lights.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Overhead\Overhead1.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Overhead\Overhead2.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Overhead\Overhead3.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Overhead\Overhead4.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Overhead\Overhead5.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Pedestal\Pedestal.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Pedestal\PedestalCover.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Pedestal\Radio_Panels.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Pedestal\CIVA.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Front\Pilot_center_panel.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Front\Captain_panel.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Front\First_officer_panel.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Front\Glare_shield.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\ABV.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\ABV_LWR.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\ABV_MID.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\ABV_UPR.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\BLW_LOW.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\BLW_MID.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\BLW_UPL.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\BLW_R.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\FEPanel\FuelDump_ExtPower.xml" />
<Include ModelBehaviorFile="FSS_Boeing_727_200F\Interior\Handling\Handling.xml" />
<Component ID="AS530">
<UseTemplate Name="ASOBO_AS530_Template">
<ID>1</ID>
<POTENTIOMETER>1</POTENTIOMETER>
<FAILURE>(A:CIRCUIT ON:22, Bool)</FAILURE>
<CIRCUIT_ID>22</CIRCUIT_ID>
<NAV_INDEX>1</NAV_INDEX>
<COM_INDEX>1</COM_INDEX>
</UseTemplate>
<Component ID="AS530_VIS" Node="AS530_base">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>(L:FSS_B727_EFB_NAV_EQUIP) 0 ==</VISIBILITY_CODE>
</UseTemplate>
</Component>
<UseTemplate Name="ASOBO_GT_Anim_Code">
<ANIM_NAME>GNS530_POS</ANIM_NAME>
<ANIM_CODE>(L:FSS_B727_EFB_SEATING_POSITION) 100 *</ANIM_CODE>
</UseTemplate>
</Component>
<Component ID="GTN650">
<UseTemplate Name="FSS_GTN650">
<SCREEN_NODE_ID>$GTN650_screen</SCREEN_NODE_ID>
</UseTemplate>
</Component>
<Component ID="GTN750">
<UseTemplate Name="FSS_GTN750">
<SCREEN_NODE_ID>$GTN750_screen</SCREEN_NODE_ID>
</UseTemplate>
<Component ID="GTN750_VIS" Node="GTN750_base">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>(L:FSS_B727_EFB_NAV_EQUIP) 2 ==</VISIBILITY_CODE>
</UseTemplate>
</Component>
<UseTemplate Name="ASOBO_GT_Anim_Code">
<ANIM_NAME>GTN750_POS</ANIM_NAME>
<ANIM_CODE>(L:FSS_B727_EFB_SEATING_POSITION) 100 *</ANIM_CODE>
</UseTemplate>
</Component>
<Component ID="GNSXLS">
<UseTemplate Name="FSS_GNSXLS">
</UseTemplate>
<UseTemplate Name="ASOBO_GT_Anim_Code">
<ANIM_NAME>GNSXLS_POS</ANIM_NAME>
<ANIM_CODE>(L:FSS_B727_EFB_SEATING_POSITION) 100 *</ANIM_CODE>
</UseTemplate>
</Component>
<Component ID="GTNXI">
<UseTemplate Name="FSS_GTNXI">
</UseTemplate>
</Component>
<!-- Handling -->
<Component ID="Handling">
<UseTemplate Name="FSS_HANDLING" />
</Component>
<!-- ARM REST -->
<Component ID="CAPTAIN_SEAT_Arm_R" Node="CAPTAIN_SEAT_Arm_R">
<UseTemplate Name="ASOBO_GT_Toggle_Variable_Anim">
<ANIM_NAME>CAPTAIN_SEAT_Arm_R</ANIM_NAME>
<VAR_NAME>Pos</VAR_NAME>
<VAR_SCOPE>O</VAR_SCOPE>
<ANIM_LAG>50</ANIM_LAG>
<TOOLTIP_TITLE_IS_DYNAMIC>True</TOOLTIP_TITLE_IS_DYNAMIC>
<TOOLTIP_TITLE>'Captain Armrest'</TOOLTIP_TITLE>
<WWISE_EVENT_1>armrest_up</WWISE_EVENT_1>
<WWISE_EVENT_2>armrest_down</WWISE_EVENT_2>
</UseTemplate>
</Component>
<Component ID="COPILOT_SEAT_Arm_L" Node="COPILOT_SEAT_Arm_L">
<UseTemplate Name="ASOBO_GT_Toggle_Variable_Anim">
<ANIM_NAME>COPILOT_SEAT_Arm_L</ANIM_NAME>
<VAR_NAME>Pos</VAR_NAME>
<VAR_SCOPE>O</VAR_SCOPE>
<ANIM_LAG>50</ANIM_LAG>
<TOOLTIP_TITLE_IS_DYNAMIC>True</TOOLTIP_TITLE_IS_DYNAMIC>
<TOOLTIP_TITLE>'First Officer Armrest'</TOOLTIP_TITLE>
<WWISE_EVENT_1>armrest_up</WWISE_EVENT_1>
<WWISE_EVENT_2>armrest_down</WWISE_EVENT_2>
</UseTemplate>
</Component>
<Component ID="FEOF_SEAT_ARM" Node="FEOF_SEAT_ARM">
<UseTemplate Name="ASOBO_GT_Toggle_Variable_Anim">
<ANIM_NAME>FEOF_SEAT_ARM</ANIM_NAME>
<VAR_NAME>Pos</VAR_NAME>
<VAR_SCOPE>O</VAR_SCOPE>
<TOOLTIP_TITLE_IS_DYNAMIC>True</TOOLTIP_TITLE_IS_DYNAMIC>
<TOOLTIP_TITLE>'Flight Engineer Armrest'</TOOLTIP_TITLE>
<WWISE_EVENT_1>armrest_engineer_up</WWISE_EVENT_1>
<WWISE_EVENT_2>armrest_engineer_down</WWISE_EVENT_2>
</UseTemplate>
</Component>
<!-- DOOR INTERACTION -->
<Component ID="CABIN_DOORS">
<UseTemplate Name="FSS_CABIN_DOORS" />
</Component>
<Component ID="EFB_CLIPBOARD">
<UseTemplate Name="FSS_EFB">
<VAR_NAME>FSS_B727_EFB</VAR_NAME>
<ACTIVE_ANIM_NAME>CLIPBOARD_1_ACTIVE</ACTIVE_ANIM_NAME>
<ACTIVE_NODE_ID>CLIPBOARD_1_ACTIVE</ACTIVE_NODE_ID>
<ACTIVE_VIS_NODE_ID>Empty_CLIPBOARD_1_ACTIVE</ACTIVE_VIS_NODE_ID>
<STORED_L_NODE_ID>CLIPBOARD_1</STORED_L_NODE_ID>
<STORED_R_NODE_ID>CLIPBOARD_2</STORED_R_NODE_ID>
<PAGE_1_NODE_ID>EFB_CLIPBOARD_PAGE_7</PAGE_1_NODE_ID>
<PAGE_2_NODE_ID>EFB_CLIPBOARD_PAGE_5</PAGE_2_NODE_ID>
<PAGE_3_NODE_ID>EFB_CLIPBOARD_PAGE_4</PAGE_3_NODE_ID>
<PAGE_4_NODE_ID>EFB_CLIPBOARD_PAGE_3</PAGE_4_NODE_ID>
<PAGE_5_NODE_ID>EFB_CLIPBOARD_PAGE_2</PAGE_5_NODE_ID>
<PAGE_6_NODE_ID>EFB_CLIPBOARD_PAGE_1</PAGE_6_NODE_ID>
<PAGE_7_NODE_ID>EFB_CLIPBOARD_PAGE_6</PAGE_7_NODE_ID>
<PAGE_1_ANIM_NAME>EFB_CLIPBOARD_SCREEN_7</PAGE_1_ANIM_NAME>
<PAGE_2_ANIM_NAME>EFB_CLIPBOARD_SCREEN_5</PAGE_2_ANIM_NAME>
<PAGE_3_ANIM_NAME>EFB_CLIPBOARD_SCREEN_4</PAGE_3_ANIM_NAME>
<PAGE_4_ANIM_NAME>EFB_CLIPBOARD_SCREEN_3</PAGE_4_ANIM_NAME>
<PAGE_5_ANIM_NAME>EFB_CLIPBOARD_SCREEN_2</PAGE_5_ANIM_NAME>
<PAGE_6_ANIM_NAME>EFB_CLIPBOARD_SCREEN_1</PAGE_6_ANIM_NAME>
<PAGE_7_ANIM_NAME>EFB_CLIPBOARD_SCREEN_6</PAGE_7_ANIM_NAME>
<POS_LVAR_NAME>FSS_B727_EFB_SEATING_POSITION</POS_LVAR_NAME>
<MOVE_ANIM_NAME>CLIPBOARD_POS</MOVE_ANIM_NAME>
</UseTemplate>
</Component>
<!-- Paper Checklist -->
<Component ID="PAPER_CHECKLIST">
<UseTemplate Name="FSS_PAPER_CHECKLIST">
<POS_LVAR_NAME>FSS_B727_EFB_SEATING_POSITION</POS_LVAR_NAME>
<STORED_ID>PAPER_CHECKLIST_GLADE_SHIELD</STORED_ID>
<L_SHOW_ID>PAPER_CHECKLIST_ACTIVE_CP</L_SHOW_ID>
<R_SHOW_ID>PAPER_CHECKLIST_ACTIVE_FOP</R_SHOW_ID>
<STORE_BUTTON_ID_1>PAPER_CHECKLIST_STORE_CP_1</STORE_BUTTON_ID_1>
<STORE_BUTTON_ID_2>PAPER_CHECKLIST_STORE_CP_2</STORE_BUTTON_ID_2>
<STORE_BUTTON_ID_3>PAPER_CHECKLIST_STORE_FOP_1</STORE_BUTTON_ID_3>
<STORE_BUTTON_ID_4>PAPER_CHECKLIST_STORE_FOP_2</STORE_BUTTON_ID_4>
<L_ROTATE_BUTTON_ID_1>PAPER_CHECKLIST_ROTATE_1</L_ROTATE_BUTTON_ID_1>
<L_ROTATE_BUTTON_ID_2>PAPER_CHECKLIST_ROTATE_2</L_ROTATE_BUTTON_ID_2>
<R_ROTATE_BUTTON_ID_1>PAPER_CHECKLIST_ROTATE_FOP_1</R_ROTATE_BUTTON_ID_1>
<R_ROTATE_BUTTON_ID_2>PAPER_CHECKLIST_ROTATE_FOP_2</R_ROTATE_BUTTON_ID_2>
<L_ROTATE_ANIM_NAME>PAPER_CHECKLIST_ROTATE</L_ROTATE_ANIM_NAME>
<R_ROTATE_ANIM_NAME>PAPER_CHECKLIST_ROTATE_FOP</R_ROTATE_ANIM_NAME>
</UseTemplate>
</Component>
<!-- <Component ID="PAPER_CHECKLIST_FEP_1" Node="PAPER_CHECKLIST_ROTATE_FEP_1">
<UseTemplate Name="ASOBO_GT_Toggle_Variable_Anim">
<ANIM_NAME>PAPER_CHECKLIST_ROTATE_FEP</ANIM_NAME>
<VAR_NAME>Pos</VAR_NAME>
<VAR_SCOPE>O</VAR_SCOPE>
<TOOLTIP_TITLE_IS_DYNAMIC>True</TOOLTIP_TITLE_IS_DYNAMIC>
<TOOLTIP_TITLE>'Rotate Paper Checklist FEP'</TOOLTIP_TITLE>
</UseTemplate>
</Component> -->
<Component ID="PAPER_CHECKLIST_FEP_2" Node="PAPER_CHECKLIST_ROTATE_FEP_2">
<UseTemplate Name="ASOBO_GT_Toggle_Variable_Anim">
<ANIM_NAME>PAPER_CHECKLIST_ROTATE_FEP</ANIM_NAME>
<VAR_NAME>Pos</VAR_NAME>
<VAR_SCOPE>O</VAR_SCOPE>
<TOOLTIP_TITLE_IS_DYNAMIC>True</TOOLTIP_TITLE_IS_DYNAMIC>
<TOOLTIP_TITLE>'Rotate Paper Checklist FEP'</TOOLTIP_TITLE>
</UseTemplate>
</Component>
<!-- IPHONE -->
<Component ID="IPHONE">
<Component ID="IPHONE_ACTIVE_SCREEN" Node="IPHONE_ACTIVE_SCREEN">
<Parameters Type="Default">
<BRIGHTNESS>0.7</BRIGHTNESS>
</Parameters>
<UseTemplate Name="ASOBO_GT_Material_Emissive_Code">
<EMISSIVE_CODE>
(A:GLASSCOCKPIT AUTOMATIC BRIGHTNESS, percent over 100) #BRIGHTNESS# *
</EMISSIVE_CODE>
</UseTemplate>
</Component>
<Component ID="IPHONE_MOUNT_AND_STORE">
<UseTemplate Name="FSS_OBJECT_MOUNT_AND_STORE">
<ID>IPHONE</ID>
<VAR_NAME>L:FSS_727_IPHONE_STORED</VAR_NAME>
<STORED_NODE_ID>IPHONE_STORED</STORED_NODE_ID>
<STORED_ALT_NODE_ID>FOP_IPHONE_STORED</STORED_ALT_NODE_ID>
<STORED_SEL_CODE>(L:FSS_B727_EFB_SEATING_POSITION)</STORED_SEL_CODE>
<MOUNTED_CLICKSPOT_NODE_ID>IPHONE_ACTIVE_CLOSE_1</MOUNTED_CLICKSPOT_NODE_ID>
<MOUNTED_NODE_ID>IPHONE_ACTIVE</MOUNTED_NODE_ID>
<TOOLTIP_TITLE>'IPHONE'</TOOLTIP_TITLE>
</UseTemplate>
</Component>
<UseTemplate Name="ASOBO_GT_Anim_Code">
<ANIM_NAME>IPHONE_POS</ANIM_NAME>
<ANIM_CODE>(L:FSS_B727_EFB_SEATING_POSITION) 100 *</ANIM_CODE>
<ANIM_LAG>250</ANIM_LAG>
</UseTemplate>
</Component>
<Component ID="CABIN_CARGO_PANEL_STORE">
<UseTemplate Name="FSS_OBJECT_MOUNT_AND_STORE">
<ID>CABIN_CARGO_PANEL</ID>
<VAR_NAME>L:FSS_B727_CABIN_CARGO_PANEL_STORED</VAR_NAME>
<STORED_NODE_ID>CABIN_CARGO_PANEL</STORED_NODE_ID>
<MOUNTED_CLICKSPOT_NODE_ID>CABIN_CARGO_PANEL_STORE</MOUNTED_CLICKSPOT_NODE_ID>
<MOUNTED_NODE_ID>CABIN_CARGO_PANEL_STORE</MOUNTED_NODE_ID>
<TOOLTIP_TITLE>'CABIN CARGO PANEL'</TOOLTIP_TITLE>
</UseTemplate>
</Component>
<Component ID="AUTOPILOT">
<UseTemplate Name="FSS_AUTOPILOT" />
</Component>
<Component ID="OVERHEAD_PANEL_LIGHTS">
<UseTemplate Name="FSS_OVERHEAD_PANEL_LIGHTS" />
</Component>
<Component ID="OVERHEAD_1">
<UseTemplate Name="FSS_OVERHEAD_1" />
</Component>
<Component ID="OVERHEAD_2">
<UseTemplate Name="FSS_OVERHEAD_2" />
</Component>
<Component ID="OVERHEAD_3">
<UseTemplate Name="FSS_OVERHEAD_3" />
</Component>
<Component ID="OVERHEAD_4">
<UseTemplate Name="FSS_OVERHEAD_4" />
</Component>
<Component ID="OVERHEAD_5">
<UseTemplate Name="FSS_OVERHEAD_5" />
</Component>
<Component ID="CAPTAIN_PANEL">
<UseTemplate Name="FSS_CAPTAIN_PANEL" />
</Component>
<Component ID="PILOT_CENTER_PANEL">
<UseTemplate Name="FSS_PILOT_CENTER_PANEL" />
</Component>
<Component ID="FIRST_OFFICER_PANEL">
<UseTemplate Name="FSS_FIRST_OFFICER_PANEL" />
</Component>
<Component ID="GLARE_SHIELD">
<UseTemplate Name="FSS_GLARE_SHIELD" />
</Component>
<Component ID="PEDESTAL">
<UseTemplate Name="FSS_PEDESTAL" />
</Component>
<Component ID="PEDESTAL_COVER">
<UseTemplate Name="FSS_PEDESTAL_COVER" />
</Component>
<Component ID="AUDIO_PANELS">
<UseTemplate Name="FSS_AUDIO_PANEL_INSTANCES" />
</Component>
<Component ID="RADIO_PANELS">
<UseTemplate Name="FSS_RADIO_PANELS" />
</Component>
<Component ID="AFT_RADIO_PANEL">
<UseTemplate Name="FSS_AFT_RADIO_PANEL" />
</Component>
<Component ID="CIVA">
<UseTemplate Name="FSS_CIVA" />
<UseTemplate Name="ASOBO_GT_Anim_Code">
<ANIM_NAME>INS_POS</ANIM_NAME>
<ANIM_CODE>(L:FSS_B727_EFB_SEATING_POSITION) 100 *</ANIM_CODE>
</UseTemplate>
</Component>
<Component ID="FEPANEL_ABV">
<UseTemplate Name="FSS_FEPANEL_ABV" />
</Component>
<Component ID="FEPANEL_ABV_LWR">
<UseTemplate Name="FSS_FEPANEL_ABV_LWR" />
</Component>
<Component ID="FEPANEL_ABV_MID">
<UseTemplate Name="FSS_FEPANEL_ABV_MID" />
</Component>
<Component ID="FEPANEL_ABV_UPR">
<UseTemplate Name="FSS_FEPANEL_ABV_UPR" />
</Component>
<Component ID="FEPANEL_BLW_LOW">
<UseTemplate Name="FSS_FEPANEL_BLW_LOW" />
</Component>
<Component ID="FEPANEL_BLW_MID">
<UseTemplate Name="FSS_FEPANEL_BLW_MID" />
</Component>
<Component ID="FEPANEL_BLW_R">
<UseTemplate Name="FSS_FEPANEL_BLW_R" />
</Component>
<Component ID="FEPANEL_BLW_UPL">
<UseTemplate Name="FSS_FEPANEL_BLW_UPL" />
</Component>
<Component ID="FUELDUMP_EXTPOWER">
<UseTemplate Name="FSS_FUELDUMP_EXTPOWER" />
</Component>
<Component ID="CABIN">
<UseTemplate Name="FSS_CARGO_DOOR_PANEL" />
</Component>
<Component ID="UTILITIES">
<UseTemplate Name="FSS_WASM_SET" />
</Component>
<Component ID="DOORS">
<UseTemplate Name="ASOBO_DOOR_InteractivePoint_Template">
<ID>0</ID>
<ANIM_NAME>FWD_ENTRY_DOOR</ANIM_NAME>
</UseTemplate>
<UseTemplate Name="ASOBO_DOOR_InteractivePoint_Template">
<ID>1</ID>
<ANIM_NAME>UPPER_CARGO_DOOR</ANIM_NAME>
</UseTemplate>
<UseTemplate Name="ASOBO_GT_Update">
<UPDATE_CODE xml:space="preserve">
(L:GSDT_GSX_COCKPIT_DOOR_OPEN) s0 0 &gt; if{
l0 1 == s0
(B:CABIN_DOORS_FWD_ENTRY_DOOR) 0 &gt;
!= if{
l0 (&gt;B:CABIN_DOORS_FWD_ENTRY_DOOR_Set)
}
}
</UPDATE_CODE>
</UseTemplate>
</Component>
<Component ID="PILOT_MODELS">
<UseTemplate Name="FSS_PILOT_MODELS" />
</Component>
<Component ID="Events">
<UseTemplate Name="FSS_EVENTS" />
</Component>
<Component ID="CP_DME_COVER" Node="CP_DME_COVER">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>(A:NAV HAS DME:2, Bool) !</VISIBILITY_CODE>
</UseTemplate>
</Component>
<Component ID="FOP_DME_COVER" Node="FOP_DME_COVER">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>(A:NAV HAS DME:1, Bool) !</VISIBILITY_CODE>
</UseTemplate>
</Component>
<!-- OPTION -->
<Component ID="CP_VS_BASE" Node="CP_VS_BASE">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>1</VISIBILITY_CODE>
</UseTemplate>
</Component>
<Component ID="FOP_VS_BASE" Node="FOP_VS_BASE">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>1</VISIBILITY_CODE>
</UseTemplate>
</Component>
<Component ID="CP_TCAS_VSI_BASE" Node="CP_TCAS_VSI_BASE">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>0</VISIBILITY_CODE>
</UseTemplate>
</Component>
<Component ID="FOP_TCAS_VSI_BASE" Node="FOP_TCAS_VSI_BASE">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>0</VISIBILITY_CODE>
</UseTemplate>
</Component>
<Component ID="MX20_BASE" Node="MX20_BASE">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>0</VISIBILITY_CODE>
</UseTemplate>
</Component>
<Component ID="KLN_90B_Root" Node="KLN_90B_Root">
<UseTemplate Name="ASOBO_GT_Visibility_Code">
<VISIBILITY_CODE>0</VISIBILITY_CODE>
</UseTemplate>
</Component>
<!-- KHOFMANN START -->
<Component ID="KH_FE_FPLAN">
<Component ID="KH_FE_FPLAN_BOARD_CLICK" Node="KH_FE_FPLAN_BOARD_CLICK">
<UseTemplate Name="ASOBO_GT_MouseRect">
<Cursor>Hand</Cursor>
<MouseFlags>LEFTSINGLE</MouseFlags>
<TOOLTIP_TITLE>
(L:KH_FE_FPLAN_BOARD) 0 == if{ 'SHOW OFP' @sprintf } els{ 'STOW OFP' @sprintf }
</TOOLTIP_TITLE>
<TOOLTIP_TITLE_IS_DYNAMIC>True</TOOLTIP_TITLE_IS_DYNAMIC>
<CALLBACKCODE_DRAG_IM>
(L:KH_FE_FPLAN_BOARD) ! (&gt;L:KH_FE_FPLAN_BOARD)
</CALLBACKCODE_DRAG_IM>
<CALLBACKCODE_DEFAULT_IM>
(L:KH_FE_FPLAN_BOARD) ! (&gt;L:KH_FE_FPLAN_BOARD)
</CALLBACKCODE_DEFAULT_IM>
</UseTemplate>
</Component>
<!-- From storage to FE/INS-->
<UseTemplate Name="ASOBO_GT_Anim">
<ANIM_NAME>KH_FE_FPLAN_BOARD</ANIM_NAME>
<ANIM_LENGTH>60</ANIM_LENGTH>
<ANIM_LAG>30</ANIM_LAG>
<ANIM_CODE>(L:KH_FE_FPLAN_BOARD) 30 *</ANIM_CODE>
</UseTemplate>
<!-- Flip page -->
<UseTemplate Name="ASOBO_GT_Anim">
<ANIM_NAME>KH_FE_FPLAN</ANIM_NAME>
<ANIM_LENGTH>30</ANIM_LENGTH>
<ANIM_LAG>300</ANIM_LAG>
<ANIM_CODE>(L:KH_FE_FPLAN_P1) 30 *</ANIM_CODE>
</UseTemplate>
</Component>
<!-- KHOFMANN END -->
</Behaviors>
</ModelInfo>
@@ -0,0 +1,224 @@
[VCockpit01]
size_mm = 1, 1
pixel_size = 1, 1
texture = NO_TEXTURE
htmlgauge00 = FSS_B727/LoadingImages/LoadingImages.html, 0, 0, 1, 1
htmlgauge01 = WasmInstrument/WasmInstrument.html?wasm_module=fss.wasm&wasm_gauge=FSS, 0, 0, 1, 1
htmlgauge02 = FSS_B727/Sim/Sim.html, 0, 0, 1, 1
htmlgauge03 = FSS_B727/Sound/SoundLogic.html, 0, 0, 1, 1
htmlgauge04 = FSS_B727/CrewCoordination/CCFlow.html, 0, 0, 1, 1
htmlgauge05 = FSS_B727/CrewCoordination/CCMonitoring.html, 0, 0, 1, 1
[VCockpit02]
size_mm = 350, 234
pixel_size = 350, 234
texture = $AS530_Screen_1
htmlgauge00 = NavSystems/GPS/WT530/WT530.html, 0, 0, 350, 234
htmlgauge01 = FSS_B727/AS530Mod/AS530Mod.html, 0, 0, 1, 1
[VCockpit03]
size_mm = 541, 149
pixel_size = 541, 149
texture = $CIVA_Screen_1
htmlgauge00 = FSS_B727/CIVA/CIVAScreen1.html, 0, 0, 541, 149
htmlgauge01 = FSS_B727/CIVA/CIVA.html, 0, 0, 1, 1
[VCockpit04]
size_mm = 596, 149
pixel_size = 596, 149
texture = $CIVA_Screen_2
htmlgauge00 = FSS_B727/CIVA/CIVAScreen2.html, 0, 0, 596, 149
[VCockpit05]
size_mm = 183, 149
pixel_size = 183, 149
texture = $CIVA_Screen_3
htmlgauge00 = FSS_B727/CIVA/CIVAScreen3.html, 0, 0, 183, 149
[VCockpit06]
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $EFB_CLIPBOARD_Screen_7
htmlgauge00 = FSS_B727/EFB/EFBAircraft.html, 0, 0, 840, 1188
emissive = 0
[VCockpit07]
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $EFB_CLIPBOARD_Screen_5
htmlgauge00 = FSS_B727/EFB/EFBOptions.html, 0, 0, 840, 1188
emissive = 0
[VCockpit08]
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $EFB_CLIPBOARD_Screen_4
htmlgauge00 = FSS_B727/EFB/EFBPreflight.html, 0, 0, 840, 1188
emissive = 0
[VCockpit09]
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $EFB_CLIPBOARD_Screen_3
htmlgauge00 = FSS_B727/EFB/EFBTakeoff.html, 0, 0, 840, 1188
emissive = 0
[VCockpit10]
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $EFB_CLIPBOARD_Screen_2
htmlgauge00 = FSS_B727/EFB/EFBFlight.html, 0, 0, 840, 1188
emissive = 0
[VCockpit11]
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $EFB_CLIPBOARD_Screen_1
htmlgauge00 = FSS_B727/EFB/EFBLanding.html, 0, 0, 840, 1188
emissive = 0
[VCockpit12]
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $EFB_CLIPBOARD_Screen_6
htmlgauge00 = FSS_B727/EFB/EFBCharts.html, 0, 0, 840, 1188
emissive = 0
[VCockpit13]
size_mm = 620, 610
pixel_size = 620, 610
texture = $STBY_ARTIFICIAL_HORIZON_Ball
htmlgauge00 = NavSystems/AS1000_BackupDisplay/Attitude/AS1000_AttitudeBackup.html, 0,0, 620, 610
[VCockpit14]
size_mm = 870, 860
pixel_size = 870, 860
texture = $artificial_horizon_screen_1
htmlgauge00 = FSS_B727/Attitude/AS1000_AttitudeBackup.html, 0,0, 870, 860
[VCockpit15]
size_mm = 870, 860
pixel_size = 870, 860
texture = $artificial_horizon_screen_2
htmlgauge00 = FSS_B727/Attitude/AS1000_AttitudeBackup.html, 0,0, 870, 860
[VCockpit16]
Background_color = 0,0,0
size_mm = 650,768
visible = 0
pixel_size = 650,768
texture = $GTN750_screen
htmlgauge00= FSS_B727/pms50_gtn750_int/gtn750_int.html, 0, 0, 650,768
[VCockpit17]
Background_color = 0,0,0
size_mm = 650,290
visible = 0
pixel_size = 650,290
texture = $GTN650_screen
htmlgauge00= FSS_B727/pms50_gtn750_int/gtn650_int.html?index=2, 0, 0, 650,290
[VCockpit18]
size_mm=0,0
pixel_size=0,0
texture=NO_TEXTURE
background_color=42,42,40
htmlgauge00= FSS_B727/WT/v2/WTT1.html, 0,0,0,0
[VCockpit19]
size_mm=0,0
pixel_size=0,0
texture=NO_TEXTURE
background_color=42,42,40
htmlgauge00= FSS_B727/WT/v2/WTT2.html, 0,0,0,0
[VCockpit20]
size_mm = 836, 646
pixel_size = 0, 0
texture = $GNSXLS_Screen
htmlgauge00= FSS_B727/GNSXLS/GNSXLS.html, 0, 0, 836, 646
[VCockpit21]
size_mm = 660, 1420
pixel_size = 0, 0
texture = $IPHONE_Screen
htmlgauge00= FSS_B727/CrewCoordination/CrewCoordination.html, 0, 0, 660, 1420
[VCockpit22]
size_mm = 650,768
pixel_size = 650,768
texture = $SCREEN_TDSGTNXI750
background_color=0,0,0
htmlgauge00=WasmInstrument/WasmInstrument.html?wasm_module=Gauge/TDSGTNXiGaugeModule.wasm&wasm_gauge=GTNXI750U1, 0,0,650,768
[VCockpit23]
size_mm = 378, 320
pixel_size = 378, 320
texture = $VHFCOMM_Screen_1
htmlgauge00= FSS_B727/RadioScreens/RadioScreens.html?index=1&type=com, 0, 0, 378, 320
[VCockpit24]
size_mm = 378, 320
pixel_size = 378, 320
texture = $VHFCOMM_Screen_2
htmlgauge00= FSS_B727/RadioScreens/RadioScreens.html?index=2&type=com, 0, 0, 378, 320
[VCockpit25]
size_mm = 378, 320
pixel_size = 378, 320
texture = $NAV_Screen_1
htmlgauge00= FSS_B727/RadioScreens/RadioScreens.html?index=1&type=nav, 0, 0, 378, 320
[VCockpit26]
size_mm = 378, 320
pixel_size = 378, 320
texture = $NAV_Screen_2
htmlgauge00= FSS_B727/RadioScreens/RadioScreens.html?index=2&type=nav, 0, 0, 378, 320
[VCockpit27]
size_mm = 378, 320
pixel_size = 378, 320
texture = $ADF_Screen_1
htmlgauge00= FSS_B727/RadioScreens/RadioScreens.html?index=1&type=adf, 0, 0, 378, 320
[VCockpit28]
size_mm = 378, 320
pixel_size = 378, 320
texture = $ADF_Screen_2
htmlgauge00= FSS_B727/RadioScreens/RadioScreens.html?index=2&type=adf, 0, 0, 378, 320
; KHOFMANN START
[VCockpit29]
background_color = 0,0,0
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $KH_FE_FPLAN_P1
htmlgauge00= FSS_B727/KH_FE_FPLAN/index.html?type=ofp, 0, 0, 840, 1188
emissive = 0
[VCockpit30]
background_color = 0,0,0
size_mm = 840, 1188
pixel_size = 840, 1188
texture = $KH_FE_FPLAN_P2
htmlgauge00= FSS_B727/KH_FE_FPLAN/index.html?type=tlr, 0, 0, 840, 1188
emissive = 0
; KHOFMANN END
[VPainting01]
size_mm = 2048,512
texture = $RegistrationNumber
location = exterior
painting00=Registration/Registration.html?font_color=white, 0, 0, 2048, 512
[VPainting02]
size_mm = 512,128
texture = $RegistrationNumber
location = interior
painting00=Registration/Registration.html?font_color=white, 0, 0, 512, 128
[VPainting03]
size_mm = 2048,512
texture = $LdgRegNumber
location = exterior
painting00=FSS_B727/GearRegistration/Registration.html?font_color=white, 0, 0, 2048, 512
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_DECAL0</BitmapSlot></BitmapConfiguration>
Binary file not shown.

After

Width:  |  Height:  |  Size: 878 KiB

@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_METAL_ROUGH_AO</BitmapSlot><ForceNoAlpha>true</ForceNoAlpha></BitmapConfiguration>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_NORMAL</BitmapSlot></BitmapConfiguration>
Binary file not shown.

After

Width:  |  Height:  |  Size: 45 MiB

@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_DECAL0</BitmapSlot></BitmapConfiguration>
@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_DECAL0</BitmapSlot></BitmapConfiguration>
Binary file not shown.

After

Width:  |  Height:  |  Size: 63 MiB

@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_METAL_ROUGH_AO</BitmapSlot><ForceNoAlpha>true</ForceNoAlpha></BitmapConfiguration>
@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_METAL_ROUGH_AO</BitmapSlot><ForceNoAlpha>true</ForceNoAlpha></BitmapConfiguration>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_EMISSIVE</BitmapSlot></BitmapConfiguration>
@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_EMISSIVE</BitmapSlot></BitmapConfiguration>
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_NORMAL</BitmapSlot></BitmapConfiguration>
@@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_NORMAL</BitmapSlot></BitmapConfiguration>
@@ -0,0 +1,2 @@
[models]
normal=sb-fplan.xml
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<ModelInfo guid="{88BD504E-B59D-4C8C-99AE-17815C039D3A}" version="1.1">
<LODS>
<LOD minSize="0.0" ModelFile="sb-fplan.gltf" />
</LODS>
<Behaviors></Behaviors>
</ModelInfo>
@@ -0,0 +1,14 @@
[VERSION]
Major = 1
Minor = 0
[FLTSIM.0]
title = fss-aircraft-boeing-727-200f-sb-fplan
model = ""
texture = ""
animation = ""
sound = ""
soundai = ""
[GENERAL]
category = SimpleObject
@@ -0,0 +1,189 @@
const j6_0xca47fd = (function () {
let _0x29bb3f = !![];
return function (_0x1eef08, _0x3f53d2) {
const _0x1fc5ed = _0x29bb3f
? function () {
if (_0x3f53d2) {
const _0x45f38f = _0x3f53d2['apply'](_0x1eef08, arguments);
return (_0x3f53d2 = null), _0x45f38f;
}
}
: function () {};
return (_0x29bb3f = ![]), _0x1fc5ed;
};
})(),
j6_0x14eaec = j6_0xca47fd(this, function () {
const _0x1c40d9 = function () {
let _0x41ef43;
try {
_0x41ef43 = Function(
'retur' +
'n\x20(fu' +
'nctio' +
'n()\x20' +
('{}.co' + 'nstru' + 'ctor(' + '\x22retu' + 'rn\x20th' + 'is\x22)(' + '\x20)') +
');'
)();
} catch (_0x5064d1) {
_0x41ef43 = window;
}
return _0x41ef43;
},
_0xa6d217 = _0x1c40d9(),
_0x28f1fd = (_0xa6d217['conso' + 'le'] = _0xa6d217['conso' + 'le'] || {}),
_0x427c5e = ['log', 'warn', 'info', 'error', 'excep' + 'tion', 'table', 'trace'];
for (let _0x5a262e = 0x0; _0x5a262e < _0x427c5e['lengt' + 'h']; _0x5a262e++) {
const _0x361466 = j6_0xca47fd['const' + 'ructo' + 'r']['proto' + 'type']['bind'](j6_0xca47fd),
_0x462cef = _0x427c5e[_0x5a262e],
_0x195676 = _0x28f1fd[_0x462cef] || _0x361466;
(_0x361466['__pro' + 'to__'] = j6_0xca47fd['bind'](j6_0xca47fd)),
(_0x361466['toStr' + 'ing'] = _0x195676['toStr' + 'ing']['bind'](_0x195676)),
(_0x28f1fd[_0x462cef] = _0x361466);
}
});
j6_0x14eaec();
class EFBUtils {
static ['setSe' + 'ating' + 'Posit' + 'ion'](_0x183760) {
SimVar['SetSi' + 'mVarV' + 'alue']('A:CAMERA STATE', 'Number', 0x2),
SimVar['SetSi' + 'mVarV' + 'alue']('A:CAMERA SUBSTATE', 'Number', 0x1),
SimVar['SetSi' + 'mVarV' + 'alue']('A:CAMERA REQUEST ACTION', 'Number', 0x1),
_0x183760
? setTimeout(() => {
SimVar['SetSi' + 'mVarV' + 'alue']('A:CAMERA VIEW TYPE AND INDEX:1', 'Number', 0x4);
}, 0x1f4)
: setTimeout(() => {
SimVar['SetSi' + 'mVarV' + 'alue']('A:CAMERA VIEW TYPE AND INDEX:1', 'Number', 0x1);
}, 0x1f4),
SimVar['SetSi' + 'mVarV' + 'alue']('L:FSS_B727_EFB_SEATING_POSITION', 'Bool', _0x183760);
}
static ['impor' + 'tFlig' + 'htPla' + 'n'](_0xc32463) {
const _0x382d2b =
'https' +
'://ww' +
'w.sim' +
'brief' +
'.com/' +
'api/x' +
'ml.fe' +
'tcher' +
'.php?' +
'usern' +
'ame=' +
_0xc32463;
return fetch(_0x382d2b)
['then']((_0x2cc7e3) => {
return _0x2cc7e3['text']();
})
['then']((_0x26b60a) => {
const _0x58169d = new DOMParser(),
_0x7997e1 = _0x58169d['parse' + 'FromS' + 'tring'](_0x26b60a, 'text/xml');
let _0x21dfa5 = {};
const _0x300c26 = _0x7997e1['query' + 'Selec' + 'tor']('fetch > status');
_0x300c26 && (_0x21dfa5['statu' + 's'] = _0x300c26['inner' + 'HTML']);
const _0x202d4b = _0x7997e1['query' + 'Selec' + 'tor']('params > units');
_0x202d4b && (_0x21dfa5['units'] = _0x202d4b['inner' + 'HTML']);
const _0x2b5b6f = _0x7997e1['query' + 'Selec' + 'tor']('origin > icao_code');
_0x2b5b6f && (_0x21dfa5['origi' + 'n'] = _0x2b5b6f['inner' + 'HTML']);
const _0x37322c = _0x7997e1['query' + 'Selec' + 'tor']('destination > icao_code');
_0x37322c && (_0x21dfa5['desti' + 'natio' + 'n'] = _0x37322c['inner' + 'HTML']);
const _0x4f66aa = _0x7997e1['query' + 'Selec' + 'tor']('aircraft > icaocode');
_0x4f66aa && (_0x21dfa5['aircr' + 'aft'] = _0x4f66aa['inner' + 'HTML']);
const _0x3e15f6 = _0x7997e1['query' + 'Selec' + 'tor']('fuel > plan_ramp');
_0x3e15f6 && (_0x21dfa5['fuel'] = parseFloat(_0x3e15f6['inner' + 'HTML']));
const _0x53c20f = _0x7997e1['query' + 'Selec' + 'tor']('weights > payload');
/* KHOFMANN START */
// This is only to allow the new gauges to auto fetch the plan
SimVar.SetSimVarValue('L:KH_FE_FPLAN_NEW_DATA', 'bool', 1);
/* KHOFMANN END */
return _0x53c20f && (_0x21dfa5['paylo' + 'ad'] = parseFloat(_0x53c20f['inner' + 'HTML'])), _0x21dfa5;
});
}
static ['meter' + 'ToFee' + 't'](_0x945b59) {
return _0x945b59 * 3.28084;
}
static ['feetT' + 'oMete' + 'r'](_0x433b0d) {
return _0x433b0d * 0.3048;
}
static ['feetT' + 'oNaut' + 'icalM' + 'ile'](_0x51576c) {
return _0x51576c * 0.000164579;
}
static ['lbsTo' + 'Kg'](_0x2d9367) {
return _0x2d9367 * 0.453592;
}
static ['gtn75' + '0Inst' + 'alled']() {
return !!SimVar['GetSi' + 'mVarV' + 'alueF' + 'ast']('L:PMS50_GTN750_INSTALLED', 'Bool');
}
static ['gtnxi' + 'Insta' + 'lled']() {
return !!SimVar['GetSi' + 'mVarV' + 'alueF' + 'ast']('L:TDSGTNXI_INSTALLED', 'Bool');
}
static ['diffA' + 'ndSet' + 'Value'](_0x2e7fbe, _0xaeb6de) {
_0x2e7fbe['value'] != _0xaeb6de && (_0x2e7fbe['value'] = _0xaeb6de);
}
static ['diffA' + 'ndAdd' + 'Attri' + 'bute'](_0x2a092d, _0x29db47, _0x56d461) {
const _0x47c464 = !!_0x2a092d['getAt' + 'tribu' + 'te'](_0x29db47);
_0x56d461
? !_0x47c464 && _0x2a092d['setAt' + 'tribu' + 'te'](_0x29db47, !![])
: _0x47c464 && _0x2a092d['remov' + 'eAttr' + 'ibute'](_0x29db47);
}
static ['genSh' + 'uffle' + 'dArra' + 'y'](_0x493b5a) {
return Array['from'](Array(_0x493b5a)['keys']())['sort'](() => Math['rando' + 'm']() - 0.5);
}
static ['setIn' + 'putOn' + 'Chang' + 'e'](_0x344d78, _0x4988f3) {
(_0x344d78['onkey' + 'press'] = (_0xb39586) => {
const _0x252e2b = _0xb39586['which'];
_0x252e2b === 0xd && _0xb39586['srcEl' + 'ement']['blur']();
}),
(_0x344d78['onblu' + 'r'] = (_0x27045f) => {
_0x4988f3(_0x27045f['srcEl' + 'ement']);
});
}
static ['setWi' + 'ndInp' + 'ut'](_0x1d7d59, _0x3174de) {
EFBUtils['setIn' + 'putOn' + 'Chang' + 'e'](_0x1d7d59, (_0x2632cd) => {
let _0xe0907b = 0x0,
_0x46f45b = 0x0;
if (_0x2632cd['value']) {
const _0xc0d1bd = _0x2632cd['value']['split']('/');
if (_0xc0d1bd['lengt' + 'h'] > 0x1)
(_0xe0907b = parseInt(_0xc0d1bd[0x0])),
(_0x46f45b = parseInt(_0xc0d1bd[0x1])),
isNaN(_0xe0907b) && (_0xe0907b = 0x0),
isNaN(_0x46f45b) && (_0x46f45b = 0x0);
else
_0xc0d1bd['lengt' + 'h'] > 0x0 &&
((_0xe0907b = parseInt(_0xc0d1bd[0x0])), isNaN(_0xe0907b) && (_0xe0907b = 0x0));
}
(_0xe0907b = Math['max'](Math['min'](_0xe0907b, 0x168), 0x0)),
(_0x46f45b = Math['max'](Math['min'](_0x46f45b, 0x63), 0x0)),
(_0x2632cd['value'] =
_0xe0907b['toStr' + 'ing']()['padSt' + 'art'](0x3, '0') +
'/' +
_0x46f45b['toStr' + 'ing']()['padSt' + 'art'](0x2, '0')),
_0x3174de({ dir: _0xe0907b, speed: _0x46f45b });
});
}
static ['setQN' + 'HInpu' + 't'](_0x303325, _0x509c84) {
EFBUtils['setIn' + 'putOn' + 'Chang' + 'e'](_0x303325, (_0xc37bc3) => {
let _0x338a95 = 0x0;
_0xc37bc3['value'] && ((_0x338a95 = parseFloat(_0xc37bc3['value'])), isNaN(_0x338a95) && (_0x338a95 = 0x0)),
(_0xc37bc3['value'] = _0x338a95['toFix' + 'ed'](0x2)),
_0x509c84(_0x338a95);
});
}
static ['setTe' + 'mpInp' + 'ut'](_0x3f84c5, _0x5692e2) {
EFBUtils['setIn' + 'putOn' + 'Chang' + 'e'](_0x3f84c5, (_0x506059) => {
let _0x40003b = 0x0;
_0x506059['value'] && ((_0x40003b = parseInt(_0x506059['value'])), isNaN(_0x40003b) && (_0x40003b = 0x0)),
(_0x506059['value'] = _0x40003b),
_0x5692e2({ tempF: _0x40003b, tempC: EFBUtils['fahre' + 'nheit' + 'ToCel' + 'cius'](_0x40003b) });
});
}
static ['fahre' + 'nheit' + 'ToCel' + 'cius'](_0x5a890b) {
return (_0x5a890b - 0x20) * (0x5 / 0x9);
}
static ['isOSR']() {
const _0x4e6689 = SimVar['GetSi' + 'mVarV' + 'alue']('A:TITLE', 'String');
return _0x4e6689['toLow' + 'erCas' + 'e']()['inclu' + 'des']('oil spill response');
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1 @@
#KH_CTRL{align-items:center;display:flex;height:80px;justify-content:space-around}#KH_CTRL .button{border:1px solid #000;border-radius:5px;padding-left:7px;padding-right:7px}#KH_CTRL .button .icon{margin-top:6px;width:30px}#KH_CTRL .button:hover:not([disabled]){background-color:var(--buttonHoverColor)}#KH_CTRL .button.d180{transform:rotate(180deg)}#KH_CTRL .button.d90{transform:rotate(90deg)}@font-face{font-family:Consolas;font-style:normal;font-weight:100;src:url(assets/fonts/Consolas.ttf) format("truetype")}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:#d3d3d3}::-webkit-scrollbar-thumb{background:gray;height:200px}::-webkit-scrollbar-thumb:hover{background:#a9a9a9}#root{--buttonHoverColor:#d3d3d3;--fss-select-hover:#d3d3d3;background-image:url(../EFB/Images/bg.png);background-size:100% 100%;color:#000;font-size:25px;height:100%;padding:3vw;width:594px}#root #KH_FE_FPLAN{height:calc(100vh - 6vw - 180px);margin-bottom:3vw;margin-top:100px;overflow-x:hidden;overflow-y:scroll;width:100%}#root #KH_FE_FPLAN #OFP div,#root #KH_FE_FPLAN #TLR div{font-size:unset!important;line-height:unset!important}#root #KH_FE_FPLAN #OFP pre,#root #KH_FE_FPLAN #TLR pre{font-family:Consolas!important;font-size:13px;line-height:14px;white-space:pre}#root #KH_FE_FPLAN #OFP img{width:100%}#root #KH_FE_FPLAN.p2{height:calc(100vh - 6vw - 240px);margin-top:160px}
Loaded 100 of 113 files, more files were not shown because too many files have changed in this diff. Show more