JMW
Aspiring Addon Developer
Help please.
Try as I may I haven't been able to display distances to bases in red if going further away, and in white if getting nearer.
Sounds simple and no doubt is, but can't crack it !
Standard display code is:
Try as I may I haven't been able to display distances to bases in red if going further away, and in white if getting nearer.
Sounds simple and no doubt is, but can't crack it !
Standard display code is:
Code:
if(HUD2 == 1 && oapiGetHUDMode() == HUD_DOCKING &&oapiCockpitMode() == COCKPIT_VIRTUAL) // Display Bases and Distances
{
if(zoom < 100)
zoom -= 0.25;
{oapiCameraSetAperture (zoom*RAD);
if(zoom < 16) zoom = 16;
}
double line = 70;
double linespacing =0;//= 0;
oapi::Font *font = oapiCreateFont (15, false, "MyFont", FONT_NORMAL);
skp->SetFont(font);
char buf[256];
int len = 84;
int len2 = 4;
int i;
double dis2;
int distance ;
double lng, lat;
char basename[84];
OBJHANDLE hPlanet = oapiGetGbodyByName("Earth");
int nBase=oapiGetBaseCount(hPlanet);
for (i=0; i <nBase; i++) {
linespacing = linespacing + 11;
OBJHANDLE Bases = oapiGetBaseByIndex(hPlanet, i);
oapiGetObjectName(Bases, basename, len);
oapiGetBaseEquPos (Bases, &lng, &lat);
GetEquPos (longitude, latitude, radius);
dis2 = sin((latitude)*RAD) * sin(lat*RAD) + cos((latitude)*RAD) * cos((lat)*RAD) * cos((longitude-lng)*RAD);
dis2 = acos(dis2);
dis2 = (dis2)*DEG;
distance = dis2 * 6371;
skp->SetTextColor( 0xffffff);
if(i <= nBase)
{
if(units == 0)
{
distance = distance*0.539957;
}
if (i <17)
{
line = 313;
len = sprintf_s(buf," %s", basename);
skp->SetTextAlign (oapi::Sketchpad::LEFT, oapi::Sketchpad::TOP);
skp->Text(-140,((line) +linespacing), buf, len);
len2 = sprintf_s(buf," %i", distance);
//skp->SetTextAlign (oapi::Sketchpad::RIGHT, oapi::Sketchpad::TOP);
skp->Text(85, ((line)+linespacing), buf, len2);
if(units == 0)
{
skp->SetTextColor( 0x0000ff);//red
skp->Text(180, 70, "Nautical Miles", 14);
}
else
{
skp->SetTextColor( 0x0000ff);//red
skp->Text(190, 70, "Kilometers", 10);
}
}
{
if(i >= 17 && i <34)
{
line = 300;
len = sprintf_s(buf," %s", basename);
skp->SetTextAlign (oapi::Sketchpad::LEFT, oapi::Sketchpad::TOP);
skp->Text(30,((line-175) +linespacing), buf, len);
skp->SetTextAlign (oapi::Sketchpad::RIGHT, oapi::Sketchpad::TOP);
len2 = sprintf_s(buf," %i", distance);
skp->Text(340,((line-175)+linespacing), buf, len2);
}
}
{
if(i >= 34)
{
line = 313;
len = sprintf_s(buf," %s", basename);
skp->SetTextAlign (oapi::Sketchpad::LEFT, oapi::Sketchpad::TOP);
skp->Text(220,((line-375) +linespacing), buf, len);
skp->SetTextAlign (oapi::Sketchpad::RIGHT, oapi::Sketchpad::TOP);
len2 = sprintf_s(buf," %i", distance);
skp->Text(500,((line-375)+linespacing), buf, len2);
}
}
}
}
oapiReleaseFont (font);
}