Split 2020 and 2024 packages due to Avionics framework package

This commit is contained in:
Kilian Hofmann 2025-02-22 02:49:51 +01:00
parent 7112433747
commit 2604fbb75d
113 changed files with 6147 additions and 151 deletions

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -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}

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>

File diff suppressed because one or more lines are too long

9
2024/.prettierrc.cjs Normal file
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

View File

@ -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);
}
}
}

View File

@ -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;
};
}

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;
});
};
}

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();
};
}

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
2024/Gauge/src/index.scss Normal file
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
2024/Gauge/src/index.tsx Normal file
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);

View File

@ -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>

View File

@ -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

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_DECAL0</BitmapSlot></BitmapConfiguration>

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 KiB

View File

@ -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

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_NORMAL</BitmapSlot></BitmapConfiguration>

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 MiB

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_DECAL0</BitmapSlot></BitmapConfiguration>

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_DECAL0</BitmapSlot></BitmapConfiguration>

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 MiB

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_METAL_ROUGH_AO</BitmapSlot><ForceNoAlpha>true</ForceNoAlpha></BitmapConfiguration>

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_EMISSIVE</BitmapSlot></BitmapConfiguration>

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_EMISSIVE</BitmapSlot></BitmapConfiguration>

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 MiB

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_NORMAL</BitmapSlot></BitmapConfiguration>

View File

@ -0,0 +1 @@
<BitmapConfiguration><BitmapSlot>MTL_BITMAP_NORMAL</BitmapSlot></BitmapConfiguration>

View File

@ -0,0 +1,2 @@
[models]
normal=sb-fplan.xml

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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}

Some files were not shown because too many files have changed in this diff Show More