void DeltaGlider::DefinePanelMain (PANELHANDLE hPanel)
{
MESHGROUP grp;
memset (&grp, 0, sizeof(MESHGROUP));
ReleaseSurfaces();
const DWORD NVTX = 4, NIDX = 6;
const DWORD texw = PANEL2D_TEXW, texh = PANEL2D_TEXH;
const DWORD panelw = PANEL2D_WIDTH, panelh = 572, panely0 = PANEL2D_TEXH-572;
int xofs, g = 0;
// panel billboard definition
static NTVERTEX VTX[NVTX] = {
{ 0, 0,0, 0,0,0, 0, 1.0f-(float)panelh/(float)texh},
{panelw, 0,0, 0,0,0, (float)panelw/(float)texw,1.0f-(float)panelh/(float)texh},
{panelw,panelh,0, 0,0,0, (float)panelw/(float)texw,1},
{ 0,panelh,0, 0,0,0, 0, 1}
};
static WORD IDX[NIDX] = {
0,1,2,2,3,0
};
DWORD i, mfdgrp[2];
// Create the mesh for defining the panel geometry
if (hPanelMesh) oapiDeleteMesh (hPanelMesh);
hPanelMesh = oapiCreateMesh (0, 0);
for (i = 0; i < 5; i++)
oapiAddMeshGroup (hPanelMesh, &grp);
// 1. Define panel elements underneath the the main panel (mesh group 0)
// Attitude, HSI, AOA and VS tapes
for (i = 0; i < 4; i++)
instr[i]->AddMeshData2D (hPanelMesh, 0);
// 2. Define main panel background (group 1)
oapiAddMeshGroupBlock (hPanelMesh, 1, VTX, NVTX, IDX, NIDX);
// 3. Define panel elements on top of the main panel (group 2)
for (i = 4; i < ninstr_main; i++)
instr[i]->AddMeshData2D (hPanelMesh, 2);
aap->AddMeshData2D (hPanelMesh, 2);
// 4. Define left and right MFD displays (groups 3+4)
static NTVERTEX VTX_MFD[2][4] = {
{{ 216, 65,0, 0,0,0, 0,0},
{ 504, 65,0, 0,0,0, 1,0},
{ 216,353,0, 0,0,0, 0,1},
{ 504,353,0, 0,0,0, 1,1}},
{{ 778, 65,0, 0,0,0, 0,0},
{1066, 65,0, 0,0,0, 1,0},
{ 778,353,0, 0,0,0, 0,1},
{1066,353,0, 0,0,0, 1,1}}
};
static WORD IDX_MFD[6] = {
0,1,2,3,2,1
};
for (i = 0; i < 2; i++) {
mfdgrp[i] = 3+i;
oapiAddMeshGroupBlock (hPanelMesh, mfdgrp[i], VTX_MFD[i], 4, IDX_MFD, 6);
}
SetPanelBackground (hPanel, &panel2dtex, 1, hPanelMesh, panelw, panelh, 190,
PANEL_ATTACH_BOTTOM | PANEL_MOVEOUT_BOTTOM);
// Define MFD layout (display and buttons)
RegisterPanelMFDGeometry (hPanel, MFD_LEFT, 0, mfdgrp[0]);
RegisterPanelMFDGeometry (hPanel, MFD_RIGHT, 0, mfdgrp[1]);
xofs = 173; // left MFD
RegisterPanelArea (hPanel, AID_MFD1_BBUTTONS, _R( 51+xofs,359,321+xofs,377), PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[30]); // bottom button row
RegisterPanelArea (hPanel, AID_MFD1_LBUTTONS, _R( xofs,100, 25+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[31]); // left button column
RegisterPanelArea (hPanel, AID_MFD1_RBUTTONS, _R(348+xofs,100,373+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[32]); // right button column
xofs = 736; // right MFD
RegisterPanelArea (hPanel, AID_MFD2_BBUTTONS, _R( 51+xofs,359,321+xofs,377), PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[33]); // bottom button row
RegisterPanelArea (hPanel, AID_MFD2_LBUTTONS, _R( xofs,100, 25+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[34]); // left button column
RegisterPanelArea (hPanel, AID_MFD2_RBUTTONS, _R(348+xofs,100,373+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[35]); // right button column
RegisterPanelArea (hPanel, AID_HORIZON, _R(0,0,0,0), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, 0, instr[0]);
RegisterPanelArea (hPanel, AID_HSIINSTR, _R(0,0,0,0), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, 0, instr[1]);
RegisterPanelArea (hPanel, AID_AOAINSTR, _R(0,0,0,0), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, panel2dtex, instr[2]);
RegisterPanelArea (hPanel, AID_VSINSTR, _R(0,0,0,0), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, panel2dtex, instr[3]);
RegisterPanelArea (hPanel, AID_MAINPROP, _R(0,0,0,0), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, panel2dtex, instr[4]);
RegisterPanelArea (hPanel, AID_NAVMODE, _R(1121,119,1197,273), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN, panel2dtex, instr[5]);
RegisterPanelArea (hPanel, AID_ELEVATORTRIM, _R(1242,135,1262,195), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[6]);
RegisterPanelArea (hPanel, AID_AIRBRAKE, _R(1242,215,1262,275), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN, panel2dtex, instr[7]);
RegisterPanelArea (hPanel, AID_ENGINEMAIN, _R(108,52,161,227), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED, panel2dtex, instr[8]);
RegisterPanelArea (hPanel, AID_ENGINEHOVER, _R(108, 234,161,374), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBPRESSED, panel2dtex, instr[9]);
RegisterPanelArea (hPanel, AID_ATTITUDEMODE, _R(1136,69,1176,113), PANEL_REDRAW_MOUSE, PANEL_MOUSE_DOWN, panel2dtex, instr[10]);
RegisterPanelArea (hPanel, AID_ADCTRLMODE, _R(1217,69,1257,113), PANEL_REDRAW_MOUSE, PANEL_MOUSE_DOWN, panel2dtex, instr[11]);
RegisterPanelArea (hPanel, AID_DOCKRELEASE, _R(1141,474,1172,504), PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBUP, panel2dtex, instr[12]);
RegisterPanelArea (hPanel, AID_HUDMODE, _R( 15, 18, 122, 33), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[13]);
RegisterPanelArea (hPanel, AID_GEARLEVER, _R(1230,286,1262,511), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN, panel2dtex, instr[14]);
RegisterPanelArea (hPanel, AID_PGIMBALMAINDISP, _R(0,0,0,0), PANEL_REDRAW_USER, PANEL_MOUSE_IGNORE, panel2dtex, instr[15]);
RegisterPanelArea (hPanel, AID_PGIMBALMAIN, _R( 63, 83, 98,125), PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[16]);
RegisterPanelArea (hPanel, AID_PGIMBALMAINMODE, _R(57,139,69,151), PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[17]);
RegisterPanelArea (hPanel, AID_YGIMBALMAINDISP, _R(0,0,0,0), PANEL_REDRAW_USER, PANEL_MOUSE_IGNORE, panel2dtex, instr[18]);
RegisterPanelArea (hPanel, AID_YGIMBALMAIN, _R( 56, 178, 98,213), PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[19]);
RegisterPanelArea (hPanel, AID_YGIMBALMAINMODE, _R(8,165,20, 211), PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[20]);
RegisterPanelArea (hPanel, AID_HBALANCEDISP, _R(0,0,0,0), PANEL_REDRAW_USER, PANEL_MOUSE_IGNORE, panel2dtex, instr[21]);
RegisterPanelArea (hPanel, AID_HOVERBALANCE, _R( 63, 304,79, 348), PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[22]);
RegisterPanelArea (hPanel, AID_HBALANCEMODE, _R( 57, 354, 69,366), PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[23]);
RegisterPanelArea (hPanel, AID_GEARINDICATOR, _R(0,0,0,0), PANEL_REDRAW_USER, PANEL_MOUSE_IGNORE, panel2dtex, instr[24]);
RegisterPanelArea (hPanel, AID_NOSECONELEVER, _R(1141,327,1180,421), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN, panel2dtex, instr[25]);
RegisterPanelArea (hPanel, AID_NOSECONEINDICATOR, _R(0,0,0,0), PANEL_REDRAW_USER, PANEL_MOUSE_IGNORE, panel2dtex, instr[26]);
RegisterPanelArea (hPanel, AID_SWITCHARRAY, _R( 855,415,1106,453), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN, panel2dtex, instr[27]);
RegisterPanelArea (hPanel, AID_WBRAKE_BOTH, _R(1221,494,1273,557), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBUP, panel2dtex, instr[28]);
RegisterPanelArea (hPanel, AID_MWS, _R(1071, 6,1098, 32), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN, panel2dtex, instr[29]);
if (ScramVersion()) {
RegisterPanelArea (hPanel, AID_ENGINESCRAM, _R(108,386,161,488), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED, panel2dtex, instr[instr_scram0+0]);
RegisterPanelArea (hPanel, AID_GIMBALSCRAMDISP, _R(0,0,0,0), PANEL_REDRAW_USER, PANEL_MOUSE_IGNORE, panel2dtex, instr[instr_scram0+1]);
RegisterPanelArea (hPanel, AID_GIMBALSCRAM, _R( 63,411, 98,455), PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[instr_scram0+2]);
RegisterPanelArea (hPanel, AID_GIMBALSCRAMMODE, _R(57,468,69,480), PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[instr_scram0+3]);
}
aap->RegisterPanel (hPanel);
InitPanel (0);
}