3 #include "../MathUtilities.h" 4 #include "../Dialogs/PeopleManagerDialog.h" 5 #include "../Dialogs/InformationDialog.h" 28 D3DXVec3Normalize(&velocityVec, &velocityVec);
29 D3DXVec3Scale(&velocityVec, &velocityVec, -100.0f);
32 if (velocityVec.z != 0.0f)
34 bearVel = D3DXToDegree(atanf(velocityVec.x / velocityVec.z));
35 markVel = D3DXToDegree(atanf(velocityVec.y / velocityVec.z));
39 f_temp = 180.0f / f_temp;
43 if (velocityVec.z > 0.0f)
55 if (velocityVec.y < 0.0f)
67 const float ourPositionLength = D3DXVec3Length(&
playerships[0].position);
82 if (waypointPosition.x == 0.0f)
86 D3DXVec3Subtract(&result1, &
playerships[0].position, &waypointPosition);
88 const float altd = D3DXVec3Length(&waypointPosition) - ourPositionLength;
113 const float altd = D3DXVec3Length(&
allobjects[t].position) - ourPositionLength;
123 if (result1.z != 0.0f)
125 bear = D3DXToDegree(atanf(result1.x / result1.z));
126 mark = D3DXToDegree(atanf(result1.y / result1.z));
130 f_temp = 180.0f / f_temp;
134 if (result1.z > 0.0f)
146 if (result1.y < 0.0f)
160 D3DXVECTOR3 compassnorth;
162 D3DXVec3Normalize(&compassnorth, &compassnorth);
163 D3DXVec3Scale(&compassnorth, &compassnorth, ourPositionLength);
164 D3DXVec3Subtract(&compassnorth, &compassnorth, &
playerships[0].position);
165 D3DXVec3Normalize(&compassnorth, &compassnorth);
171 D3DXVec3Normalize(&result1, &result1);
172 D3DXVec3Scale(&result1, &result1, ourPositionLength);
175 D3DXVec3Subtract(&result1, &result1, &
playerships[0].position);
176 D3DXVec3Normalize(&result1, &result1);
179 float f_temp = D3DXVec3Dot(&result1, &compassnorth);
182 else if (f_temp <= -1.0f)
188 D3DXVec3Cross(&result1, &result1, &compassnorth);
189 D3DXVec3Add(&result1, &result1, &
playerships[0].position);
190 if (D3DXVec3Length(&result1) > ourPositionLength)
197 const float trackLen = D3DXVec3Length(&track);
198 if (
playerships[0].reference != REF_ONGROUND && trackLen > 0.001f)
201 D3DXVec3Normalize(&track, &track);
202 D3DXVec3Add(&track, &track, &
playerships[0].position);
205 D3DXVec3Normalize(&track, &track);
206 D3DXVec3Scale(&track, &track, ourPositionLength);
209 D3DXVec3Subtract(&track, &track, &
playerships[0].position);
210 D3DXVec3Normalize(&track, &track);
212 f_temp = D3DXVec3Dot(&track, &compassnorth);
215 else if (f_temp <= -1.0f)
221 D3DXVec3Cross(&track, &track, &compassnorth);
222 D3DXVec3Add(&track, &track, &
playerships[0].position);
223 if (D3DXVec3Length(&track) > ourPositionLength)
232 D3DXMATRIX matrixInverse;
233 D3DXMatrixInverse(&matrixInverse,
nullptr, &
playerships[0].matrixWorld);
234 D3DXMatrixMultiply(&matrixInverse, &
allobjects[
ourmoonC].matrixWorld, &matrixInverse);
238 result.x = matrixInverse._41;
239 result.y = matrixInverse._42;
240 result.z = matrixInverse._43;
242 if (fabsf(result.y) > FLT_EPSILON)
246 else if (result.x < 0.0f)
271 command.
name =
"AuralLowFuel";
291 D3DXMATRIX matrixWorld;
433 #pragma region Scanner display for air/space vehicles 436 D3DXMATRIX transform;
437 D3DXMatrixTranslation(&transform, 207, 0, 0);
442 const long yTextIncr = 11;
464 rect.left = 795; rect.top = yText; rect.right = rect.bottom = 0;
470 static float flashtime = 0.0f;
471 static bool tripped =
true;
476 if (fromDist > currentdist && !tripped)
485 else if (fromDist < currentdist)
490 if (fromDist > 10000.0f)
491 swprintf_s(str, 99, L
" LAST %.3f kkm", fromDist * 0.001f);
493 swprintf_s(str, 99, L
" LAST %.3f km", fromDist);
495 if (flashtime > 0.0f)
497 if (fmodf(flashtime, 1.0f) > 0.5f)
498 hi = D3DCOLOR_ARGB(255, 255, 255, 255);
500 hi = D3DCOLOR_ARGB(255, 0, 127, 127);
501 flashtime -= fElapsedTime;
504 hi = D3DCOLOR_ARGB(255, 0, 127, 127);
506 rect.left = 773; rect.top = yText; rect.right = rect.bottom = 0;
533 const float minutes = floorf((hours - floorf(hours)) * 60.0f);
541 if (currentdist >= 0)
543 if (currentdist > 10000.0f)
544 swprintf_s(str, 99, L
"%CWAYPT %.3f kkm", thji, currentdist * 0.001f);
546 swprintf_s(str, 99, L
"%CWAYPT %.3f km", thji, currentdist);
549 swprintf_s(str, 99, L
"%CWAYPT Unused", thji);
551 hi = D3DCOLOR_ARGB(255, 0, 255, 255);
552 rect.left = 773; rect.top = yText; rect.right = rect.bottom = 0;
565 hi = D3DCOLOR_ARGB(255, 192, 192, 0);
567 hi = D3DCOLOR_ARGB(255, 192, 0, 192);
569 hi = D3DCOLOR_ARGB(255, 0, 192, 0);
571 hi = D3DCOLOR_ARGB(255, 192, 0, 0);
573 hi = D3DCOLOR_ARGB(255, 192, 192, 192);
593 rect.left = 773; rect.top = yText; rect.right = rect.bottom = 0;
612 f_temp = D3DXVec3Length(&result);
613 swprintf_s(str, 99, L
"%CYSP%i %.3f km", thji,
playerships[0].portassigned, f_temp);
618 swprintf_s(str, 99, L
"%CYSP %.3f kkm", thji,
allobjects[2].distance * 0.001f);
620 swprintf_s(str, 99, L
"%CYSP %.3f km", thji,
allobjects[2].distance);
623 hi = D3DCOLOR_ARGB(255, 0, 255, 255);
624 rect.left = 773; rect.top = yText; rect.right = rect.bottom = 0;
640 f_temp = D3DXVec3Length(&result);
641 swprintf_s(str, 99, L
"%CTAC%i %.3f km", thji,
playerships[0].portassigned, f_temp);
646 swprintf_s(str, 99, L
"%CTAC %.3f kkm", thji,
allobjects[1].distance * 0.001f);
648 swprintf_s(str, 99, L
"%CTAC %.3f km", thji,
allobjects[1].distance);
651 hi = D3DCOLOR_ARGB(255, 0, 255, 255);
652 rect.left = 773; rect.top = yText; rect.right = rect.bottom = 0;
669 f_temp = D3DXVec3Length(&result);
671 swprintf_s(str, 99, L
"%CCPOCd %.3f km", thji, f_temp);
673 swprintf_s(str, 99, L
"%CCPOC%i %.3f km", thji,
playerships[0].portassigned, f_temp);
678 swprintf_s(str, 99, L
"%CCPOC %.3f kkm", thji,
allobjects[0].distance * 0.001f);
680 swprintf_s(str, 99, L
"%CCPOC %.3f km", thji,
allobjects[0].distance);
683 hi = D3DCOLOR_ARGB(255, 0, 255, 255);
684 rect.left = 773; rect.top = yText; rect.right = rect.bottom = 0;
692 rect.left = 795; rect.top = yText; rect.right = rect.bottom = 0;
699 D3DXMATRIX transform;
700 D3DXMatrixIdentity(&transform);
709 #pragma region Interior Nameplate 717 D3DXMATRIX transform;
718 D3DXMatrixTranslation(&transform, 102, 44, 0);
737 swprintf_s(str, 99, L
"U.S.V. %S",
playerships[0].hullname);
745 swprintf_s(str, 99, L
"IVR %S",
playerships[0].IVR);
747 swprintf_s(str, 99, L
"FFS-%S",
playerships[0].IVR);
757 D3DXMATRIX transform;
758 D3DXMatrixIdentity(&transform);
774 V(pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true));
775 V(pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA));
776 V(pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA));
777 V(pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS));
779 V(pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1));
780 V(pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1));
781 V(pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE));
787 D3DXVECTOR2 corner[4];
788 corner[0].x = 64.0f; corner[0].y = -64.0f;
789 corner[1].x = -64.0f; corner[1].y = -64.0f;
790 corner[2].x = 64.0f; corner[2].y = 64.0f;
791 corner[3].x = -64.0f; corner[3].y = 64.0f;
797 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
798 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
799 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
800 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
805 (*vtxs).
x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
806 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
808 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
809 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
811 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
812 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
814 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
815 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
822 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
831 corner[0].x = 32.0f; corner[0].y = -32.0f;
832 corner[1].x = -32.0f; corner[1].y = -32.0f;
833 corner[2].x = 32.0f; corner[2].y = 32.0f;
834 corner[3].x = -32.0f; corner[3].y = 32.0f;
836 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(-90.0f +
ourcockpit.
tirespeedKph * 0.692307692307692307692307692307f));
838 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
839 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
840 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
841 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
845 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
846 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
848 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
849 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
851 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
852 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
854 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
855 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
862 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
865 static float tach = 0.0f;
873 corner[0].x = 64.0f; corner[0].y = -64.0f;
874 corner[1].x = -64.0f; corner[1].y = -64.0f;
875 corner[2].x = 64.0f; corner[2].y = 64.0f;
876 corner[3].x = -64.0f; corner[3].y = 64.0f;
878 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(-150.0f + 300.0f * tach));
880 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
881 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
882 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
883 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
887 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
888 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
890 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
891 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
893 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
894 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
896 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
897 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
904 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
913 corner[0].x = 32.0f; corner[0].y = -32.0f;
914 corner[1].x = -32.0f; corner[1].y = -32.0f;
915 corner[2].x = 32.0f; corner[2].y = 32.0f;
916 corner[3].x = -32.0f; corner[3].y = 32.0f;
918 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(-90.0f + 180.0f * tach));
920 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
921 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
922 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
923 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
927 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
928 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
930 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
931 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
933 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
934 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
936 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
937 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
944 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
951 corner[0].x = 32.0f; corner[0].y = -32.0f;
952 corner[1].x = -32.0f; corner[1].y = -32.0f;
953 corner[2].x = 32.0f; corner[2].y = 32.0f;
954 corner[3].x = -32.0f; corner[3].y = 32.0f;
957 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(-115.0f + 230.0f * f_temp));
959 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
960 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
961 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
962 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
966 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
967 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
969 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
970 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
972 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
973 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
975 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
976 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
983 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
991 corner[0].x = 32.0f; corner[0].y = -32.0f;
992 corner[1].x = -32.0f; corner[1].y = -32.0f;
993 corner[2].x = 32.0f; corner[2].y = 32.0f;
994 corner[3].x = -32.0f; corner[3].y = 32.0f;
997 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(-90.0f - 180.0f * f_temp));
999 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
1000 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
1001 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
1002 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
1006 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1007 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
1009 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1010 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
1012 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1013 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
1015 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1016 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
1023 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
1030 corner[0].x = 32.0f; corner[0].y = -32.0f;
1031 corner[1].x = -32.0f; corner[1].y = -32.0f;
1032 corner[2].x = 32.0f; corner[2].y = 32.0f;
1033 corner[3].x = -32.0f; corner[3].y = 32.0f;
1036 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(-120.0f + 240.0f * f_temp));
1038 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
1039 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
1040 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
1041 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
1045 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1046 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
1048 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1049 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
1051 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1052 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
1054 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1055 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
1062 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
1069 corner[0].x = 32.0f; corner[0].y = -32.0f;
1070 corner[1].x = -32.0f; corner[1].y = -32.0f;
1071 corner[2].x = 32.0f; corner[2].y = 32.0f;
1072 corner[3].x = -32.0f; corner[3].y = 32.0f;
1074 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(
bear));
1079 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
1080 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
1081 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
1082 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
1086 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1087 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
1089 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1090 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
1092 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1093 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
1095 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1096 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
1103 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
1106 pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
1109 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
false);
1110 pd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
1111 pd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
1113 pd3dDevice->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);
1129 rect.left = 0 + offsetx;
1130 rect.right = 63 + offsetx;
1167 rect.left = 234; rect.top = 325; rect.right = 250; rect.bottom = 345;
1275 float dist = 999.0f;
1276 for (t = -1; t < 2; t++)
1283 swprintf_s(str, 99, L
">WAYPT");
1294 swprintf_s(str, 99, L
" WAYPT");
1296 rect.left = 0; rect.top = 170 + 10 * (t + 1); rect.right = rect.bottom = 0;
1317 hi = D3DCOLOR_ARGB(255, 192, 192, 0);
1319 hi = D3DCOLOR_ARGB(255, 192, 0, 192);
1321 hi = D3DCOLOR_ARGB(255, 0, 192, 0);
1323 hi = D3DCOLOR_ARGB(255, 192, 0, 0);
1325 hi = D3DCOLOR_ARGB(255, 192, 192, 192);
1340 wcscat_s(str, 99, L
" TOW");
1341 rect.left = 0; rect.top = 170 + 10 * (t + 1); rect.right = rect.bottom = 0;
1347 swprintf_s(str, 99, L
" WAYPT");
1348 rect.left = 0; rect.top = 170 + 10 * (t + 1); rect.right = rect.bottom = 0;
1355 swprintf_s(str, 99, L
"%05.3f", dist);
1356 rect.left = 169; rect.top = 323; rect.right = rect.bottom = 0;
1361 swprintf_s(str, 99, L
"%05.3f", dist * 1000.0f);
1362 rect.left = 169; rect.top = 323; rect.right = rect.bottom = 0;
1366 for (
unsigned t = 0; t < 5; t++)
1370 tempmsg[0] = str[t];
1371 rect.left = 153 + t * 8; rect.top = 310; rect.right = rect.bottom = 0;
1391 else if (dist > 0.025f)
1419 swprintf_s(str, 99, L
"WAYPT ►%.0f° %.3f km", fabsf(
bear), dist);
1420 else if (
bear <= -0.5f)
1421 swprintf_s(str, 99, L
"WAYPT ◄%.0f° %.3f km", fabsf(
bear), dist);
1423 swprintf_s(str, 99, L
"WAYPT ▲%.0f° %.3f km", fabsf(
bear), dist);
1429 else if (
bear <= -0.5f)
1434 rect.left = 0; rect.top = 264; rect.right = rect.bottom = 0;
1446 for (
unsigned t = 0; t < 6; t++)
1448 rect.left = 180 + t * 8; rect.top = 102; rect.right = rect.bottom = 0;
1452 rect.left = 180 + 6 * 8; rect.top = 102; rect.right = rect.bottom = 0;
1457 for (
unsigned t = 0; t < 7; t++)
1459 rect.left = 178 + t * 8; rect.top = 102; rect.right = rect.bottom = 0;
1462 rect.left = 176 + 7 * 8; rect.top = 102; rect.right = rect.bottom = 0;
1468 for (
unsigned t = 0; t < 6; t++)
1470 rect.left = 286 + t * 7; rect.top = 320; rect.right = rect.bottom = 0;
1474 rect.left = 286 + 6 * 7; rect.top = 320; rect.right = rect.bottom = 0;
1486 pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,
true);
1491 corner[0].x = 32.0f; corner[0].y = -32.0f;
1492 corner[1].x = -32.0f; corner[1].y = -32.0f;
1493 corner[2].x = 32.0f; corner[2].y = 32.0f;
1494 corner[3].x = -32.0f; corner[3].y = 32.0f;
1497 D3DXMatrixRotationZ(&matrixWorld, D3DXToRadian(-90.0f + 180.0f * f_temp));
1499 D3DXVec2TransformCoord(&corner[0], &corner[0], &matrixWorld);
1500 D3DXVec2TransformCoord(&corner[1], &corner[1], &matrixWorld);
1501 D3DXVec2TransformCoord(&corner[2], &corner[2], &matrixWorld);
1502 D3DXVec2TransformCoord(&corner[3], &corner[3], &matrixWorld);
1506 (*vtxs).x = x + corner[0].x; (*vtxs).y = y + corner[0].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1507 (*vtxs).tu = 1.0f; (*vtxs).tv = 0.0f;
1509 (*vtxs).
x = x + corner[1].x; (*vtxs).y = y + corner[1].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1510 (*vtxs).tu = 0.0f; (*vtxs).tv = 0.0f;
1512 (*vtxs).
x = x + corner[2].x; (*vtxs).y = y + corner[2].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1513 (*vtxs).tu = 1.0f; (*vtxs).tv = 1.0f;
1515 (*vtxs).
x = x + corner[3].x; (*vtxs).y = y + corner[3].y; (*vtxs).z = 0.0f; (*vtxs).w = 1.0f;
1516 (*vtxs).tu = 0.0f; (*vtxs).tv = 1.0f;
1523 V(pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2));
SPlayerData selectedPerson
std::vector< Command > commandStream
float GetArcDist(D3DXVECTOR3 from, D3DXVECTOR3 to, bool includeAltDiff)
short scanDisplayVesselLimit
LPDIRECT3DTEXTURE9 m_pddsNamePlate
LPDIRECT3DTEXTURE9 m_pddsAOA[3]
InformationDialog * informationDialog
LPDIRECT3DTEXTURE9 m_pddsGVDirection
void Draw(IDirect3DDevice9 *pd3dDevice)
s_network_objects playerships[MAX_SCAN]
void FrameMove(float fElapsedTime)
float RollAttitudeRadians
void OnCreateDevice(IDirect3DDevice9 *pd3dDevice)
LPD3DXSPRITE m_spriteVector
LPDIRECT3DTEXTURE9 m_pddsGVDialSmall
void SendEvent(EventType eventType, float extent=0.0f) const
D3DXVECTOR3 dockInterface
D3DXVECTOR3 GetArcBear(D3DXVECTOR3 vec2, float dist, float altd, D3DXVECTOR3 posnorml)
instruments(Viewscreen *ptr)
const D3DXVECTOR3 northpoleC
void Draw(float fElapsedTime, IDirect3DDevice9 *pd3dDevice) const
static DialogBase * dialogs[D_ENUMERATION]
float HeadingTrackDegrees
s_universe_object allobjects[maxstarC]
#define D3DFVF_INSTRUMENT
void AddDelayedSound(int soundEnum, float delay, float volume=1.0f)
LPDIRECT3DTEXTURE9 m_pddsLightsCruiseIcons
void Log(const char *msg, Level level=Info, int errorCode=0)
LPDIRECT3DTEXTURE9 m_pddsFuelIcon
LPDIRECT3DVERTEXBUFFER9 m_avInstrument
float Play(int soundEnum)
void CreateVB(IDirect3DDevice9 *pd3dDevice)
void OnResetDevice(IDirect3DDevice9 *pd3dDevice, const D3DSURFACE_DESC *pBackBufferSurfaceDesc)
void Update(bool pIsGrndVehicle, float pElasedTime)
std::vector< Swaypoint > waypoint
LPDIRECT3DTEXTURE9 m_pddsGVCompass
void AddToCallStack(const char *msg)
D3DXVECTOR3 lastWaypointLocation
float PitchAttitudeRadians
LPDIRECT3DTEXTURE9 m_pddsGVBackground