00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00035 #include "../Include/Gauges.h"
00036 #include "../Include/Utility.h"
00037 #include "../Include/Ui.h"
00038 #include "../Include/Globals.h"
00039 #include "../Include/Subsystems.h"
00040
00041
00049 static int ClickAreaFromTag (Tag tag)
00050 {
00051 int rc = 0;
00052
00053
00054 unsigned long upper = (tag & 0xFFFF0000) >> 16;
00055 if ((upper == 0x4341) || (upper == 0x6361)) {
00056 unsigned long d1 = ((tag & 0x0000FF00) >> 8) - '0';
00057 unsigned long d0 = (tag & 0x000000FF) - '0';
00058 rc = (d1 * 10) + d0;
00059 }
00060
00061 return rc;
00062 }
00063
00064
00065
00066
00067
00068
00069 static void BlitSurface (SSurface *surface, int xOffset, int yOffset, int y_isiz)
00070 {
00071 glRasterPos2i (xOffset, -yOffset);
00072 int xMove = -xOffset + surface->xScreen;
00073 int yMove = yOffset + y_isiz - surface->yScreen - surface->ySize;
00074 glBitmap (0, 0, 0, 0, xMove, yMove, NULL);
00075
00076 BlitTransparent (surface, 0);
00077 }
00078
00079
00080
00081
00082
00083 CGaugeNeedle::CGaugeNeedle (void)
00084 {
00085 shar = false;
00086 sizx = sizy = 0;
00087 offx = offy = 0;
00088 mind = 0;
00089 maxd = 360;
00090 strcpy (base, "");
00091
00092 bmap = NULL;
00093
00094 readFinished = false;
00095 }
00096
00097 CGaugeNeedle::~CGaugeNeedle (void)
00098 {
00099 if (bmap != NULL) {
00100 FreeBitmap (bmap);
00101 delete bmap;
00102 }
00103 }
00104
00105 int CGaugeNeedle::Read (SStream *stream, Tag tag)
00106 {
00107 int rc = TAG_IGNORED;
00108
00109 switch (tag) {
00110 case 'file':
00111
00112 {
00113 char file[64];
00114 ReadString (file, 64, stream);
00115 SStream *s = new SStream;
00116 strcpy (s->filename, "Data\\");
00117 strcat (s->filename, file);
00118 strcpy (s->mode, "r");
00119 if (OpenStream (s)) {
00120 ReadFrom (this, s);
00121 CloseStream (s);
00122 }
00123 delete s;
00124 rc = TAG_READ;
00125 }
00126 break;
00127
00128 case 'shar':
00129
00130 shar = true;
00131 rc = TAG_READ;
00132 break;
00133
00134 case 'sizx':
00135 ReadInt (&sizx, stream);
00136 rc = TAG_READ;
00137 break;
00138
00139 case 'sizy':
00140 ReadInt (&sizy, stream);
00141 rc = TAG_READ;
00142 break;
00143
00144 case 'offx':
00145 ReadInt (&offx, stream);
00146 rc = TAG_READ;
00147 break;
00148
00149 case 'offy':
00150 ReadInt (&offy, stream);
00151 rc = TAG_READ;
00152 break;
00153
00154 case 'mind':
00155 ReadInt (&mind, stream);
00156 rc = TAG_READ;
00157 break;
00158
00159 case 'maxd':
00160 ReadInt (&maxd, stream);
00161 rc = TAG_READ;
00162 break;
00163
00164 case 'base':
00165 ReadString (base, 64, stream);
00166 rc = TAG_READ;
00167 break;
00168 }
00169
00170 if (rc == TAG_IGNORED) {
00171 char s[64];
00172 TagToString (s, tag);
00173 if (globals->logWarning)
00174 globals->logWarning->Write ("CGaugeNeedle::Read : Unknown tag %s", s);
00175 }
00176
00177 return rc;
00178 }
00179
00180 void CGaugeNeedle::ReadFinished (void)
00181 {
00182 if (readFinished) return;
00183
00184 if (strlen(base) > 0) {
00185
00186 bmap = new SBitmap;
00187 strcpy (bmap->bitmapName, "ART\\");
00188 strcat (bmap->bitmapName, base);
00189 strcat (bmap->bitmapName, ".PBG");
00190 LoadBitmap (bmap);
00191 nFrames = NumBitmapFrames (bmap);
00192
00193
00194
00195 int w, h;
00196 GetBitmapSize (bmap, &w, &h);
00197 if (offx != 0) {
00198 offx -= w / 2;
00199 }
00200
00201 if (offy != 0) {
00202 offy -= h / 2;
00203 }
00204 }
00205
00206 readFinished = true;
00207 }
00208
00209 void CGaugeNeedle::Draw (SSurface *surface, float degrees, int cx, int cy)
00210 {
00211 degrees = Wrap360 (degrees);
00212
00213 if (bmap != NULL) {
00214
00215 if (degrees < mind) degrees = mind;
00216 if (degrees > maxd) degrees = maxd;
00217
00218
00219 float fFrame = nFrames * (degrees - mind) / (maxd - mind);
00220 int frame = (int)fFrame;
00221
00222
00223
00225 int w, h;
00226 GetBitmapSize (bmap, &w, &h);
00227
00228
00229 cx -= (w+1)/2;
00230 cy -= (h+1)/2;
00231
00232
00233 DrawBitmap (surface, bmap, offx + cx, offy + cy, frame);
00234 }
00235 }
00236
00237
00238
00239
00240
00241 CGaugeRectangle::CGaugeRectangle (void)
00242 {
00243 x1 = y1 = x2 = y2 = 0;
00244 }
00245
00246 int CGaugeRectangle::Read (SStream *stream, Tag tag)
00247 {
00248 int rc = TAG_IGNORED;
00249
00250 switch (tag) {
00251 case 'rect':
00252 ReadInt (&x1, stream);
00253 ReadInt (&y1, stream);
00254 ReadInt (&x2, stream);
00255 ReadInt (&y2, stream);
00256 rc = TAG_READ;
00257 break;
00258 }
00259
00260 if (rc == TAG_IGNORED) {
00261 char s[64];
00262 TagToString (s, tag);
00263 if (globals->logWarning)
00264 globals->logWarning->Write ("CGaugeRectangle::Read : Unknown tag %s", s);
00265 }
00266
00267 return rc;
00268 }
00269
00270
00271
00272
00273
00274 CGaugeClickArea::CGaugeClickArea (void)
00275 {
00276 strcpy (bmap, "");
00277 strcpy (curs, "");
00278 cursTag = 0;
00279 strcpy (help, "");
00280 bm = NULL;
00281 }
00282
00283 CGaugeClickArea::~CGaugeClickArea (void)
00284 {
00285 if (bm != NULL) {
00286 FreeBitmap (bm);
00287 delete bm;
00288 }
00289 }
00290
00291 int CGaugeClickArea::Read (SStream *stream, Tag tag)
00292 {
00293 int rc = TAG_IGNORED;
00294
00295 switch (tag) {
00296 case 'bmap':
00297 ReadString (bmap, 64, stream);
00298 rc = TAG_READ;
00299 break;
00300
00301 case 'curs':
00302 ReadString (curs, 64, stream);
00303 rc = TAG_READ;
00304 break;
00305
00306 case 'help':
00307 ReadString (help, 64, stream);
00308 rc = TAG_READ;
00309 break;
00310 }
00311
00312 if (rc == TAG_IGNORED) {
00313 rc = CGaugeRectangle::Read (stream, tag);
00314 }
00315
00316 if (rc == TAG_IGNORED) {
00317 char s[64];
00318 TagToString (s, tag);
00319 if (globals->logWarning)
00320 globals->logWarning->Write ("CGaugeClickArea::Read : Unknown tag %s", s);
00321 }
00322
00323 return rc;
00324 }
00325
00326 void CGaugeClickArea::ReadFinished (void)
00327 {
00328
00329 if (strlen (bmap) > 0) {
00330 bm = new SBitmap;
00331 strcpy (bm->bitmapName, "ART\\");
00332 strcat (bm->bitmapName, bmap);
00333 LoadBitmap (bm);
00334 }
00335
00336
00337 cursTag = 0;
00338 if (strlen (curs) > 0) {
00339 cursTag = globals->cursormgr->BindCursor (curs);
00340 }
00341 }
00342
00343 bool CGaugeClickArea::IsHit (int x, int y)
00344 {
00345 return ((x >= x1) && (x <= x2) && (y >= y1) && (y <= y2));
00346 }
00347
00348 ECursorResult CGaugeClickArea::MouseMoved (int x, int y)
00349 {
00350 ECursorResult rc = CURSOR_NOT_CHANGED;
00351
00352
00353 if ((cursTag != 0) && IsHit (x, y)) {
00354 globals->cursormgr->SetCursor (cursTag);
00355 rc = CURSOR_WAS_CHANGED;
00356 }
00357
00358 return rc;
00359 }
00360
00361 void CGaugeClickArea::Draw (SSurface *surface, int frame)
00362 {
00363 if ((surface != NULL) && (bm != NULL)) {
00364
00365
00366 DrawBitmap (surface, bm, x1, y1, frame);
00367 }
00368 }
00369
00370
00371
00372
00373
00374 CGaugeKnob::CGaugeKnob (void)
00375 {
00376 strcpy (bmap, "");
00377 surf = NULL;
00378 bmKnob = NULL;
00379 }
00380
00381 CGaugeKnob::~CGaugeKnob (void)
00382 {
00383 if (bmKnob != NULL) {
00384 FreeBitmap (bmKnob);
00385 delete bmKnob;
00386 FreeSurface (surf);
00387 }
00388 }
00389
00390 int CGaugeKnob::Read (SStream *stream, Tag tag)
00391 {
00392 int rc = TAG_IGNORED;
00393
00394 switch (tag) {
00395 case 'bmap':
00396 ReadString (bmap, 64, stream);
00397 rc = TAG_READ;
00398 break;
00399 }
00400
00401 if (rc == TAG_IGNORED) {
00402 rc = CGaugeClickArea::Read (stream, tag);
00403 }
00404
00405 if (rc == TAG_IGNORED) {
00406 char s[64];
00407 TagToString (s, tag);
00408 globals->logWarning->Write ("CGaugeClickArea::Read : Unknown tag %s", s);
00409 }
00410
00411 return rc;
00412 }
00413
00414 void CGaugeKnob::ReadFinished (void)
00415 {
00416 CGaugeClickArea::ReadFinished();
00417
00418
00419 if (strlen(bmap) > 0) {
00420
00421 bmKnob = new SBitmap;
00422 strcpy (bmKnob->bitmapName, "ART\\");
00423 strcat (bmKnob->bitmapName, bmap);
00424 LoadBitmap (bmKnob);
00425
00426
00427 surf = CreateSurface ((x2 - x1 + 1), (y2 - y1 + 1));
00428 }
00429 }
00430
00431 void CGaugeKnob::SetOffset (int offset_x, int offset_y)
00432 {
00433 this->offset_x = offset_x;
00434 this->offset_y = offset_y;
00435 }
00436
00437 void CGaugeKnob::Draw (float rotation)
00438 {
00439 if ((bmKnob != NULL) && (surf != NULL)) {
00440
00441 while (rotation < 0.0f) rotation += 1.0f;
00442 while (rotation >= 1.0f) rotation -= 1.0f;
00443
00444
00445 float fFrame = NumBitmapFrames (bmKnob) * rotation;
00446 int frame = (int)fFrame;
00447
00448
00449 EraseSurface (surf);
00450 surf->xScreen = offset_x + x1;
00451 surf->yScreen = offset_y + y1;
00452 DrawBitmap (surf, bmKnob, 0, 0, frame);
00453 Blit (surf);
00454 }
00455 }
00456
00457
00458
00459
00460
00461
00462 CGaugeAnnunciator::CGaugeAnnunciator (void)
00463 {
00464 }
00465
00466 int CGaugeAnnunciator::Read (SStream *stream, Tag tag)
00467 {
00468 int rc = TAG_IGNORED;
00469
00470 if (rc == TAG_IGNORED) {
00471 rc = CGaugeClickArea::Read (stream, tag);
00472 }
00473
00474 if (rc == TAG_IGNORED) {
00475 char s[64];
00476 TagToString (s, tag);
00477 globals->logWarning->Write ("CGaugeAnnunciator::Read : Unknown tag %s", s);
00478 }
00479
00480 return rc;
00481 }
00482
00483
00484
00485
00486
00487 int CGauge::sfx_source = 0;
00488
00489 CGauge::CGauge (void)
00490 {
00491 type = GAUGE_BASE;
00492 unid = 0;
00493 x = y = w = h = 0;
00494 cx = cy = 0;
00495 memset (&mesg, 0, sizeof(SMessage));
00496 gmin = gmax = 0.0f;
00497 lite = 0;
00498 strcpy (mask, "");
00499 fore = false;
00500 strcpy (curs, "");
00501 strcpy (help, "");
00502 strcpy (dtyp, "");
00503 strcpy (dfmt, "");
00504 nomc = false;
00505 igno = false;
00506 surf = NULL;
00507 }
00508
00509 int CGauge::Read (SStream *stream, Tag tag)
00510 {
00511 int rc = TAG_IGNORED;
00512
00513 switch (tag) {
00514 case 'unid':
00515 ReadTag (&unid, stream);
00516 TagToString (unid_s, unid);
00517 rc = TAG_READ;
00518 break;
00519
00520 case 'size':
00521 ReadInt (&x, stream);
00522 ReadInt (&y, stream);
00523 ReadInt (&w, stream);
00524 ReadInt (&h, stream);
00525 rc = TAG_READ;
00526 break;
00527
00528 case 'cntr':
00529 ReadInt (&cx, stream);
00530 ReadInt (&cy, stream);
00531 rc = TAG_READ;
00532 break;
00533
00534 case 'mesg':
00535 ReadMessage (&mesg, stream);
00536 rc = TAG_READ;
00537 break;
00538
00539 case 'gmin':
00540 ReadFloat (&gmin, stream);
00541 rc = TAG_READ;
00542 break;
00543
00544 case 'gmax':
00545 ReadFloat (&gmax, stream);
00546 rc = TAG_READ;
00547 break;
00548
00549 case 'gtbl':
00550
00551 ReadFrom (>bl, stream);
00552 rc = TAG_READ;
00553 break;
00554
00555 case 'lite':
00556 ReadTag (&lite, stream);
00557 rc = TAG_READ;
00558 break;
00559
00560 case 'mask':
00561 ReadString (mask, 64, stream);
00562 rc = TAG_READ;
00563 break;
00564
00565 case 'fore':
00566 fore = true;
00567 rc = TAG_READ;
00568 break;
00569
00570 case 'curs':
00571 case 'crsr':
00572 ReadString (curs, 64, stream);
00573 rc = TAG_READ;
00574 break;
00575
00576 case 'help':
00577 ReadString (help, 64, stream);
00578 rc = TAG_READ;
00579 break;
00580
00581 case 'dtyp':
00582 ReadString (dtyp, 64, stream);
00583 rc = TAG_READ;
00584 break;
00585
00586 case 'dfmt':
00587 ReadString (dfmt, 64, stream);
00588 rc = TAG_READ;
00589 break;
00590
00591 case 'nomc':
00592 nomc = true;
00593 rc = TAG_READ;
00594 break;
00595
00596 case 'igno':
00597 nomc = true;
00598 rc = TAG_READ;
00599 break;
00600
00601 case 'conn':
00602
00603 {
00604 Tag tag;
00605 ReadTag (&tag, stream);
00606 mesg.group = (unsigned int) tag;
00607 }
00608 rc = TAG_READ;
00609 break;
00610
00611 case 'user':
00612
00613 {
00614 char user[64];
00615 ReadString (user, 64, stream);
00617 }
00618 rc = TAG_READ;
00619 break;
00620
00621 case 'unit':
00622
00623 ReadUInt (&mesg.user.u.unit, stream);
00624 rc = TAG_READ;
00625 break;
00626
00627 case 'dtag':
00628
00629 ReadUInt (&mesg.user.u.datatag, stream);
00630 rc = TAG_READ;
00631 break;
00632 }
00633
00634 if (rc == TAG_IGNORED) {
00635 char s[64];
00636 TagToString (s, tag);
00637 globals->logWarning->Write ("CGauge::Read : Unknown tag %s", s);
00638 }
00639
00640 return rc;
00641 }
00642
00643
00644 void CGauge::ReadFinished (void)
00645 {
00646
00647 if ((w > 0) && (h > 0)) {
00648 surf = CreateSurface (w, h);
00649 surf->xScreen = x;
00650 surf->yScreen = y;
00651 }
00652
00653
00654 cursTag = 0;
00655 if (strlen (curs) > 0) {
00656 cursTag = globals->cursormgr->BindCursor (curs);
00657 }
00658 }
00659
00660
00661 void CGauge::GetSize (int* x, int* y, int*w, int* h)
00662 {
00663 *x = this->x;
00664 *y = this->y;
00665 *w = this->w;
00666 *h = this->h;
00667 }
00668
00669
00670 SSurface *CGauge::GetSurface (void)
00671 {
00672 return surf;
00673 }
00674
00675
00676
00677
00678
00679 void CGauge::Update (void)
00680 {
00681
00682 SendMessage (&mesg);
00683
00684
00685 value = 0;
00686 switch (mesg.dataType) {
00687 case TYPE_INT:
00688 value = (float)mesg.intData;
00689 break;
00690
00691 case TYPE_INTPTR:
00692 if (mesg.intPtrData) {
00693 value = (float)*(mesg.intPtrData);
00694 }
00695 break;
00696
00697 case TYPE_REAL:
00698 value = mesg.realData;
00699 break;
00700
00701 case TYPE_REALPTR:
00702 if (mesg.realPtrData) {
00703 value = *(mesg.realPtrData);
00704 }
00705 break;
00706
00707 case TYPE_NONE:
00708 case TYPE_VOID:
00709 case TYPE_CHAR:
00710 case TYPE_CHARPTR:
00711
00712
00713
00714 break;
00715 }
00716
00717
00718 if (value < gmin) value = gmin;
00719 if (value > gmax) value = gmax;
00720
00721
00722 value = gtbl.Lookup (value);
00723 }
00724
00725
00726 EClickResult CGauge::MouseClick (int x, int y, int buttons)
00727 {
00728 EClickResult rc = MOUSE_TRACKING_OFF;
00729
00730
00731
00732
00733
00734
00735 return rc;
00736 }
00737
00738
00739 EClickResult CGauge::TrackClick (int x, int y, int buttons)
00740 {
00741
00742
00743
00744 return MOUSE_TRACKING_ON;
00745 }
00746
00747
00748 EClickResult CGauge::StopClick (int x, int y, int buttons)
00749 {
00750 EClickResult rc = MOUSE_TRACKING_OFF;
00751
00752
00753
00754
00755
00756
00757 return rc;
00758 }
00759
00760 ECursorResult CGauge::MouseMoved (int x, int y)
00761 {
00762 ECursorResult rc = CURSOR_NOT_CHANGED;
00763
00764
00765 if (cursTag != 0) {
00766
00767 globals->cursormgr->SetCursor (cursTag);
00768 rc = CURSOR_WAS_CHANGED;
00769 }
00770
00771
00772
00773
00774
00775
00776 return rc;
00777 }
00778
00779 void CGauge::ClearSurface (void)
00780 {
00781 EraseSurface (surf);
00782 }
00783
00784 void CGauge::Draw (void)
00785 {
00786 ClearSurface ();
00787 }
00788
00789 void CGauge::Blit (int xOffset, int yOffset, int y_isiz)
00790 {
00791 BlitSurface (surf, xOffset, yOffset, y_isiz);
00792 }
00793
00794
00795
00796
00797
00798 CBitmapGauge::CBitmapGauge (void)
00799 {
00800 strcpy (bmap.art, "");
00801 bmap.x = bmap.y = 0;
00802
00803 strcpy (over.art, "");
00804 over.x = over.y = 0;
00805
00806 bmUnderlay = NULL;
00807 bmOverlay = NULL;
00808 }
00809
00810
00811 CBitmapGauge::~CBitmapGauge()
00812 {
00813 if (bmUnderlay != NULL) {
00814 FreeBitmap (bmUnderlay);
00815 delete bmUnderlay;
00816 }
00817
00818 if (bmOverlay != NULL) {
00819 FreeBitmap (bmOverlay);
00820 delete bmOverlay;
00821 }
00822 }
00823
00824
00825 int CBitmapGauge::Read (SStream *stream, Tag tag)
00826 {
00827 int rc = TAG_IGNORED;
00828
00829 switch (tag) {
00830 case 'bmap':
00831 ReadString (bmap.art, 64, stream);
00832 ReadInt (&bmap.x, stream);
00833 ReadInt (&bmap.y, stream);
00834 rc = TAG_READ;
00835 break;
00836
00837 case 'over':
00838 ReadString (over.art, 64, stream);
00839 ReadInt (&over.x, stream);
00840 ReadInt (&over.y, stream);
00841 rc = TAG_READ;
00842 break;
00843 }
00844
00845 if (rc == TAG_IGNORED) {
00846 rc = CGauge::Read (stream, tag);
00847 }
00848
00849 if (rc == TAG_IGNORED) {
00850 char s[64];
00851 TagToString (s, tag);
00852 globals->logWarning->Write ("CBitmapGauge::Read : Unknown tag %s", s);
00853 }
00854
00855 return rc;
00856 }
00857
00858
00859 void CBitmapGauge::ReadFinished (void)
00860 {
00861 CGauge::ReadFinished ();
00862
00863 char *mark1 = new char[32];
00864 strcpy (mark1, "bmg start");
00865
00866
00867 if (strlen (bmap.art) > 0) {
00868 bmUnderlay = new SBitmap;
00869 strcpy (bmUnderlay->bitmapName, "ART\\");
00870 strcat (bmUnderlay->bitmapName, bmap.art);
00871 LoadBitmap (bmUnderlay);
00872 }
00873
00874 if (strlen (over.art) > 0) {
00875 bmOverlay = new SBitmap;
00876 strcpy (bmOverlay->bitmapName, "ART\\");
00877 strcat (bmOverlay->bitmapName, over.art);
00878 LoadBitmap (bmOverlay);
00879 }
00880 char *mark2 = new char[32];
00881 strcpy (mark2, "bmg end");
00882 }
00883
00884
00885 void CBitmapGauge::DrawUnderlay (void)
00886 {
00887
00888 if (bmUnderlay != NULL) {
00889 DrawBitmap (surf, bmUnderlay, bmap.x, bmap.y, 0);
00890 }
00891 }
00892
00893 void CBitmapGauge::DrawOverlay (void)
00894 {
00895
00896 if (bmOverlay != NULL) {
00897 DrawBitmap (surf, bmOverlay, over.x, over.y, 0);
00898 }
00899 }
00900
00901 void CBitmapGauge::Draw (void)
00902 {
00903 ClearSurface ();
00904 DrawUnderlay ();
00905 DrawOverlay ();
00906 }
00907
00908
00909
00910
00911
00912 CNeedleGauge::CNeedleGauge (void)
00913 {
00914 radi = 0;
00915 sang = 0.0f;
00916 dunt = 1.0f;
00917 rang_min = 0.0f;
00918 rang_max = 0.0f;
00919 noff_x = noff_y = 0;
00920 noac = false;
00921 }
00922
00923
00924 int CNeedleGauge::Read (SStream *stream, Tag tag)
00925 {
00926 int rc = TAG_IGNORED;
00927
00928 switch (tag) {
00929 case 'radi':
00930 ReadInt (&radi, stream);
00931 rc = TAG_READ;
00932 break;
00933
00934 case 'sang':
00935 ReadFloat (&sang, stream);
00936 rc = TAG_READ;
00937 break;
00938
00939 case 'dunt':
00940 ReadFloat (&dunt, stream);
00941 rc = TAG_READ;
00942 break;
00943
00944 case 'rang':
00945 ReadFloat (&rang_min, stream);
00946 ReadFloat (&rang_max, stream);
00947 rc = TAG_READ;
00948 break;
00949
00950 case 'noff':
00951 ReadInt (&noff_x, stream);
00952 ReadInt (&noff_y, stream);
00953 rc = TAG_READ;
00954 break;
00955
00956 case 'noac':
00957 noac = true;
00958 rc = TAG_READ;
00959 break;
00960
00961 case 'nedl':
00962 ReadTag (&nedl.tag, stream);
00963 ReadFrom (&nedl, stream);
00964 rc = TAG_READ;
00965 break;
00966 }
00967
00968 if (rc == TAG_IGNORED) {
00969 rc = CBitmapGauge::Read (stream, tag);
00970 }
00971
00972 if (rc == TAG_IGNORED) {
00973 char s[64];
00974 TagToString (s, tag);
00975 globals->logWarning->Write ("CNeedleGauge::Read : Unknown tag %s", s);
00976 }
00977
00978 return rc;
00979 }
00980
00981 void CNeedleGauge::Draw (void)
00982 {
00983 ClearSurface ();
00984 DrawUnderlay ();
00985
00986
00987 mesg.id = MSG_GETDATA;
00988 CGauge::Update ();
00989
00990
00991 float degrees = value + sang;
00992
00993
00994 nedl.Draw (surf, degrees, cx, cy);
00995
00996 DrawOverlay ();
00997 }
00998
00999
01000
01001
01002
01003
01004 CTwoNeedleGauge::CTwoNeedleGauge (void)
01005 {
01006 }
01007
01008
01009 int CTwoNeedleGauge::Read (SStream *stream, Tag tag)
01010 {
01011 int rc = TAG_IGNORED;
01012
01013 switch (tag) {
01014 case 'ndl1':
01015 ReadFrom (&ndl1, stream);
01016 rc = TAG_READ;
01017 break;
01018
01019 case 'ndl2':
01020 ReadFrom (&ndl2, stream);
01021 rc = TAG_READ;
01022 break;
01023 }
01024
01025 if (rc == TAG_IGNORED) {
01026 rc = CBitmapGauge::Read (stream, tag);
01027 }
01028
01029 if (rc == TAG_IGNORED) {
01030 char s[64];
01031 TagToString (s, tag);
01032 globals->logWarning->Write ("CTwoNeedleGauge::Read : Unknown tag %s", s);
01033 }
01034
01035 return rc;
01036 }
01037
01038
01039
01040
01041
01042 CThreeNeedleGauge::CThreeNeedleGauge (void)
01043 {
01044 }
01045
01046
01047 int CThreeNeedleGauge::Read (SStream *stream, Tag tag)
01048 {
01049 int rc = TAG_IGNORED;
01050
01051 switch (tag) {
01052 case 'ndl1':
01053 ReadFrom (&ndl1, stream);
01054 rc = TAG_READ;
01055 break;
01056
01057 case 'ndl2':
01058 ReadFrom (&ndl2, stream);
01059 rc = TAG_READ;
01060 break;
01061
01062 case 'ndl3':
01063 ReadFrom (&ndl3, stream);
01064 rc = TAG_READ;
01065 break;
01066 }
01067
01068 if (rc == TAG_IGNORED) {
01069 rc = CBitmapGauge::Read (stream, tag);
01070 }
01071
01072 if (rc == TAG_IGNORED) {
01073 char s[64];
01074 TagToString (s, tag);
01075 globals->logWarning->Write ("CThreeNeedleGauge::Read : Unknown tag %s", s);
01076 }
01077
01078 return rc;
01079 }
01080
01081
01082
01083
01084
01085 CDigitalNeedleGauge::CDigitalNeedleGauge (void)
01086 {
01087 strcpy (nbak.art, "");
01088 nbak.x = nbak.y = 0;
01089 memset (&powr, 0, sizeof(SMessage));
01090 }
01091
01092 int CDigitalNeedleGauge::Read (SStream *stream, Tag tag)
01093 {
01094 int rc = TAG_IGNORED;
01095
01096 switch (tag) {
01097 case 'nbak':
01098 ReadString (nbak.art, 64, stream);
01099 ReadInt (&nbak.x, stream);
01100 ReadInt (&nbak.y, stream);
01101 rc = TAG_READ;
01102 break;
01103
01104 case 'powr':
01105 ReadMessage (&powr, stream);
01106 rc = TAG_READ;
01107 break;
01108 }
01109
01110 if (rc == TAG_IGNORED) {
01111 rc = CNeedleGauge::Read (stream, tag);
01112 }
01113
01114 if (rc == TAG_IGNORED) {
01115 char s[64];
01116 TagToString (s, tag);
01117 globals->logWarning->Write ("CDigitalNeedleGauge::Read : Unknown tag %s", s);
01118 }
01119
01120 return rc;
01121 }
01122
01123
01124
01125
01126
01127 CAltimeterGauge::CAltimeterGauge (void)
01128 {
01129
01130 psiz_x = psiz_y = 0;
01131 strcpy (csrl_csr, "");
01132 strcpy (csrr_csr, "");
01133 csrl_tag = csrr_tag = 0;
01134 kpxy_x = kpxy_y = 0;
01135 memset (&kmsg, 0, sizeof(SMessage));
01136 ndl1 = ndl2 = ndl3 = NULL;
01137 }
01138
01139 CAltimeterGauge::~CAltimeterGauge (void)
01140 {
01141 if (ndl1 != NULL) delete ndl1;
01142 if (ndl2 != NULL) delete ndl2;
01143 if (ndl3 != NULL) delete ndl3;
01144 }
01145
01146 int CAltimeterGauge::Read (SStream *stream, Tag tag)
01147 {
01148 int rc = TAG_IGNORED;
01149
01150 switch (tag) {
01151 case 'psiz':
01152 ReadInt (&psiz_x, stream);
01153 ReadInt (&psiz_y, stream);
01154 rc = TAG_READ;
01155 break;
01156
01157 case 'ndl1':
01158 ndl1 = new CNeedleGauge;
01159 ReadFrom (ndl1, stream);
01160 rc = TAG_READ;
01161 break;
01162
01163 case 'ndl2':
01164 ndl2 = new CNeedleGauge;
01165 ReadFrom (ndl2, stream);
01166 rc = TAG_READ;
01167 break;
01168
01169 case 'ndl3':
01170 ndl3 = new CNeedleGauge;
01171 ReadFrom (ndl3, stream);
01172 rc = TAG_READ;
01173 break;
01174
01175 case 'csrl':
01176 ReadString (csrl_csr, 64, stream);
01177 rc = TAG_READ;
01178 break;
01179
01180 case 'csrr':
01181 ReadString (csrr_csr, 64, stream);
01182 rc = TAG_READ;
01183 break;
01184
01185 case 'koll':
01186 ReadFrom (&koll, stream);
01187 rc = TAG_READ;
01188 break;
01189
01190 case 'kpxy':
01191 ReadInt (&kpxy_x, stream);
01192 ReadInt (&kpxy_y, stream);
01193 rc = TAG_READ;
01194 break;
01195
01196 case 'knob':
01197 ReadFrom (&knob, stream);
01198 break;
01199
01200 case 'kmsg':
01201 ReadMessage (&kmsg, stream);
01202 rc = TAG_READ;
01203 break;
01204 }
01205
01206 if (rc == TAG_IGNORED) {
01207 rc = CBitmapGauge::Read (stream, tag);
01208 }
01209
01210 if (rc == TAG_IGNORED) {
01211 char s[64];
01212 TagToString (s, tag);
01213 globals->logWarning->Write ("CAltimeterGauge::Read : Unknown tag %s", s);
01214 }
01215
01216 return rc;
01217 }
01218
01219 ECursorResult CAltimeterGauge::MouseMoved (int x, int y)
01220 {
01221 ECursorResult rc = CURSOR_NOT_CHANGED;
01222
01223
01224 if (rc == CURSOR_NOT_CHANGED) rc = koll.MouseMoved (x, y);
01225 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
01226
01227
01228 if (rc == CURSOR_NOT_CHANGED) {
01229 rc = CBitmapGauge::MouseMoved (x, y);
01230 }
01231
01232 return rc;
01233 }
01234
01235
01236
01237
01238
01239 CRollingAltimeterGauge::CRollingAltimeterGauge (void)
01240 {
01241
01242 psiz_x = psiz_y = 0;
01243 strcpy (zdig_art, "");
01244 strcpy (ndig_art, "");
01245 digx[0] = digx[1] = digx[2] = digx[3] = 0;
01246 digy = 0;
01247 dsiz_x = dsiz_y = 0;
01248 memset (&kmsg, 0, sizeof(SMessage));
01249 }
01250
01251 int CRollingAltimeterGauge::Read (SStream *stream, Tag tag)
01252 {
01253 int rc = TAG_IGNORED;
01254
01255 switch (tag) {
01256 case 'psiz':
01257 ReadInt (&psiz_x, stream);
01258 ReadInt (&psiz_y, stream);
01259 rc = TAG_READ;
01260 break;
01261
01262 case 'ndl1':
01263 ReadFrom (&ndl1, stream);
01264 rc = TAG_READ;
01265 break;
01266
01267 case 'zdig':
01268 ReadString (zdig_art, 64, stream);
01269 rc = TAG_READ;
01270 break;
01271
01272 case 'ndig':
01273 ReadString (ndig_art, 64, stream);
01274 rc = TAG_READ;
01275 break;
01276
01277 case 'tdig':
01278 ReadString (tdig_art, 64, stream);
01279 rc = TAG_READ;
01280 break;
01281
01282 case 'digx':
01283 ReadInt (&digx[0], stream);
01284 ReadInt (&digx[1], stream);
01285 ReadInt (&digx[2], stream);
01286 ReadInt (&digx[3], stream);
01287 rc = TAG_READ;
01288 break;
01289
01290 case 'digy':
01291 ReadInt (&digy, stream);
01292 rc = TAG_READ;
01293 break;
01294
01295 case 'dsiz':
01296 ReadInt (&dsiz_x, stream);
01297 ReadInt (&dsiz_y, stream);
01298 rc = TAG_READ;
01299 break;
01300
01301 case 'koll':
01302 ReadFrom (&koll, stream);
01303 rc = TAG_READ;
01304 break;
01305
01306 case 'knob':
01307 ReadFrom (&knob, stream);
01308 rc = TAG_READ;
01309 break;
01310
01311 case 'kmsg':
01312 ReadMessage (&kmsg, stream);
01313 rc = TAG_READ;
01314 break;
01315 }
01316
01317 if (rc == TAG_IGNORED) {
01318 rc = CBitmapGauge::Read (stream, tag);
01319 }
01320
01321 if (rc == TAG_IGNORED) {
01322 char s[64];
01323 TagToString (s, tag);
01324 globals->logWarning->Write ("CRollingAltimeterGauge::Read : Unknown tag %s", s);
01325 }
01326
01327 return rc;
01328 }
01329
01330 ECursorResult CRollingAltimeterGauge::MouseMoved (int x, int y)
01331 {
01332 ECursorResult rc = CURSOR_NOT_CHANGED;
01333
01334
01335 if (rc == CURSOR_NOT_CHANGED) rc = koll.MouseMoved (x, y);
01336 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
01337
01338
01339 if (rc == CURSOR_NOT_CHANGED) {
01340 rc = CBitmapGauge::MouseMoved (x, y);
01341 }
01342
01343 return rc;
01344 }
01345
01346
01347
01348
01349
01350
01351 CHorizonGauge::CHorizonGauge (void)
01352 {
01353 hoff = 0;
01354 pixd = 0;
01355 moff = 0;
01356 strcpy (flag_art, "");
01357 }
01358
01359 int CHorizonGauge::Read (SStream *stream, Tag tag)
01360 {
01361 int rc = TAG_IGNORED;
01362
01363 switch (tag) {
01364 case 'foot':
01365 ReadString (foot.art, 64, stream);
01366 ReadInt (&foot.x, stream);
01367 ReadInt (&foot.y, stream);
01368 rc = TAG_READ;
01369 break;
01370
01371 case 'horz':
01372 ReadString (horz.art, 64, stream);
01373 ReadInt (&horz.x, stream);
01374 ReadInt (&horz.y, stream);
01375 rc = TAG_READ;
01376 break;
01377
01378 case 'hoff':
01379 ReadInt (&hoff, stream);
01380 rc = TAG_READ;
01381 break;
01382
01383 case 'irim':
01384 ReadString (irim.art, 64, stream);
01385 ReadInt (&irim.x, stream);
01386 ReadInt (&irim.y, stream);
01387 rc = TAG_READ;
01388 break;
01389
01390 case 'orim':
01391 ReadString (orim.art, 64, stream);
01392 ReadInt (&orim.x, stream);
01393 ReadInt (&orim.y, stream);
01394 rc = TAG_READ;
01395 break;
01396
01397 case 'fron':
01398 ReadString (fron.art, 64, stream);
01399 ReadInt (&fron.x, stream);
01400 ReadInt (&fron.y, stream);
01401 rc = TAG_READ;
01402 break;
01403
01404 case 'pixd':
01405 ReadFloat (&pixd, stream);
01406 rc = TAG_READ;
01407 break;
01408
01409 case 'moff':
01410 ReadInt (&moff, stream);
01411 rc = TAG_READ;
01412 break;
01413
01414 case 'knob':
01415 ReadFrom (&knob, stream);
01416 rc = TAG_READ;
01417 break;
01418
01419 case 'flag':
01420 ReadString (flag_art, 64, stream);
01421 rc = TAG_READ;
01422 break;
01423
01424 case 'pich':
01425 ReadMessage (&pich, stream);
01426 rc = TAG_READ;
01427 break;
01428
01429 case 'roll':
01430 ReadMessage (&roll, stream);
01431 rc = TAG_READ;
01432 break;
01433 }
01434
01435 if (rc == TAG_IGNORED) {
01436 rc = CBitmapGauge::Read (stream, tag);
01437 }
01438
01439 if (rc == TAG_IGNORED) {
01440 char s[64];
01441 TagToString (s, tag);
01442 globals->logWarning->Write ("CHorizonGauge::Read : Unknown tag %s", s);
01443 }
01444
01445 return rc;
01446 }
01447
01448 ECursorResult CHorizonGauge::MouseMoved (int x, int y)
01449 {
01450 ECursorResult rc = CURSOR_NOT_CHANGED;
01451
01452
01453 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
01454
01455
01456 if (rc == CURSOR_NOT_CHANGED) {
01457 rc = CBitmapGauge::MouseMoved (x, y);
01458 }
01459
01460 return rc;
01461 }
01462
01463
01464
01465
01466
01467 CFDHorizonGauge::CFDHorizonGauge (void)
01468 {
01469 strcpy (bars.art, "");
01470 bars.x = bars.y = 0;
01471 }
01472
01473
01474 int CFDHorizonGauge::Read (SStream *stream, Tag tag)
01475 {
01476 int rc = TAG_IGNORED;
01477
01478 switch (tag) {
01479 case 'bars':
01480 ReadString (bars.art, 64, stream);
01481 ReadInt (&bars.x, stream);
01482 ReadInt (&bars.y, stream);
01483 rc = TAG_READ;
01484 break;
01485 }
01486
01487 if (rc == TAG_IGNORED) {
01488 rc = CHorizonGauge::Read (stream, tag);
01489 }
01490
01491 if (rc == TAG_IGNORED) {
01492 char s[64];
01493 TagToString (s, tag);
01494 globals->logWarning->Write ("CFDHorizonGauge::Read : Unknown tag %s", s);
01495 }
01496
01497 return rc;
01498 }
01499
01500
01501
01502
01503
01504
01505 CHorizontalBallGauge::CHorizontalBallGauge (void)
01506 {
01507 }
01508
01509 int CHorizontalBallGauge::Read (SStream *stream, Tag tag)
01510 {
01511 int rc = TAG_IGNORED;
01512
01513 if (rc == TAG_IGNORED) {
01514 rc = CBitmapGauge::Read (stream, tag);
01515 }
01516
01517 if (rc == TAG_IGNORED) {
01518 char s[64];
01519 TagToString (s, tag);
01520 globals->logWarning->Write ("CHorizontalBallGauge::Read : Unknown tag %s", s);
01521 }
01522
01523 return rc;
01524 }
01525
01526
01527
01528
01529
01530 CAirspeedGauge::CAirspeedGauge (void)
01531 {
01532 }
01533
01534 int CAirspeedGauge::Read (SStream *stream, Tag tag)
01535 {
01536 int rc = TAG_IGNORED;
01537
01538 switch (tag) {
01539 case 'knob':
01540 ReadFrom (&knob, stream);
01541 rc = TAG_READ;
01542 break;
01543
01544 case 'mmo_':
01545 ReadFrom (&mmo_, stream);
01546 rc = TAG_READ;
01547 break;
01548 }
01549
01550 if (rc == TAG_IGNORED) {
01551 rc = CNeedleGauge::Read (stream, tag);
01552 }
01553
01554 if (rc == TAG_IGNORED) {
01555 char s[64];
01556 TagToString (s, tag);
01557 globals->logWarning->Write ("CAirspeedGauge::Read : Unknown tag %s", s);
01558 }
01559
01560 return rc;
01561 }
01562
01563 ECursorResult CAirspeedGauge::MouseMoved (int x, int y)
01564 {
01565 ECursorResult rc = CURSOR_NOT_CHANGED;
01566
01567
01568 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
01569
01570
01571 if (rc == CURSOR_NOT_CHANGED) {
01572 rc = CBitmapGauge::MouseMoved (x, y);
01573 }
01574
01575 return rc;
01576 }
01577
01578
01579
01580
01581
01582 CVerticalSpeedGauge::CVerticalSpeedGauge (void)
01583 {
01584 strcpy (vsbg.art, "");
01585 vsbg.x = vsbg.y = 0;
01586 memset (&vmsg, 0, sizeof(SMessage));
01587 bmBug = NULL;
01588 }
01589
01590 CVerticalSpeedGauge::~CVerticalSpeedGauge (void)
01591 {
01592 if (bmBug != NULL) {
01593 FreeBitmap (bmBug);
01594 delete bmBug;
01595 }
01596 }
01597
01598 int CVerticalSpeedGauge::Read (SStream *stream, Tag tag)
01599 {
01600 int rc = TAG_IGNORED;
01601
01602 switch (tag) {
01603 case 'vsbg':
01604 ReadString (vsbg.art, 64, stream);
01605 ReadInt (&vsbg.x, stream);
01606 ReadInt (&vsbg.y, stream);
01607 rc = TAG_READ;
01608 break;
01609
01610 case 'vskb':
01611 ReadFrom (&vskb, stream);
01612 rc = TAG_READ;
01613 break;
01614
01615 case 'vmsg':
01616 ReadMessage (&vmsg, stream);
01617 rc = TAG_READ;
01618 break;
01619 }
01620
01621 if (rc == TAG_IGNORED) {
01622 rc = CNeedleGauge::Read (stream, tag);
01623 }
01624
01625 if (rc == TAG_IGNORED) {
01626 char s[64];
01627 TagToString (s, tag);
01628 globals->logWarning->Write ("CVerticalSpeedGauge::Read : Unknown tag %s", s);
01629 }
01630
01631 return rc;
01632 }
01633
01634 void CVerticalSpeedGauge::ReadFinished (void)
01635 {
01636 if (strlen (vsbg.art) > 0) {
01637 strcpy (bmBug->bitmapName, "ART\\");
01638 strcat (bmBug->bitmapName, vsbg.art);
01639 LoadBitmap (bmBug);
01640 }
01641
01642 CNeedleGauge::ReadFinished ();
01643 }
01644
01645 ECursorResult CVerticalSpeedGauge::MouseMoved (int x, int y)
01646 {
01647 ECursorResult rc = CURSOR_NOT_CHANGED;
01648
01649
01650 if (rc == CURSOR_NOT_CHANGED) rc = vskb.MouseMoved (x, y);
01651
01652
01653 if (rc == CURSOR_NOT_CHANGED) {
01654 rc = CBitmapGauge::MouseMoved (x, y);
01655 }
01656
01657 return rc;
01658 }
01659
01660 void CVerticalSpeedGauge::Draw (void)
01661 {
01662
01663 CNeedleGauge::Draw ();
01664
01665 if (bmBug != NULL) {
01666
01667 vmsg.id = MSG_GETDATA;
01668 vmsg.dataType = TYPE_REAL;
01669 SendMessage (&vmsg);
01670 int frame = 0;
01671 if (vmsg.result == MSG_PROCESSED) {
01673 }
01674
01675 DrawBitmap (surf, bmBug, vsbg.x, vsbg.y, frame);
01676 }
01677 }
01678
01679
01680
01681
01682
01683 CDirectionalGyroGauge::CDirectionalGyroGauge (void)
01684 {
01685 strcpy (apbg.art, "");
01686 apbg.x = apbg.y = 0;
01687
01688 strcpy (apkb.art, "");
01689 apkb.x1 = apkb.y1 = apkb.x2 = apkb.y2 = 0;
01690
01691 strcpy (knob.art, "");
01692 knob.x1 = knob.y1 = knob.x2 = knob.y2 = 0;
01693 }
01694
01695 int CDirectionalGyroGauge::Read (SStream *stream, Tag tag)
01696 {
01697 int rc = TAG_IGNORED;
01698
01699 switch (tag) {
01700 case 'apbg':
01701 ReadString (apbg.art, 64, stream);
01702 ReadInt (&apbg.x, stream);
01703 ReadInt (&apbg.y, stream);
01704 rc = TAG_READ;
01705 break;
01706
01707 case 'apkb':
01708 ReadString (apkb.art, 64, stream);
01709 ReadInt (&apkb.x1, stream);
01710 ReadInt (&apkb.y1, stream);
01711 ReadInt (&apkb.x2, stream);
01712 ReadInt (&apkb.y2, stream);
01713 rc = TAG_READ;
01714 break;
01715
01716 case 'knob':
01717 ReadString (knob.art, 64, stream);
01718 ReadInt (&knob.x1, stream);
01719 ReadInt (&knob.y1, stream);
01720 ReadInt (&knob.x2, stream);
01721 ReadInt (&knob.y2, stream);
01722 rc = TAG_READ;
01723 break;
01724
01725 case 'bias':
01726 ReadTag (&bias, stream);
01727 rc = TAG_READ;
01728 break;
01729 }
01730
01731 if (rc == TAG_IGNORED) {
01732 rc = CNeedleGauge::Read (stream, tag);
01733 }
01734
01735 if (rc == TAG_IGNORED) {
01736 char s[64];
01737 TagToString (s, tag);
01738 globals->logWarning->Write ("CDirectionalGyroGauge::Read : Unknown tag %s", s);
01739 }
01740
01741 return rc;
01742 }
01743
01744
01745
01746
01747
01748 CVacuumGauge::CVacuumGauge (void)
01749 {
01750 }
01751
01752 int CVacuumGauge::Read (SStream *stream, Tag tag)
01753 {
01754 int rc = TAG_IGNORED;
01755
01756 if (rc == TAG_IGNORED) {
01757 rc = CNeedleGauge::Read (stream, tag);
01758 }
01759
01760 if (rc == TAG_IGNORED) {
01761 char s[64];
01762 TagToString (s, tag);
01763 globals->logWarning->Write ("CVacuumGauge::Read : Unknown tag %s", s);
01764 }
01765
01766 return rc;
01767 }
01768
01769
01770
01771
01772 CSuctionGauge::CSuctionGauge (void)
01773 {
01774 }
01775
01776 int CSuctionGauge::Read (SStream *stream, Tag tag)
01777 {
01778 int rc = TAG_IGNORED;
01779
01780 if (rc == TAG_IGNORED) {
01781 rc = CNeedleGauge::Read (stream, tag);
01782 }
01783
01784 if (rc == TAG_IGNORED) {
01785 char s[64];
01786 TagToString (s, tag);
01787 globals->logWarning->Write ("CSuctionGauge::Read : Unknown tag %s", s);
01788 }
01789
01790 return rc;
01791 }
01792
01793
01794
01795
01796
01797
01798 CFuelGauge::CFuelGauge (void)
01799 {
01800 }
01801
01802 int CFuelGauge::Read (SStream *stream, Tag tag)
01803 {
01804 int rc = TAG_IGNORED;
01805
01806 if (rc == TAG_IGNORED) {
01807 rc = CNeedleGauge::Read (stream, tag);
01808 }
01809
01810 if (rc == TAG_IGNORED) {
01811 char s[64];
01812 TagToString (s, tag);
01813 globals->logWarning->Write ("CFuelGauge::Read : Unknown tag %s", s);
01814 }
01815
01816 return rc;
01817 }
01818
01819
01820
01821
01822
01823 CFuelFlowGauge::CFuelFlowGauge (void)
01824 {
01825 }
01826
01827 int CFuelFlowGauge::Read (SStream *stream, Tag tag)
01828 {
01829 int rc = TAG_IGNORED;
01830
01831 if (rc == TAG_IGNORED) {
01832 rc = CNeedleGauge::Read (stream, tag);
01833 }
01834
01835 if (rc == TAG_IGNORED) {
01836 char s[64];
01837 TagToString (s, tag);
01838 globals->logWarning->Write ("CFuelFlowGauge::Read : Unknown tag %s", s);
01839 }
01840
01841 return rc;
01842 }
01843
01844
01845
01846
01847
01848
01849 COilPressureGauge::COilPressureGauge (void)
01850 {
01851 }
01852
01853 int COilPressureGauge::Read (SStream *stream, Tag tag)
01854 {
01855 int rc = TAG_IGNORED;
01856
01857 if (rc == TAG_IGNORED) {
01858 rc = CNeedleGauge::Read (stream, tag);
01859 }
01860
01861 if (rc == TAG_IGNORED) {
01862 char s[64];
01863 TagToString (s, tag);
01864 globals->logWarning->Write ("COilPressureGauge::Read : Unknown tag %s", s);
01865 }
01866
01867 return rc;
01868 }
01869
01870
01871
01872
01873
01874 COilTemperatureGauge::COilTemperatureGauge (void)
01875 {
01876 }
01877
01878 int COilTemperatureGauge::Read (SStream *stream, Tag tag)
01879 {
01880 int rc = TAG_IGNORED;
01881
01882 if (rc == TAG_IGNORED) {
01883 rc = CNeedleGauge::Read (stream, tag);
01884 }
01885
01886 if (rc == TAG_IGNORED) {
01887 char s[64];
01888 TagToString (s, tag);
01889 globals->logWarning->Write ("COilTemperatureGauge::Read : Unknown tag %s", s);
01890 }
01891
01892 return rc;
01893 }
01894
01895
01896
01897
01898
01899 CTachometerGauge::CTachometerGauge (void)
01900 {
01901 hobb = false;
01902 }
01903
01904 int CTachometerGauge::Read (SStream *stream, Tag tag)
01905 {
01906 int rc = TAG_IGNORED;
01907
01908 switch (tag) {
01909 case 'hobb':
01911 SkipObject (stream);
01912 rc = TAG_READ;
01913 break;
01914 }
01915
01916 if (rc == TAG_IGNORED) {
01917 rc = CNeedleGauge::Read (stream, tag);
01918 }
01919
01920 if (rc == TAG_IGNORED) {
01921 char s[64];
01922 TagToString (s, tag);
01923 globals->logWarning->Write ("CTachometerGauge::Read : Unknown tag %s", s);
01924 }
01925
01926 return rc;
01927 }
01928
01929
01930
01931
01932
01933 CDualTachometerGauge::CDualTachometerGauge (void)
01934 {
01935 }
01936
01937 int CDualTachometerGauge::Read (SStream *stream, Tag tag)
01938 {
01939 int rc = TAG_IGNORED;
01940
01941 if (rc == TAG_IGNORED) {
01942 rc = CTwoNeedleGauge::Read (stream, tag);
01943 }
01944
01945 if (rc == TAG_IGNORED) {
01946 char s[64];
01947 TagToString (s, tag);
01948 globals->logWarning->Write ("CDualTachometerGauge::Read : Unknown tag %s", s);
01949 }
01950
01951 return rc;
01952 }
01953
01954
01955
01956
01957
01958 CN1TachometerGauge::CN1TachometerGauge (void)
01959 {
01960 }
01961
01962 int CN1TachometerGauge::Read (SStream *stream, Tag tag)
01963 {
01964 int rc = TAG_IGNORED;
01965
01966 switch (tag) {
01967 case 'knob':
01968 ReadFrom (&knob, stream);
01969 rc = TAG_READ;
01970 break;
01971 }
01972
01973 if (rc == TAG_IGNORED) {
01974 rc = CTwoNeedleGauge::Read (stream, tag);
01975 }
01976
01977 if (rc == TAG_IGNORED) {
01978 char s[64];
01979 TagToString (s, tag);
01980 globals->logWarning->Write ("CN1TachometerGauge::Read : Unknown tag %s", s);
01981 }
01982
01983 return rc;
01984 }
01985
01986 ECursorResult CN1TachometerGauge::MouseMoved (int x, int y)
01987 {
01988 ECursorResult rc = CURSOR_NOT_CHANGED;
01989
01990
01991 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
01992
01993
01994 if (rc == CURSOR_NOT_CHANGED) {
01995 rc = CBitmapGauge::MouseMoved (x, y);
01996 }
01997
01998 return rc;
01999 }
02000
02001
02002
02003
02004
02005 CExhaustGasTemperatureGauge::CExhaustGasTemperatureGauge (void)
02006 {
02007 egtr = 0.0f;
02008 strcpy (egtn_art, "");
02009 }
02010
02011 int CExhaustGasTemperatureGauge::Read (SStream *stream, Tag tag)
02012 {
02013 int rc = TAG_IGNORED;
02014
02015 switch (tag) {
02016 case 'egtr':
02017 ReadFloat (&egtr, stream);
02018 rc = TAG_READ;
02019 break;
02020
02021 case 'egtn':
02022 ReadString (egtn_art, 64, stream);
02023 rc = TAG_READ;
02024 break;
02025 }
02026
02027 if (rc == TAG_IGNORED) {
02028 rc = CNeedleGauge::Read (stream, tag);
02029 }
02030
02031 if (rc == TAG_IGNORED) {
02032 char s[64];
02033 TagToString (s, tag);
02034 globals->logWarning->Write ("CExhaustGasTemperatureGauge::Read : Unknown tag %s", s);
02035 }
02036
02037 return rc;
02038 }
02039
02040
02041
02042
02043
02044 CBasicCompassGauge::CBasicCompassGauge (void)
02045 {
02046 strcpy (comp_art, "");
02047 wind = 0;
02048 orgx = 0;
02049 nton = 0;
02050 }
02051
02052 int CBasicCompassGauge::Read (SStream *stream, Tag tag)
02053 {
02054 int rc = TAG_IGNORED;
02055
02056 switch (tag) {
02057 case 'comp':
02058 ReadString (comp_art, 64, stream);
02059 rc = TAG_READ;
02060 break;
02061
02062 case 'wind':
02063 ReadInt (&wind, stream);
02064 rc = TAG_READ;
02065 break;
02066
02067 case 'orgx':
02068 ReadInt (&orgx, stream);
02069 rc = TAG_READ;
02070 break;
02071
02072 case 'nton':
02073 ReadInt (&nton, stream);
02074 rc = TAG_READ;
02075 break;
02076 }
02077
02078 if (rc == TAG_IGNORED) {
02079 rc = CBitmapGauge::Read (stream, tag);
02080 }
02081
02082 if (rc == TAG_IGNORED) {
02083 char s[64];
02084 TagToString (s, tag);
02085 globals->logWarning->Write ("CBasicCompassGauge::Read : Unknown tag %s", s);
02086 }
02087
02088 return rc;
02089 }
02090
02091
02092
02093
02094
02095 CAnalogClockGauge::CAnalogClockGauge (void)
02096 {
02097 }
02098
02099
02100 int CAnalogClockGauge::Read (SStream *stream, Tag tag)
02101 {
02102 int rc = TAG_IGNORED;
02103
02104 if (rc == TAG_IGNORED) {
02105 rc = CTwoNeedleGauge::Read (stream, tag);
02106 }
02107
02108 if (rc == TAG_IGNORED) {
02109 char s[64];
02110 TagToString (s, tag);
02111 globals->logWarning->Write ("CAnalogClockGauge::Read : Unknown tag %s", s);
02112 }
02113
02114 return rc;
02115 }
02116
02117
02118
02119
02120
02121 CAmmeterGauge::CAmmeterGauge (void)
02122 {
02123 }
02124
02125 int CAmmeterGauge::Read (SStream *stream, Tag tag)
02126 {
02127 int rc = TAG_IGNORED;
02128
02129 if (rc == TAG_IGNORED) {
02130 rc = CNeedleGauge::Read (stream, tag);
02131 }
02132
02133 if (rc == TAG_IGNORED) {
02134 char s[64];
02135 TagToString (s, tag);
02136 globals->logWarning->Write ("CAmmeterGauge::Read : Unknown tag %s", s);
02137 }
02138
02139 return rc;
02140 }
02141
02142
02143
02144
02145
02146 CFlyhawkDigitalClockGauge::CFlyhawkDigitalClockGauge (void)
02147 {
02148 oatd_x1 = oatd_y1 = oatd_x2 = oatd_y2 = 0;
02149 clkd_x1 = clkd_y1 = clkd_x2 = clkd_y2 = 0;
02150 ft13 = false;
02151 noco = false;
02152 cgap = 0;
02153 frgb_r = frgb_g = frgb_b = 240;
02154 }
02155
02156 int CFlyhawkDigitalClockGauge::Read (SStream *stream, Tag tag)
02157 {
02158 int rc = TAG_IGNORED;
02159
02160 switch (tag) {
02161 case 'oatd':
02162 ReadInt (&oatd_x1, stream);
02163 ReadInt (&oatd_y1, stream);
02164 ReadInt (&oatd_x2, stream);
02165 ReadInt (&oatd_y2, stream);
02166 rc = TAG_READ;
02167 break;
02168
02169 case 'clkd':
02170 ReadInt (&clkd_x1, stream);
02171 ReadInt (&clkd_y1, stream);
02172 ReadInt (&clkd_x2, stream);
02173 ReadInt (&clkd_y2, stream);
02174 rc = TAG_READ;
02175 break;
02176
02177 case 'bupp':
02178 ReadFrom (&bupp, stream);
02179 rc = TAG_READ;
02180 break;
02181
02182 case 'bcon':
02183 ReadFrom (&bcon, stream);
02184 rc = TAG_READ;
02185 break;
02186
02187 case 'bsel':
02188 ReadFrom (&bsel, stream);
02189 rc = TAG_READ;
02190 break;
02191
02192 case 'bbot':
02193 ReadFrom (&bbot, stream);
02194 rc = TAG_READ;
02195 break;
02196
02197 case 'ft13':
02198 {
02199 int i;
02200 ReadInt (&i, stream);
02201 ft13 = (i != 0);
02202 }
02203 rc = TAG_READ;
02204 break;
02205
02206 case 'noco':
02207 {
02208 int i;
02209 ReadInt (&i, stream);
02210 noco = (i != 0);
02211 }
02212 rc = TAG_READ;
02213 break;
02214
02215 case 'cgap':
02216 ReadInt (&cgap, stream);
02217 rc = TAG_READ;
02218 break;
02219
02220 case 'frgb':
02221 ReadInt (&frgb_r, stream);
02222 ReadInt (&frgb_g, stream);
02223 ReadInt (&frgb_b, stream);
02224 rc = TAG_READ;
02225 break;
02226 }
02227
02228 if (rc == TAG_IGNORED) {
02229 rc = CBitmapGauge::Read (stream, tag);
02230 }
02231
02232 if (rc == TAG_IGNORED) {
02233 char s[64];
02234 TagToString (s, tag);
02235 globals->logWarning->Write ("CFlyhawkDigitalClockGauge::Read : Unknown tag %s", s);
02236 }
02237
02238 return rc;
02239 }
02240
02241 ECursorResult CFlyhawkDigitalClockGauge::MouseMoved (int x, int y)
02242 {
02243 ECursorResult rc = CURSOR_NOT_CHANGED;
02244
02245
02246 if (rc == CURSOR_NOT_CHANGED) rc = bupp.MouseMoved (x, y);
02247 if (rc == CURSOR_NOT_CHANGED) rc = bsel.MouseMoved (x, y);
02248 if (rc == CURSOR_NOT_CHANGED) rc = bcon.MouseMoved (x, y);
02249 if (rc == CURSOR_NOT_CHANGED) rc = bbot.MouseMoved (x, y);
02250
02251
02252 if (rc == CURSOR_NOT_CHANGED) {
02253 rc = CBitmapGauge::MouseMoved (x, y);
02254 }
02255
02256 return rc;
02257 }
02258
02259
02260
02261
02262
02263 CBasicDigitalClockGauge::CBasicDigitalClockGauge (void)
02264 {
02265 tick_x = tick_y = 0;
02266 tkut = tklt = tkft = tket = 0;
02267 }
02268
02269 int CBasicDigitalClockGauge::Read (SStream *stream, Tag tag)
02270 {
02271 int rc = TAG_IGNORED;
02272
02273 switch (tag) {
02274 case 'tick':
02275 ReadInt (&tick_x, stream);
02276 ReadInt (&tick_y, stream);
02277 rc = TAG_READ;
02278 break;
02279
02280 case 'tkut':
02281 ReadInt (&tkut, stream);
02282 rc = TAG_READ;
02283 break;
02284
02285 case 'tklt':
02286 ReadInt (&tklt, stream);
02287 rc = TAG_READ;
02288 break;
02289
02290 case 'tkft':
02291 ReadInt (&tkft, stream);
02292 rc = TAG_READ;
02293 break;
02294
02295 case 'tket':
02296 ReadInt (&tket, stream);
02297 rc = TAG_READ;
02298 break;
02299 }
02300
02301 if (rc == TAG_IGNORED) {
02302 rc = CFlyhawkDigitalClockGauge::Read (stream, tag);
02303 }
02304
02305 if (rc == TAG_IGNORED) {
02306 char s[64];
02307 TagToString (s, tag);
02308 globals->logWarning->Write ("CBasicDigitalClockGauge::Read : Unknown tag %s", s);
02309 }
02310
02311 return rc;
02312 }
02313
02314
02315
02316
02317
02318 CBasicADFGauge::CBasicADFGauge (void)
02319 {
02320 comp_tag = 0;
02321
02322 comp = NULL;
02323 knob = NULL;
02324 hdng = NULL;
02325
02326 compass = 0;
02327 }
02328
02329 CBasicADFGauge::~CBasicADFGauge (void)
02330 {
02331 if (comp != NULL) delete comp;
02332 if (knob != NULL) delete knob;
02333 if (hdng != NULL) delete hdng;
02334 }
02335
02336 int CBasicADFGauge::Read (SStream *stream, Tag tag)
02337 {
02338 int rc = TAG_IGNORED;
02339
02340 switch (tag) {
02341 case 'comp':
02342 ReadTag (&comp_tag, stream);
02343 comp = new CGaugeNeedle;
02344 ReadFrom (comp, stream);
02345 rc = TAG_READ;
02346 break;
02347
02348 case 'knob':
02349 knob = new CGaugeKnob;
02350 ReadFrom (knob, stream);
02351 rc = TAG_READ;
02352 break;
02353
02354 case 'hdng':
02355 hdng = new CGaugeNeedle;
02356 ReadFrom (hdng, stream);
02357 rc = TAG_READ;
02358 break;
02359 }
02360
02361 if (rc == TAG_IGNORED) {
02362 rc = CNeedleGauge::Read (stream, tag);
02363 }
02364
02365 if (rc == TAG_IGNORED) {
02366 char s[64];
02367 TagToString (s, tag);
02368 globals->logWarning->Write ("CBasicADFGaugeGauge::Read : Unknown tag %s", s);
02369 }
02370
02371 return rc;
02372 }
02373
02374 void CBasicADFGauge::ReadFinished (void)
02375 {
02376 CNeedleGauge::ReadFinished ();
02377
02378 if (knob != NULL) knob->SetOffset (x, y);
02379 }
02380
02381 ECursorResult CBasicADFGauge::MouseMoved (int x, int y)
02382 {
02383 ECursorResult rc = CURSOR_NOT_CHANGED;
02384
02385
02386 if (knob != NULL) {
02387 if (rc == CURSOR_NOT_CHANGED) rc = knob->MouseMoved (x, y);
02388 }
02389
02390
02391 if (rc == CURSOR_NOT_CHANGED) {
02392 rc = CNeedleGauge::MouseMoved (x, y);
02393 }
02394
02395 return rc;
02396 }
02397
02398 EClickResult CBasicADFGauge::MouseClick (int x, int y, int buttons)
02399 {
02400 EClickResult rc = MOUSE_TRACKING_OFF;
02401
02402
02403 if ((buttons & (MOUSE_BUTTON_LEFT | MOUSE_BUTTON_RIGHT)) == 0) {
02404 return rc;
02405 }
02406
02407 if (knob != NULL) {
02408 if (knob->IsHit(x, y)) {
02409
02411 if (buttons & MOUSE_BUTTON_LEFT) {
02412 compass = Wrap360 (compass - 1.0f);
02413 } else {
02414 compass = Wrap360 (compass + 1.0f);
02415 }
02416 }
02417 }
02418
02419 return rc;
02420 }
02421
02422 void CBasicADFGauge::Draw (void)
02423 {
02424 ClearSurface ();
02425 DrawUnderlay ();
02426
02427
02428 mesg.id = MSG_GETDATA;
02429 mesg.user.u.datatag = 'navd';
02430 SendMessage (&mesg);
02431 float navd = mesg.realData;
02432
02433
02434 if (comp != NULL) comp->Draw (surf, compass, cx, cy);
02435
02436
02437 nedl.Draw (surf, navd, cx, cy);
02438
02439
02440 if (hdng != NULL) hdng->Draw (surf, navd, cx, cy);
02441
02442
02443 float degPerRev = 30.0f;
02444 if (knob != NULL) knob->Draw (fmodf(compass, degPerRev) / degPerRev);
02445
02446 DrawOverlay ();
02447 }
02448
02449 void CBasicADFGauge::Blit (int xOffset, int yOffset, int y_isiz)
02450 {
02451 BlitSurface (surf, xOffset, yOffset, y_isiz);
02452 BlitSurface (knob->surf, xOffset, yOffset, y_isiz);
02453 }
02454
02455
02456
02457
02458
02459 CDigitalReadoutGauge::CDigitalReadoutGauge (void)
02460 {
02461 maxd = 0;
02462 strcpy (wdig_art, "");
02463 strcpy (fdig_art, "");
02464 digY = 0;
02465 num_digX = 0;
02466 digX = NULL;
02467 whol = false;
02468 padz = false;
02469 }
02470
02471 int CDigitalReadoutGauge::Read (SStream *stream, Tag tag)
02472 {
02473 int rc = TAG_IGNORED;
02474
02475 switch (tag) {
02476 case 'maxd':
02477 ReadInt (&maxd, stream);
02478 rc = TAG_READ;
02479 break;
02480
02481 case 'wdig':
02482 ReadString (wdig_art, 64, stream);
02483 rc = TAG_READ;
02484 break;
02485
02486 case 'fdig':
02487 ReadString (fdig_art, 64, stream);
02488 rc = TAG_READ;
02489 break;
02490
02491 case 'digY':
02492 ReadInt (&digY, stream);
02493 rc = TAG_READ;
02494 break;
02495
02496 case 'digX':
02497 {
02498 ReadInt (&num_digX, stream);
02499 digX = new int[num_digX];
02500 for (int i=0; i<num_digX; i++) {
02501 ReadInt (&digX[i], stream);
02502 }
02503 }
02504 rc = TAG_READ;
02505 break;
02506
02507 case 'whol':
02508 {
02509 int i;
02510 ReadInt (&i, stream);
02511 whol = (i != 0);
02512 }
02513 rc = TAG_READ;
02514 break;
02515
02516 case 'padz':
02517 {
02518 int i;
02519 ReadInt (&i, stream);
02520 padz = (i != 0);
02521 }
02522 rc = TAG_READ;
02523 break;
02524 }
02525
02526 if (rc == TAG_IGNORED) {
02527 rc = CGauge::Read (stream, tag);
02528 }
02529
02530 if (rc == TAG_IGNORED) {
02531 char s[64];
02532 TagToString (s, tag);
02533 globals->logWarning->Write ("CDigitalReadoutGauge::Read : Unknown tag %s", s);
02534 }
02535
02536 return rc;
02537 }
02538
02539
02540
02541
02542
02543 CDigitsReadoutGauge::CDigitsReadoutGauge (void)
02544 {
02545 frgb_r = frgb_g = frgb_b = 240;
02546 strcpy (just, "");
02547 }
02548
02549 int CDigitsReadoutGauge::Read (SStream *stream, Tag tag)
02550 {
02551 int rc = TAG_IGNORED;
02552
02553 switch (tag) {
02554 case 'frgb':
02555 ReadInt (&frgb_r, stream);
02556 ReadInt (&frgb_g, stream);
02557 ReadInt (&frgb_b, stream);
02558 rc = TAG_READ;
02559 break;
02560
02561 case 'just':
02562 ReadString (just, 64, stream);
02563 rc = TAG_READ;
02564 break;
02565 }
02566
02567 if (rc == TAG_IGNORED) {
02568 rc = CGauge::Read (stream, tag);
02569 }
02570
02571 if (rc == TAG_IGNORED) {
02572 char s[64];
02573 TagToString (s, tag);
02574 globals->logWarning->Write ("CDigitsReadoutGauge::Read : Unknown tag %s", s);
02575 }
02576
02577 return rc;
02578 }
02579
02580
02581
02582
02583
02584 CCabinPressureRateKnobGauge::CCabinPressureRateKnobGauge (void)
02585 {
02586 ofxy_x = ofxy_y = 0;
02587 alti_min = alti_max = 0;
02588 rate_min = rate_max = 0;
02589 strcpy (onsf, "");
02590 strcpy (ofsf, "");
02591 }
02592
02593
02594 int CCabinPressureRateKnobGauge::Read (SStream *stream, Tag tag)
02595 {
02596 int rc = TAG_IGNORED;
02597
02598 switch (tag) {
02599 case 'ofxy':
02600 ReadInt (&ofxy_x, stream);
02601 ReadInt (&ofxy_y, stream);
02602 rc = TAG_READ;
02603 break;
02604
02605 case 'alti':
02606 ReadFloat (&alti_min, stream);
02607 ReadFloat (&alti_max, stream);
02608 rc = TAG_READ;
02609 break;
02610
02611 case 'rate':
02612 ReadFloat (&rate_min, stream);
02613 ReadFloat (&rate_max, stream);
02614 rc = TAG_READ;
02615 break;
02616
02617 case 'cabn':
02618 ReadFrom (&cabn, stream);
02619 rc = TAG_READ;
02620 break;
02621
02622 case 'knob':
02623 ReadFrom (&knob, stream);
02624 rc = TAG_READ;
02625 break;
02626
02627 case 'onsf':
02628 ReadString (onsf, 64, stream);
02629 rc = TAG_READ;
02630 break;
02631
02632 case 'ofsf':
02633 ReadString (ofsf, 64, stream);
02634 rc = TAG_READ;
02635 break;
02636 }
02637
02638 if (rc == TAG_IGNORED) {
02639 rc = CBitmapGauge::Read (stream, tag);
02640 }
02641
02642 if (rc == TAG_IGNORED) {
02643 char s[64];
02644 TagToString (s, tag);
02645 globals->logWarning->Write ("CCabinPressureRateKnobGauge::Read : Unknown tag %s", s);
02646 }
02647
02648 return rc;
02649 }
02650
02651 ECursorResult CCabinPressureRateKnobGauge::MouseMoved (int x, int y)
02652 {
02653 ECursorResult rc = CURSOR_NOT_CHANGED;
02654
02655
02656 if (rc == CURSOR_NOT_CHANGED) rc = cabn.MouseMoved (x, y);
02657 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
02658
02659
02660 if (rc == CURSOR_NOT_CHANGED) {
02661 rc = CBitmapGauge::MouseMoved (x, y);
02662 }
02663
02664 return rc;
02665 }
02666
02667
02668
02669
02670
02671 CCabinPressureGauge::CCabinPressureGauge (void)
02672 {
02673 }
02674
02675 int CCabinPressureGauge::Read (SStream *stream, Tag tag)
02676 {
02677 int rc = TAG_IGNORED;
02678
02679 switch (tag) {
02680 case 'alti':
02681 ReadFrom (&alti, stream);
02682 rc = TAG_READ;
02683 break;
02684
02685 case 'diff':
02686 ReadFrom (&diff, stream);
02687 rc = TAG_READ;
02688 break;
02689
02690 case 'rate':
02691 ReadFrom (&rate, stream);
02692 rc = TAG_READ;
02693 break;
02694 }
02695
02696 if (rc == TAG_IGNORED) {
02697 rc = CNeedleGauge::Read (stream, tag);
02698 }
02699
02700 if (rc == TAG_IGNORED) {
02701 char s[64];
02702 TagToString (s, tag);
02703 globals->logWarning->Write ("CCabinPressureGauge::Read : Unknown tag %s", s);
02704 }
02705
02706 return rc;
02707 }
02708
02709
02710
02711
02712
02713 CBrakePressureGauge::CBrakePressureGauge (void)
02714 {
02715 }
02716
02717 int CBrakePressureGauge::Read (SStream *stream, Tag tag)
02718 {
02719 int rc = TAG_IGNORED;
02720
02721 switch (tag) {
02722 case 'left':
02723 ReadFrom (&left, stream);
02724 rc = TAG_READ;
02725 break;
02726
02727 case 'rght':
02728 ReadFrom (&rght, stream);
02729 rc = TAG_READ;
02730 break;
02731 }
02732
02733 if (rc == TAG_IGNORED) {
02734 rc = CTwoNeedleGauge::Read (stream, tag);
02735 }
02736
02737 if (rc == TAG_IGNORED) {
02738 char s[64];
02739 TagToString (s, tag);
02740 globals->logWarning->Write ("CBrakePressureGauge::Read : Unknown tag %s", s);
02741 }
02742
02743 return rc;
02744 }
02745
02746 ECursorResult CBrakePressureGauge::MouseMoved (int x, int y)
02747 {
02748 ECursorResult rc = CURSOR_NOT_CHANGED;
02749
02750
02751 if (rc == CURSOR_NOT_CHANGED) rc = left.MouseMoved (x, y);
02752 if (rc == CURSOR_NOT_CHANGED) rc = rght.MouseMoved (x, y);
02753
02754
02755 if (rc == CURSOR_NOT_CHANGED) {
02756 rc = CBitmapGauge::MouseMoved (x, y);
02757 }
02758
02759 return rc;
02760 }
02761
02762
02763
02764
02765
02766 CAOANeedleGauge::CAOANeedleGauge (void)
02767 {
02768 }
02769
02770 int CAOANeedleGauge::Read (SStream *stream, Tag tag)
02771 {
02772 int rc = TAG_IGNORED;
02773
02774 switch (tag) {
02775 case 'knob':
02776 ReadFrom (&knob, stream);
02777 rc = TAG_READ;
02778 break;
02779 }
02780
02781 if (rc == TAG_IGNORED) {
02782 rc = CTwoNeedleGauge::Read (stream, tag);
02783 }
02784
02785 if (rc == TAG_IGNORED) {
02786 char s[64];
02787 TagToString (s, tag);
02788 globals->logWarning->Write ("CAOANeedleGauge::Read : Unknown tag %s", s);
02789 }
02790
02791 return rc;
02792 }
02793
02794 ECursorResult CAOANeedleGauge::MouseMoved (int x, int y)
02795 {
02796 ECursorResult rc = CURSOR_NOT_CHANGED;
02797
02798
02799 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
02800
02801
02802 if (rc == CURSOR_NOT_CHANGED) {
02803 rc = CBitmapGauge::MouseMoved (x, y);
02804 }
02805
02806 return rc;
02807 }
02808
02809
02810
02811
02812
02813 CTurnCoordinatorGauge::CTurnCoordinatorGauge (void)
02814 {
02815 strcpy (plan_art, "");
02816 poff_x = poff_y = 0;
02817 strcpy (ball_art, "");
02818 boff_x = boff_y = 0;
02819 pcon = bcon = 0;
02820 Ltrn = Rtrn = 0;
02821 }
02822
02823 int CTurnCoordinatorGauge::Read (SStream *stream, Tag tag)
02824 {
02825 int rc = TAG_IGNORED;
02826
02827 switch (tag) {
02828 case 'plan':
02829 ReadString (plan_art, 64, stream);
02830 rc = TAG_READ;
02831 break;
02832
02833 case 'poff':
02834 ReadInt (&poff_x, stream);
02835 ReadInt (&poff_y, stream);
02836 rc = TAG_READ;
02837 break;
02838
02839 case 'ball':
02840 ReadString (ball_art, 64, stream);
02841 rc = TAG_READ;
02842 break;
02843
02844 case 'boff':
02845 ReadInt (&boff_x, stream);
02846 ReadInt (&boff_y, stream);
02847 rc = TAG_READ;
02848 break;
02849
02850 case 'pcon':
02851 ReadTag (&pcon, stream);
02852 rc = TAG_READ;
02853 break;
02854
02855 case 'bcon':
02856 ReadTag (&bcon, stream);
02857 rc = TAG_READ;
02858 break;
02859
02860 case 'Ltrn':
02861 ReadInt (&Ltrn, stream);
02862 rc = TAG_READ;
02863 break;
02864
02865 case 'Rtrn':
02866 ReadInt (&Rtrn, stream);
02867 rc = TAG_READ;
02868 break;
02869 }
02870
02871 if (rc == TAG_IGNORED) {
02872 rc = CBitmapGauge::Read (stream, tag);
02873 }
02874
02875 if (rc == TAG_IGNORED) {
02876 char s[64];
02877 TagToString (s, tag);
02878 globals->logWarning->Write ("CTurnCoordinatorGauge::Read : Unknown tag %s", s);
02879 }
02880
02881 return rc;
02882 }
02883
02884
02885
02886
02887 CHSIGauge::CHSIGauge (void)
02888 {
02889 rang_min = 0;
02890 rang_max = 360;
02891 memset (&obsm, 0, sizeof(SMessage));
02892 memset (&bugm, 0, sizeof(SMessage));
02893 memset (&fcs, 0, sizeof(SMessage));
02894 radi_tag = 0;
02895 radi_unit = 0;
02896 gsdf = 0;
02897 }
02898
02899 int CHSIGauge::Read (SStream *stream, Tag tag)
02900 {
02901 int rc = TAG_IGNORED;
02902
02903 switch (tag) {
02904 case 'comp':
02905 ReadString (comp.art, 64, stream);
02906 ReadInt (&comp.x, stream);
02907 ReadInt (&comp.y, stream);
02908 rc = TAG_READ;
02909 break;
02910
02911 case 'cour':
02912 ReadString (cour.art, 64, stream);
02913 ReadInt (&cour.x, stream);
02914 ReadInt (&cour.y, stream);
02915 rc = TAG_READ;
02916 break;
02917
02918 case 'devi':
02919 ReadString (devi.art, 64, stream);
02920 ReadInt (&devi.x, stream);
02921 ReadInt (&devi.y, stream);
02922 rc = TAG_READ;
02923 break;
02924
02925 case 'devb':
02926 ReadString (devb.art, 64, stream);
02927 ReadInt (&devb.x, stream);
02928 ReadInt (&devb.y, stream);
02929 rc = TAG_READ;
02930 break;
02931
02932 case 'apbg':
02933 ReadString (apbg.art, 64, stream);
02934 ReadInt (&apbg.x, stream);
02935 ReadInt (&apbg.y, stream);
02936 rc = TAG_READ;
02937 break;
02938
02939 case 'to__':
02940 ReadString (to.art, 64, stream);
02941 ReadInt (&to.x, stream);
02942 ReadInt (&to.y, stream);
02943 rc = TAG_READ;
02944 break;
02945
02946 case 'from':
02947 ReadString (from.art, 64, stream);
02948 ReadInt (&from.x, stream);
02949 ReadInt (&from.y, stream);
02950 rc = TAG_READ;
02951 break;
02952
02953 case 'glid':
02954 ReadString (glid.art, 64, stream);
02955 ReadInt (&glid.x, stream);
02956 ReadInt (&glid.y, stream);
02957 rc = TAG_READ;
02958 break;
02959
02960 case 'knob':
02961 ReadFrom (&knob, stream);
02962 rc = TAG_READ;
02963 break;
02964
02965 case 'apkb':
02966 ReadFrom (&apkb, stream);
02967 rc = TAG_READ;
02968 break;
02969
02970 case 'obsm':
02971 ReadMessage (&obsm, stream);
02972 rc = TAG_READ;
02973 break;
02974
02975 case 'bugm':
02976 ReadMessage (&bugm, stream);
02977 rc = TAG_READ;
02978 break;
02979
02980 case 'fcs_':
02981 ReadMessage (&fcs, stream);
02982 rc = TAG_READ;
02983 break;
02984
02985 case 'rang':
02986 ReadFloat (&rang_min, stream);
02987 ReadFloat (&rang_max, stream);
02988 rc = TAG_READ;
02989 break;
02990
02991 case 'radi':
02992 ReadTag (&radi_tag, stream);
02993 ReadInt (&radi_unit, stream);
02994 rc = TAG_READ;
02995 break;
02996
02997 case 'gsdf':
02998 ReadFloat (&gsdf, stream);
02999 rc = TAG_READ;
03000 break;
03001 }
03002
03003 if (rc == TAG_IGNORED) {
03004 rc = CBitmapGauge::Read (stream, tag);
03005 }
03006
03007 if (rc == TAG_IGNORED) {
03008 char s[64];
03009 TagToString (s, tag);
03010 globals->logWarning->Write ("CHSIGauge::Read : Unknown tag %s", s);
03011 }
03012
03013 return rc;
03014 }
03015
03016 ECursorResult CHSIGauge::MouseMoved (int x, int y)
03017 {
03018 ECursorResult rc = CURSOR_NOT_CHANGED;
03019
03020
03021 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
03022 if (rc == CURSOR_NOT_CHANGED) rc = apkb.MouseMoved (x, y);
03023
03024
03025 if (rc == CURSOR_NOT_CHANGED) {
03026 rc = CBitmapGauge::MouseMoved (x, y);
03027 }
03028
03029 return rc;
03030 }
03031
03032
03033
03034
03035
03036 CFlyhawkELTGauge::CFlyhawkELTGauge (void)
03037 {
03038 strcpy (ulit_art, "");
03039 strcpy (lit_art, "");
03040 strcpy (csru_csr, "");
03041 strcpy (csrd_csr, "");
03042 strcpy (sfxu_wav, "");
03043 strcpy (sfxd_wav, "");
03044 }
03045
03046 int CFlyhawkELTGauge::Read (SStream *stream, Tag tag)
03047 {
03048 int rc = TAG_IGNORED;
03049
03050 switch (tag) {
03051 case 'ulit':
03052 ReadString (ulit_art, 64, stream);
03053 rc = TAG_READ;
03054 break;
03055
03056 case 'lit ':
03057 ReadString (lit_art, 64, stream);
03058 rc = TAG_READ;
03059 break;
03060
03061 case 'csru':
03062 ReadString (csru_csr, 64, stream);
03063 rc = TAG_READ;
03064 break;
03065
03066 case 'csrd':
03067 ReadString (csrd_csr, 64, stream);
03068 rc = TAG_READ;
03069 break;
03070
03071 case 'sfxu':
03072 ReadString (sfxu_wav, 64, stream);
03073 rc = TAG_READ;
03074 break;
03075
03076 case 'sfxd':
03077 ReadString (sfxd_wav, 64, stream);
03078 rc = TAG_READ;
03079 break;
03080 }
03081
03082 if (rc == TAG_IGNORED) {
03083 rc = CBitmapGauge::Read (stream, tag);
03084 }
03085
03086 if (rc == TAG_IGNORED) {
03087 char s[64];
03088 TagToString (s, tag);
03089 globals->logWarning->Write ("CFlyhawkELTGauge::Read : Unknown tag %s", s);
03090 }
03091
03092 return rc;
03093 }
03094
03095
03096
03097
03098
03099
03100 CSlipIndicatorGauge::CSlipIndicatorGauge (void)
03101 {
03102 strcpy (ball_art, "");
03103 }
03104
03105
03106 int CSlipIndicatorGauge::Read (SStream *stream, Tag tag)
03107 {
03108 int rc = TAG_IGNORED;
03109
03110 switch (tag) {
03111 case 'ball':
03112 ReadString (ball_art, 64, stream);
03113 rc = TAG_READ;
03114 break;
03115 }
03116
03117 if (rc == TAG_IGNORED) {
03118 rc = CBitmapGauge::Read (stream, tag);
03119 }
03120
03121 if (rc == TAG_IGNORED) {
03122 char s[64];
03123 TagToString (s, tag);
03124 globals->logWarning->Write ("CHSIGauge::Read : Unknown tag %s", s);
03125 }
03126
03127 return rc;
03128 }
03129
03130
03131
03132
03133
03134
03135 CHobbsMeterGauge::CHobbsMeterGauge (void)
03136 {
03137 strcpy (blak_art, "");
03138 strcpy (whit_art, "");
03139 }
03140
03141
03142 int CHobbsMeterGauge::Read (SStream *stream, Tag tag)
03143 {
03144 int rc = TAG_IGNORED;
03145
03146 switch (tag) {
03147 case 'blak':
03148 ReadString (blak_art, 64, stream);
03149 rc = TAG_READ;
03150 break;
03151
03152 case 'whit':
03153 ReadString (whit_art, 64, stream);
03154 rc = TAG_READ;
03155 break;
03156 }
03157
03158 if (rc == TAG_IGNORED) {
03159 rc = CGauge::Read (stream, tag);
03160 }
03161
03162 if (rc == TAG_IGNORED) {
03163 char s[64];
03164 TagToString (s, tag);
03165 globals->logWarning->Write ("CHobbsMeterGauge::Read : Unknown tag %s", s);
03166 }
03167
03168 return rc;
03169 }
03170
03171
03172
03173
03174
03175 CNavigationGauge::CNavigationGauge (void)
03176 {
03177
03178 radi_tag = 0;
03179 radi_unit = 0;
03180
03181 comp_tag = 0;
03182
03183 strcpy (lndl.art, "");
03184 lndl.x = lndl.y = 0;
03185
03186 strcpy (gndl.art, "");
03187 gndl.x = gndl.y = 0;
03188
03189
03190 strcpy (obs.art, "");
03191 obs.x1 = obs.y1 = obs.x2 = obs.y2 = 0;
03192
03193 obsSetting = 0;
03194 obsKnobClick = false;
03195
03196
03197 strcpy (wtab_art, "");
03198 strcpy (ttab_art, "");
03199 strcpy (ftab_art, "");
03200 ntpl_x = ntpl_y = 0;
03201 gspl_x = gspl_y = 0;
03202 memset (&fcs, 0, sizeof(SMessage));
03203
03204
03205 surfObsKnob = NULL;
03206
03207
03208 bmObsKnob = NULL;
03209 nObsKnobFrames = 0;
03210 bmLocalizer = NULL;
03211 bmGlideslope = NULL;
03212 bmWarnTab = NULL;
03213 bmFromTab = NULL;
03214 bmToTab = NULL;
03215 }
03216
03217 CNavigationGauge::~CNavigationGauge (void)
03218 {
03219 if (bmObsKnob != NULL) {
03220 FreeBitmap (bmObsKnob);
03221 delete bmObsKnob;
03222 }
03223 if (bmLocalizer != NULL) {
03224 FreeBitmap (bmLocalizer);
03225 delete bmLocalizer;
03226 }
03227 if (bmGlideslope != NULL) {
03228 FreeBitmap (bmGlideslope);
03229 delete bmGlideslope;
03230 }
03231 if (bmWarnTab != NULL) {
03232 FreeBitmap (bmWarnTab);
03233 delete bmWarnTab;
03234 }
03235 if (bmFromTab != NULL) {
03236 FreeBitmap (bmFromTab);
03237 delete bmFromTab;
03238 }
03239 if (bmToTab != NULL) {
03240 FreeBitmap (bmToTab);
03241 delete bmToTab;
03242 }
03243 }
03244
03245 int CNavigationGauge::Read (SStream *stream, Tag tag)
03246 {
03247 int rc = TAG_IGNORED;
03248
03249 switch (tag) {
03250 case 'comp':
03251 ReadTag (&comp_tag, stream);
03252 ReadFrom (&comp_ndl, stream);
03253 rc = TAG_READ;
03254 break;
03255
03256 case 'lndl':
03257 ReadString (lndl.art, 64, stream);
03258 ReadInt (&lndl.x, stream);
03259 ReadInt (&lndl.y, stream);
03260 rc = TAG_READ;
03261 break;
03262
03263 case 'gndl':
03264 ReadString (gndl.art, 64, stream);
03265 ReadInt (&gndl.x, stream);
03266 ReadInt (&gndl.y, stream);
03267 rc = TAG_READ;
03268 break;
03269
03270 case 'obs_':
03271 ReadString (obs.art, 64, stream);
03272 ReadInt (&obs.x1, stream);
03273 ReadInt (&obs.y1, stream);
03274 ReadInt (&obs.x2, stream);
03275 ReadInt (&obs.y2, stream);
03276 rc = TAG_READ;
03277 break;
03278
03279 case 'wtab':
03280 ReadString (wtab_art, 64, stream);
03281 rc = TAG_READ;
03282 break;
03283
03284 case 'ttab':
03285 ReadString (ttab_art, 64, stream);
03286 rc = TAG_READ;
03287 break;
03288
03289 case 'ftab':
03290 ReadString (ftab_art, 64, stream);
03291 rc = TAG_READ;
03292 break;
03293
03294 case 'ntpl':
03295 ReadInt (&ntpl_x, stream);
03296 ReadInt (&ntpl_y, stream);
03297 rc = TAG_READ;
03298 break;
03299
03300 case 'gspl':
03301 ReadInt (&gspl_x, stream);
03302 ReadInt (&gspl_y, stream);
03303 rc = TAG_READ;
03304 break;
03305
03306 case 'radi':
03307 ReadTag (&radi_tag, stream);
03308 ReadInt (&radi_unit, stream);
03309 rc = TAG_READ;
03310 break;
03311
03312 case 'fcs_':
03313 ReadMessage (&fcs, stream);
03314 rc = TAG_READ;
03315 break;
03316 }
03317
03318 if (rc == TAG_IGNORED) {
03319 rc = CBitmapGauge::Read (stream, tag);
03320 }
03321
03322 if (rc == TAG_IGNORED) {
03323 char s[64];
03324 TagToString (s, tag);
03325 globals->logWarning->Write ("CNavigationGauge::Read : Unknown tag %s", s);
03326 }
03327
03328 return rc;
03329 }
03330
03331 void CNavigationGauge::ReadFinished ()
03332 {
03333 CBitmapGauge::ReadFinished ();
03334
03335
03336 mesg.group = radi_tag;
03337 mesg.user.u.unit = radi_unit;
03338
03339 if (strlen (obs.art) > 0) {
03340
03341 surfObsKnob = CreateSurface ((obs.x2 - obs.x1) + 1, (obs.y2 - obs.y1) + 1);
03342 surfObsKnob->xScreen = obs.x1 + x;
03343 surfObsKnob->yScreen = obs.y1 + y;
03344
03345
03346 bmObsKnob = new SBitmap;
03347 strcpy (bmObsKnob->bitmapName, "ART\\");
03348 strcat (bmObsKnob->bitmapName, obs.art);
03349 LoadBitmap (bmObsKnob);
03350 nObsKnobFrames = NumBitmapFrames (bmObsKnob);
03351 }
03352
03353 if (strlen (lndl.art) > 0) {
03354
03355 bmLocalizer = new SBitmap;
03356 strcpy (bmLocalizer->bitmapName, "ART\\");
03357 strcat (bmLocalizer->bitmapName, lndl.art);
03358 LoadBitmap (bmLocalizer);
03359 nLocalizerFrames = NumBitmapFrames (bmLocalizer);
03360 localizerFramesPerDeg = (float)nLocalizerFrames / 20.0f;
03361 }
03362
03363 if (strlen(gndl.art) > 0) {
03364
03365 bmGlideslope = new SBitmap;
03366 strcpy (bmGlideslope->bitmapName, "ART\\");
03367 strcat (bmGlideslope->bitmapName, gndl.art);
03368 LoadBitmap (bmGlideslope);
03369 nGlideslopeFrames = NumBitmapFrames (bmGlideslope);
03370 glideslopeFramesPerDeg = (float)nGlideslopeFrames / 20.0f;
03371 }
03372
03373 if (strlen(wtab_art) > 0) {
03374
03375 bmWarnTab = new SBitmap;
03376 strcpy (bmWarnTab->bitmapName, "ART\\");
03377 strcat (bmWarnTab->bitmapName, wtab_art);
03378 LoadBitmap (bmWarnTab);
03379 }
03380
03381 if (strlen(ttab_art) > 0) {
03382
03383 bmToTab = new SBitmap;
03384 strcpy (bmToTab->bitmapName, "ART\\");
03385 strcat (bmToTab->bitmapName, ttab_art);
03386 LoadBitmap (bmToTab);
03387 }
03388
03389 if (strlen(ftab_art) > 0) {
03390
03391 bmFromTab = new SBitmap;
03392 strcpy (bmFromTab->bitmapName, "ART\\");
03393 strcat (bmFromTab->bitmapName, ftab_art);
03394 LoadBitmap (bmFromTab);
03395 }
03396 }
03397
03398 EClickResult CNavigationGauge::MouseClick (int x, int y, int buttons)
03399 {
03400 EClickResult rc = MOUSE_TRACKING_OFF;
03401
03402
03403 if ((buttons & (MOUSE_BUTTON_LEFT | MOUSE_BUTTON_RIGHT)) == 0) {
03404 return rc;
03405 }
03406
03407
03408 if ((x >= obs.x1) && (x <= obs.x2) &&
03409 (y >= obs.y1) && (y <= obs.y2))
03410 {
03411
03412 obsKnobClick = true;
03413 obsKnobTickRate = 0.5f;
03414 obsKnobTickRateTimer = globals->timemgr->GetElapsedSimTime();
03415 obsKnobLastTick = 0;
03416
03417 if (buttons & MOUSE_BUTTON_LEFT) {
03418
03419 obsRate = -1;
03420 } else {
03421
03422 obsRate = +1;
03423 }
03424 rc = MOUSE_TRACKING_ON;
03425 }
03426
03427 return rc;
03428 }
03429
03430 EClickResult CNavigationGauge::StopClick (int x, int y, int buttons)
03431 {
03432 EClickResult rc = MOUSE_TRACKING_OFF;
03433
03434
03435 if (obsKnobClick) obsKnobClick = false;
03436
03437 return rc;
03438 }
03439
03440 void CNavigationGauge::Draw (void)
03441 {
03442 ClearSurface ();
03443 DrawUnderlay ();
03444
03445
03446 if (obsKnobClick) {
03447 float simElapsed = globals->timemgr->GetElapsedSimTime();
03448
03449 if ((simElapsed - obsKnobTickRateTimer) >= 2.0f) {
03450
03451 obsKnobTickRateTimer += 2.0f;
03452 if (obsKnobTickRate > 0.05f) {
03453 obsKnobTickRate /= 2;
03454 }
03455 }
03456
03457
03458 if ((simElapsed - obsKnobLastTick) >= obsKnobTickRate) {
03459 obsKnobLastTick = simElapsed;
03460 obsSetting = Wrap360 (obsSetting + (float)obsRate);
03461 }
03462 }
03463
03464
03465 bool navdTuned = false;
03466 float navd = 0;
03467 mesg.id = MSG_GETDATA;
03468 mesg.user.u.datatag = 'navd';
03469 SendMessage (&mesg);
03470 if (mesg.dataType == TYPE_REAL) {
03471 navdTuned = true;
03472 navd = mesg.realData;
03473 }
03474
03475
03476 comp_ndl.Draw (surf, obsSetting, cx, cy);
03477
03478
03479 if (navdTuned) {
03480 float diff = fabs(navd - obsSetting);
03481 static const float deadZone = 7.0f;
03482 if (diff > (90.0f + deadZone)) {
03483
03484 DrawBitmap (surf, bmFromTab, ntpl_x, ntpl_y, 0);
03485 } else if (diff < (90.0f - deadZone)) {
03486
03487 DrawBitmap (surf, bmToTab, ntpl_x, ntpl_y, 0);
03488 } else {
03489
03490 DrawBitmap (surf, bmWarnTab, ntpl_x, ntpl_y, 0);
03491 }
03492 } else {
03493
03494 DrawBitmap (surf, bmWarnTab, ntpl_x, ntpl_y, 0);
03495 }
03496
03497
03498 if (bmLocalizer) {
03499 int frame = nLocalizerFrames / 2;
03500 if (navdTuned) {
03501 float diff = navd - obsSetting;
03502 frame += (int)(diff * localizerFramesPerDeg);
03503 if (frame < 0) frame = 0;
03504 if (frame >= nLocalizerFrames) frame = nLocalizerFrames - 1;
03505
03506 char debug[80];
03507 sprintf (debug, "navd=%f obs=%f diff=%f frame=%d",
03508 navd, obsSetting, diff, frame);
03509 DrawNoticeToUser (debug, 1);
03510 }
03511 DrawBitmap (surf, bmLocalizer, lndl.x, lndl.y, frame);
03512 }
03513
03514
03515 if (bmGlideslope) {
03516 int frame = nGlideslopeFrames / 2;
03517 DrawBitmap (surf, bmGlideslope, gndl.x, gndl.y, frame);
03518 }
03519
03520
03521 float degPerRev = 30.0f;
03522 float obsRotation = fmodf(obsSetting, degPerRev) / degPerRev;
03523 int obsFrame = (int)((float)nObsKnobFrames * obsRotation);
03524 if ((surfObsKnob != NULL) && (bmObsKnob != NULL)) {
03525 EraseSurface (surfObsKnob);
03526 DrawBitmap (surfObsKnob, bmObsKnob, 0, 0, obsFrame);
03527 }
03528
03529 DrawOverlay ();
03530 }
03531
03532 void CNavigationGauge::Blit (int xOffset, int yOffset, int y_isiz)
03533 {
03534 BlitSurface (surf, xOffset, yOffset, y_isiz);
03535 BlitSurface (surfObsKnob, xOffset, yOffset, y_isiz);
03536 }
03537
03538
03539
03540
03541
03542
03543 CBKKX155ComPresets::CBKKX155ComPresets (void)
03544 {
03545 for (int i=0; i<32; i++) {
03546 freq[i] = 118.000;
03547 }
03548 }
03549
03550 void CBKKX155ComPresets::Load (const char *txtFilename)
03551 {
03552 }
03553
03554 int CBKKX155ComPresets::Read (SStream *stream, Tag tag)
03555 {
03556 int rc = 0;
03557 return rc;
03558 }
03559
03560 float CBKKX155ComPresets::GetFreq (int i)
03561 {
03562 float rc = 0;
03563
03564 if ((i >= 1) && (i <= 32)) rc = freq[i-1];
03565
03566 return rc;
03567 }
03568
03569 void CBKKX155ComPresets::SetFreq (int i, float f)
03570 {
03571 if ((i >= 1) && (i <= 32)) freq[i-1] = f;
03572 }
03573
03574
03575
03576
03577
03578 CBKNavComKX155Gauge::CBKNavComKX155Gauge (void)
03579 {
03580 radi_tag = 0;
03581 radi_unit = 0;
03582
03583 comChannel = 1;
03584 comProgramFlash = true;
03585 comProgramTimer = 0;
03586 comProgramFreq = false;
03587 }
03588
03589 int CBKNavComKX155Gauge::Read (SStream *stream, Tag tag)
03590 {
03591 int rc = TAG_IGNORED;
03592
03593 switch (tag) {
03594 case 'radi':
03595 ReadTag (&radi_tag, stream);
03596 ReadInt (&radi_unit, stream);
03597 rc = TAG_READ;
03598 break;
03599
03600 case 'ca01':
03601 ReadFrom (&ca01, stream);
03602 rc = TAG_READ;
03603 break;
03604
03605 case 'ca02':
03606 ReadFrom (&ca02, stream);
03607 rc = TAG_READ;
03608 break;
03609
03610 case 'ca03':
03611 ReadFrom (&ca03, stream);
03612 rc = TAG_READ;
03613 break;
03614
03615 case 'ca04':
03616 ReadFrom (&ca04, stream);
03617 rc = TAG_READ;
03618 break;
03619
03620 case 'ca05':
03621 ReadFrom (&ca05, stream);
03622 rc = TAG_READ;
03623 break;
03624
03625 case 'ca06':
03626 ReadFrom (&ca06, stream);
03627 rc = TAG_READ;
03628 break;
03629
03630 case 'ca07':
03631 ReadFrom (&ca07, stream);
03632 rc = TAG_READ;
03633 break;
03634
03635 case 'ca08':
03636 ReadFrom (&ca08, stream);
03637 rc = TAG_READ;
03638 break;
03639
03640 case 'ca09':
03641 ReadFrom (&ca09, stream);
03642 rc = TAG_READ;
03643 break;
03644
03645 case 'ca10':
03646 ReadFrom (&ca10, stream);
03647 rc = TAG_READ;
03648 break;
03649
03650 case 'ca11':
03651 ReadFrom (&ca11, stream);
03652 rc = TAG_READ;
03653 break;
03654
03655 case 'ca12':
03656 ReadFrom (&ca12, stream);
03657 rc = TAG_READ;
03658 break;
03659
03660 case 'ca13':
03661 ReadFrom (&ca13, stream);
03662 rc = TAG_READ;
03663 break;
03664
03665 case 'ca14':
03666 ReadFrom (&ca14, stream);
03667 rc = TAG_READ;
03668 break;
03669
03670 case 'ca15':
03671 ReadFrom (&ca15, stream);
03672 rc = TAG_READ;
03673 break;
03674
03675 case 'ca16':
03676 ReadFrom (&ca16, stream);
03677 rc = TAG_READ;
03678 break;
03679
03680 case 'ca17':
03681 ReadFrom (&ca17, stream);
03682 rc = TAG_READ;
03683 break;
03684
03685 case 'ca18':
03686 ReadFrom (&ca18, stream);
03687 rc = TAG_READ;
03688 break;
03689
03690 case 'ca19':
03691 ReadFrom (&ca19, stream);
03692 rc = TAG_READ;
03693 break;
03694
03695 case 'ca20':
03696 ReadFrom (&ca20, stream);
03697 rc = TAG_READ;
03698 break;
03699
03700 case 'ca21':
03701 ReadFrom (&ca21, stream);
03702 rc = TAG_READ;
03703 break;
03704 }
03705
03706 if (rc == TAG_IGNORED) {
03707 rc = CBitmapGauge::Read (stream, tag);
03708 }
03709
03710 if (rc == TAG_IGNORED) {
03711 char s[64];
03712 TagToString (s, tag);
03713 globals->logWarning->Write ("CBKNavComKX155Gauge::Read : Unknown tag %s", s);
03714 }
03715
03716 return rc;
03717 }
03718
03719 void CBKNavComKX155Gauge::ReadFinished (void)
03720 {
03721 CBitmapGauge::ReadFinished ();
03722
03723
03724 mesg.group = radi_tag;
03725 mesg.user.u.unit = radi_unit;
03726
03727
03728 digi9 = &(globals->fonts.ftdigi9);
03729
03731 }
03732
03733 ECursorResult CBKNavComKX155Gauge::MouseMoved (int x, int y)
03734 {
03735 ECursorResult rc = CURSOR_NOT_CHANGED;
03736
03737
03738 rc = ca01.MouseMoved (x, y);
03739 if (rc == CURSOR_NOT_CHANGED) rc = ca02.MouseMoved (x, y);
03740 if (rc == CURSOR_NOT_CHANGED) rc = ca03.MouseMoved (x, y);
03741 if (rc == CURSOR_NOT_CHANGED) rc = ca04.MouseMoved (x, y);
03742 if (rc == CURSOR_NOT_CHANGED) rc = ca05.MouseMoved (x, y);
03743 if (rc == CURSOR_NOT_CHANGED) rc = ca06.MouseMoved (x, y);
03744 if (rc == CURSOR_NOT_CHANGED) rc = ca07.MouseMoved (x, y);
03745 if (rc == CURSOR_NOT_CHANGED) rc = ca08.MouseMoved (x, y);
03746 if (rc == CURSOR_NOT_CHANGED) rc = ca09.MouseMoved (x, y);
03747 if (rc == CURSOR_NOT_CHANGED) rc = ca10.MouseMoved (x, y);
03748 if (rc == CURSOR_NOT_CHANGED) rc = ca11.MouseMoved (x, y);
03749 if (rc == CURSOR_NOT_CHANGED) rc = ca12.MouseMoved (x, y);
03750 if (rc == CURSOR_NOT_CHANGED) rc = ca13.MouseMoved (x, y);
03751 if (rc == CURSOR_NOT_CHANGED) rc = ca14.MouseMoved (x, y);
03752 if (rc == CURSOR_NOT_CHANGED) rc = ca15.MouseMoved (x, y);
03753 if (rc == CURSOR_NOT_CHANGED) rc = ca16.MouseMoved (x, y);
03754 if (rc == CURSOR_NOT_CHANGED) rc = ca17.MouseMoved (x, y);
03755 if (rc == CURSOR_NOT_CHANGED) rc = ca18.MouseMoved (x, y);
03756 if (rc == CURSOR_NOT_CHANGED) rc = ca19.MouseMoved (x, y);
03757 if (rc == CURSOR_NOT_CHANGED) rc = ca20.MouseMoved (x, y);
03758 if (rc == CURSOR_NOT_CHANGED) rc = ca21.MouseMoved (x, y);
03759
03760
03761 if (rc == CURSOR_NOT_CHANGED) {
03762 rc = CBitmapGauge::MouseMoved (x, y);
03763 }
03764
03765 return rc;
03766 }
03767
03768 void CBKNavComKX155Gauge::IncComChannel (void)
03769 {
03770 comChannel++;
03771 if (comChannel > 32) comChannel -= 32;
03772 }
03773
03774 void CBKNavComKX155Gauge::DecComChannel (void)
03775 {
03776 comChannel--;
03777 if (comChannel < 1) comChannel += 32;
03778 }
03779
03780 EClickResult CBKNavComKX155Gauge::MouseClick (int x, int y, int buttons)
03781 {
03782 EClickResult rc = MOUSE_TRACKING_OFF;
03783
03784
03785 if ((buttons & (MOUSE_BUTTON_LEFT | MOUSE_BUTTON_RIGHT)) == 0) {
03786 return rc;
03787 }
03788
03789
03790
03791 bool increment = (buttons & MOUSE_BUTTON_RIGHT) != 0;
03792
03793 if (ca01.IsHit (x, y)) {
03794
03795 mesg.id = MSG_SETDATA;
03796 mesg.user.u.datatag = increment ? 'caw+' : 'caw-';
03797 SendMessage (&mesg);
03798 } else if (ca02.IsHit (x, y)) {
03799
03800 mesg.id = MSG_SETDATA;
03801 mesg.user.u.datatag = increment ? 'caf+' : 'caf-';
03802 SendMessage (&mesg);
03803 } else if (ca03.IsHit (x, y)) {
03804
03805 mesg.id = MSG_SETDATA;
03806 mesg.user.u.datatag = increment ? 'csw+' : 'csw-';
03807 SendMessage (&mesg);
03808 } else if (ca04.IsHit (x, y)) {
03809
03810 mesg.id = MSG_SETDATA;
03811 mesg.user.u.datatag = increment ? 'csf+' : 'csf-';
03812 SendMessage (&mesg);
03813 } else if (ca05.IsHit (x, y)) {
03814
03815 mesg.id = MSG_SETDATA;
03816 mesg.user.u.datatag = increment ? 'naw+' : 'naw-';
03817 SendMessage (&mesg);
03818 } else if (ca06.IsHit (x, y)) {
03819
03820 mesg.id = MSG_SETDATA;
03821 mesg.user.u.datatag = increment ? 'naf+' : 'naf-';
03822 SendMessage (&mesg);
03823 } else if (ca07.IsHit (x, y)) {
03824
03825 mesg.id = MSG_SETDATA;
03826 mesg.user.u.datatag = increment ? 'nsw+' : 'nsw-';
03827 SendMessage (&mesg);
03828 } else if (ca08.IsHit (x, y)) {
03829
03830 mesg.id = MSG_SETDATA;
03831 mesg.user.u.datatag = increment ? 'nsf+' : 'nsf-';
03832 SendMessage (&mesg);
03833 } else if (ca09.IsHit (x, y)) {
03834
03835
03836 mesg.id = MSG_GETDATA;
03837 mesg.user.u.datatag = 'cmod';
03838 SendMessage (&mesg);
03839 EBKKX155ComMode comMode = (EBKKX155ComMode) mesg.intData;
03840
03841 switch (comMode) {
03842 case COM_MODE_NORMAL:
03843
03844 mesg.id = MSG_SETDATA;
03845 mesg.user.u.datatag = increment ? 'csf+' : 'csw+';
03846 SendMessage (&mesg);
03847 break;
03848 case COM_MODE_SELECT:
03849
03850 if (increment) {
03851 IncComChannel();
03852 } else {
03853 DecComChannel();
03854 }
03855 break;
03856 case COM_MODE_PROGRAM:
03857 if (comProgramFreq) {
03858
03859 } else {
03860
03861 if (increment) {
03862 IncComChannel();
03863 } else {
03864 DecComChannel();
03865 }
03866 }
03867 break;
03868 }
03869 } else if (ca10.IsHit (x, y)) {
03870
03871 mesg.id = MSG_SETDATA;
03872 mesg.user.u.datatag = increment ? 'nsf+' : 'nsw+';
03873 SendMessage (&mesg);
03874 } else if (ca11.IsHit (x, y)) {
03875
03876 mesg.id = MSG_SETDATA;
03877 mesg.user.u.datatag = 'cmod';
03878 SendMessage (&mesg);
03879 } else if (ca12.IsHit (x, y)) {
03880
03881 mesg.id = MSG_SETDATA;
03882 mesg.user.u.datatag = 'nmod';
03883 SendMessage (&mesg);
03884 } else if (ca13.IsHit (x, y)) {
03885
03886
03887 mesg.id = MSG_GETDATA;
03888 mesg.user.u.datatag = 'cmod';
03889 SendMessage (&mesg);
03890 EBKKX155ComMode comMode = (EBKKX155ComMode) mesg.intData;
03891
03892 switch (comMode) {
03893 case COM_MODE_NORMAL:
03894 {
03895
03896 mesg.id = MSG_GETDATA;
03897 mesg.user.u.datatag = 'comA';
03898 SendMessage (&mesg);
03899 float comA = mesg.realData;
03900 mesg.user.u.datatag = 'comS';
03901 SendMessage (&mesg);
03902 float comS = mesg.realData;
03903
03904
03905 mesg.id = MSG_SETDATA;
03906 mesg.user.u.datatag = 'comA';
03907 mesg.realData = comS;
03908 SendMessage (&mesg);
03909
03910 mesg.user.u.datatag = 'comS';
03911 mesg.realData = comA;
03912 SendMessage (&mesg);
03913 }
03914 break;
03915 case COM_MODE_SELECT:
03916 {
03917
03918 mesg.id = MSG_GETDATA;
03919 mesg.user.u.datatag = 'comA';
03920 SendMessage (&mesg);
03921 float comA = mesg.realData;
03922
03923 mesg.id = MSG_SETDATA;
03924 mesg.user.u.datatag = 'comA';
03925 mesg.realData = presets.GetFreq(comChannel);
03926 SendMessage (&mesg);
03927
03928 mesg.id = MSG_SETDATA;
03929 mesg.user.u.datatag = 'comS';
03930 mesg.realData = comA;
03931 SendMessage (&mesg);
03932
03933
03934 mesg.user.u.datatag = 'cmod';
03935 SendMessage (&mesg);
03936 }
03937 break;
03938 case COM_MODE_PROGRAM:
03939 {
03940
03941 comProgramFreq = !comProgramFreq;
03942 }
03943 break;
03944 }
03945 } else if (ca14.IsHit (x, y)) {
03946
03947 mesg.id = MSG_GETDATA;
03948 mesg.user.u.datatag = 'navA';
03949 SendMessage (&mesg);
03950 float navA = mesg.realData;
03951 mesg.user.u.datatag = 'navS';
03952 SendMessage (&mesg);
03953 float navS = mesg.realData;
03954
03955
03956 mesg.id = MSG_GETDATA;
03957 mesg.user.u.datatag = 'navA';
03958 mesg.realData = navS;
03959 SendMessage (&mesg);
03960
03961 mesg.user.u.datatag = 'navS';
03962 mesg.realData = navA;
03963 SendMessage (&mesg);
03964 }
03965
03966 return rc;
03967 }
03968
03969
03970 static void ConvertFreq (float f, int *whole, int *fract)
03971 {
03972 *whole = (int)floorf(f);
03973 *fract = (int)floorf((fmodf(f, 1.0f) * 1000 + 0.5));
03974 }
03975
03976
03977 void CBKNavComKX155Gauge::Draw (void)
03978 {
03979 ClearSurface ();
03980 DrawUnderlay ();
03981
03982
03983 mesg.id = MSG_GETDATA;
03984 mesg.user.u.datatag = 'actv';
03985 SendMessage (&mesg);
03986 bool active = (mesg.intData != 0);
03987 int frame = active ? 1 : 0;
03988
03989
03990
03991
03992
03993
03994 ca11.Draw (surf, frame);
03995 ca12.Draw (surf, frame);
03996 ca13.Draw (surf, frame);
03997 ca14.Draw (surf, frame);
03998
03999
04000
04001
04002
04003
04004
04005
04006
04007
04008
04009 if (active) {
04010 unsigned int amber = MakeRGB (215, 90, 0);
04011 char s[8];
04012 int whole, fract;
04013
04014
04015 mesg.user.u.datatag = 'cmod';
04016 SendMessage (&mesg);
04017 EBKKX155ComMode comMode = (EBKKX155ComMode)mesg.intData;
04018
04019
04020 switch (comMode) {
04021 case COM_MODE_NORMAL:
04022
04023 mesg.user.u.datatag = 'comA';
04024 SendMessage (&mesg);
04025 ConvertFreq (mesg.realData, &whole, &fract);
04026 sprintf (s, "%3d.", whole);
04027 DrawText (surf, digi9, ca01.x1, ca01.y1, amber, s);
04028 sprintf (s, "%02d", fract/10);
04029 DrawText (surf, digi9, ca02.x1, ca02.y1, amber, s);
04030 break;
04031 case COM_MODE_SELECT:
04032 sprintf (s, "%02d", comChannel);
04033 DrawTextR (surf, digi9, ca02.x2, ca02.y1, amber, s);
04034 break;
04035 case COM_MODE_PROGRAM:
04036
04038 sprintf (s, "%02d", comChannel);
04039 DrawTextR (surf, digi9, ca02.x2, ca02.y1, amber, s);
04040 break;
04041 }
04042
04043
04044 switch (comMode) {
04045 case COM_MODE_NORMAL:
04046
04047 mesg.user.u.datatag = 'comS';
04048 SendMessage (&mesg);
04049 ConvertFreq (mesg.realData, &whole, &fract);
04050 sprintf (s, "%3d.", whole);
04051 DrawText (surf, digi9, ca03.x1, ca03.y1, amber, s);
04052 sprintf (s, "%02d", fract/10);
04053 DrawText (surf, digi9, ca04.x1, ca04.y1, amber, s);
04054 break;
04055 case COM_MODE_SELECT:
04056
04057 ConvertFreq (presets.GetFreq(comChannel), &whole, &fract);
04058 sprintf (s, "%3d.", whole);
04059 DrawText (surf, digi9, ca03.x1, ca03.y1, amber, s);
04060 sprintf (s, "%02d", fract/10);
04061 DrawText (surf, digi9, ca04.x1, ca04.y1, amber, s);
04062 break;
04063 case COM_MODE_PROGRAM:
04064
04065 ConvertFreq (presets.GetFreq(comChannel), &whole, &fract);
04066 sprintf (s, "%3d.", whole);
04067 DrawText (surf, digi9, ca03.x1, ca03.y1, amber, s);
04068 sprintf (s, "%02d", fract/10);
04069 DrawText (surf, digi9, ca04.x1, ca04.y1, amber, s);
04070 break;
04071 }
04072
04073
04074 mesg.user.u.datatag = 'navA';
04075 SendMessage (&mesg);
04076 float navActive = mesg.realData;
04077 int navActiveWhole, navActiveFract;
04078 ConvertFreq (navActive, &navActiveWhole, &navActiveFract);
04079 sprintf (s, "%3d.", navActiveWhole);
04080 DrawText (surf, digi9, ca05.x1, ca05.y1, amber, s);
04081 sprintf (s, "%02d", navActiveFract/10);
04082 DrawText (surf, digi9, ca06.x1, ca06.y1, amber, s);
04083
04084
04085 mesg.user.u.datatag = 'navS';
04086 SendMessage (&mesg);
04087 float navStby = mesg.realData;
04088 int navStbyWhole, navStbyFract;
04089 ConvertFreq (navStby, &navStbyWhole, &navStbyFract);
04090 sprintf (s, "%3d.", navStbyWhole);
04091 DrawText (surf, digi9, ca07.x1, ca07.y1, amber, s);
04092 sprintf (s, "%02d", navStbyFract/10);
04093 DrawText (surf, digi9, ca08.x1, ca08.y1, amber, s);
04094 }
04095
04096 DrawOverlay ();
04097 }
04098
04099
04100
04101
04102
04103 CBKXPDRKT76Gauge::CBKXPDRKT76Gauge (void)
04104 {
04105 radi_tag = 0;
04106 radi_unit = 0;
04107
04108 nClickAreas = 16;
04109 caClicked = 0;
04110 }
04111
04112 int CBKXPDRKT76Gauge::Read (SStream *stream, Tag tag)
04113 {
04114 int rc = TAG_IGNORED;
04115
04116
04117 int ica = ClickAreaFromTag (tag);
04118 if ((ica >= 1) && (ica <= nClickAreas)) {
04119
04120 ReadFrom (&ca[ica], stream);
04121 rc = TAG_READ;
04122 }
04123
04124 switch (tag) {
04125 case 'radi':
04126 ReadTag (&radi_tag, stream);
04127 ReadInt (&radi_unit, stream);
04128 rc = TAG_READ;
04129 break;
04130 }
04131
04132 if (rc == TAG_IGNORED) {
04133 rc = CBitmapGauge::Read (stream, tag);
04134 }
04135
04136 if (rc == TAG_IGNORED) {
04137 char s[64];
04138 TagToString (s, tag);
04139 globals->logWarning->Write ("CBKXPDRKT76Gauge::Read : Unknown tag %s", s);
04140 }
04141
04142 return rc;
04143 }
04144
04145 void CBKXPDRKT76Gauge::ReadFinished (void)
04146 {
04147 CBitmapGauge::ReadFinished ();
04148
04149
04150 mesg.group = radi_tag;
04151 mesg.user.u.unit = radi_unit;
04152 }
04153
04154 ECursorResult CBKXPDRKT76Gauge::MouseMoved (int x, int y)
04155 {
04156 ECursorResult rc = CURSOR_NOT_CHANGED;
04157
04158
04159 for (int i=1; i<=nClickAreas && (rc == CURSOR_NOT_CHANGED); i++) {
04160 rc = ca[i].MouseMoved (x, y);
04161 }
04162
04163
04164 if (rc == CURSOR_NOT_CHANGED) {
04165 rc = CBitmapGauge::MouseMoved (x, y);
04166 }
04167
04168 return rc;
04169 }
04170
04171 EClickResult CBKXPDRKT76Gauge::MouseClick (int x, int y, int buttons)
04172 {
04173 EClickResult rc = MOUSE_TRACKING_OFF;
04174
04175
04176 if ((buttons & (MOUSE_BUTTON_LEFT | MOUSE_BUTTON_RIGHT)) == 0) {
04177 return rc;
04178 }
04179
04180
04181
04182 bool increment = (buttons & MOUSE_BUTTON_RIGHT) != 0;
04183
04184 caClicked = 0;
04185 for (int i=1; (i<=nClickAreas) && (caClicked==0); i++) {
04186 if (ca[i].IsHit(x, y)) {
04187 caClicked = i;
04188 rc = MOUSE_TRACKING_ON;
04189 break;
04190 }
04191 }
04192
04193 switch (caClicked) {
04194 case 1:
04195
04196 mesg.id = MSG_SETDATA;
04197 mesg.user.u.datatag = increment ? 'i11+' : 'i11-';
04198 SendMessage (&mesg);
04199 break;
04200 case 2:
04201
04202 mesg.id = MSG_SETDATA;
04203 mesg.user.u.datatag = increment ? 'i12+' : 'i12-';
04204 SendMessage (&mesg);
04205 break;
04206 case 3:
04207
04208 mesg.id = MSG_SETDATA;
04209 mesg.user.u.datatag = increment ? 'i13+' : 'i13-';
04210 SendMessage (&mesg);
04211 break;
04212 case 4:
04213
04214 mesg.id = MSG_SETDATA;
04215 mesg.user.u.datatag = increment ? 'i14+' : 'i14-';
04216 SendMessage (&mesg);
04217 break;
04218 }
04219
04220 return rc;
04221 }
04222
04223 EClickResult CBKXPDRKT76Gauge::StopClick (int x, int y, int buttons)
04224 {
04225 EClickResult rc = MOUSE_TRACKING_OFF;
04226
04227
04228 int caStop = 0;
04229 for (int i=1; (i<=nClickAreas) && (caStop==0); i++) {
04230 if (ca[i].IsHit(x, y)) caStop = i;
04231 }
04232
04233
04234 if (caStop == caClicked) {
04235 switch (caClicked) {
04236 case 5:
04237
04238 mesg.id = MSG_SETDATA;
04239 mesg.user.u.datatag = 'idt_';
04240 SendMessage (&mesg);
04241 break;
04242 case 6:
04243
04244 mesg.id = MSG_SETDATA;
04245 mesg.user.u.datatag = '___0';
04246 SendMessage (&mesg);
04247 break;
04248 case 7:
04249
04250 mesg.id = MSG_SETDATA;
04251 mesg.user.u.datatag = '___1';
04252 SendMessage (&mesg);
04253 break;
04254 case 8:
04255
04256 mesg.id = MSG_SETDATA;
04257 mesg.user.u.datatag = '___2';
04258 SendMessage (&mesg);
04259 break;
04260 case 9:
04261
04262 mesg.id = MSG_SETDATA;
04263 mesg.user.u.datatag = '___3';
04264 SendMessage (&mesg);
04265 break;
04266 case 10:
04267
04268 mesg.id = MSG_SETDATA;
04269 mesg.user.u.datatag = '___4';
04270 SendMessage (&mesg);
04271 break;
04272 case 11:
04273
04274 mesg.id = MSG_SETDATA;
04275 mesg.user.u.datatag = '___5';
04276 SendMessage (&mesg);
04277 break;
04278 case 12:
04279
04280 mesg.id = MSG_SETDATA;
04281 mesg.user.u.datatag = '___6';
04282 SendMessage (&mesg);
04283 break;
04284 case 13:
04285
04286 mesg.id = MSG_SETDATA;
04287 mesg.user.u.datatag = '___7';
04288 SendMessage (&mesg);
04289 break;
04290 case 14:
04291
04292 mesg.id = MSG_SETDATA;
04293 mesg.user.u.datatag = 'clr_';
04294 SendMessage (&mesg);
04295 break;
04296 case 15:
04297
04298 mesg.id = MSG_SETDATA;
04299 mesg.user.u.datatag = 'vfr_';
04300 SendMessage (&mesg);
04301 break;
04302 }
04303 }
04304
04305 caClicked = 0;
04306
04307 return rc;
04308 }
04309
04310 void CBKXPDRKT76Gauge::Draw (void)
04311 {
04312 ClearSurface ();
04313 DrawUnderlay ();
04314
04315
04316 mesg.id = MSG_GETDATA;
04317 mesg.user.u.datatag = 'actv';
04318 SendMessage (&mesg);
04319 bool active = (mesg.intData != 0);
04320 int frame = active ? 1 : 0;
04321
04322
04323
04324
04325
04326
04327 ca[5].Draw (surf, frame);
04328 ca[6].Draw (surf, frame);
04329 ca[7].Draw (surf, frame);
04330 ca[8].Draw (surf, frame);
04331 ca[9].Draw (surf, frame);
04332 ca[10].Draw (surf, frame);
04333 ca[11].Draw (surf, frame);
04334 ca[12].Draw (surf, frame);
04335 ca[13].Draw (surf, frame);
04336 ca[14].Draw (surf, frame);
04337 ca[15].Draw (surf, frame);
04338
04339
04340 mesg.user.u.datatag = 'smod';
04341 SendMessage (&mesg);
04342 ca[16].Draw (surf, mesg.intData);
04343
04344 if (active) {
04345
04346 SFont *fttiny7 = &globals->fonts.fttiny7;
04347 SFont *ftdigi9 = &globals->fonts.ftdigi9;
04348 unsigned int amber = MakeRGB (215, 90, 0);
04349 int x, y;
04350
04351
04352 bool fl = false;
04353 bool alt = false;
04354 bool on = false;
04355 bool reply = false;
04356 bool sby = false;
04357 char left[8];
04358 char right[8];
04359
04360
04361 mesg.user.u.datatag = 'tune';
04362 SendMessage (&mesg);
04363 char sCode[8];
04364 if (mesg.dataType == TYPE_INT) {
04365 sprintf (sCode, "%04d", mesg.intData);
04366 } else if (mesg.dataType == TYPE_CHARPTR) {
04367 strcpy (sCode, mesg.charPtrData);
04368 }
04369
04370
04371 mesg.user.u.datatag = 'mode';
04372 SendMessage (&mesg);
04373 ETransponderMode mode = (ETransponderMode)mesg.intData;
04374 switch (mode) {
04375 case XPDR_OFF:
04376 strcpy (left, "");
04377 strcpy (right, "");
04378 break;
04379
04380 case XPDR_STARTUPA1:
04381 strcpy (left, "AA1");
04382 strcpy (right, "1234");
04383 break;
04384
04385 case XPDR_STARTUPA2:
04386 strcpy (left, "AA2");
04387 strcpy (right, "5678");
04388 break;
04389
04390 case XPDR_STANDBY:
04391 strcpy (left, "");
04392 strcpy (right, sCode);
04393 break;
04394
04395 case XPDR_TEST:
04396 strcpy (left, "-888");
04397 strcpy (right, "8888");
04398 break;
04399
04400 case XPDR_ON:
04401 strcpy (left, "");
04402 strcpy (right, sCode);
04403 break;
04404
04405 case XPDR_ALT:
04406 mesg.user.u.datatag = 'alti';
04407 SendMessage (&mesg);
04408 sprintf (left, "%4d", mesg.intData);
04409 strcpy (right, sCode);
04410 break;
04411 }
04412
04413
04414 mesg.user.u.datatag = 'fl__';
04415 SendMessage (&mesg);
04416 fl = (mesg.intData != 0);
04417
04418
04419 mesg.user.u.datatag = 'alt_';
04420 SendMessage (&mesg);
04421 alt = (mesg.intData != 0);
04422
04423
04424 mesg.user.u.datatag = 'on__';
04425 SendMessage (&mesg);
04426 on = (mesg.intData != 0);
04427
04428
04429 mesg.user.u.datatag = 'rply';
04430 SendMessage (&mesg);
04431 reply = (mesg.intData != 0);
04432
04433
04434 mesg.user.u.datatag = 'sby_';
04435 SendMessage (&mesg);
04436 sby = (mesg.intData != 0);
04437
04438
04439
04440
04441
04444 if (fl) {
04445
04446 x = 40;
04447 y = 14;
04448 DrawText (surf, fttiny7, x, y, amber, "FL");
04449 }
04450
04451 if (alt) {
04452
04453 x = 80;
04454 y = 6;
04455 DrawText (surf, fttiny7, x, y, amber, "ALT");
04456 }
04457
04458 if (on) {
04459
04460 x = 80;
04461 y = 14;
04462 DrawText (surf, fttiny7, x, y, amber, "ON");
04463 }
04464
04465 if (reply) {
04466
04467 x = 100;
04468 y = 6;
04469 DrawText (surf, fttiny7, x, y, amber, "R");
04470 }
04471
04472 if (sby) {
04473
04474 x = 100;
04475 y = 14;
04476 DrawText (surf, fttiny7, x, y, amber, "SBY");
04477 }
04478
04479
04480 x = 50;
04481 y = 8;
04482 DrawText (surf, ftdigi9, x, y, amber, left);
04483
04484
04485 x = ca[1].x1;
04486 y = ca[1].y1;
04487 DrawText (surf, ftdigi9, x, y, amber, right);
04488 }
04489 }
04490
04491
04492
04493
04494
04495 CBKADFKR87Gauge::CBKADFKR87Gauge (void)
04496 {
04497 radi_tag = 0;
04498 radi_unit = 0;
04499
04500 nClickAreas = 15;
04501 caClicked = 0;
04502 }
04503
04504 int CBKADFKR87Gauge::Read (SStream *stream, Tag tag)
04505 {
04506 int rc = TAG_IGNORED;
04507
04508
04509 int ica = ClickAreaFromTag (tag);
04510 if ((ica >= 1) && (ica <= nClickAreas)) {
04511
04512 ReadFrom (&ca[ica], stream);
04513 rc = TAG_READ;
04514 }
04515
04516
04517 switch (tag) {
04518 case 'radi':
04519 ReadTag (&radi_tag, stream);
04520 ReadInt (&radi_unit, stream);
04521 rc = TAG_READ;
04522 break;
04523 }
04524
04525 if (rc == TAG_IGNORED) {
04526 rc = CBitmapGauge::Read (stream, tag);
04527 }
04528
04529 if (rc == TAG_IGNORED) {
04530 char s[64];
04531 TagToString (s, tag);
04532 globals->logWarning->Write ("CBKADFKR87Gauge::Read : Unknown tag %s", s);
04533 }
04534
04535 return rc;
04536 }
04537
04538 void CBKADFKR87Gauge::ReadFinished (void)
04539 {
04540 CBitmapGauge::ReadFinished ();
04541
04542
04543 mesg.group = radi_tag;
04544 mesg.user.u.unit = radi_unit;
04545 }
04546
04547 ECursorResult CBKADFKR87Gauge::MouseMoved (int x, int y)
04548 {
04549 ECursorResult rc = CURSOR_NOT_CHANGED;
04550
04551
04552 for (int i=1; i<=nClickAreas && (rc == CURSOR_NOT_CHANGED); i++) {
04553 rc = ca[i].MouseMoved (x, y);
04554 }
04555
04556
04557 if (rc == CURSOR_NOT_CHANGED) {
04558 rc = CBitmapGauge::MouseMoved (x, y);
04559 }
04560
04561 return rc;
04562 }
04563
04564 EClickResult CBKADFKR87Gauge::MouseClick (int x, int y, int buttons)
04565 {
04566 EClickResult rc = MOUSE_TRACKING_OFF;
04567
04568
04569 if ((buttons & (MOUSE_BUTTON_LEFT | MOUSE_BUTTON_RIGHT)) == 0) {
04570 return rc;
04571 }
04572
04573
04574
04575 bool increment = (buttons & MOUSE_BUTTON_RIGHT) != 0;
04576
04577 caClicked = 0;
04578 for (int i=1; (i<=nClickAreas) && (caClicked==0); i++) {
04579 if (ca[i].IsHit(x, y)) {
04580 caClicked = i;
04581 rc = MOUSE_TRACKING_ON;
04582 break;
04583 }
04584 }
04585
04586
04587 switch (caClicked) {
04588 case 1:
04589
04590 mesg.id = MSG_SETDATA;
04591 mesg.user.u.datatag = increment ? 'ad1+' : 'ad1-';
04592 SendMessage (&mesg);
04593 break;
04594 case 2:
04595
04596 mesg.id = MSG_SETDATA;
04597 mesg.user.u.datatag = increment ? 'ad2+' : 'ad2-';
04598 SendMessage (&mesg);
04599 break;
04600 case 3:
04601
04602 mesg.id = MSG_SETDATA;
04603 mesg.user.u.datatag = increment ? 'ad3+' : 'ad3-';
04604 SendMessage (&mesg);
04605 break;
04606 case 4:
04607
04608 mesg.id = MSG_SETDATA;
04609 mesg.user.u.datatag = increment ? 'ad4+' : 'ad4-';
04610 SendMessage (&mesg);
04611 break;
04612 case 5:
04613
04614 mesg.id = MSG_SETDATA;
04615 mesg.user.u.datatag = increment ? 'sd1+' : 'sd1-';
04616 SendMessage (&mesg);
04617 case 6:
04618
04619 mesg.id = MSG_SETDATA;
04620 mesg.user.u.datatag = increment ? 'sd2+' : 'sd2-';
04621 SendMessage (&mesg);
04622 break;
04623 case 7:
04624
04625 mesg.id = MSG_SETDATA;
04626 mesg.user.u.datatag = increment ? 'sd3+' : 'sd3-';
04627 SendMessage (&mesg);
04628 break;
04629 case 8:
04630
04631 mesg.id = MSG_SETDATA;
04632 mesg.user.u.datatag = increment ? 'sd4+' : 'sd4-';
04633 SendMessage (&mesg);
04634 }
04635
04636 return rc;
04637 }
04638
04639 EClickResult CBKADFKR87Gauge::StopClick (int x, int y, int buttons)
04640 {
04641 EClickResult rc = MOUSE_TRACKING_OFF;
04642
04643
04644 int caStop = 0;
04645 for (int i=1; (i<=nClickAreas) && (caStop==0); i++) {
04646 if (ca[i].IsHit(x, y)) caStop = i;
04647 }
04648
04649
04650 if (caStop == caClicked) {
04651 switch (caClicked) {
04652 case 11:
04653
04654 mesg.id = MSG_SETDATA;
04655 mesg.user.u.datatag = 'adf_';
04656 SendMessage (&mesg);
04657 break;
04658 case 12:
04659
04660 mesg.id = MSG_SETDATA;
04661 mesg.user.u.datatag = 'bfo_';
04662 SendMessage (&mesg);
04663 break;
04664 case 13:
04665
04666 mesg.id = MSG_SETDATA;
04667 mesg.user.u.datatag = 'freq';
04668 SendMessage (&mesg);
04669 break;
04670 case 14:
04671
04672 mesg.id = MSG_SETDATA;
04673 mesg.user.u.datatag = 'flt_';
04674 SendMessage (&mesg);
04675 break;
04676 case 15:
04677
04678 mesg.id = MSG_SETDATA;
04679 mesg.user.u.datatag = 'rset';
04680 SendMessage (&mesg);
04681 break;
04682 }
04683 }
04684
04685 caClicked = 0;
04686
04687 return rc;
04688 }
04689
04690 void CBKADFKR87Gauge::Draw (void)
04691 {
04692 ClearSurface ();
04693 DrawUnderlay ();
04694
04695
04696 mesg.id = MSG_GETDATA;
04697 mesg.user.u.datatag = 'actv';
04698 SendMessage (&mesg);
04699 bool active = (mesg.intData != 0);
04700 int frame = active ? 1 : 0;
04701
04702
04703
04704
04705
04706
04707
04708 ca[11].Draw (surf, frame);
04709 ca[12].Draw (surf, frame);
04710 ca[13].Draw (surf, frame);
04711 ca[14].Draw (surf, frame);
04712 ca[15].Draw (surf, frame);
04713
04714 if (active) {
04715
04716 SFont *fttiny7 = &globals->fonts.fttiny7;
04717 SFont *ftdigi9 = &globals->fonts.ftdigi9;
04718 unsigned int amber = MakeRGB (215, 90, 0);
04719 int x, y;
04720
04721
04722 mesg.id = MSG_GETDATA;
04723 mesg.user.u.datatag = 'iADF';
04724 SendMessage (&mesg);
04725 bool adf = (mesg.intData != 0);
04726
04727 mesg.user.u.datatag = 'iBFO';
04728 SendMessage (&mesg);
04729 bool bfo = (mesg.intData != 0);
04730
04731 mesg.user.u.datatag = 'iFRQ';
04732 SendMessage (&mesg);
04733 bool frq = (mesg.intData != 0);
04734
04735 mesg.user.u.datatag = 'iFLT';
04736 SendMessage (&mesg);
04737 bool flt = (mesg.intData != 0);
04738
04739 mesg.user.u.datatag = 'iET_';
04740 SendMessage (&mesg);
04741 bool et = (mesg.intData != 0);
04742
04743
04744 char sActive[8];
04745 char sStandby[8];
04746
04747
04748 mesg.id = MSG_GETDATA;
04749 mesg.user.u.datatag = 'tune';
04750 SendMessage (&mesg);
04751 int freqActive = (int)(floorf (mesg.realData + 0.5));
04752 sprintf (sActive, "%04d", freqActive);
04753
04754
04755 mesg.user.u.datatag = 'stby';
04756 SendMessage (&mesg);
04757 int freqStandby = (int)(floorf (mesg.realData + 0.5));
04758 sprintf (sStandby, "%04d", freqStandby);
04759
04760
04761 if (adf) {
04762
04763 x = ca[1].x1 / 2;
04764 y = ca[1].y2 + 3 - TextHeight (fttiny7, "ADF");
04765 DrawTextC (surf, fttiny7, x, y, amber, "ADF");
04766 } else {
04767
04768 x = ca[1].x1 / 2;
04769 y = ca[1].y1 - 3;
04770 DrawTextC (surf, fttiny7, x, y, amber, "ANT");
04771 }
04772
04773 if (bfo) {
04774
04775 x = ca[4].x2 + 5;
04776 y = ca[5].y1 - 3;
04777 DrawText (surf, fttiny7, x, y, amber, "BFO");
04778 }
04779
04780
04781 DrawChar (surf, ftdigi9, ca[1].x1, ca[1].y1, amber, sActive[0]);
04782
04783 DrawChar (surf, ftdigi9, ca[2].x1, ca[2].y1, amber, sActive[1]);
04784
04785 DrawChar (surf, ftdigi9, ca[3].x1, ca[3].y1, amber, sActive[2]);
04786
04787 DrawChar (surf, ftdigi9, ca[4].x1, ca[4].y1, amber, sActive[3]);
04788
04789
04790 if (frq) {
04791
04792 x = ca[5].x1 - 5;
04793 y = ca[5].y2 + 3 - TextHeight (fttiny7, "FRQ");
04794 DrawTextR (surf, fttiny7, x, y, amber, "FRQ");
04795
04796
04797 DrawChar (surf, ftdigi9, ca[5].x1, ca[5].y1, amber, sStandby[0]);
04798
04799 DrawChar (surf, ftdigi9, ca[6].x1, ca[6].y1, amber, sStandby[1]);
04800
04801 DrawChar (surf, ftdigi9, ca[7].x1, ca[7].y1, amber, sStandby[2]);
04802
04803 DrawChar (surf, ftdigi9, ca[8].x1, ca[8].y1, amber, sStandby[3]);
04804 } else if (flt) {
04805
04806 mesg.user.u.datatag = 'ftim';
04807 SendMessage (&mesg);
04808 int ftime = mesg.intData;
04809
04810
04811 x = ca[8].x2 + 15;
04812 y = ca[8].y1 - 3;
04813 DrawTextR (surf, fttiny7, x, y, amber, "FLT");
04814
04815
04816 char sTime[8];
04817 sprintf (sTime, "%02d:%02d", ftime / 60, ftime % 60);
04818 x = ca[5].x1;
04819 y = ca[5].y1;
04820 DrawText (surf, ftdigi9, x, y, amber, sTime);
04821 } else if (et) {
04822
04823 mesg.user.u.datatag = 'etim';
04824 SendMessage (&mesg);
04825 int etime = mesg.intData;
04826
04827
04828 x = ca[8].x2 + 15;
04829 y = ca[8].y2 + 3 - TextHeight (fttiny7, "ET");
04830 DrawTextR (surf, fttiny7, x, y, amber, "ET");
04831
04832
04833 char sTime[8];
04834 sprintf (sTime, "%02d:%02d", etime / 60, etime % 60);
04835 x = ca[5].x1;
04836 y = ca[5].y1;
04837 DrawText (surf, ftdigi9, x, y, amber, sTime);
04838 }
04839 }
04840 }
04841
04842
04843
04844
04845
04846 CBKGPSKLN89Gauge::CBKGPSKLN89Gauge (void)
04847 {
04848 radi = 0;
04849 }
04850
04851 int CBKGPSKLN89Gauge::Read (SStream *stream, Tag tag)
04852 {
04853 int rc = TAG_IGNORED;
04854
04855 switch (tag) {
04856 case 'radi':
04857 ReadTag (&radi, stream);
04858 rc = TAG_READ;
04859 break;
04860
04861 case 'ca01':
04862 ReadFrom (&ca01, stream);
04863 rc = TAG_READ;
04864 break;
04865
04866 case 'ca02':
04867 ReadFrom (&ca02, stream);
04868 rc = TAG_READ;
04869 break;
04870
04871 case 'ca03':
04872 ReadFrom (&ca03, stream);
04873 rc = TAG_READ;
04874 break;
04875
04876 case 'ca04':
04877 ReadFrom (&ca04, stream);
04878 rc = TAG_READ;
04879 break;
04880
04881 case 'ca05':
04882 ReadFrom (&ca05, stream);
04883 rc = TAG_READ;
04884 break;
04885
04886 case 'ca06':
04887 ReadFrom (&ca06, stream);
04888 rc = TAG_READ;
04889 break;
04890
04891 case 'ca07':
04892 ReadFrom (&ca07, stream);
04893 rc = TAG_READ;
04894 break;
04895
04896 case 'ca08':
04897 ReadFrom (&ca08, stream);
04898 rc = TAG_READ;
04899 break;
04900
04901 case 'ca09':
04902 ReadFrom (&ca09, stream);
04903 rc = TAG_READ;
04904 break;
04905
04906 case 'ca10':
04907 ReadFrom (&ca10, stream);
04908 rc = TAG_READ;
04909 break;
04910
04911 case 'ca11':
04912 ReadFrom (&ca11, stream);
04913 rc = TAG_READ;
04914 break;
04915
04916 case 'ca12':
04917 ReadFrom (&ca12, stream);
04918 rc = TAG_READ;
04919 break;
04920
04921 case 'ca13':
04922 ReadFrom (&ca13, stream);
04923 rc = TAG_READ;
04924 break;
04925
04926 case 'ca14':
04927 ReadFrom (&ca14, stream);
04928 rc = TAG_READ;
04929 break;
04930
04931 case 'ca15':
04932 ReadFrom (&ca15, stream);
04933 rc = TAG_READ;
04934 break;
04935
04936 case 'ca16':
04937 ReadFrom (&ca16, stream);
04938 rc = TAG_READ;
04939 break;
04940
04941 case 'ca17':
04942 ReadFrom (&ca17, stream);
04943 rc = TAG_READ;
04944 break;
04945
04946 case 'ca18':
04947 ReadFrom (&ca18, stream);
04948 rc = TAG_READ;
04949 break;
04950
04951 case 'ca19':
04952 ReadFrom (&ca19, stream);
04953 rc = TAG_READ;
04954 break;
04955
04956 case 'ca20':
04957 ReadFrom (&ca20, stream);
04958 rc = TAG_READ;
04959 break;
04960
04961 case 'ca21':
04962 ReadFrom (&ca21, stream);
04963 rc = TAG_READ;
04964 break;
04965
04966 case 'ca22':
04967 ReadFrom (&ca22, stream);
04968 rc = TAG_READ;
04969 break;
04970 }
04971
04972 if (rc == TAG_IGNORED) {
04973 rc = CBitmapGauge::Read (stream, tag);
04974 }
04975
04976 if (rc == TAG_IGNORED) {
04977 char s[64];
04978 TagToString (s, tag);
04979 globals->logWarning->Write ("CBKGPSKLN89Gauge::Read : Unknown tag %s", s);
04980 }
04981
04982 return rc;
04983 }
04984
04985
04986 ECursorResult CBKGPSKLN89Gauge::MouseMoved (int x, int y)
04987 {
04988 ECursorResult rc = CURSOR_NOT_CHANGED;
04989
04990
04991 rc = ca01.MouseMoved (x, y);
04992 if (rc == CURSOR_NOT_CHANGED) rc = ca02.MouseMoved (x, y);
04993 if (rc == CURSOR_NOT_CHANGED) rc = ca03.MouseMoved (x, y);
04994 if (rc == CURSOR_NOT_CHANGED) rc = ca04.MouseMoved (x, y);
04995 if (rc == CURSOR_NOT_CHANGED) rc = ca05.MouseMoved (x, y);
04996 if (rc == CURSOR_NOT_CHANGED) rc = ca06.MouseMoved (x, y);
04997 if (rc == CURSOR_NOT_CHANGED) rc = ca07.MouseMoved (x, y);
04998 if (rc == CURSOR_NOT_CHANGED) rc = ca08.MouseMoved (x, y);
04999 if (rc == CURSOR_NOT_CHANGED) rc = ca09.MouseMoved (x, y);
05000 if (rc == CURSOR_NOT_CHANGED) rc = ca10.MouseMoved (x, y);
05001 if (rc == CURSOR_NOT_CHANGED) rc = ca11.MouseMoved (x, y);
05002 if (rc == CURSOR_NOT_CHANGED) rc = ca12.MouseMoved (x, y);
05003 if (rc == CURSOR_NOT_CHANGED) rc = ca13.MouseMoved (x, y);
05004 if (rc == CURSOR_NOT_CHANGED) rc = ca14.MouseMoved (x, y);
05005 if (rc == CURSOR_NOT_CHANGED) rc = ca15.MouseMoved (x, y);
05006 if (rc == CURSOR_NOT_CHANGED) rc = ca16.MouseMoved (x, y);
05007 if (rc == CURSOR_NOT_CHANGED) rc = ca17.MouseMoved (x, y);
05008 if (rc == CURSOR_NOT_CHANGED) rc = ca18.MouseMoved (x, y);
05009 if (rc == CURSOR_NOT_CHANGED) rc = ca19.MouseMoved (x, y);
05010 if (rc == CURSOR_NOT_CHANGED) rc = ca20.MouseMoved (x, y);
05011 if (rc == CURSOR_NOT_CHANGED) rc = ca21.MouseMoved (x, y);
05012 if (rc == CURSOR_NOT_CHANGED) rc = ca22.MouseMoved (x, y);
05013
05014
05015 if (rc == CURSOR_NOT_CHANGED) {
05016 rc = CBitmapGauge::MouseMoved (x, y);
05017 }
05018
05019 return rc;
05020 }
05021
05022
05023
05024
05025
05026 CBKAP140Gauge::CBKAP140Gauge (void)
05027 {
05028 nClickAreas = 6;
05029 caClicked = 0;
05030 }
05031
05032 int CBKAP140Gauge::Read (SStream *stream, Tag tag)
05033 {
05034 int rc = TAG_IGNORED;
05035
05036
05037 int ica = ClickAreaFromTag (tag);
05038 if ((ica >= 1) && (ica <= nClickAreas)) {
05039
05040 ReadFrom (&ca[ica], stream);
05041 rc = TAG_READ;
05042 }
05043
05044 if (rc == TAG_IGNORED) {
05045 rc = CBitmapGauge::Read (stream, tag);
05046 }
05047
05048 if (rc == TAG_IGNORED) {
05049 char s[64];
05050 TagToString (s, tag);
05051 globals->logWarning->Write ("CBKAP140Gauge::Read : Unknown tag %s", s);
05052 }
05053
05054 return rc;
05055 }
05056
05057 ECursorResult CBKAP140Gauge::MouseMoved (int x, int y)
05058 {
05059 ECursorResult rc = CURSOR_NOT_CHANGED;
05060
05061
05062 for (int i=1; i<=nClickAreas && (rc == CURSOR_NOT_CHANGED); i++) {
05063 rc = ca[i].MouseMoved (x, y);
05064 }
05065
05066
05067 if (rc == CURSOR_NOT_CHANGED) {
05068 rc = CBitmapGauge::MouseMoved (x, y);
05069 }
05070
05071 return rc;
05072 }
05073
05074 void CBKAP140Gauge::Draw (void)
05075 {
05076 ClearSurface ();
05077 DrawUnderlay ();
05078
05079
05080 mesg.id = MSG_GETDATA;
05081 mesg.user.u.datatag = 'actv';
05082 SendMessage (&mesg);
05083 bool active = (mesg.intData != 0);
05084 int frame = active ? 1 : 0;
05085
05086
05087
05088
05089
05090
05091
05092 ca[1].Draw (surf, frame);
05093 ca[2].Draw (surf, frame);
05094 ca[3].Draw (surf, frame);
05095 ca[4].Draw (surf, frame);
05096 ca[5].Draw (surf, frame);
05097
05098 if (active) {
05099
05100 }
05101 }
05102
05103
05104
05105
05106
05107 CBKKFC200Gauge::CBKKFC200Gauge (void)
05108 {
05109 strcpy (fd.art, "");
05110 fd.x = fd.y = 0;
05111
05112 strcpy (alt.art, "");
05113 alt.x = alt.y = 0;
05114
05115 strcpy (hdg.art, "");
05116 hdg.x = hdg.y = 0;
05117
05118 strcpy (gs.art, "");
05119 gs.x = gs.y = 0;
05120
05121 strcpy (nav.art, "");
05122 nav.x = nav.y = 0;
05123
05124 strcpy (apr.art, "");
05125 apr.x = apr.y = 0;
05126
05127 strcpy (bc.art, "");
05128 bc.x = bc.y = 0;
05129
05130 strcpy (trim.art, "");
05131 trim.x = trim.y = 0;
05132
05133 strcpy (ap.art, "");
05134 ap.x = ap.y = 0;
05135 }
05136
05137 int CBKKFC200Gauge::Read (SStream *stream, Tag tag)
05138 {
05139 int rc = TAG_IGNORED;
05140
05141 switch (tag) {
05142 case 'ca01':
05143 ReadFrom (&ca01, stream);
05144 rc = TAG_READ;
05145 break;
05146
05147 case 'ca02':
05148 ReadFrom (&ca02, stream);
05149 rc = TAG_READ;
05150 break;
05151
05152 case 'ca03':
05153 ReadFrom (&ca03, stream);
05154 rc = TAG_READ;
05155 break;
05156
05157 case 'ca04':
05158 ReadFrom (&ca04, stream);
05159 rc = TAG_READ;
05160 break;
05161
05162 case 'ca05':
05163 ReadFrom (&ca05, stream);
05164 rc = TAG_READ;
05165 break;
05166
05167 case 'ca06':
05168 ReadFrom (&ca06, stream);
05169 rc = TAG_READ;
05170 break;
05171
05172 case 'ca07':
05173 ReadFrom (&ca07, stream);
05174 rc = TAG_READ;
05175 break;
05176
05177 case 'ca08':
05178 ReadFrom (&ca08, stream);
05179 rc = TAG_READ;
05180 break;
05181
05182 case 'ca09':
05183 ReadFrom (&ca09, stream);
05184 rc = TAG_READ;
05185 break;
05186
05187 case 'ca10':
05188 ReadFrom (&ca10, stream);
05189 rc = TAG_READ;
05190 break;
05191
05192 case 'ca11':
05193 ReadFrom (&ca11, stream);
05194 rc = TAG_READ;
05195 break;
05196
05197 case 'fd__':
05198 ReadString (fd.art, 64, stream);
05199 ReadInt (&fd.x, stream);
05200 ReadInt (&fd.y, stream);
05201 rc = TAG_READ;
05202 break;
05203
05204 case 'alt_':
05205 ReadString (alt.art, 64, stream);
05206 ReadInt (&alt.x, stream);
05207 ReadInt (&alt.y, stream);
05208 rc = TAG_READ;
05209 break;
05210
05211 case 'hdg_':
05212 ReadString (hdg.art, 64, stream);
05213 ReadInt (&hdg.x, stream);
05214 ReadInt (&hdg.y, stream);
05215 rc = TAG_READ;
05216 break;
05217
05218 case 'gs__':
05219 ReadString (gs.art, 64, stream);
05220 ReadInt (&gs.x, stream);
05221 ReadInt (&gs.y, stream);
05222 rc = TAG_READ;
05223 break;
05224
05225 case 'nav_':
05226 ReadString (nav.art, 64, stream);
05227 ReadInt (&nav.x, stream);
05228 ReadInt (&nav.y, stream);
05229 rc = TAG_READ;
05230 break;
05231
05232 case 'apr_':
05233 ReadString (apr.art, 64, stream);
05234 ReadInt (&apr.x, stream);
05235 ReadInt (&apr.y, stream);
05236 rc = TAG_READ;
05237 break;
05238
05239 case 'bc__':
05240 ReadString (bc.art, 64, stream);
05241 ReadInt (&bc.x, stream);
05242 ReadInt (&bc.y, stream);
05243 rc = TAG_READ;
05244 break;
05245
05246 case 'trim':
05247 ReadString (trim.art, 64, stream);
05248 ReadInt (&trim.x, stream);
05249 ReadInt (&trim.y, stream);
05250 rc = TAG_READ;
05251 break;
05252
05253 case 'ap__':
05254 ReadString (ap.art, 64, stream);
05255 ReadInt (&ap.x, stream);
05256 ReadInt (&ap.y, stream);
05257 rc = TAG_READ;
05258 break;
05259 }
05260
05261 if (rc == TAG_IGNORED) {
05262 rc = CBitmapGauge::Read (stream, tag);
05263 }
05264
05265 if (rc == TAG_IGNORED) {
05266 char s[64];
05267 TagToString (s, tag);
05268 globals->logWarning->Write ("CBKKFC200Gauge::Read : Unknown tag %s", s);
05269 }
05270
05271 return rc;
05272 }
05273
05274 ECursorResult CBKKFC200Gauge::MouseMoved (int x, int y)
05275 {
05276 ECursorResult rc = CURSOR_NOT_CHANGED;
05277
05278
05279 rc = ca01.MouseMoved (x, y);
05280 if (rc == CURSOR_NOT_CHANGED) rc = ca02.MouseMoved (x, y);
05281 if (rc == CURSOR_NOT_CHANGED) rc = ca03.MouseMoved (x, y);
05282 if (rc == CURSOR_NOT_CHANGED) rc = ca04.MouseMoved (x, y);
05283 if (rc == CURSOR_NOT_CHANGED) rc = ca05.MouseMoved (x, y);
05284 if (rc == CURSOR_NOT_CHANGED) rc = ca06.MouseMoved (x, y);
05285 if (rc == CURSOR_NOT_CHANGED) rc = ca07.MouseMoved (x, y);
05286 if (rc == CURSOR_NOT_CHANGED) rc = ca08.MouseMoved (x, y);
05287 if (rc == CURSOR_NOT_CHANGED) rc = ca09.MouseMoved (x, y);
05288 if (rc == CURSOR_NOT_CHANGED) rc = ca10.MouseMoved (x, y);
05289 if (rc == CURSOR_NOT_CHANGED) rc = ca11.MouseMoved (x, y);
05290
05291
05292 if (rc == CURSOR_NOT_CHANGED) {
05293 rc = CBitmapGauge::MouseMoved (x, y);
05294 }
05295
05296 return rc;
05297 }
05298
05299
05300
05301
05302
05303 CBKKFC150Gauge::CBKKFC150Gauge (void)
05304 {
05305 strcpy (fd.art, "");
05306 fd.x = fd.y = 0;
05307
05308 strcpy (alt.art, "");
05309 alt.x = alt.y = 0;
05310
05311 strcpy (hdg.art, "");
05312 hdg.x = hdg.y = 0;
05313
05314 strcpy (gs.art, "");
05315 gs.x = gs.y = 0;
05316
05317 strcpy (nav.art, "");
05318 nav.x = nav.y = 0;
05319
05320 strcpy (apr.art, "");
05321 apr.x = apr.y = 0;
05322
05323 strcpy (bc.art, "");
05324 bc.x = bc.y = 0;
05325
05326 strcpy (trim.art, "");
05327 trim.x = trim.y = 0;
05328
05329 strcpy (ap.art, "");
05330 ap.x = ap.y = 0;
05331 }
05332
05333 int CBKKFC150Gauge::Read (SStream *stream, Tag tag)
05334 {
05335 int rc = TAG_IGNORED;
05336
05337 switch (tag) {
05338 case 'ca01':
05339 ReadFrom (&ca01, stream);
05340 rc = TAG_READ;
05341 break;
05342
05343 case 'ca02':
05344 ReadFrom (&ca02, stream);
05345 rc = TAG_READ;
05346 break;
05347
05348 case 'ca03':
05349 ReadFrom (&ca03, stream);
05350 rc = TAG_READ;
05351 break;
05352
05353 case 'ca04':
05354 ReadFrom (&ca04, stream);
05355 rc = TAG_READ;
05356 break;
05357
05358 case 'ca05':
05359 ReadFrom (&ca05, stream);
05360 rc = TAG_READ;
05361 break;
05362
05363 case 'ca06':
05364 ReadFrom (&ca06, stream);
05365 rc = TAG_READ;
05366 break;
05367
05368 case 'ca07':
05369 ReadFrom (&ca07, stream);
05370 rc = TAG_READ;
05371 break;
05372
05373 case 'ca08':
05374 ReadFrom (&ca08, stream);
05375 rc = TAG_READ;
05376 break;
05377
05378 case 'ca09':
05379 ReadFrom (&ca09, stream);
05380 rc = TAG_READ;
05381 break;
05382
05383 case 'ca10':
05384 ReadFrom (&ca10, stream);
05385 rc = TAG_READ;
05386 break;
05387
05388 case 'ca11':
05389 ReadFrom (&ca11, stream);
05390 rc = TAG_READ;
05391 break;
05392
05393 case 'fd__':
05394 ReadString (fd.art, 64, stream);
05395 ReadInt (&fd.x, stream);
05396 ReadInt (&fd.y, stream);
05397 rc = TAG_READ;
05398 break;
05399
05400 case 'alt_':
05401 ReadString (alt.art, 64, stream);
05402 ReadInt (&alt.x, stream);
05403 ReadInt (&alt.y, stream);
05404 rc = TAG_READ;
05405 break;
05406
05407 case 'hdg_':
05408 ReadString (hdg.art, 64, stream);
05409 ReadInt (&hdg.x, stream);
05410 ReadInt (&hdg.y, stream);
05411 rc = TAG_READ;
05412 break;
05413
05414 case 'gs__':
05415 ReadString (gs.art, 64, stream);
05416 ReadInt (&gs.x, stream);
05417 ReadInt (&gs.y, stream);
05418 rc = TAG_READ;
05419 break;
05420
05421 case 'nav_':
05422 ReadString (nav.art, 64, stream);
05423 ReadInt (&nav.x, stream);
05424 ReadInt (&nav.y, stream);
05425 rc = TAG_READ;
05426 break;
05427
05428 case 'apr_':
05429 ReadString (apr.art, 64, stream);
05430 ReadInt (&apr.x, stream);
05431 ReadInt (&apr.y, stream);
05432 rc = TAG_READ;
05433 break;
05434
05435 case 'bc__':
05436 ReadString (bc.art, 64, stream);
05437 ReadInt (&bc.x, stream);
05438 ReadInt (&bc.y, stream);
05439 rc = TAG_READ;
05440 break;
05441
05442 case 'trim':
05443 ReadString (trim.art, 64, stream);
05444 ReadInt (&trim.x, stream);
05445 ReadInt (&trim.y, stream);
05446 rc = TAG_READ;
05447 break;
05448
05449 case 'ap__':
05450 ReadString (ap.art, 64, stream);
05451 ReadInt (&ap.x, stream);
05452 ReadInt (&ap.y, stream);
05453 rc = TAG_READ;
05454 break;
05455 }
05456
05457 if (rc == TAG_IGNORED) {
05458 rc = CBitmapGauge::Read (stream, tag);
05459 }
05460
05461 if (rc == TAG_IGNORED) {
05462 char s[64];
05463 TagToString (s, tag);
05464 globals->logWarning->Write ("CBKKFC150Gauge::Read : Unknown tag %s", s);
05465 }
05466
05467 return rc;
05468 }
05469
05470 ECursorResult CBKKFC150Gauge::MouseMoved (int x, int y)
05471 {
05472 ECursorResult rc = CURSOR_NOT_CHANGED;
05473
05474
05475 rc = ca01.MouseMoved (x, y);
05476 if (rc == CURSOR_NOT_CHANGED) rc = ca02.MouseMoved (x, y);
05477 if (rc == CURSOR_NOT_CHANGED) rc = ca03.MouseMoved (x, y);
05478 if (rc == CURSOR_NOT_CHANGED) rc = ca04.MouseMoved (x, y);
05479 if (rc == CURSOR_NOT_CHANGED) rc = ca05.MouseMoved (x, y);
05480 if (rc == CURSOR_NOT_CHANGED) rc = ca06.MouseMoved (x, y);
05481 if (rc == CURSOR_NOT_CHANGED) rc = ca07.MouseMoved (x, y);
05482 if (rc == CURSOR_NOT_CHANGED) rc = ca08.MouseMoved (x, y);
05483 if (rc == CURSOR_NOT_CHANGED) rc = ca09.MouseMoved (x, y);
05484 if (rc == CURSOR_NOT_CHANGED) rc = ca10.MouseMoved (x, y);
05485 if (rc == CURSOR_NOT_CHANGED) rc = ca11.MouseMoved (x, y);
05486
05487
05488 if (rc == CURSOR_NOT_CHANGED) {
05489 rc = CBitmapGauge::MouseMoved (x, y);
05490 }
05491
05492 return rc;
05493 }
05494
05495
05496
05497
05498
05499 CBKAudioKMA26Gauge::CBKAudioKMA26Gauge (void)
05500 {
05501 radi = 0;
05502 }
05503
05504 int CBKAudioKMA26Gauge::Read (SStream *stream, Tag tag)
05505 {
05506 int rc = TAG_IGNORED;
05507
05508 switch (tag) {
05509 case 'radi':
05510 ReadTag (&radi, stream);
05511 rc = TAG_READ;
05512 break;
05513
05514 case 'ca01':
05515 ReadFrom (&ca01, stream);
05516 rc = TAG_READ;
05517 break;
05518
05519 case 'ca02':
05520 ReadFrom (&ca02, stream);
05521 rc = TAG_READ;
05522 break;
05523
05524 case 'ca03':
05525 ReadFrom (&ca03, stream);
05526 rc = TAG_READ;
05527 break;
05528
05529 case 'ca04':
05530 ReadFrom (&ca04, stream);
05531 rc = TAG_READ;
05532 break;
05533
05534 case 'ca05':
05535 ReadFrom (&ca05, stream);
05536 rc = TAG_READ;
05537 break;
05538
05539 case 'ca06':
05540 ReadFrom (&ca06, stream);
05541 rc = TAG_READ;
05542 break;
05543
05544 case 'ca07':
05545 ReadFrom (&ca07, stream);
05546 rc = TAG_READ;
05547 break;
05548
05549 case 'ca08':
05550 ReadFrom (&ca08, stream);
05551 rc = TAG_READ;
05552 break;
05553
05554 case 'ca09':
05555 ReadFrom (&ca09, stream);
05556 rc = TAG_READ;
05557 break;
05558
05559 case 'ca10':
05560 ReadFrom (&ca10, stream);
05561 rc = TAG_READ;
05562 break;
05563
05564 case 'ca11':
05565 ReadFrom (&ca11, stream);
05566 rc = TAG_READ;
05567 break;
05568
05569 case 'ca12':
05570 ReadFrom (&ca12, stream);
05571 rc = TAG_READ;
05572 break;
05573
05574 case 'ca13':
05575 ReadFrom (&ca13, stream);
05576 rc = TAG_READ;
05577 break;
05578
05579 case 'ca14':
05580 ReadFrom (&ca14, stream);
05581 rc = TAG_READ;
05582 break;
05583
05584 case 'ca15':
05585 ReadFrom (&ca15, stream);
05586 rc = TAG_READ;
05587 break;
05588 }
05589
05590 if (rc == TAG_IGNORED) {
05591 rc = CBitmapGauge::Read (stream, tag);
05592 }
05593
05594 if (rc == TAG_IGNORED) {
05595 char s[64];
05596 TagToString (s, tag);
05597 globals->logWarning->Write ("CBKKMA26Gauge::Read : Unknown tag %s", s);
05598 }
05599
05600 return rc;
05601 }
05602
05603 ECursorResult CBKAudioKMA26Gauge::MouseMoved (int x, int y)
05604 {
05605 ECursorResult rc = CURSOR_NOT_CHANGED;
05606
05607
05608 rc = ca01.MouseMoved (x, y);
05609 if (rc == CURSOR_NOT_CHANGED) rc = ca02.MouseMoved (x, y);
05610 if (rc == CURSOR_NOT_CHANGED) rc = ca03.MouseMoved (x, y);
05611 if (rc == CURSOR_NOT_CHANGED) rc = ca04.MouseMoved (x, y);
05612 if (rc == CURSOR_NOT_CHANGED) rc = ca05.MouseMoved (x, y);
05613 if (rc == CURSOR_NOT_CHANGED) rc = ca06.MouseMoved (x, y);
05614 if (rc == CURSOR_NOT_CHANGED) rc = ca07.MouseMoved (x, y);
05615 if (rc == CURSOR_NOT_CHANGED) rc = ca08.MouseMoved (x, y);
05616 if (rc == CURSOR_NOT_CHANGED) rc = ca09.MouseMoved (x, y);
05617 if (rc == CURSOR_NOT_CHANGED) rc = ca10.MouseMoved (x, y);
05618 if (rc == CURSOR_NOT_CHANGED) rc = ca11.MouseMoved (x, y);
05619 if (rc == CURSOR_NOT_CHANGED) rc = ca12.MouseMoved (x, y);
05620 if (rc == CURSOR_NOT_CHANGED) rc = ca13.MouseMoved (x, y);
05621 if (rc == CURSOR_NOT_CHANGED) rc = ca14.MouseMoved (x, y);
05622 if (rc == CURSOR_NOT_CHANGED) rc = ca15.MouseMoved (x, y);
05623
05624
05625 if (rc == CURSOR_NOT_CHANGED) {
05626 rc = CBitmapGauge::MouseMoved (x, y);
05627 }
05628
05629 return rc;
05630 }
05631
05632
05633
05634
05635
05636 CGenericNavRadioGauge::CGenericNavRadioGauge (void)
05637 {
05638 radi_tag = 0;
05639 radi_unit = 0;
05640 sdim = false;
05641 }
05642
05643 int CGenericNavRadioGauge::Read (SStream *stream, Tag tag)
05644 {
05645 int rc = TAG_IGNORED;
05646
05647 switch (tag) {
05648 case 'radi':
05649 ReadTag (&radi_tag, stream);
05650 ReadInt (&radi_unit, stream);
05651 rc = TAG_READ;
05652 break;
05653
05654 case 'ca01':
05655 ReadFrom (&ca01, stream);
05656 rc = TAG_READ;
05657 break;
05658
05659 case 'ca02':
05660 ReadFrom (&ca02, stream);
05661 rc = TAG_READ;
05662 break;
05663
05664 case 'ca03':
05665 ReadFrom (&ca03, stream);
05666 rc = TAG_READ;
05667 break;
05668
05669 case 'ca04':
05670 ReadFrom (&ca04, stream);
05671 rc = TAG_READ;
05672 break;
05673
05674 case 'ca05':
05675 ReadFrom (&ca05, stream);
05676 rc = TAG_READ;
05677 break;
05678
05679 case 'ca06':
05680 ReadFrom (&ca06, stream);
05681 rc = TAG_READ;
05682 break;
05683
05684 case 'sdim':
05685 sdim = true;
05686 rc = TAG_READ;
05687 break;
05688 }
05689
05690 if (rc == TAG_IGNORED) {
05691 rc = CBitmapGauge::Read (stream, tag);
05692 }
05693
05694 if (rc == TAG_IGNORED) {
05695 char s[64];
05696 TagToString (s, tag);
05697 globals->logWarning->Write ("CGenericNavRadioGauge::Read : Unknown tag %s", s);
05698 }
05699
05700 return rc;
05701 }
05702
05703
05704 ECursorResult CGenericNavRadioGauge::MouseMoved (int x, int y)
05705 {
05706 ECursorResult rc = CURSOR_NOT_CHANGED;
05707
05708
05709 rc = ca01.MouseMoved (x, y);
05710 if (rc == CURSOR_NOT_CHANGED) rc = ca02.MouseMoved (x, y);
05711 if (rc == CURSOR_NOT_CHANGED) rc = ca03.MouseMoved (x, y);
05712 if (rc == CURSOR_NOT_CHANGED) rc = ca04.MouseMoved (x, y);
05713 if (rc == CURSOR_NOT_CHANGED) rc = ca05.MouseMoved (x, y);
05714 if (rc == CURSOR_NOT_CHANGED) rc = ca06.MouseMoved (x, y);
05715
05716
05717 if (rc == CURSOR_NOT_CHANGED) {
05718 rc = CBitmapGauge::MouseMoved (x, y);
05719 }
05720
05721 return rc;
05722 }
05723
05724
05725
05726
05727
05728 CGenericCommRadioGauge::CGenericCommRadioGauge (void)
05729 {
05730 radi_tag = 0;
05731 radi_unit = 0;
05732 sdim = false;
05733 }
05734
05735 int CGenericCommRadioGauge::Read (SStream *stream, Tag tag)
05736 {
05737 int rc = TAG_IGNORED;
05738
05739 switch (tag) {
05740 case 'radi':
05741 ReadTag (&radi_tag, stream);
05742 ReadInt (&radi_unit, stream);
05743 rc = TAG_READ;
05744 break;
05745
05746 case 'ca01':
05747 ReadFrom (&ca01, stream);
05748 rc = TAG_READ;
05749 break;
05750
05751 case 'ca02':
05752 ReadFrom (&ca02, stream);
05753 rc = TAG_READ;
05754 break;
05755
05756 case 'ca03':
05757 ReadFrom (&ca03, stream);
05758 rc = TAG_READ;
05759 break;
05760
05761 case 'ca04':
05762 ReadFrom (&ca04, stream);
05763 rc = TAG_READ;
05764 break;
05765
05766 case 'ca05':
05767 ReadFrom (&ca05, stream);
05768 rc = TAG_READ;
05769 break;
05770
05771 case 'ca06':
05772 ReadFrom (&ca06, stream);
05773 rc = TAG_READ;
05774 break;
05775
05776 case 'sdim':
05777 sdim = true;
05778 rc = TAG_READ;
05779 break;
05780 }
05781
05782 if (rc == TAG_IGNORED) {
05783 rc = CBitmapGauge::Read (stream, tag);
05784 }
05785
05786 if (rc == TAG_IGNORED) {
05787 char s[64];
05788 TagToString (s, tag);
05789 globals->logWarning->Write ("CGenericCommRadioGauge::Read : Unknown tag %s", s);
05790 }
05791
05792 return rc;
05793 }
05794
05795 ECursorResult CGenericCommRadioGauge::MouseMoved (int x, int y)
05796 {
05797 ECursorResult rc = CURSOR_NOT_CHANGED;
05798
05799
05800 rc = ca01.MouseMoved (x, y);
05801 if (rc == CURSOR_NOT_CHANGED) rc = ca02.MouseMoved (x, y);
05802 if (rc == CURSOR_NOT_CHANGED) rc = ca03.MouseMoved (x, y);
05803 if (rc == CURSOR_NOT_CHANGED) rc = ca04.MouseMoved (x, y);
05804 if (rc == CURSOR_NOT_CHANGED) rc = ca05.MouseMoved (x, y);
05805 if (rc == CURSOR_NOT_CHANGED) rc = ca06.MouseMoved (x, y);
05806
05807
05808 if (rc == CURSOR_NOT_CHANGED) {
05809 rc = CBitmapGauge::MouseMoved (x, y);
05810 }
05811
05812 return rc;
05813 }
05814
05815
05816
05817
05818
05819 CGenericTransponderGauge::CGenericTransponderGauge (void)
05820 {
05821 radi_tag = 0;
05822 radi_unit = 0;
05823 }
05824
05825 int CGenericTransponderGauge::Read (SStream *stream, Tag tag)
05826 {
05827 int rc = TAG_IGNORED;
05828
05829 switch (tag) {
05830 case 'radi':
05831 ReadTag (&radi_tag, stream);
05832 ReadInt (&radi_unit, stream);
05833 rc = TAG_READ;
05834 break;
05835
05836 case 'tune':
05837 ReadFrom (&tune, stream);
05838 rc = TAG_READ;
05839 break;
05840
05841 case 'mode':
05842 ReadFrom (&mode, stream);
05843 rc = TAG_READ;
05844 break;
05845
05846 case 'idnt':
05847 ReadFrom (&idnt, stream);
05848 rc = TAG_READ;
05849 break;
05850
05851 case 'test':
05852 ReadFrom (&test, stream);
05853 rc = TAG_READ;
05854 break;
05855
05856 case 'ida1':
05857 ReadFrom (&ida1, stream);
05858 rc = TAG_READ;
05859 break;
05860
05861 case 'ida2':
05862 ReadFrom (&ida2, stream);
05863 rc = TAG_READ;
05864 break;
05865
05866 case 'ida3':
05867 ReadFrom (&ida3, stream);
05868 rc = TAG_READ;
05869 break;
05870
05871 case 'ida4':
05872 ReadFrom (&ida4, stream);
05873 rc = TAG_READ;
05874 break;
05875
05876 case 'idb1':
05877 ReadFrom (&idb1, stream);
05878 rc = TAG_READ;
05879 break;
05880
05881 case 'idb2':
05882 ReadFrom (&idb2, stream);
05883 rc = TAG_READ;
05884 break;
05885
05886 case 'idb3':
05887 ReadFrom (&idb3, stream);
05888 rc = TAG_READ;
05889 break;
05890
05891 case 'idb4':
05892 ReadFrom (&idb4, stream);
05893 rc = TAG_READ;
05894 break;
05895 }
05896
05897 if (rc == TAG_IGNORED) {
05898 rc = CBitmapGauge::Read (stream, tag);
05899 }
05900
05901 if (rc == TAG_IGNORED) {
05902 char s[64];
05903 TagToString (s, tag);
05904 globals->logWarning->Write ("CGenericTransponderGauge::Read : Unknown tag %s", s);
05905 }
05906
05907 return rc;
05908 }
05909
05910
05911 ECursorResult CGenericTransponderGauge::MouseMoved (int x, int y)
05912 {
05913 ECursorResult rc = CURSOR_NOT_CHANGED;
05914
05915
05916 if (rc == CURSOR_NOT_CHANGED) rc = tune.MouseMoved (x, y);
05917 if (rc == CURSOR_NOT_CHANGED) rc = mode.MouseMoved (x, y);
05918 if (rc == CURSOR_NOT_CHANGED) rc = idnt.MouseMoved (x, y);
05919 if (rc == CURSOR_NOT_CHANGED) rc = test.MouseMoved (x, y);
05920 if (rc == CURSOR_NOT_CHANGED) rc = ida1.MouseMoved (x, y);
05921 if (rc == CURSOR_NOT_CHANGED) rc = ida2.MouseMoved (x, y);
05922 if (rc == CURSOR_NOT_CHANGED) rc = ida3.MouseMoved (x, y);
05923 if (rc == CURSOR_NOT_CHANGED) rc = ida4.MouseMoved (x, y);
05924 if (rc == CURSOR_NOT_CHANGED) rc = idb1.MouseMoved (x, y);
05925 if (rc == CURSOR_NOT_CHANGED) rc = idb2.MouseMoved (x, y);
05926 if (rc == CURSOR_NOT_CHANGED) rc = idb3.MouseMoved (x, y);
05927 if (rc == CURSOR_NOT_CHANGED) rc = idb4.MouseMoved (x, y);
05928
05929
05930 if (rc == CURSOR_NOT_CHANGED) {
05931 rc = CBitmapGauge::MouseMoved (x, y);
05932 }
05933
05934 return rc;
05935 }
05936
05937
05938
05939
05940
05941
05942 CGenericADFRadioGauge::CGenericADFRadioGauge (void)
05943 {
05944 radi_tag = 0;
05945 radi_unit = 0;
05946 sdim = false;
05947 }
05948
05949 int CGenericADFRadioGauge::Read (SStream *stream, Tag tag)
05950 {
05951 int rc = TAG_IGNORED;
05952
05953 switch (tag) {
05954 case 'radi':
05955 ReadTag (&radi_tag, stream);
05956 ReadInt (&radi_unit, stream);
05957 rc = TAG_READ;
05958 break;
05959
05960 case 'dga1':
05961 ReadFrom (&dga1, stream);
05962 rc = TAG_READ;
05963 break;
05964
05965 case 'dga2':
05966 ReadFrom (&dga2, stream);
05967 rc = TAG_READ;
05968 break;
05969
05970 case 'dga3':
05971 ReadFrom (&dga3, stream);
05972 rc = TAG_READ;
05973 break;
05974
05975 case 'dga4':
05976 ReadFrom (&dga4, stream);
05977 rc = TAG_READ;
05978 break;
05979
05980 case 'dga5':
05981 ReadFrom (&dga5, stream);
05982 rc = TAG_READ;
05983 break;
05984
05985 case 'dgb1':
05986 ReadFrom (&dgb1, stream);
05987 rc = TAG_READ;
05988 break;
05989
05990 case 'dgb2':
05991 ReadFrom (&dgb2, stream);
05992 rc = TAG_READ;
05993 break;
05994
05995 case 'dgb3':
05996 ReadFrom (&dgb3, stream);
05997 rc = TAG_READ;
05998 break;
05999
06000 case 'dgb4':
06001 ReadFrom (&dgb4, stream);
06002 rc = TAG_READ;
06003 break;
06004
06005 case 'dgb5':
06006 ReadFrom (&dgb5, stream);
06007 rc = TAG_READ;
06008 break;
06009
06010 case 'tune':
06011 ReadFrom (&tune, stream);
06012 rc = TAG_READ;
06013 break;
06014
06015 case 'mode':
06016 ReadFrom (&mode, stream);
06017 rc = TAG_READ;
06018 break;
06019
06020 case 'stor':
06021 ReadFrom (&stor, stream);
06022 rc = TAG_READ;
06023 break;
06024
06025 case 'test':
06026 ReadFrom (&test, stream);
06027 rc = TAG_READ;
06028 break;
06029
06030
06031 case 'sdim':
06032 sdim = true;
06033 rc = TAG_READ;
06034 break;
06035 }
06036
06037 if (rc == TAG_IGNORED) {
06038 rc = CBitmapGauge::Read (stream, tag);
06039 }
06040
06041 if (rc == TAG_IGNORED) {
06042 char s[64];
06043 TagToString (s, tag);
06044 globals->logWarning->Write ("CGenericADFRadioGauge::Read : Unknown tag %s", s);
06045 }
06046
06047 return rc;
06048 }
06049
06050 ECursorResult CGenericADFRadioGauge::MouseMoved (int x, int y)
06051 {
06052 ECursorResult rc = CURSOR_NOT_CHANGED;
06053
06054
06055 if (rc == CURSOR_NOT_CHANGED) rc = dga1.MouseMoved (x, y);
06056 if (rc == CURSOR_NOT_CHANGED) rc = dga2.MouseMoved (x, y);
06057 if (rc == CURSOR_NOT_CHANGED) rc = dga3.MouseMoved (x, y);
06058 if (rc == CURSOR_NOT_CHANGED) rc = dga4.MouseMoved (x, y);
06059 if (rc == CURSOR_NOT_CHANGED) rc = dga5.MouseMoved (x, y);
06060 if (rc == CURSOR_NOT_CHANGED) rc = dgb1.MouseMoved (x, y);
06061 if (rc == CURSOR_NOT_CHANGED) rc = dgb2.MouseMoved (x, y);
06062 if (rc == CURSOR_NOT_CHANGED) rc = dgb3.MouseMoved (x, y);
06063 if (rc == CURSOR_NOT_CHANGED) rc = dgb4.MouseMoved (x, y);
06064 if (rc == CURSOR_NOT_CHANGED) rc = dgb5.MouseMoved (x, y);
06065 if (rc == CURSOR_NOT_CHANGED) rc = tune.MouseMoved (x, y);
06066 if (rc == CURSOR_NOT_CHANGED) rc = mode.MouseMoved (x, y);
06067 if (rc == CURSOR_NOT_CHANGED) rc = stor.MouseMoved (x, y);
06068 if (rc == CURSOR_NOT_CHANGED) rc = test.MouseMoved (x, y);
06069
06070
06071 if (rc == CURSOR_NOT_CHANGED) {
06072 rc = CBitmapGauge::MouseMoved (x, y);
06073 }
06074
06075 return rc;
06076 }
06077
06078
06079
06080 CRMINeedleGauge::CRMINeedleGauge (void)
06081 {
06082 comp_tag = 0;
06083 cpxy_x = cpxy_y = 0;
06084 anxy_x = anxy_y = 0;
06085 rnxy_x = rnxy_y = 0;
06086 adf1 = adf2 = nav1 = nav2 = 0;
06087 adf1_unit = adf2_unit = nav1_unit = nav2_unit = 0;
06088 strcpy (adfa.art, "");
06089 adfa.x = adfa.y = 0;
06090 strcpy (vora.art, "");
06091 vora.x = vora.y = 0;
06092 }
06093
06094 int CRMINeedleGauge::Read (SStream *stream, Tag tag)
06095 {
06096 int rc = TAG_IGNORED;
06097
06098 switch (tag) {
06099 case 'comp':
06100 ReadTag (&comp_tag, stream);
06101 ReadFrom (&comp, stream);
06102 rc = TAG_READ;
06103 break;
06104
06105 case 'cpxy':
06106 ReadInt (&cpxy_x, stream);
06107 ReadInt (&cpxy_y, stream);
06108 rc = TAG_READ;
06109 break;
06110
06111 case 'adfn':
06112 ReadFrom (&adfn, stream);
06113 rc = TAG_READ;
06114 break;
06115
06116 case 'anxy':
06117 ReadInt (&anxy_x, stream);
06118 ReadInt (&anxy_y, stream);
06119 rc = TAG_READ;
06120 break;
06121
06122 case 'rmin':
06123 ReadFrom (&rmin, stream);
06124 rc = TAG_READ;
06125 break;
06126
06127 case 'rnxy':
06128 ReadInt (&rnxy_x, stream);
06129 ReadInt (&rnxy_y, stream);
06130 rc = TAG_READ;
06131 break;
06132
06133 case 'adf1':
06134 case 'adfr':
06135 ReadTag (&adf1, stream);
06136 ReadInt (&adf1_unit, stream);
06137 rc = TAG_READ;
06138 break;
06139
06140 case 'adf2':
06141 ReadTag (&adf2, stream);
06142 ReadInt (&adf2_unit, stream);
06143 rc = TAG_READ;
06144 break;
06145
06146 case 'nav1':
06147 ReadTag (&nav1, stream);
06148 ReadInt (&nav1_unit, stream);
06149 rc = TAG_READ;
06150 break;
06151
06152 case 'nav2':
06153 ReadTag (&nav2, stream);
06154 ReadInt (&nav2_unit, stream);
06155 rc = TAG_READ;
06156 break;
06157
06158 case 'adfa':
06159 ReadString (adfa.art, 64, stream);
06160 ReadInt (&adfa.x, stream);
06161 ReadInt (&adfa.y, stream);
06162 rc = TAG_READ;
06163 break;
06164
06165 case 'vora':
06166 ReadString (vora.art, 64, stream);
06167 ReadInt (&vora.x, stream);
06168 ReadInt (&vora.y, stream);
06169 rc = TAG_READ;
06170 break;
06171
06172 case 'lbtn':
06173 ReadFrom (&lbtn, stream);
06174 rc = TAG_READ;
06175 break;
06176
06177 case 'rbtn':
06178 ReadFrom (&rbtn, stream);
06179 rc = TAG_READ;
06180 break;
06181 }
06182
06183 if (rc == TAG_IGNORED) {
06184 rc = CBitmapGauge::Read (stream, tag);
06185 }
06186
06187 if (rc == TAG_IGNORED) {
06188 char s[64];
06189 TagToString (s, tag);
06190 globals->logWarning->Write ("CRMINeedleGauge::Read : Unknown tag %s", s);
06191 }
06192
06193 return rc;
06194 }
06195
06196 ECursorResult CRMINeedleGauge::MouseMoved (int x, int y)
06197 {
06198 ECursorResult rc = CURSOR_NOT_CHANGED;
06199
06200
06201 if (rc == CURSOR_NOT_CHANGED) rc = lbtn.MouseMoved (x, y);
06202 if (rc == CURSOR_NOT_CHANGED) rc = rbtn.MouseMoved (x, y);
06203
06204
06205 if (rc == CURSOR_NOT_CHANGED) {
06206 rc = CBitmapGauge::MouseMoved (x, y);
06207 }
06208
06209 return rc;
06210 }
06211
06212
06213
06214
06215
06216
06217 CNavGaugeGroup::CNavGaugeGroup (void)
06218 {
06219 nav1 = nav2 = 0;
06220 }
06221
06222 int CNavGaugeGroup::Read (SStream *stream, Tag tag)
06223 {
06224 int rc = TAG_IGNORED;
06225
06226 switch (tag) {
06227 case 'nav1':
06228 ReadTag (&nav1, stream);
06229 rc = TAG_READ;
06230 break;
06231
06232 case 'nav2':
06233 ReadTag (&nav2, stream);
06234 rc = TAG_READ;
06235 break;
06236 }
06237
06238 if (rc == TAG_IGNORED) {
06239 rc = CGauge::Read (stream, tag);
06240 }
06241
06242 if (rc == TAG_IGNORED) {
06243 char s[64];
06244 TagToString (s, tag);
06245 globals->logWarning->Write ("CNavGaugeGroup::Read : Unknown tag %s", s);
06246 }
06247
06248 return rc;
06249 }
06250
06251
06252
06253
06254
06255 CRadioGaugeGroup::CRadioGaugeGroup (void)
06256 {
06257 rad1_tag = rad2_tag = key_tag = 0;
06258 }
06259
06260 int CRadioGaugeGroup::Read (SStream *stream, Tag tag)
06261 {
06262 int rc = TAG_IGNORED;
06263
06264 switch (tag) {
06265 case 'rad1':
06266 ReadTag (&rad1_tag, stream);
06267 rc = TAG_READ;
06268 break;
06269
06270 case 'rad2':
06271 ReadTag (&rad2_tag, stream);
06272 rc = TAG_READ;
06273 break;
06274
06275 case 'key_':
06276 ReadTag (&key_tag, stream);
06277 rc = TAG_READ;
06278 break;
06279 }
06280
06281 if (rc == TAG_IGNORED) {
06282 rc = CGauge::Read (stream, tag);
06283 }
06284
06285 if (rc == TAG_IGNORED) {
06286 char s[64];
06287 TagToString (s, tag);
06288 globals->logWarning->Write ("CRadioGaugeGroup::Read : Unknown tag %s", s);
06289 }
06290
06291 return rc;
06292 }
06293
06294
06295
06296
06297
06298 CAnnunciator::CAnnunciator (void)
06299 {
06300 }
06301
06302 int CAnnunciator::Read (SStream *stream, Tag tag)
06303 {
06304 int rc = TAG_IGNORED;
06305
06306 if (rc == TAG_IGNORED) {
06307 rc = CBitmapGauge::Read (stream, tag);
06308 }
06309
06310 if (rc == TAG_IGNORED) {
06311 char s[64];
06312 TagToString (s, tag);
06313 globals->logWarning->Write ("CAnnunciator::Read : Unknown tag %s", s);
06314 }
06315
06316 return rc;
06317 }
06318
06319
06320
06321
06322
06323
06324 CFlyhawkAnnunciator::CFlyhawkAnnunciator (void)
06325 {
06326 strcpy (lowf_art, "");
06327 strcpy (lowl_art, "");
06328 strcpy (lowr_art, "");
06329 strcpy (oilp_art, "");
06330 strcpy (vacl_art, "");
06331 strcpy (vacr_art, "");
06332 strcpy (lowv_art, "");
06333 strcpy (volt_art, "");
06334 strcpy (line_art, "");
06335 }
06336
06337 int CFlyhawkAnnunciator::Read (SStream *stream, Tag tag)
06338 {
06339 int rc = TAG_IGNORED;
06340
06341 switch (tag) {
06342 case 'lowf':
06343 ReadString (lowf_art, 64, stream);
06344 rc = TAG_READ;
06345 break;
06346
06347 case 'lowl':
06348 ReadString (lowl_art, 64, stream);
06349 rc = TAG_READ;
06350 break;
06351
06352 case 'lowr':
06353 ReadString (lowr_art, 64, stream);
06354 rc = TAG_READ;
06355 break;
06356
06357 case 'oilp':
06358 ReadString (oilp_art, 64, stream);
06359 rc = TAG_READ;
06360 break;
06361
06362 case 'vacl':
06363 ReadString (vacl_art, 64, stream);
06364 rc = TAG_READ;
06365 break;
06366
06367 case 'vacr':
06368 ReadString (vacr_art, 64, stream);
06369 rc = TAG_READ;
06370 break;
06371
06372 case 'lowv':
06373 ReadString (lowv_art, 64, stream);
06374 rc = TAG_READ;
06375 break;
06376
06377 case 'volt':
06378 ReadString (volt_art, 64, stream);
06379 rc = TAG_READ;
06380 break;
06381
06382 case 'line':
06383 ReadString (line_art, 64, stream);
06384 rc = TAG_READ;
06385 break;
06386 }
06387
06388 if (rc == TAG_IGNORED) {
06389 rc = CGauge::Read (stream, tag);
06390 }
06391
06392 if (rc == TAG_IGNORED) {
06393 char s[64];
06394 TagToString (s, tag);
06395 globals->logWarning->Write ("CFlyhawkAnnunciator::Read : Unknown tag %s", s);
06396 }
06397
06398 return rc;
06399 }
06400
06401
06402
06403
06404
06405
06406 CFlyhawkAnnunciatorTest::CFlyhawkAnnunciatorTest (void)
06407 {
06408 strcpy (swit_art, "");
06409 strcpy (sfxu_wav, "");
06410 strcpy (sfxd_wav, "");
06411 strcpy (csru_csr, "");
06412 strcpy (csrd_csr, "");
06413 }
06414
06415 int CFlyhawkAnnunciatorTest::Read (SStream *stream, Tag tag)
06416 {
06417 int rc = TAG_IGNORED;
06418
06419 switch (tag) {
06420 case 'swit':
06421 ReadString (swit_art, 64, stream);
06422 rc = TAG_READ;
06423 break;
06424
06425 case 'sfxu':
06426 ReadString (sfxu_wav, 64, stream);
06427 rc = TAG_READ;
06428 break;
06429
06430 case 'sfxd':
06431 ReadString (sfxd_wav, 64, stream);
06432 rc = TAG_READ;
06433 break;
06434
06435 case 'csru':
06436 ReadString (csru_csr, 64, stream);
06437 rc = TAG_READ;
06438 break;
06439
06440 case 'csrd':
06441 ReadString (csrd_csr, 64, stream);
06442 rc = TAG_READ;
06443 break;
06444 }
06445
06446 if (rc == TAG_IGNORED) {
06447 rc = CGauge::Read (stream, tag);
06448 }
06449
06450 if (rc == TAG_IGNORED) {
06451 char s[64];
06452 TagToString (s, tag);
06453 globals->logWarning->Write ("CFlyhawkAnnunciatorTest::Read : Unknown tag %s", s);
06454 }
06455
06456 return rc;
06457 }
06458
06459
06460
06461
06462
06463
06464 CFlyhawkNavGpsPanelGauge::CFlyhawkNavGpsPanelGauge (void)
06465 {
06466 xnav_x = xnav_y = 0;
06467 xgps_x = xgps_y = 0;
06468 xapr_x = xapr_y = 0;
06469 xmsg_x = xmsg_y = 0;
06470 xwpt_x = xwpt_y = 0;
06471 }
06472
06473 int CFlyhawkNavGpsPanelGauge::Read (SStream *stream, Tag tag)
06474 {
06475 int rc = TAG_IGNORED;
06476
06477 switch (tag) {
06478 case 'cnav':
06479 ReadFrom (&cnav, stream);
06480 rc = TAG_READ;
06481 break;
06482
06483 case 'capr':
06484 ReadFrom (&capr, stream);
06485 rc = TAG_READ;
06486 break;
06487
06488 case 'xnav':
06489 ReadInt (&xnav_x, stream);
06490 ReadInt (&xnav_y, stream);
06491 rc = TAG_READ;
06492 break;
06493
06494 case 'xgps':
06495 ReadInt (&xgps_x, stream);
06496 ReadInt (&xgps_y, stream);
06497 rc = TAG_READ;
06498 break;
06499
06500 case 'xapr':
06501 ReadInt (&xapr_x, stream);
06502 ReadInt (&xapr_y, stream);
06503 rc = TAG_READ;
06504 break;
06505
06506 case 'xmsg':
06507 ReadInt (&xmsg_x, stream);
06508 ReadInt (&xmsg_y, stream);
06509 rc = TAG_READ;
06510 break;
06511
06512 case 'xwpt':
06513 ReadInt (&xwpt_x, stream);
06514 ReadInt (&xwpt_y, stream);
06515 rc = TAG_READ;
06516 break;
06517 }
06518
06519 if (rc == TAG_IGNORED) {
06520 rc = CBitmapGauge::Read (stream, tag);
06521 }
06522
06523 if (rc == TAG_IGNORED) {
06524 char s[64];
06525 TagToString (s, tag);
06526 globals->logWarning->Write ("CFlyhawkNavGpsPanelGauge::Read : Unknown tag %s", s);
06527 }
06528
06529 return rc;
06530 }
06531
06532 ECursorResult CFlyhawkNavGpsPanelGauge::MouseMoved (int x, int y)
06533 {
06534 ECursorResult rc = CURSOR_NOT_CHANGED;
06535
06536
06537 if (rc == CURSOR_NOT_CHANGED) rc = cnav.MouseMoved (x, y);
06538 if (rc == CURSOR_NOT_CHANGED) rc = capr.MouseMoved (x, y);
06539
06540
06541 if (rc == CURSOR_NOT_CHANGED) {
06542 rc = CBitmapGauge::MouseMoved (x, y);
06543 }
06544
06545 return rc;
06546 }
06547
06548
06549
06550
06551
06552
06553 CFlyhawkFuelSelectorGauge::CFlyhawkFuelSelectorGauge (void)
06554 {
06555 strcpy (swit_art, "");
06556 memset (&Lmsg, 0, sizeof(SMessage));
06557 memset (&Rmsg, 0, sizeof(SMessage));
06558 }
06559
06560 int CFlyhawkFuelSelectorGauge::Read (SStream *stream, Tag tag)
06561 {
06562 int rc = TAG_IGNORED;
06563
06564 switch (tag) {
06565 case 'swit':
06566 ReadString (swit_art, 64, stream);
06567 rc = TAG_READ;
06568 break;
06569
06570 case 'left':
06571 ReadFrom (&left, stream);
06572 rc = TAG_READ;
06573 break;
06574
06575 case 'both':
06576 ReadFrom (&both, stream);
06577 rc = TAG_READ;
06578 break;
06579
06580 case 'righ':
06581 ReadFrom (&righ, stream);
06582 rc = TAG_READ;
06583 break;
06584
06585 case 'Lmsg':
06586 ReadMessage (&Lmsg, stream);
06587 rc = TAG_READ;
06588 break;
06589
06590 case 'Rmsg':
06591 ReadMessage (&Rmsg, stream);
06592 rc = TAG_READ;
06593 break;
06594 }
06595
06596 if (rc == TAG_IGNORED) {
06597 rc = CBitmapGauge::Read (stream, tag);
06598 }
06599
06600 if (rc == TAG_IGNORED) {
06601 char s[64];
06602 TagToString (s, tag);
06603 globals->logWarning->Write ("CFlyhawkFuelSelectorGauge::Read : Unknown tag %s", s);
06604 }
06605
06606 return rc;
06607 }
06608
06609 ECursorResult CFlyhawkFuelSelectorGauge::MouseMoved (int x, int y)
06610 {
06611 ECursorResult rc = CURSOR_NOT_CHANGED;
06612
06613
06614 if (rc == CURSOR_NOT_CHANGED) rc = left.MouseMoved (x, y);
06615 if (rc == CURSOR_NOT_CHANGED) rc = righ.MouseMoved (x, y);
06616 if (rc == CURSOR_NOT_CHANGED) rc = both.MouseMoved (x, y);
06617
06618
06619 if (rc == CURSOR_NOT_CHANGED) {
06620 rc = CBitmapGauge::MouseMoved (x, y);
06621 }
06622
06623 return rc;
06624 }
06625
06626
06627
06628
06629
06630
06631 CFlyhawkElevatorTrimGauge::CFlyhawkElevatorTrimGauge (void)
06632 {
06633 strcpy (trmw.art, "");
06634 trmw.x = trmw.y = 0;
06635 strcpy (trmi.art, "");
06636 trmi.x = trmi.y = 0;
06637 }
06638
06639 int CFlyhawkElevatorTrimGauge::Read (SStream *stream, Tag tag)
06640 {
06641 int rc = TAG_IGNORED;
06642
06643 switch (tag) {
06644 case 'trmw':
06645 ReadString (trmw.art, 64, stream);
06646 ReadInt (&trmw.x, stream);
06647 ReadInt (&trmw.y, stream);
06648 rc = TAG_READ;
06649 break;
06650
06651 case 'trmi':
06652 ReadString (trmi.art, 64, stream);
06653 ReadInt (&trmi.x, stream);
06654 ReadInt (&trmi.y, stream);
06655 rc = TAG_READ;
06656 break;
06657
06658 case 'down':
06659 ReadFrom (&down, stream);
06660 rc = TAG_READ;
06661 break;
06662
06663 case 'up ':
06664 ReadFrom (&up, stream);
06665 rc = TAG_READ;
06666 break;
06667 }
06668
06669 if (rc == TAG_IGNORED) {
06670 rc = CBitmapGauge::Read (stream, tag);
06671 }
06672
06673 if (rc == TAG_IGNORED) {
06674 char s[64];
06675 TagToString (s, tag);
06676 globals->logWarning->Write ("CFlyhawkElevatorTrimGauge::Read : Unknown tag %s", s);
06677 }
06678
06679 return rc;
06680 }
06681
06682 ECursorResult CFlyhawkElevatorTrimGauge::MouseMoved (int x, int y)
06683 {
06684 ECursorResult rc = CURSOR_NOT_CHANGED;
06685
06686
06687 if (rc == CURSOR_NOT_CHANGED) rc = down.MouseMoved (x, y);
06688 if (rc == CURSOR_NOT_CHANGED) rc = up.MouseMoved (x, y);
06689
06690
06691 if (rc == CURSOR_NOT_CHANGED) {
06692 rc = CBitmapGauge::MouseMoved (x, y);
06693 }
06694
06695 return rc;
06696 }
06697
06698
06699
06700
06701
06702 CMalybooCHTIndicatorGauge::CMalybooCHTIndicatorGauge (void)
06703 {
06704 for (int i=0; i<6; i++) xoff[i] = 0;
06705 yoff = 0;
06706 }
06707
06708 int CMalybooCHTIndicatorGauge::Read (SStream *stream, Tag tag)
06709 {
06710 int rc = TAG_IGNORED;
06711
06712 switch (tag) {
06713 case 'xoff':
06714 ReadInt (&xoff[0], stream);
06715 ReadInt (&xoff[1], stream);
06716 ReadInt (&xoff[2], stream);
06717 ReadInt (&xoff[3], stream);
06718 ReadInt (&xoff[4], stream);
06719 ReadInt (&xoff[5], stream);
06720 rc = TAG_READ;
06721 break;
06722
06723 case 'yoff':
06724 ReadInt (&yoff, stream);
06725 rc = TAG_READ;
06726 break;
06727 }
06728
06729 if (rc == TAG_IGNORED) {
06730 rc = CBitmapGauge::Read (stream, tag);
06731 }
06732
06733 if (rc == TAG_IGNORED) {
06734 char s[64];
06735 TagToString (s, tag);
06736 globals->logWarning->Write ("CMalybooCHTIndicatorGauge::Read : Unknown tag %s", s);
06737 }
06738
06739 return rc;
06740 }
06741
06742
06743
06744
06745
06746 CMalybooCHTButtonGauge::CMalybooCHTButtonGauge (void)
06747 {
06748 }
06749
06750 int CMalybooCHTButtonGauge::Read (SStream *stream, Tag tag)
06751 {
06752 int rc = TAG_IGNORED;
06753
06754 if (rc == TAG_IGNORED) {
06755 rc = CBitmapGauge::Read (stream, tag);
06756 }
06757
06758 if (rc == TAG_IGNORED) {
06759 char s[64];
06760 TagToString (s, tag);
06761 globals->logWarning->Write ("CMalybooCHTButtonGauge::Read : Unknown tag %s", s);
06762 }
06763
06764 return rc;
06765 }
06766
06767
06768
06769
06770
06771
06772 CMalybooNavGpsPanelGauge::CMalybooNavGpsPanelGauge (void)
06773 {
06774 xnav_x = xnav_y = 0;
06775 xgps_x = xgps_y = 0;
06776 xapr_x = xapr_y = 0;
06777 xarm_x = xarm_y = 0;
06778 xact_x = xact_y = 0;
06779 xcrs_x = xcrs_y = 0;
06780 xobs_x = xobs_y = 0;
06781 xleg_x = xleg_y = 0;
06782 xmsg_x = xmsg_y = 0;
06783 xwpt_x = xwpt_y = 0;
06784 xyaw_x = xyaw_y = 0;
06785 }
06786
06787 int CMalybooNavGpsPanelGauge::Read (SStream *stream, Tag tag)
06788 {
06789 int rc = TAG_IGNORED;
06790
06791 switch (tag) {
06792 case 'cnav':
06793 ReadFrom (&cnav, stream);
06794 rc = TAG_READ;
06795 break;
06796
06797 case 'xnav':
06798 ReadInt (&xnav_x, stream);
06799 ReadInt (&xnav_y, stream);
06800 rc = TAG_READ;
06801 break;
06802
06803 case 'xgps':
06804 ReadInt (&xgps_x, stream);
06805 ReadInt (&xgps_y, stream);
06806 rc = TAG_READ;
06807 break;
06808
06809 case 'capr':
06810 ReadFrom (&cnav, stream);
06811 rc = TAG_READ;
06812 break;
06813
06814 case 'xapr':
06815 ReadInt (&xapr_x, stream);
06816 ReadInt (&xapr_y, stream);
06817 rc = TAG_READ;
06818 break;
06819
06820 case 'xarm':
06821 ReadInt (&xarm_x, stream);
06822 ReadInt (&xarm_y, stream);
06823 rc = TAG_READ;
06824 break;
06825
06826 case 'xact':
06827 ReadInt (&xact_x, stream);
06828 ReadInt (&xact_y, stream);
06829 rc = TAG_READ;
06830 break;
06831
06832 case 'ccrs':
06833 ReadFrom (&cnav, stream);
06834 rc = TAG_READ;
06835 break;
06836
06837 case 'xcrs':
06838 ReadInt (&xcrs_x, stream);
06839 ReadInt (&xcrs_y, stream);
06840 rc = TAG_READ;
06841 break;
06842
06843 case 'xobs':
06844 ReadInt (&xobs_x, stream);
06845 ReadInt (&xobs_y, stream);
06846 rc = TAG_READ;
06847 break;
06848
06849 case 'xleg':
06850 ReadInt (&xleg_x, stream);
06851 ReadInt (&xleg_y, stream);
06852 rc = TAG_READ;
06853 break;
06854
06855 case 'cmsg':
06856 ReadFrom (&cnav, stream);
06857 rc = TAG_READ;
06858 break;
06859
06860 case 'xmsg':
06861 ReadInt (&xmsg_x, stream);
06862 ReadInt (&xmsg_y, stream);
06863 rc = TAG_READ;
06864 break;
06865
06866 case 'xwpt':
06867 ReadInt (&xwpt_x, stream);
06868 ReadInt (&xwpt_y, stream);
06869 rc = TAG_READ;
06870 break;
06871
06872 case 'cyaw':
06873 ReadFrom (&cnav, stream);
06874 rc = TAG_READ;
06875 break;
06876
06877 case 'xyaw':
06878 ReadInt (&xyaw_x, stream);
06879 ReadInt (&xyaw_y, stream);
06880 rc = TAG_READ;
06881 break;
06882 }
06883
06884 if (rc == TAG_IGNORED) {
06885 rc = CBitmapGauge::Read (stream, tag);
06886 }
06887
06888 if (rc == TAG_IGNORED) {
06889 char s[64];
06890 TagToString (s, tag);
06891 globals->logWarning->Write ("CMalybooNavGpsPanelGauge::Read : Unknown tag %s", s);
06892 }
06893
06894 return rc;
06895 }
06896
06897
06898
06899
06900
06901
06902
06903 CMalybooDigitalClockGauge::CMalybooDigitalClockGauge (void)
06904 {
06905 clkd_x1 = clkd_y1 = clkd_x2 = clkd_y2 = 0;
06906 }
06907
06908 int CMalybooDigitalClockGauge::Read (SStream *stream, Tag tag)
06909 {
06910 int rc = TAG_IGNORED;
06911
06912 switch (tag) {
06913 case 'clkd':
06914 ReadInt (&clkd_x1, stream);
06915 ReadInt (&clkd_y1, stream);
06916 ReadInt (&clkd_x2, stream);
06917 ReadInt (&clkd_y2, stream);
06918 rc = TAG_READ;
06919 break;
06920
06921 case 'mode':
06922 ReadFrom (&mode, stream);
06923 rc = TAG_READ;
06924 break;
06925
06926 case 'powr':
06927 ReadFrom (&powr, stream);
06928 rc = TAG_READ;
06929 break;
06930
06931 case 'play':
06932 ReadFrom (&play, stream);
06933 rc = TAG_READ;
06934 break;
06935
06936 case 'rec_':
06937 ReadFrom (&rec, stream);
06938 rc = TAG_READ;
06939 break;
06940
06941 case 'set_':
06942 ReadFrom (&set, stream);
06943 rc = TAG_READ;
06944 break;
06945 }
06946
06947 if (rc == TAG_IGNORED) {
06948 rc = CBitmapGauge::Read (stream, tag);
06949 }
06950
06951 if (rc == TAG_IGNORED) {
06952 char s[64];
06953 TagToString (s, tag);
06954 globals->logWarning->Write ("CMalybooDigitalClockGauge::Read : Unknown tag %s", s);
06955 }
06956
06957 return rc;
06958 }
06959
06960
06961
06962
06963
06964 CMalybooEngineMonitorGauge::CMalybooEngineMonitorGauge (void)
06965 {
06966 strcpy (rlit_art, "");
06967 strcpy (glit_art, "");
06968 strcpy (ylit_art, "");
06969 }
06970
06971 int CMalybooEngineMonitorGauge::Read (SStream *stream, Tag tag)
06972 {
06973 int rc = TAG_IGNORED;
06974
06975 switch (tag) {
06976 case 'fuel':
06977 ReadFrom (&fuel, stream);
06978 rc = TAG_READ;
06979 break;
06980
06981 case 'inst':
06982 ReadFrom (&inst, stream);
06983 rc = TAG_READ;
06984 break;
06985
06986 case 'blk_':
06987 ReadFrom (&blk_, stream);
06988 rc = TAG_READ;
06989 break;
06990
06991 case 'fill':
06992 ReadFrom (&fill, stream);
06993 rc = TAG_READ;
06994 break;
06995
06996 case 'pwr_':
06997 ReadFrom (&pwr_, stream);
06998 rc = TAG_READ;
06999 break;
07000
07001 case 'set_':
07002 ReadFrom (&set_, stream);
07003 rc = TAG_READ;
07004 break;
07005
07006 case 'MAP_':
07007 ReadFrom (&MAP_, stream);
07008 rc = TAG_READ;
07009 break;
07010
07011 case 'RPM_':
07012 ReadFrom (&RPM_, stream);
07013 rc = TAG_READ;
07014 break;
07015
07016 case 'TIT_':
07017 ReadFrom (&TIT, stream);
07018 rc = TAG_READ;
07019 break;
07020
07021 case 'FF__':
07022 ReadFrom (&FF__, stream);
07023 rc = TAG_READ;
07024 break;
07025
07026 case 'OT__':
07027 ReadFrom (&OT__, stream);
07028 rc = TAG_READ;
07029 break;
07030
07031 case 'OP__':
07032 ReadFrom (&OP__, stream);
07033 rc = TAG_READ;
07034 break;
07035
07036 case 'CHT_':
07037 ReadFrom (&CHT_, stream);
07038 rc = TAG_READ;
07039 break;
07040
07041 case 'VAC_':
07042 ReadFrom (&VAC_, stream);
07043 rc = TAG_READ;
07044 break;
07045
07046 case 'LQTY':
07047 ReadFrom (&LQTY, stream);
07048 rc = TAG_READ;
07049 break;
07050
07051 case 'RQTY':
07052 ReadFrom (&RQTY, stream);
07053 rc = TAG_READ;
07054 break;
07055
07056 case 'rlit':
07057 ReadString (rlit_art, 64, stream);
07058
07059
07060 rc = TAG_READ;
07061 break;
07062
07063 case 'glit':
07064 ReadString (glit_art, 64, stream);
07065
07066
07067 rc = TAG_READ;
07068 break;
07069
07070 case 'ylit':
07071 ReadString (ylit_art, 64, stream);
07072
07073
07074 rc = TAG_READ;
07075 break;
07076 }
07077
07078 if (rc == TAG_IGNORED) {
07079 rc = CBitmapGauge::Read (stream, tag);
07080 }
07081
07082 if (rc == TAG_IGNORED) {
07083 char s[64];
07084 TagToString (s, tag);
07085 globals->logWarning->Write ("CMalybooEngineMonitorGauge::Read : Unknown tag %s", s);
07086 }
07087
07088 return rc;
07089 }
07090
07091
07092
07093
07094
07095 CNavajoFuelSelectorGauge::CNavajoFuelSelectorGauge (void)
07096 {
07097 strcpy (swit, "");
07098 memset (&obms, 0, sizeof(SMessage));
07099 memset (&ibms, 0, sizeof(SMessage));
07100 }
07101
07102 int CNavajoFuelSelectorGauge::Read (SStream *stream, Tag tag)
07103 {
07104 int rc = TAG_IGNORED;
07105
07106 switch (tag) {
07107 case 'swit':
07108 ReadString (swit, 64, stream);
07109 rc = TAG_READ;
07110 break;
07111
07112 case 'obca':
07113 ReadFrom (&obca, stream);
07114 rc = TAG_READ;
07115 break;
07116
07117 case 'ofca':
07118 ReadFrom (&ofca, stream);
07119 rc = TAG_READ;
07120 break;
07121
07122 case 'ibca':
07123 ReadFrom (&obca, stream);
07124 rc = TAG_READ;
07125 break;
07126
07127 case 'obms':
07128 ReadMessage (&obms, stream);
07129 rc = TAG_READ;
07130 break;
07131
07132 case 'ibms':
07133 ReadMessage (&ibms, stream);
07134 rc = TAG_READ;
07135 break;
07136 }
07137
07138 if (rc == TAG_IGNORED) {
07139 rc = CBitmapGauge::Read (stream, tag);
07140 }
07141
07142 if (rc == TAG_IGNORED) {
07143 char s[64];
07144 TagToString (s, tag);
07145 globals->logWarning->Write ("CNavajoFuelSelectorGauge::Read : Unknown tag %s", s);
07146 }
07147
07148 return rc;
07149 }
07150
07151
07152
07153
07154
07155 CNavajoAmmeterGauge::CNavajoAmmeterGauge (void)
07156 {
07157 memset (&mChg, 0, sizeof(SMessage));
07158 memset (&mLtM, 0, sizeof(SMessage));
07159 memset (&mRtM, 0, sizeof(SMessage));
07160 memset (&mLtS, 0, sizeof(SMessage));
07161 memset (&mRtS, 0, sizeof(SMessage));
07162 }
07163
07164 int CNavajoAmmeterGauge::Read (SStream *stream, Tag tag)
07165 {
07166 int rc = TAG_IGNORED;
07167
07168 switch (tag) {
07169 case 'nedl':
07170 ReadFrom (&nedl, stream);
07171 rc = TAG_READ;
07172 break;
07173
07174 case 'mChg':
07175 ReadMessage (&mChg, stream);
07176 rc = TAG_READ;
07177 break;
07178
07179 case 'mLtM':
07180 ReadMessage (&mLtM, stream);
07181 rc = TAG_READ;
07182 break;
07183
07184 case 'mRtM':
07185 ReadMessage (&mRtM, stream);
07186 rc = TAG_READ;
07187 break;
07188
07189 case 'mLtS':
07190 ReadMessage (&mLtS, stream);
07191 rc = TAG_READ;
07192 break;
07193
07194 case 'mRtS':
07195 ReadMessage (&mRtS, stream);
07196 rc = TAG_READ;
07197 break;
07198
07199 case 'ca01':
07200 ReadFrom (&ca01, stream);
07201 rc = TAG_READ;
07202 break;
07203
07204 case 'ca02':
07205 ReadFrom (&ca02, stream);
07206 rc = TAG_READ;
07207 break;
07208 }
07209
07210 if (rc == TAG_IGNORED) {
07211 rc = CNeedleGauge::Read (stream, tag);
07212 }
07213
07214 if (rc == TAG_IGNORED) {
07215 char s[64];
07216 TagToString (s, tag);
07217 globals->logWarning->Write ("CNavajoAmmeterGauge::Read : Unknown tag %s", s);
07218 }
07219
07220 return rc;
07221 }
07222
07223
07224
07225
07226
07227 CNavajoRadarAltimeterGauge::CNavajoRadarAltimeterGauge (void)
07228 {
07229 memset (&bMsg, 0, sizeof(SMessage));
07230 strcpy (bug.art, "");
07231 bug.x = bug.y = 0;
07232 strcpy (plit.art, "");
07233 plit.x = plit.y = 0;
07234 memset (&dhms, 0, sizeof(SMessage));
07235 }
07236
07237 int CNavajoRadarAltimeterGauge::Read (SStream *stream, Tag tag)
07238 {
07239 int rc = TAG_IGNORED;
07240
07241 switch (tag) {
07242 case 'bMsg':
07243 ReadMessage (&bMsg, stream);
07244 rc = TAG_READ;
07245 break;
07246
07247 case 'dhbt':
07248 SkipObject (stream);
07249
07250 rc = TAG_READ;
07251 break;
07252
07253 case 'bug ':
07254 ReadString (bug.art, 64, stream);
07255 ReadInt (&bug.x, stream);
07256 ReadInt (&bug.y, stream);
07257 rc = TAG_READ;
07258 break;
07259
07260 case 'plit':
07261 ReadString (plit.art, 64, stream);
07262 ReadInt (&plit.x, stream);
07263 ReadInt (&plit.y, stream);
07264 rc = TAG_READ;
07265 break;
07266
07267 case 'dhms':
07268 ReadMessage (&dhms, stream);
07269 rc = TAG_READ;
07270 break;
07271
07272 case 'knob':
07273 ReadFrom (&knob, stream);
07274 rc = TAG_READ;
07275 break;
07276 }
07277
07278 if (rc == TAG_IGNORED) {
07279 rc = CNeedleGauge::Read (stream, tag);
07280 }
07281
07282 if (rc == TAG_IGNORED) {
07283 char s[64];
07284 TagToString (s, tag);
07285 globals->logWarning->Write ("CNavajoRadarAltimeterGauge::Read : Unknown tag %s", s);
07286 }
07287
07288 return rc;
07289 }
07290
07291
07292
07293
07294
07295 CCollinsEFISSelectionGauge::CCollinsEFISSelectionGauge (void)
07296 {
07297 memset (&pfdm, 0, sizeof(SMessage));
07298 memset (&ehim, 0, sizeof(SMessage));
07299 memset (&mndm, 0, sizeof(SMessage));
07300 memset (&adm_, 0, sizeof(SMessage));
07301 memset (&aplt, 0, sizeof(SMessage));
07302 }
07303
07304 int CCollinsEFISSelectionGauge::Read (SStream *stream, Tag tag)
07305 {
07306 int rc = TAG_IGNORED;
07307
07308 switch (tag) {
07309 case 'brg_':
07310 ReadFrom (&brg_, stream);
07311 rc = TAG_READ;
07312 break;
07313
07314 case 'brgm':
07315 ReadFrom (&brgm, stream);
07316 rc = TAG_READ;
07317 break;
07318
07319 case 'brgk':
07320 ReadFrom (&brgk, stream);
07321 rc = TAG_READ;
07322 break;
07323
07324 case 'dh__':
07325 ReadFrom (&dh__, stream);
07326 rc = TAG_READ;
07327 break;
07328
07329 case 'form':
07330 ReadFrom (&form, stream);
07331 rc = TAG_READ;
07332 break;
07333
07334 case 'crs_':
07335 ReadFrom (&crs_, stream);
07336 rc = TAG_READ;
07337 break;
07338
07339 case 'crsm':
07340 ReadFrom (&crsm, stream);
07341 rc = TAG_READ;
07342 break;
07343
07344 case 'crsk':
07345 ReadFrom (&crsk, stream);
07346 rc = TAG_READ;
07347 break;
07348
07349 case 'wx__':
07350 ReadFrom (&wx__, stream);
07351 rc = TAG_READ;
07352 break;
07353
07354 case 'nav_':
07355 ReadFrom (&nav_, stream);
07356 rc = TAG_READ;
07357 break;
07358
07359 case 'pfdm':
07360 ReadMessage (&pfdm, stream);
07361 rc = TAG_READ;
07362 break;
07363
07364 case 'ehim':
07365 ReadMessage (&ehim, stream);
07366 rc = TAG_READ;
07367 break;
07368
07369 case 'mndm':
07370 ReadMessage (&mndm, stream);
07371 rc = TAG_READ;
07372 break;
07373
07374 case 'adm_':
07375 ReadMessage (&adm_, stream);
07376 rc = TAG_READ;
07377 break;
07378
07379 case 'aplt':
07380 ReadMessage (&aplt, stream);
07381 rc = TAG_READ;
07382 break;
07383 }
07384
07385 if (rc == TAG_IGNORED) {
07386 rc = CBitmapGauge::Read (stream, tag);
07387 }
07388
07389 if (rc == TAG_IGNORED) {
07390 char s[64];
07391 TagToString (s, tag);
07392 globals->logWarning->Write ("CCollinsEFISSelectionGauge::Read : Unknown tag %s", s);
07393 }
07394
07395 return rc;
07396 }
07397
07398
07399
07400
07401
07402 CCollinsVspeedPanel::CCollinsVspeedPanel (void)
07403 {
07404 }
07405
07406 int CCollinsVspeedPanel::Read (SStream *stream, Tag tag)
07407 {
07408 int rc = TAG_IGNORED;
07409
07410 switch (tag) {
07411 case 'sped':
07412 ReadFrom (&sped, stream);
07413 rc = TAG_READ;
07414 break;
07415
07416 case 'vsel':
07417 ReadFrom (&vsel, stream);
07418 rc = TAG_READ;
07419 break;
07420 }
07421
07422 if (rc == TAG_IGNORED) {
07423 rc = CBitmapGauge::Read (stream, tag);
07424 }
07425
07426 if (rc == TAG_IGNORED) {
07427 char s[64];
07428 TagToString (s, tag);
07429 globals->logWarning->Write ("CCollinsVspeedPanel::Read : Unknown tag %s", s);
07430 }
07431
07432 return rc;
07433 }
07434
07435
07436
07437
07438
07439
07440 CCollinsHFRadioGauge::CCollinsHFRadioGauge (void)
07441 {
07442 ft13 = false;
07443 }
07444
07445 int CCollinsHFRadioGauge::Read (SStream *stream, Tag tag)
07446 {
07447 int rc = TAG_IGNORED;
07448
07449 switch (tag) {
07450 case 'tel_':
07451 ReadFrom (&tel, stream);
07452 rc = TAG_READ;
07453 break;
07454
07455 case 'am__':
07456 ReadFrom (&am, stream);
07457 rc = TAG_READ;
07458 break;
07459
07460 case 'usb_':
07461 ReadFrom (&usb, stream);
07462 rc = TAG_READ;
07463 break;
07464
07465 case 'lsb_':
07466 ReadFrom (&lsb, stream);
07467 rc = TAG_READ;
07468 break;
07469
07470 case 'mhz_':
07471 ReadFrom (&mhz, stream);
07472 rc = TAG_READ;
07473 break;
07474
07475 case 'khz_':
07476 ReadFrom (&khz, stream);
07477 rc = TAG_READ;
07478 break;
07479
07480 case 'stor':
07481 ReadFrom (&stor, stream);
07482 rc = TAG_READ;
07483 break;
07484
07485 case 'tune':
07486 ReadFrom (&tune, stream);
07487 rc = TAG_READ;
07488 break;
07489
07490 case 'volu':
07491 ReadFrom (&volu, stream);
07492 rc = TAG_READ;
07493 break;
07494
07495 case 'dash':
07496 ReadFrom (&dash, stream);
07497 rc = TAG_READ;
07498 break;
07499
07500 case 'tx__':
07501 ReadFrom (&tx, stream);
07502 rc = TAG_READ;
07503 break;
07504
07505 case 'chan':
07506 ReadFrom (&chan, stream);
07507 rc = TAG_READ;
07508 break;
07509
07510 case 'ft13':
07511 ft13 = true;
07512 rc = TAG_READ;
07513 break;
07514 }
07515
07516 if (rc == TAG_IGNORED) {
07517 rc = CBitmapGauge::Read (stream, tag);
07518 }
07519
07520 if (rc == TAG_IGNORED) {
07521 char s[64];
07522 TagToString (s, tag);
07523 globals->logWarning->Write ("CCollinsHFRadioGauge::Read : Unknown tag %s", s);
07524 }
07525
07526 return rc;
07527 }
07528
07529
07530
07531
07532
07533 CCollinsPFDGauge::CCollinsPFDGauge (void)
07534 {
07535 }
07536
07537 int CCollinsPFDGauge::Read (SStream *stream, Tag tag)
07538 {
07539 int rc = TAG_IGNORED;
07540
07541 if (rc == TAG_IGNORED) {
07542 rc = CBitmapGauge::Read (stream, tag);
07543 }
07544
07545 if (rc == TAG_IGNORED) {
07546 char s[64];
07547 TagToString (s, tag);
07548 globals->logWarning->Write ("CCollinsPFDGauge::Read : Unknown tag %s", s);
07549 }
07550
07551 return rc;
07552 }
07553
07554
07555
07556
07557
07558 CCollinsNDGauge::CCollinsNDGauge (void)
07559 {
07560 }
07561
07562 int CCollinsNDGauge::Read (SStream *stream, Tag tag)
07563 {
07564 int rc = TAG_IGNORED;
07565
07566 if (rc == TAG_IGNORED) {
07567 rc = CBitmapGauge::Read (stream, tag);
07568 }
07569
07570 if (rc == TAG_IGNORED) {
07571 char s[64];
07572 TagToString (s, tag);
07573 globals->logWarning->Write ("CCollinsNDGauge::Read : Unknown tag %s", s);
07574 }
07575
07576 return rc;
07577 }
07578
07579
07580
07581
07582
07583 CCollinsRTUGauge::CCollinsRTUGauge (void)
07584 {
07585 memset (&rtu_, 0, sizeof(SMessage));
07586 memset (&dme1, 0, sizeof(SMessage));
07587 memset (&dme2, 0, sizeof(SMessage));
07588 strcpy (dmeH.art, "");
07589 dmeH.x = dmeH.y = 0;
07590 strcpy (repl.art, "");
07591 repl.x = repl.y = 0;
07592 side = 0;
07593 }
07594
07595 int CCollinsRTUGauge::Read (SStream *stream, Tag tag)
07596 {
07597 int rc = TAG_IGNORED;
07598
07599 switch (tag) {
07600 case 'lin1':
07601 ReadFrom (&lin1, stream);
07602 rc = TAG_READ;
07603 break;
07604
07605 case 'lin2':
07606 ReadFrom (&lin2, stream);
07607 rc = TAG_READ;
07608 break;
07609
07610 case 'lin3':
07611 ReadFrom (&lin3, stream);
07612 rc = TAG_READ;
07613 break;
07614
07615 case 'lin4':
07616 ReadFrom (&lin4, stream);
07617 rc = TAG_READ;
07618 break;
07619
07620 case 'lin5':
07621 ReadFrom (&lin4, stream);
07622 rc = TAG_READ;
07623 break;
07624
07625 case 'btn1':
07626 ReadFrom (&btn1, stream);
07627 rc = TAG_READ;
07628 break;
07629
07630 case 'btn2':
07631 ReadFrom (&btn2, stream);
07632 rc = TAG_READ;
07633 break;
07634
07635 case 'btn3':
07636 ReadFrom (&btn3, stream);
07637 rc = TAG_READ;
07638 break;
07639
07640 case 'btn4':
07641 ReadFrom (&btn4, stream);
07642 rc = TAG_READ;
07643 break;
07644
07645 case 'btn5':
07646 ReadFrom (&btn5, stream);
07647 rc = TAG_READ;
07648 break;
07649
07650 case 'cmaw':
07651 ReadFrom (&cmaw, stream);
07652 rc = TAG_READ;
07653 break;
07654
07655 case 'cmaf':
07656 ReadFrom (&cmaf, stream);
07657 rc = TAG_READ;
07658 break;
07659
07660 case 'cmsw':
07661 ReadFrom (&cmsw, stream);
07662 rc = TAG_READ;
07663 break;
07664
07665 case 'cmsf':
07666 ReadFrom (&cmsf, stream);
07667 rc = TAG_READ;
07668 break;
07669
07670 case 'nvaw':
07671 ReadFrom (&nvaw, stream);
07672 rc = TAG_READ;
07673 break;
07674
07675 case 'nvaf':
07676 ReadFrom (&nvaf, stream);
07677 rc = TAG_READ;
07678 break;
07679
07680 case 'adf1':
07681 ReadFrom (&adf1, stream);
07682 rc = TAG_READ;
07683 break;
07684
07685 case 'adf2':
07686 ReadFrom (&adf2, stream);
07687 rc = TAG_READ;
07688 break;
07689
07690 case 'adf3':
07691 ReadFrom (&adf3, stream);
07692 rc = TAG_READ;
07693 break;
07694
07695 case 'adf4':
07696 ReadFrom (&adf4, stream);
07697 rc = TAG_READ;
07698 break;
07699
07700 case 'adf5':
07701 ReadFrom (&adf5, stream);
07702 rc = TAG_READ;
07703 break;
07704
07705 case 'xpd1':
07706 ReadFrom (&xpd1, stream);
07707 rc = TAG_READ;
07708 break;
07709
07710 case 'xpd2':
07711 ReadFrom (&xpd2, stream);
07712 rc = TAG_READ;
07713 break;
07714
07715 case 'xpd3':
07716 ReadFrom (&xpd3, stream);
07717 rc = TAG_READ;
07718 break;
07719
07720 case 'xpd4':
07721 ReadFrom (&xpd4, stream);
07722 rc = TAG_READ;
07723 break;
07724
07725 case 'atci':
07726 ReadFrom (&atci, stream);
07727 rc = TAG_READ;
07728 break;
07729
07730 case 'dmeh':
07731 ReadFrom (&dmeh, stream);
07732 rc = TAG_READ;
07733 break;
07734
07735 case 'coms':
07736 ReadFrom (&coms, stream);
07737 rc = TAG_READ;
07738 break;
07739
07740 case 'atcs':
07741 ReadFrom (&atcs, stream);
07742 rc = TAG_READ;
07743 break;
07744
07745 case '1/2_':
07746 ReadFrom (&b1_2, stream);
07747 rc = TAG_READ;
07748 break;
07749
07750 case 'adft':
07751 ReadFrom (&xpd1, stream);
07752 rc = TAG_READ;
07753 break;
07754
07755 case 'rtu_':
07756 ReadMessage (&rtu_, stream);
07757 rc = TAG_READ;
07758 break;
07759
07760 case 'dme1':
07761 ReadMessage (&dme1, stream);
07762 rc = TAG_READ;
07763 break;
07764
07765 case 'dme2':
07766 ReadMessage (&dme2, stream);
07767 rc = TAG_READ;
07768 break;
07769
07770 case 'dmeH':
07771 ReadString (dmeH.art, 64, stream);
07772 ReadInt (&dmeH.x, stream);
07773 ReadInt (&dmeH.y, stream);
07774 rc = TAG_READ;
07775 break;
07776
07777 case 'repl':
07778 ReadString (repl.art, 64, stream);
07779 ReadInt (&repl.x, stream);
07780 ReadInt (&repl.y, stream);
07781 rc = TAG_READ;
07782 break;
07783
07784 case 'side':
07785 ReadInt (&side, stream);
07786 rc = TAG_READ;
07787 break;
07788 }
07789
07790 if (rc == TAG_IGNORED) {
07791 rc = CBitmapGauge::Read (stream, tag);
07792 }
07793
07794 if (rc == TAG_IGNORED) {
07795 char s[64];
07796 TagToString (s, tag);
07797 globals->logWarning->Write ("CCollinsRTUGauge::Read : Unknown tag %s", s);
07798 }
07799
07800 return rc;
07801 }
07802
07803
07804
07805
07806
07807 CCollinsAirDataGauge::CCollinsAirDataGauge (void)
07808 {
07809 }
07810
07811 int CCollinsAirDataGauge::Read (SStream *stream, Tag tag)
07812 {
07813 int rc = TAG_IGNORED;
07814
07815 switch (tag) {
07816 case 'scrn':
07817 ReadFrom (&scrn, stream);
07818 rc = TAG_READ;
07819 break;
07820
07821 case 'baro':
07822 ReadFrom (&baro, stream);
07823 rc = TAG_READ;
07824 break;
07825
07826 case 'vs__':
07827 ReadFrom (&vs__, stream);
07828 rc = TAG_READ;
07829 break;
07830
07831 case 'alt_':
07832 ReadFrom (&alt_, stream);
07833 rc = TAG_READ;
07834 break;
07835
07836 case 'in__':
07837 ReadFrom (&in__, stream);
07838 rc = TAG_READ;
07839 break;
07840
07841 case 'mb__':
07842 ReadFrom (&mb__, stream);
07843 rc = TAG_READ;
07844 break;
07845 }
07846
07847 if (rc == TAG_IGNORED) {
07848 rc = CBitmapGauge::Read (stream, tag);
07849 }
07850
07851 if (rc == TAG_IGNORED) {
07852 char s[64];
07853 TagToString (s, tag);
07854 globals->logWarning->Write ("CCollinsAirDataGauge::Read : Unknown tag %s", s);
07855 }
07856
07857 return rc;
07858 }
07859
07860
07861
07862
07863
07864 CCollinsMNDGauge::CCollinsMNDGauge (void)
07865 {
07866 memset (&obs_, 0, sizeof(SMessage));
07867 memset (&ap__, 0, sizeof(SMessage));
07868 }
07869
07870 int CCollinsMNDGauge::Read (SStream *stream, Tag tag)
07871 {
07872 int rc = TAG_IGNORED;
07873
07874 switch (tag) {
07875 case 'obs_':
07876 ReadMessage (&obs_, stream);
07877 rc = TAG_READ;
07878 break;
07879
07880 case 'ap__':
07881 ReadMessage (&ap__, stream);
07882 rc = TAG_READ;
07883 break;
07884
07885 case 'frmt':
07886 ReadFrom (&frmt, stream);
07887 rc = TAG_READ;
07888 break;
07889
07890 case 'hdg_':
07891 ReadFrom (&hdg_, stream);
07892 rc = TAG_READ;
07893 break;
07894
07895 case 'crs_':
07896 ReadFrom (&crs_, stream);
07897 rc = TAG_READ;
07898 break;
07899
07900 case 'brgt':
07901 ReadFrom (&brgt, stream);
07902 rc = TAG_READ;
07903 break;
07904 }
07905
07906 if (rc == TAG_IGNORED) {
07907 rc = CBitmapGauge::Read (stream, tag);
07908 }
07909
07910 if (rc == TAG_IGNORED) {
07911 char s[64];
07912 TagToString (s, tag);
07913 globals->logWarning->Write ("CCollinsMNDGauge::Read : Unknown tag %s", s);
07914 }
07915
07916 return rc;
07917 }
07918
07919
07920
07921
07922
07923 CUniversalFMSGauge::CUniversalFMSGauge (void)
07924 {
07925 }
07926
07927 int CUniversalFMSGauge::Read (SStream *stream, Tag tag)
07928 {
07929 int rc = TAG_IGNORED;
07930
07931 switch (tag) {
07932 case 'scrn':
07933 ReadFrom (&scrn, stream);
07934 rc = TAG_READ;
07935 break;
07936
07937 case 'l1__':
07938 ReadFrom (&l1, stream);
07939 rc = TAG_READ;
07940 break;
07941
07942 case 'l2__':
07943 ReadFrom (&l2, stream);
07944 rc = TAG_READ;
07945 break;
07946
07947 case 'l3__':
07948 ReadFrom (&l3, stream);
07949 rc = TAG_READ;
07950 break;
07951
07952 case 'l4__':
07953 ReadFrom (&l4, stream);
07954 rc = TAG_READ;
07955 break;
07956
07957 case 'l5__':
07958 ReadFrom (&l5, stream);
07959 rc = TAG_READ;
07960 break;
07961
07962 case 'r1__':
07963 ReadFrom (&r1, stream);
07964 rc = TAG_READ;
07965 break;
07966
07967 case 'r2__':
07968 ReadFrom (&r2, stream);
07969 rc = TAG_READ;
07970 break;
07971
07972 case 'r3__':
07973 ReadFrom (&r3, stream);
07974 rc = TAG_READ;
07975 break;
07976
07977 case 'r4__':
07978 ReadFrom (&r4, stream);
07979 rc = TAG_READ;
07980 break;
07981
07982 case 'r5__':
07983 ReadFrom (&r5, stream);
07984 rc = TAG_READ;
07985 break;
07986
07987 case 'data':
07988 ReadFrom (&data, stream);
07989 rc = TAG_READ;
07990 break;
07991
07992 case 'nav_':
07993 ReadFrom (&nav, stream);
07994 rc = TAG_READ;
07995 break;
07996
07997 case 'vnav':
07998 ReadFrom (&vnav, stream);
07999 rc = TAG_READ;
08000 break;
08001
08002 case 'dto_':
08003 ReadFrom (&dto, stream);
08004 rc = TAG_READ;
08005 break;
08006
08007 case 'list':
08008 ReadFrom (&list, stream);
08009 rc = TAG_READ;
08010 break;
08011
08012 case 'prev':
08013 ReadFrom (&prev, stream);
08014 rc = TAG_READ;
08015 break;
08016
08017 case 'fuel':
08018 ReadFrom (&fuel, stream);
08019 rc = TAG_READ;
08020 break;
08021
08022 case 'fpl_':
08023 ReadFrom (&fpl, stream);
08024 rc = TAG_READ;
08025 break;
08026
08027 case 'perf':
08028 ReadFrom (&perf, stream);
08029 rc = TAG_READ;
08030 break;
08031
08032 case 'tune':
08033 ReadFrom (&tune, stream);
08034 rc = TAG_READ;
08035 break;
08036
08037 case 'menu':
08038 ReadFrom (&menu, stream);
08039 rc = TAG_READ;
08040 break;
08041
08042 case 'next':
08043 ReadFrom (&next, stream);
08044 rc = TAG_READ;
08045 break;
08046
08047 case '1___':
08048 ReadFrom (&key1, stream);
08049 rc = TAG_READ;
08050 break;
08051
08052 case '2___':
08053 ReadFrom (&key2, stream);
08054 rc = TAG_READ;
08055 break;
08056
08057 case '3___':
08058 ReadFrom (&key3, stream);
08059 rc = TAG_READ;
08060 break;
08061
08062 case '4___':
08063 ReadFrom (&key4, stream);
08064 rc = TAG_READ;
08065 break;
08066
08067 case '5___':
08068 ReadFrom (&key5, stream);
08069 rc = TAG_READ;
08070 break;
08071
08072 case '6___':
08073 ReadFrom (&key6, stream);
08074 rc = TAG_READ;
08075 break;
08076
08077 case '7___':
08078 ReadFrom (&key7, stream);
08079 rc = TAG_READ;
08080 break;
08081
08082 case '8___':
08083 ReadFrom (&key8, stream);
08084 rc = TAG_READ;
08085 break;
08086
08087 case '9___':
08088 ReadFrom (&key9, stream);
08089 rc = TAG_READ;
08090 break;
08091
08092 case 'back':
08093 ReadFrom (&back, stream);
08094 rc = TAG_READ;
08095 break;
08096
08097 case '0___':
08098 ReadFrom (&key0, stream);
08099 rc = TAG_READ;
08100 break;
08101
08102 case 'msg_':
08103 ReadFrom (&msg, stream);
08104 rc = TAG_READ;
08105 break;
08106
08107 case 'dim_':
08108 ReadFrom (&dim, stream);
08109 rc = TAG_READ;
08110 break;
08111
08112 case '+-__':
08113 ReadFrom (&plus, stream);
08114 rc = TAG_READ;
08115 break;
08116
08117 case 'entr':
08118 ReadFrom (&entr, stream);
08119 rc = TAG_READ;
08120 break;
08121
08122 case 'A___':
08123 ReadFrom (&keyA, stream);
08124 rc = TAG_READ;
08125 break;
08126
08127 case 'B___':
08128 ReadFrom (&keyB, stream);
08129 rc = TAG_READ;
08130 break;
08131
08132 case 'C___':
08133 ReadFrom (&keyC, stream);
08134 rc = TAG_READ;
08135 break;
08136
08137 case 'D___':
08138 ReadFrom (&keyD, stream);
08139 rc = TAG_READ;
08140 break;
08141
08142 case 'E___':
08143 ReadFrom (&keyE, stream);
08144 rc = TAG_READ;
08145 break;
08146
08147 case 'F___':
08148 ReadFrom (&keyF, stream);
08149 rc = TAG_READ;
08150 break;
08151
08152 case 'G___':
08153 ReadFrom (&keyG, stream);
08154 rc = TAG_READ;
08155 break;
08156
08157 case 'H___':
08158 ReadFrom (&keyH, stream);
08159 rc = TAG_READ;
08160 break;
08161
08162 case 'I___':
08163 ReadFrom (&keyI, stream);
08164 rc = TAG_READ;
08165 break;
08166
08167 case 'J___':
08168 ReadFrom (&keyJ, stream);
08169 rc = TAG_READ;
08170 break;
08171
08172 case 'K___':
08173 ReadFrom (&keyK, stream);
08174 rc = TAG_READ;
08175 break;
08176
08177 case 'L___':
08178 ReadFrom (&keyL, stream);
08179 rc = TAG_READ;
08180 break;
08181
08182 case 'M___':
08183 ReadFrom (&keyM, stream);
08184 rc = TAG_READ;
08185 break;
08186
08187 case 'N___':
08188 ReadFrom (&keyN, stream);
08189 rc = TAG_READ;
08190 break;
08191
08192 case 'O___':
08193 ReadFrom (&keyO, stream);
08194 rc = TAG_READ;
08195 break;
08196
08197 case 'P___':
08198 ReadFrom (&keyP, stream);
08199 rc = TAG_READ;
08200 break;
08201
08202 case 'Q___':
08203 ReadFrom (&keyQ, stream);
08204 rc = TAG_READ;
08205 break;
08206
08207 case 'R___':
08208 ReadFrom (&keyR, stream);
08209 rc = TAG_READ;
08210 break;
08211
08212 case 'S___':
08213 ReadFrom (&keyS, stream);
08214 rc = TAG_READ;
08215 break;
08216
08217 case 'T___':
08218 ReadFrom (&keyT, stream);
08219 rc = TAG_READ;
08220 break;
08221
08222 case 'U___':
08223 ReadFrom (&keyU, stream);
08224 rc = TAG_READ;
08225 break;
08226
08227 case 'V___':
08228 ReadFrom (&keyV, stream);
08229 rc = TAG_READ;
08230 break;
08231
08232 case 'W___':
08233 ReadFrom (&keyW, stream);
08234 rc = TAG_READ;
08235 break;
08236
08237 case 'X___':
08238 ReadFrom (&keyX, stream);
08239 rc = TAG_READ;
08240 break;
08241
08242 case 'Y___':
08243 ReadFrom (&keyY, stream);
08244 rc = TAG_READ;
08245 break;
08246
08247 case 'Z___':
08248 ReadFrom (&keyZ, stream);
08249 rc = TAG_READ;
08250 break;
08251 }
08252
08253 if (rc == TAG_IGNORED) {
08254 rc = CBitmapGauge::Read (stream, tag);
08255 }
08256
08257 if (rc == TAG_IGNORED) {
08258 char s[64];
08259 TagToString (s, tag);
08260 globals->logWarning->Write ("CUniversalFMSGauge::Read : Unknown tag %s", s);
08261 }
08262
08263 return rc;
08264 }
08265
08266
08267
08268
08269
08270 CPilatusEFISPanel::CPilatusEFISPanel (void)
08271 {
08272 memset (&pfdm, 0, sizeof(SMessage));
08273 memset (&navm, 0, sizeof(SMessage));
08274 }
08275
08276 int CPilatusEFISPanel::Read (SStream *stream, Tag tag)
08277 {
08278 int rc = TAG_IGNORED;
08279
08280 switch (tag) {
08281 case 'pfdm':
08282 ReadMessage (&pfdm, stream);
08283 rc = TAG_READ;
08284 break;
08285
08286 case 'navm':
08287 ReadMessage (&navm, stream);
08288 rc = TAG_READ;
08289 break;
08290
08291 case 'dh__':
08292 ReadFrom (&dh, stream);
08293 rc = TAG_READ;
08294 break;
08295
08296 case 'brt_':
08297 ReadFrom (&brt, stream);
08298 rc = TAG_READ;
08299 break;
08300
08301 case 'crs_':
08302 ReadFrom (&crs, stream);
08303 rc = TAG_READ;
08304 break;
08305
08306 case 'hdg_':
08307 ReadFrom (&hdg, stream);
08308 rc = TAG_READ;
08309 break;
08310
08311 case 'hsi_':
08312 ReadFrom (&hsi, stream);
08313 rc = TAG_READ;
08314 break;
08315
08316 case 'arc_':
08317 ReadFrom (&arc, stream);
08318 rc = TAG_READ;
08319 break;
08320
08321 case 'nav_':
08322 ReadFrom (&nav, stream);
08323 rc = TAG_READ;
08324 break;
08325
08326 case 'rgup':
08327 ReadFrom (&rgup, stream);
08328 rc = TAG_READ;
08329 break;
08330
08331 case 'rgdn':
08332 ReadFrom (&rgdn, stream);
08333 rc = TAG_READ;
08334 break;
08335
08336 case 'nav1':
08337 ReadFrom (&nav1, stream);
08338 rc = TAG_READ;
08339 break;
08340
08341 case 'nav2':
08342 ReadFrom (&nav2, stream);
08343 rc = TAG_READ;
08344 break;
08345
08346 case 'k1_2':
08347 ReadFrom (&k1_2, stream);
08348 rc = TAG_READ;
08349 break;
08350 }
08351
08352 if (rc == TAG_IGNORED) {
08353 rc = CBitmapGauge::Read (stream, tag);
08354 }
08355
08356 if (rc == TAG_IGNORED) {
08357 char s[64];
08358 TagToString (s, tag);
08359 globals->logWarning->Write ("CPilatusEFISPanel::Read : Unknown tag %s", s);
08360 }
08361
08362 return rc;
08363 }
08364
08365
08366
08367
08368 CWalkerTempAirspeedGauge::CWalkerTempAirspeedGauge (void)
08369 {
08370 }
08371
08372 int CWalkerTempAirspeedGauge::Read (SStream *stream, Tag tag)
08373 {
08374 int rc = TAG_IGNORED;
08375
08376 switch (tag) {
08377 case 'tat_':
08378 ReadFrom (&tat, stream);
08379 rc = TAG_READ;
08380 break;
08381
08382 case 'sat_':
08383 ReadFrom (&sat, stream);
08384 rc = TAG_READ;
08385 break;
08386
08387 case 'tas_':
08388 ReadFrom (&tas, stream);
08389 rc = TAG_READ;
08390 break;
08391 }
08392
08393 if (rc == TAG_IGNORED) {
08394 rc = CBitmapGauge::Read (stream, tag);
08395 }
08396
08397 if (rc == TAG_IGNORED) {
08398 char s[64];
08399 TagToString (s, tag);
08400 globals->logWarning->Write ("CWalkerTempAirspeedGauge::Read : Unknown tag %s", s);
08401 }
08402
08403 return rc;
08404 }
08405
08406
08407
08408
08409 CGyroSlavingGauge::CGyroSlavingGauge (void)
08410 {
08411 strcpy (slvb.art, "");
08412 slvb.x = slvb.y = 0;
08413 strcpy (ccwb.art, "");
08414 ccwb.x = ccwb.y = 0;
08415 lrgb_r = lrgb_g = lrgb_b = 0;
08416 strcpy (sfxu_wav, "");
08417 strcpy (sfxd_wav, "");
08418 sfxu_tag = sfxd_tag = 0;
08419 }
08420
08421 int CGyroSlavingGauge::Read (SStream *stream, Tag tag)
08422 {
08423 int rc = TAG_IGNORED;
08424
08425 switch (tag) {
08426 case 'nedl':
08427 ReadString (nedl.art, 64, stream);
08428 ReadInt (&nedl.x, stream);
08429 ReadInt (&nedl.y, stream);
08430 rc = TAG_READ;
08431 break;
08432
08433 case 'slvb':
08434 ReadString (slvb.art, 64, stream);
08435 ReadInt (&slvb.x, stream);
08436 ReadInt (&slvb.y, stream);
08437 rc = TAG_READ;
08438 break;
08439
08440 case 'ccwb':
08441 ReadString (ccwb.art, 64, stream);
08442 ReadInt (&ccwb.x, stream);
08443 ReadInt (&ccwb.y, stream);
08444 rc = TAG_READ;
08445 break;
08446
08447 case 'err_':
08448 ReadFrom (&err, stream);
08449 rc = TAG_READ;
08450 break;
08451
08452 case 'slav':
08453 ReadFrom (&slav, stream);
08454 rc = TAG_READ;
08455 break;
08456
08457 case 'free':
08458 ReadFrom (&free, stream);
08459 rc = TAG_READ;
08460 break;
08461
08462 case 'mode':
08463 ReadFrom (&mode, stream);
08464 rc = TAG_READ;
08465 break;
08466
08467 case 'ccw_':
08468 ReadFrom (&ccw, stream);
08469 rc = TAG_READ;
08470 break;
08471
08472 case 'cw__':
08473 ReadFrom (&cw, stream);
08474 rc = TAG_READ;
08475 break;
08476
08477 case 'lrgb':
08478 ReadInt (&lrgb_r, stream);
08479 ReadInt (&lrgb_g, stream);
08480 ReadInt (&lrgb_b, stream);
08481 rc = TAG_READ;
08482 break;
08483
08484 case 'sfx_':
08485 ReadString (sfxu_wav, 64, stream);
08486 ReadString (sfxd_wav, 64, stream);
08487 rc = TAG_READ;
08488 break;
08489 }
08490
08491 if (rc == TAG_IGNORED) {
08492 rc = CBitmapGauge::Read (stream, tag);
08493 }
08494
08495 if (rc == TAG_IGNORED) {
08496 char s[64];
08497 TagToString (s, tag);
08498 globals->logWarning->Write ("CGyroSlavingGauge::Read : Unknown tag %s", s);
08499 }
08500
08501 return rc;
08502 }
08503
08504 void CGyroSlavingGauge::ReadFinished (void)
08505 {
08506 CBitmapGauge::ReadFinished ();
08507
08508
08509 if (strlen (sfxu_wav) > 0) {
08510 char sfxFullname[64];
08511 strcpy (sfxFullname, "SOUND\\");
08512 strcat (sfxFullname, sfxu_wav);
08513 sfxu_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
08514 }
08515 if (strlen (sfxd_wav) > 0) {
08516 char sfxFullname[64];
08517 strcpy (sfxFullname, "SOUND\\");
08518 strcat (sfxFullname, sfxd_wav);
08519 sfxd_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
08520 }
08521 }
08522
08523
08524
08525
08526
08527 CVerticalRateGauge::CVerticalRateGauge (void)
08528 {
08529 avil = 0;
08530 }
08531
08532 int CVerticalRateGauge::Read (SStream *stream, Tag tag)
08533 {
08534 int rc = TAG_IGNORED;
08535
08536 switch (tag) {
08537 case 'eng_':
08538 ReadFrom (&eng, stream);
08539 rc = TAG_READ;
08540 break;
08541
08542 case 'arm_':
08543 ReadFrom (&arm, stream);
08544 rc = TAG_READ;
08545 break;
08546
08547 case 'knob':
08548 ReadFrom (&knob, stream);
08549 rc = TAG_READ;
08550 break;
08551
08552 case 'led_':
08553 ReadFrom (&led, stream);
08554 rc = TAG_READ;
08555 break;
08556
08557 case 'avil':
08558 ReadTag (&avil, stream);
08559 rc = TAG_READ;
08560 break;
08561 }
08562
08563 if (rc == TAG_IGNORED) {
08564 rc = CBitmapGauge::Read (stream, tag);
08565 }
08566
08567 if (rc == TAG_IGNORED) {
08568 char s[64];
08569 TagToString (s, tag);
08570 globals->logWarning->Write ("CVerticalRateGauge::Read : Unknown tag %s", s);
08571 }
08572
08573 return rc;
08574 }
08575
08576
08577
08578
08579 CPropSyncGauge::CPropSyncGauge (void)
08580 {
08581 }
08582
08583 int CPropSyncGauge::Read (SStream *stream, Tag tag)
08584 {
08585 int rc = TAG_IGNORED;
08586
08587 if (rc == TAG_IGNORED) {
08588 rc = CBitmapGauge::Read (stream, tag);
08589 }
08590
08591 if (rc == TAG_IGNORED) {
08592 char s[64];
08593 TagToString (s, tag);
08594 globals->logWarning->Write ("CPropSyncGauge::Read : Unknown tag %s", s);
08595 }
08596
08597 return rc;
08598 }
08599
08600
08601
08602
08603 CDMEGauge::CDMEGauge (void)
08604 {
08605 hold = false;
08606 dist_x = dist_y = 0;
08607 sped_x = sped_y = 0;
08608 time_x = time_y = 0;
08609 tiny = false;
08610 }
08611
08612 int CDMEGauge::Read (SStream *stream, Tag tag)
08613 {
08614 int rc = TAG_IGNORED;
08615
08616 switch (tag) {
08617 case 'hold':
08618 hold = true;
08619 rc = TAG_READ;
08620 break;
08621
08622 case 'dist':
08623 ReadInt (&dist_x, stream);
08624 ReadInt (&dist_y, stream);
08625 rc = TAG_READ;
08626 break;
08627
08628 case 'sped':
08629 ReadInt (&sped_x, stream);
08630 ReadInt (&sped_y, stream);
08631 rc = TAG_READ;
08632 break;
08633
08634 case 'time':
08635 ReadInt (&time_x, stream);
08636 ReadInt (&time_y, stream);
08637 rc = TAG_READ;
08638 break;
08639
08640 case 'knob':
08641 ReadFrom (&knob, stream);
08642 rc = TAG_READ;
08643 break;
08644
08645 case 'tiny':
08646 tiny = true;
08647 rc = TAG_READ;
08648 break;
08649 }
08650
08651 if (rc == TAG_IGNORED) {
08652 rc = CBitmapGauge::Read (stream, tag);
08653 }
08654
08655 if (rc == TAG_IGNORED) {
08656 char s[64];
08657 TagToString (s, tag);
08658 globals->logWarning->Write ("CDMEGauge::Read : Unknown tag %s", s);
08659 }
08660
08661 return rc;
08662 }
08663
08664 ECursorResult CDMEGauge::MouseMoved (int x, int y)
08665 {
08666 ECursorResult rc = CURSOR_NOT_CHANGED;
08667
08668
08669 if (rc == CURSOR_NOT_CHANGED) rc = knob.MouseMoved (x, y);
08670
08671
08672 if (rc == CURSOR_NOT_CHANGED) {
08673 rc = CBitmapGauge::MouseMoved (x, y);
08674 }
08675
08676 return rc;
08677 }
08678
08679
08680
08681
08682
08683 CDME2Gauge::CDME2Gauge (void)
08684 {
08685 hold = false;
08686 left_x = left_y = 0;
08687 rght_x = rght_y = 0;
08688 }
08689
08690 int CDME2Gauge::Read (SStream *stream, Tag tag)
08691 {
08692 int rc = TAG_IGNORED;
08693
08694 switch (tag) {
08695 case 'hold':
08696 hold = true;
08697 rc = TAG_READ;
08698 break;
08699
08700 case 'left':
08701 ReadInt (&left_x, stream);
08702 ReadInt (&left_y, stream);
08703 rc = TAG_READ;
08704 break;
08705
08706 case 'rght':
08707 ReadInt (&rght_x, stream);
08708 ReadInt (&rght_y, stream);
08709 rc = TAG_READ;
08710 break;
08711
08712 case 'ch__':
08713 ReadFrom (&ch, stream);
08714 rc = TAG_READ;
08715 break;
08716
08717 case 'sel_':
08718 ReadFrom (&sel, stream);
08719 rc = TAG_READ;
08720 break;
08721
08722 case 'pwr_':
08723 ReadFrom (&pwr, stream);
08724 rc = TAG_READ;
08725 break;
08726 }
08727
08728 if (rc == TAG_IGNORED) {
08729 rc = CBitmapGauge::Read (stream, tag);
08730 }
08731
08732 if (rc == TAG_IGNORED) {
08733 char s[64];
08734 TagToString (s, tag);
08735 globals->logWarning->Write ("CDME2Gauge::Read : Unknown tag %s", s);
08736 }
08737
08738 return rc;
08739 }
08740
08741
08742 ECursorResult CDME2Gauge::MouseMoved (int x, int y)
08743 {
08744 ECursorResult rc = CURSOR_NOT_CHANGED;
08745
08746
08747 if (rc == CURSOR_NOT_CHANGED) rc = ch.MouseMoved (x, y);
08748 if (rc == CURSOR_NOT_CHANGED) rc = sel.MouseMoved (x, y);
08749 if (rc == CURSOR_NOT_CHANGED) rc = pwr.MouseMoved (x, y);
08750
08751
08752 if (rc == CURSOR_NOT_CHANGED) {
08753 rc = CBitmapGauge::MouseMoved (x, y);
08754 }
08755
08756 return rc;
08757 }
08758
08759
08760
08761
08762 CWeatherRadarGauge::CWeatherRadarGauge (void)
08763 {
08764 }
08765
08766 int CWeatherRadarGauge::Read (SStream *stream, Tag tag)
08767 {
08768 int rc = TAG_IGNORED;
08769
08770 switch (tag) {
08771 case 'scrn':
08772 ReadFrom (&scrn, stream);
08773 rc = TAG_READ;
08774 break;
08775
08776 case 'wx__':
08777 ReadFrom (&wx, stream);
08778 rc = TAG_READ;
08779 break;
08780
08781 case 'vp__':
08782 ReadFrom (&vp, stream);
08783 rc = TAG_READ;
08784 break;
08785
08786 case 'map_':
08787 ReadFrom (&map, stream);
08788 rc = TAG_READ;
08789 break;
08790
08791 case 'nav_':
08792 ReadFrom (&nav, stream);
08793 rc = TAG_READ;
08794 break;
08795
08796 case 'rng+':
08797 ReadFrom (&rngp, stream);
08798 rc = TAG_READ;
08799 break;
08800
08801 case 'rng-':
08802 ReadFrom (&rngm, stream);
08803 rc = TAG_READ;
08804 break;
08805
08806 case 'trk+':
08807 ReadFrom (&trkp, stream);
08808 rc = TAG_READ;
08809 break;
08810
08811 case 'trk-':
08812 ReadFrom (&trkm, stream);
08813 rc = TAG_READ;
08814 break;
08815
08816 case 'mode':
08817 ReadFrom (&mode, stream);
08818 rc = TAG_READ;
08819 break;
08820
08821 case 'tilt':
08822 ReadFrom (&tilt, stream);
08823 rc = TAG_READ;
08824 break;
08825
08826 case 'gain':
08827 ReadFrom (&gain, stream);
08828 rc = TAG_READ;
08829 break;
08830
08831 case 'brit':
08832 ReadFrom (&brit, stream);
08833 rc = TAG_READ;
08834 break;
08835 }
08836
08837 if (rc == TAG_IGNORED) {
08838 rc = CBitmapGauge::Read (stream, tag);
08839 }
08840
08841 if (rc == TAG_IGNORED) {
08842 char s[64];
08843 TagToString (s, tag);
08844 globals->logWarning->Write ("CWeatherRadarGauge::Read : Unknown tag %s", s);
08845 }
08846
08847 return rc;
08848 }
08849
08850
08851
08852
08853
08854 CAnalogAltPreselectGauge::CAnalogAltPreselectGauge (void)
08855 {
08856 strcpy (fdig_art, "");
08857 strcpy (digi_art, "");
08858 strcpy (zero_art, "");
08859 thou_x = thou_y = 0;
08860 hund_x = hund_y = 0;
08861 ones_x = ones_y = 0;
08862 dspc = 0;
08863 zspc = 0;
08864 }
08865
08866 int CAnalogAltPreselectGauge::Read (SStream *stream, Tag tag)
08867 {
08868 int rc = TAG_IGNORED;
08869
08870 switch (tag) {
08871 case 'knob':
08872 ReadFrom (&knob, stream);
08873 rc = TAG_READ;
08874 break;
08875
08876 case 'fdig':
08877 ReadString (fdig_art, 64, stream);
08878 rc = TAG_READ;
08879 break;
08880
08881 case 'digi':
08882 ReadString (digi_art, 64, stream);
08883 rc = TAG_READ;
08884 break;
08885
08886 case 'zero':
08887 ReadString (zero_art, 64, stream);
08888 rc = TAG_READ;
08889 break;
08890
08891 case 'thou':
08892 ReadInt (&thou_x, stream);
08893 ReadInt (&thou_y, stream);
08894 rc = TAG_READ;
08895 break;
08896
08897 case 'hund':
08898 ReadInt (&hund_x, stream);
08899 ReadInt (&hund_y, stream);
08900 rc = TAG_READ;
08901 break;
08902
08903 case 'ones':
08904 ReadInt (&ones_x, stream);
08905 ReadInt (&ones_y, stream);
08906 rc = TAG_READ;
08907 break;
08908
08909 case 'dspc':
08910 ReadInt (&dspc, stream);
08911 rc = TAG_READ;
08912 break;
08913
08914 case 'zspc':
08915 ReadInt (&zspc, stream);
08916 rc = TAG_READ;
08917 break;
08918
08919 case 'aler':
08920 ReadFrom (&aler, stream);
08921 rc = TAG_READ;
08922 break;
08923 }
08924
08925 if (rc == TAG_IGNORED) {
08926 rc = CBitmapGauge::Read (stream, tag);
08927 }
08928
08929 if (rc == TAG_IGNORED) {
08930 char s[64];
08931 TagToString (s, tag);
08932 globals->logWarning->Write ("CAnalogAltPreselectGauge::Read : Unknown tag %s", s);
08933 }
08934
08935 return rc;
08936 }
08937
08938
08939
08940
08941
08942
08943 CMomentaryHotSpotGauge::CMomentaryHotSpotGauge (void)
08944 {
08945 }
08946
08947 int CMomentaryHotSpotGauge::Read (SStream *stream, Tag tag)
08948 {
08949 int rc = TAG_IGNORED;
08950
08951 if (rc == TAG_IGNORED) {
08952 rc = CBitmapGauge::Read (stream, tag);
08953 }
08954
08955 if (rc == TAG_IGNORED) {
08956 char s[64];
08957 TagToString (s, tag);
08958 globals->logWarning->Write ("CMomentaryHotSpotGauge::Read : Unknown tag %s", s);
08959 }
08960
08961 return rc;
08962 }
08963
08964
08965
08966
08967
08968
08969 CLitInOutSwitch::CLitInOutSwitch (void)
08970 {
08971 memset (&powr, 0, sizeof(SMessage));
08972 }
08973
08974 int CLitInOutSwitch::Read (SStream *stream, Tag tag)
08975 {
08976 int rc = TAG_IGNORED;
08977
08978 switch (tag) {
08979 case 'powr':
08980 ReadMessage (&powr, stream);
08981 rc = TAG_READ;
08982 break;
08983 }
08984
08985 if (rc == TAG_IGNORED) {
08986 rc = CSimpleInOutStateSwitch::Read (stream, tag);
08987 }
08988
08989 if (rc == TAG_IGNORED) {
08990 char s[64];
08991 TagToString (s, tag);
08992 globals->logWarning->Write ("CLitInOutSwitchGauge::Read : Unknown tag %s", s);
08993 }
08994
08995 return rc;
08996 }
08997
08998
08999
09000
09001
09002
09003 CSimpleSwitch::CSimpleSwitch (void)
09004 {
09005 strcpy (bmap_art, "");
09006 bmap = NULL;
09007
09008
09009 strcpy (sfxu_wav, "");
09010 strcpy (sfxd_wav, "");
09011 sfxu_tag = sfxd_tag = 0;
09012
09013
09014 strcpy (csru_csr, "");
09015 strcpy (csrd_csr, "");
09016 csru_tag = csrd_tag = 0;
09017
09018 stat_n = 0;
09019 stat = NULL;
09020 sstr_n = 0;
09021 sstr = NULL;
09022 orie = 0;
09023 ordr = 0;
09024 indx = 0;
09025 mmnt = false;
09026 mntO = false;
09027 }
09028
09029 int CSimpleSwitch::Read (SStream *stream, Tag tag)
09030 {
09031 int rc = TAG_IGNORED;
09032
09033 switch (tag) {
09034 case 'bmap':
09035 ReadString (bmap_art, 64, stream);
09036 rc = TAG_READ;
09037 break;
09038
09039 case 'sfxi':
09040 case 'sfxd':
09041 case 'sfxl':
09042 ReadString (sfxd_wav, 64, stream);
09043 rc = TAG_READ;
09044 break;
09045
09046 case 'sfxo':
09047 case 'sfxu':
09048 case 'sfxr':
09049 ReadString (sfxu_wav, 64, stream);
09050 rc = TAG_READ;
09051 break;
09052
09053 case 'csrd':
09054 case 'csrl':
09055 ReadString (csrd_csr, 64, stream);
09056 rc = TAG_READ;
09057 break;
09058
09059 case 'csru':
09060 case 'csrr':
09061 ReadString (csru_csr, 64, stream);
09062 rc = TAG_READ;
09063 break;
09064
09065 case 'stat':
09066 {
09067 ReadInt (&stat_n, stream);
09068 if (stat_n > 16) {
09069 gtfo ("CSimpleSwitch : <stat> maximum 16 states exceeded");
09070 }
09071 stat = new int[stat_n];
09072 for (int i=0; i<stat_n; i++) {
09073 ReadInt (&stat[i], stream);
09074 }
09075 }
09076 rc = TAG_READ;
09077 break;
09078
09079 case 'sstr':
09080 {
09081 ReadInt (&sstr_n, stream);
09082 if (sstr_n > 16) {
09083 gtfo ("CSimpleSwitch : <sstr> maximum 16 states exceeded");
09084 }
09085 sstr = new char*[sstr_n];
09086 for (int i=0; i<sstr_n; i++) {
09087 sstr[i] = new char[64];
09088 ReadString (sstr[i], 64, stream);
09089 }
09090 }
09091 rc = TAG_READ;
09092 break;
09093
09094 case 'orie':
09095 ReadInt (&orie, stream);
09096 rc = TAG_READ;
09097 break;
09098
09099 case 'ordr':
09100 ReadInt (&orie, stream);
09101 rc = TAG_READ;
09102 break;
09103
09104 case 'indx':
09105 ReadInt (&indx, stream);
09106 rc = TAG_READ;
09107 break;
09108
09109 case 'mmnt':
09110 mmnt = true;
09111 rc = TAG_READ;
09112 break;
09113
09114 case 'mntO':
09115 mntO = true;
09116 rc = TAG_READ;
09117 break;
09118 }
09119
09120 if (rc == TAG_IGNORED) {
09121 rc = CGauge::Read (stream, tag);
09122 }
09123
09124 if (rc == TAG_IGNORED) {
09125 char s[64];
09126 TagToString (s, tag);
09127 globals->logWarning->Write ("CSimpleSwitch::Read : Unknown tag %s", s);
09128 }
09129
09130 return rc;
09131 }
09132
09133
09134 void CSimpleSwitch::ReadFinished (void)
09135 {
09136 CGauge::ReadFinished ();
09137
09138
09139 if (strlen (bmap_art) > 0) {
09140 bmap = new SBitmap;
09141 strcpy (bmap->bitmapName, "ART\\");
09142 strcat (bmap->bitmapName, bmap_art);
09143 LoadBitmap (bmap);
09144 }
09145
09146
09147 if (strlen (sfxu_wav) > 0) {
09148 char sfxFullname[64];
09149 strcpy (sfxFullname, "SOUND\\");
09150 strcat (sfxFullname, sfxu_wav);
09151 sfxu_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
09152 }
09153 if (strlen (sfxd_wav) > 0) {
09154 char sfxFullname[64];
09155 strcpy (sfxFullname, "SOUND\\");
09156 strcat (sfxFullname, sfxd_wav);
09157 sfxd_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
09158 }
09159
09160
09161 if (strlen (csru_csr) > 0) {
09162 csru_tag = globals->cursormgr->BindCursor (csru_csr);
09163 }
09164
09165 if (strlen (csrd_csr) > 0) {
09166 csrd_tag = globals->cursormgr->BindCursor (csrd_csr);
09167 }
09168
09169
09170 if (stat_n > 0) {
09171 if (indx < stat_n) {
09172 last_state = stat[indx];
09173 } else {
09174
09175 globals->logWarning->Write ("CSimpleSwitch: Index (%d) exceeds size of state array (%d)",
09176 indx, stat_n);
09177 }
09178 } else {
09179
09180 stat_n = 2;
09181 stat = new int[2];
09182 stat[0] = 0;
09183 stat[1] = 1;
09184 last_state = indx = 0;
09185 }
09186 }
09187
09188
09189 void CSimpleSwitch::Draw (void)
09190 {
09191
09192 mesg.id = MSG_GETDATA;
09193 mesg.user.u.datatag = 'st8t';
09194 if (SendMessage (&mesg) == MSG_PROCESSED) {
09195
09196 if (last_state != mesg.intData) {
09197 for (int i=0; i <stat_n; i++) {
09198 if (mesg.intData == stat[i]) {
09199
09200 indx = i;
09201 }
09202 }
09203 last_state = mesg.intData;
09204 }
09205 }
09206
09207
09208 if (bmap != NULL) {
09209 DrawBitmap (surf, bmap, 0, 0, indx);
09210 }
09211 }
09212
09213
09214
09215 void CSimpleSwitch::IncState (void)
09216 {
09217 bool changed = false;
09218
09219
09220 if (indx < (stat_n - 1)) {
09221
09222 indx++;
09223 changed = true;
09224 }
09225
09226
09227 if (changed) {
09228
09229 if (sfxu_tag != 0) {
09230 globals->audiomgr->PlaySfx (sfx_source, sfxu_tag);
09231 }
09232
09233
09234 mesg.id = MSG_SETDATA;
09235 mesg.intData = stat[indx];
09236 mesg.user.u.datatag = 'st8t';
09237 SendMessage (&mesg);
09238 }
09239 }
09240
09241
09242
09243 void CSimpleSwitch::DecState (void)
09244 {
09245 bool changed = false;
09246
09247
09248 if (indx > 0) {
09249
09250 indx--;
09251 changed = true;
09252 }
09253
09254
09255 if (changed) {
09256
09257 if (sfxd_tag != 0) {
09258 globals->audiomgr->PlaySfx (sfx_source, sfxd_tag);
09259 }
09260
09261
09262 mesg.id = MSG_SETDATA;
09263 mesg.intData = indx;
09264 mesg.user.u.datatag = 'st8t';
09265 SendMessage (&mesg);
09266 }
09267 }
09268
09269
09270 ECursorResult CSimpleSwitch::MouseMoved (int mouseX, int mouseY)
09271 {
09272 ECursorResult rc = CURSOR_NOT_CHANGED;
09273
09274 switch (orie) {
09275 case 0:
09276
09277 if (mouseY < (h/2)) {
09278
09279 if (csru_tag != 0) {
09280 globals->cursormgr->SetCursor (csru_tag);
09281 rc = CURSOR_WAS_CHANGED;
09282 }
09283 } else {
09284
09285 if (csrd_tag != 0) {
09286 globals->cursormgr->SetCursor (csrd_tag);
09287 rc = CURSOR_WAS_CHANGED;
09288 }
09289 }
09290 break;
09291
09292 case 1:
09293
09294 if (mouseX < (w/2)) {
09295
09296 if (csrd_tag != 0) {
09297 globals->cursormgr->SetCursor (csrd_tag);
09298 rc = CURSOR_WAS_CHANGED;
09299 }
09300 } else {
09301
09302 if (csru_tag != 0) {
09303 globals->cursormgr->SetCursor (csru_tag);
09304 rc = CURSOR_WAS_CHANGED;
09305 }
09306 }
09307 }
09308
09309
09310 if (rc == CURSOR_NOT_CHANGED) {
09311 rc = CGauge::MouseMoved (mouseX, mouseY);
09312 }
09313
09314 return rc;
09315 }
09316
09317 EClickResult CSimpleSwitch::MouseClick (int mouseX, int mouseY, int buttons)
09318 {
09319 EClickResult rc = MOUSE_TRACKING_OFF;
09320
09321 switch (orie) {
09322 case 0:
09323
09324 if (mouseY < (h/2)) {
09325
09326 IncState ();
09327 } else {
09328
09329 DecState ();
09330 }
09331 break;
09332
09333 case 1:
09334
09335 if (mouseX < (w/2)) {
09336
09337 DecState ();
09338 } else {
09339
09340 IncState ();
09341 }
09342 }
09343 return rc;
09344 }
09345
09346
09347
09348
09349
09350
09351
09352 CSimpleInOutStateSwitch::CSimpleInOutStateSwitch (void)
09353 {
09354 type = GAUGE_SIMPLE_IN_OUT;
09355 strcpy (sbmp_art, "");
09356 sbmp = NULL;
09357 onvl = 1;
09358 ofvl = 0;
09359 stat = false;
09360 strcpy (onht, "");
09361 strcpy (ofht, "");
09362 strcpy (onsf_wav, "");
09363 strcpy (ofsf_wav, "");
09364 onsf_tag = ofsf_tag = 0;
09365 strcpy (sstr_off, "");
09366 strcpy (sstr_on, "");
09367 mmnt = false;
09368 }
09369
09370 CSimpleInOutStateSwitch::~CSimpleInOutStateSwitch (void)
09371 {
09372 if (sbmp != NULL) {
09373 FreeBitmap (sbmp);
09374 delete sbmp;
09375 }
09376 }
09377
09378 int CSimpleInOutStateSwitch::Read (SStream *stream, Tag tag)
09379 {
09380 int rc = TAG_IGNORED;
09381
09382 switch (tag) {
09383 case 'sbmp':
09384 ReadString (sbmp_art, 64, stream);
09385 rc = TAG_READ;
09386 break;
09387
09388 case 'onvl':
09389 case 'in__':
09390 ReadInt (&onvl, stream);
09391 rc = TAG_READ;
09392 break;
09393
09394 case 'ofvl':
09395 case 'out_':
09396 ReadInt (&ofvl, stream);
09397 rc = TAG_READ;
09398 break;
09399
09400 case 'stat':
09401 case 'st8t':
09402 ReadInt ((int*)&stat, stream);
09403 rc = TAG_READ;
09404 break;
09405
09406 case 'onht':
09407 ReadString (onht, 64, stream);
09408 rc = TAG_READ;
09409 break;
09410
09411 case 'ofht':
09412 ReadString (ofht, 64, stream);
09413 rc = TAG_READ;
09414 break;
09415
09416 case 'onsf':
09417 case 'sfxu':
09418 ReadString (onsf_wav, 64, stream);
09419 rc = TAG_READ;
09420 break;
09421
09422 case 'ofsf':
09423 case 'sfxd':
09424 ReadString (ofsf_wav, 64, stream);
09425 rc = TAG_READ;
09426 break;
09427
09428 case 'sstr':
09429 ReadString (sstr_off, 64, stream);
09430 ReadString (sstr_on, 64, stream);
09431 rc = TAG_READ;
09432 break;
09433
09434 case 'mmnt':
09435 mmnt = true;
09436 rc = TAG_READ;
09437 break;
09438 }
09439
09440 if (rc == TAG_IGNORED) {
09441 rc = CBitmapGauge::Read (stream, tag);
09442 }
09443
09444 if (rc == TAG_IGNORED) {
09445 char s[64];
09446 TagToString (s, tag);
09447 globals->logWarning->Write ("CSimpleInOutSwitchGauge::Read : Unknown tag %s", s);
09448 }
09449
09450 return rc;
09451 }
09452
09453
09454 void CSimpleInOutStateSwitch::ReadFinished (void)
09455 {
09456 CGauge::ReadFinished ();
09457
09458
09459 if (strlen (sbmp_art) > 0) {
09460 sbmp = new SBitmap;
09461 strcpy (sbmp->bitmapName, "ART\\");
09462 strcat (sbmp->bitmapName, sbmp_art);
09463 LoadBitmap (sbmp);
09464 }
09465
09466
09467 if (strlen (onsf_wav) > 0) {
09468 char sfxFullname[64];
09469 strcpy (sfxFullname, "SOUND\\");
09470 strcat (sfxFullname, onsf_wav);
09471 onsf_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
09472 }
09473 if (strlen (ofsf_wav) > 0) {
09474 char sfxFullname[64];
09475 strcpy (sfxFullname, "SOUND\\");
09476 strcat (sfxFullname, ofsf_wav);
09477 ofsf_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
09478 }
09479 }
09480
09481 void CSimpleInOutStateSwitch::Draw (void)
09482 {
09483
09484 mesg.id = MSG_GETDATA;
09485 mesg.user.u.datatag = 'st8t';
09486 if (SendMessage (&mesg) == MSG_PROCESSED) {
09487 if (mesg.intData == onvl) {
09488
09489 stat = true;
09490 } else if (mesg.intData == ofvl) {
09491
09492 stat = false;
09493 }
09494 }
09495
09496
09497 if (sbmp != NULL) {
09498 DrawBitmap (surf, sbmp, 0, 0, stat ? 1 : 0);
09499 }
09500 }
09501
09502
09503 EClickResult CSimpleInOutStateSwitch::MouseClick (int mouseX, int mouseY, int buttons)
09504 {
09505 EClickResult rc = MOUSE_TRACKING_OFF;
09506
09507
09508 stat = !stat;
09509
09510
09511 if (stat && (onsf_tag != 0)) {
09512 globals->audiomgr->PlaySfx (sfx_source, onsf_tag);
09513 } else if (!stat && (ofsf_tag != 0)) {
09514 globals->audiomgr->PlaySfx (sfx_source, ofsf_tag);
09515 }
09516
09517
09518 mesg.id = MSG_SETDATA;
09519 mesg.intData = stat ? onvl : ofvl;
09520 mesg.user.u.datatag = 'st8t';
09521 mesg.user.u.hw = HW_SWITCH;
09522 SendMessage (&mesg);
09523
09524 return rc;
09525 }
09526
09527
09528
09529
09530
09531
09532 CBasicBatterySwitch::CBasicBatterySwitch (void)
09533 {
09534 altt = batt = 0;
09535 stateAlt = stateBatt = false;
09536
09537
09538 memset (&mesgBatt, 0, sizeof(SMessage));
09539 mesgBatt.user.u.hw = HW_SWITCH;
09540
09541 memset (&mesgAlt, 0, sizeof(SMessage));
09542 mesgAlt.user.u.hw = HW_SWITCH;
09543 }
09544
09545
09546 int CBasicBatterySwitch::Read (SStream *stream, Tag tag)
09547 {
09548 int rc = TAG_IGNORED;
09549
09550 switch (tag) {
09551 case 'altt':
09552 {
09553 Tag t;
09554 ReadTag (&t, stream);
09555 mesgAlt.group = (unsigned long) t;
09556 }
09557 rc = TAG_READ;
09558 break;
09559
09560 case 'batt':
09561 {
09562 Tag t;
09563 ReadTag (&t, stream);
09564 mesgBatt.group = (unsigned long) t;
09565 }
09566 rc = TAG_READ;
09567 break;
09568 }
09569
09570 if (rc == TAG_IGNORED) {
09571 rc = CSimpleSwitch::Read (stream, tag);
09572 }
09573
09574 if (rc == TAG_IGNORED) {
09575 char s[64];
09576 TagToString (s, tag);
09577 globals->logWarning->Write ("CBasicBatterySwitchGauge::Read : Unknown tag %s", s);
09578 }
09579
09580 return rc;
09581 }
09582
09583
09584 void CBasicBatterySwitch::Draw (void)
09585 {
09586
09587 mesgBatt.id = MSG_GETDATA;
09588 if (SendMessage (&mesgBatt) == MSG_PROCESSED) {
09589 stateBatt = (mesgBatt.intData != 0);
09590 }
09591
09592 mesgAlt.id = MSG_GETDATA;
09593 if (SendMessage (&mesgAlt) == MSG_PROCESSED) {
09594 stateAlt = (mesgAlt.intData != 0);
09595 }
09596
09597
09598
09599
09600
09601
09602 int frame = 0;
09603 if (stateAlt) frame += 1;
09604 if (stateBatt) frame += 2;
09605
09606
09607 if (bmap != NULL) {
09608 DrawBitmap (surf, bmap, 0, 0, frame);
09609 }
09610
09611 }
09612
09613
09614 EClickResult CBasicBatterySwitch::MouseClick (int mouseX, int mouseY, int buttons)
09615 {
09616 EClickResult rc = MOUSE_TRACKING_OFF;
09617
09618 if (mouseX < (w/2)) {
09619
09620 bool changed = false;
09621 if (mouseY < (h/2)) {
09622
09623 if (!stateAlt) {
09624 stateAlt = true;
09625 changed = true;
09626
09627
09628
09629 stateBatt = true;
09630 }
09631 } else {
09632
09633 if (stateAlt) {
09634 stateAlt = false;
09635 changed = true;
09636 }
09637 }
09638
09639
09640 if (changed) {
09641 if (stateAlt && (sfxu_tag != 0)) {
09642 globals->audiomgr->PlaySfx (sfx_source, sfxu_tag);
09643 } else if (!stateAlt && (sfxd_tag != 0)) {
09644 globals->audiomgr->PlaySfx (sfx_source, sfxd_tag);
09645 }
09646 }
09647
09648 } else {
09649
09650 bool changed = false;
09651 if (mouseY < (h/2)) {
09652
09653 if (!stateBatt) {
09654 stateBatt = true;
09655 changed = true;
09656 }
09657 } else {
09658
09659 if (stateBatt) {
09660 stateBatt = false;
09661 changed = true;
09662 }
09663 }
09664
09665
09666 if (changed) {
09667 if (stateBatt && (sfxu_tag != 0)) {
09668 globals->audiomgr->PlaySfx (sfx_source, sfxu_tag);
09669 } else if (!stateBatt && (sfxd_tag != 0)) {
09670 globals->audiomgr->PlaySfx (sfx_source, sfxd_tag);
09671 }
09672 }
09673 }
09674
09675
09676 mesgBatt.id = MSG_SETDATA;
09677 mesgBatt.dataType = TYPE_INT;
09678 mesgBatt.intData = stateBatt ? 1 : 0;
09679 mesgBatt.user.u.datatag = 'stat';
09680 SendMessage (&mesgBatt);
09681
09682 mesgAlt.id = MSG_SETDATA;
09683 mesgAlt.dataType = TYPE_INT;
09684 mesgAlt.intData = stateAlt ? 1 : 0;
09685 mesgAlt.user.u.datatag = 'stat';
09686 SendMessage (&mesgAlt);
09687
09688 return rc;
09689 }
09690
09691
09692
09693
09694
09695
09696
09697
09698
09699
09700
09701
09702
09703
09704
09705
09706
09707
09708 CBasicMagnetoSwitch::CBasicMagnetoSwitch (void)
09709 {
09710 }
09711
09712
09713 typedef enum {
09714 MAGNETO_SWITCH_OFF = 0,
09715 MAGNETO_SWITCH_RIGHT = 1,
09716 MAGNETO_SWITCH_LEFT = 2,
09717 MAGNETO_SWITCH_BOTH = 3,
09718 MAGNETO_SWITCH_START = 4
09719 } EMagnetoSwitch;
09720
09721 void CBasicMagnetoSwitch::Draw (void)
09722 {
09723
09724 mesg.id = MSG_GETDATA;
09725 if (SendMessage (&mesg) == MSG_PROCESSED) {
09726 indx = mesg.intData;
09727 }
09728
09729
09730 if (bmap != NULL) {
09731 DrawBitmap (surf, bmap, 0, 0, indx);
09732 }
09733 }
09734
09735
09736 EClickResult CBasicMagnetoSwitch::MouseClick (int mouseX, int mouseY, int buttons)
09737 {
09738 EClickResult rc = MOUSE_TRACKING_OFF;
09739
09740 if (buttons == MOUSE_BUTTON_LEFT) {
09741
09742 if (indx > MAGNETO_SWITCH_OFF) {
09743 indx--;
09744
09745
09746 if (sfxd_tag != 0) {
09747 globals->audiomgr->PlaySfx (sfx_source, sfxd_tag);
09748 }
09749 }
09750 } else if (buttons == MOUSE_BUTTON_RIGHT) {
09751
09752 if (indx < MAGNETO_SWITCH_START) {
09753 indx++;
09754
09755
09756 if (sfxu_tag != 0) {
09757 globals->audiomgr->PlaySfx (sfx_source, sfxu_tag);
09758 }
09759
09760
09761
09762 if (indx == MAGNETO_SWITCH_START) {
09763 rc = MOUSE_TRACKING_ON;
09764 }
09765 }
09766 }
09767
09768
09769 mesg.id = MSG_SETDATA;
09770 mesg.dataType = TYPE_INT;
09771 mesg.intData = indx;
09772 SendMessage (&mesg);
09773
09774 return rc;
09775 }
09776
09777 EClickResult CBasicMagnetoSwitch::StopClick (int mouseX, int mouseY, int buttons)
09778 {
09779
09780
09781
09782 indx = MAGNETO_SWITCH_BOTH;
09783
09784
09785 if (sfxd_tag != 0) {
09786 globals->audiomgr->PlaySfx (sfx_source, sfxd_tag);
09787 }
09788
09789
09790 mesg.id = MSG_SETDATA;
09791 mesg.dataType = TYPE_INT;
09792 mesg.intData = indx;
09793 SendMessage (&mesg);
09794
09795 return MOUSE_TRACKING_OFF;
09796 }
09797
09798
09799
09800
09801
09802
09803 CTwoStateELTGauge::CTwoStateELTGauge (void)
09804 {
09805 }
09806
09807 int CTwoStateELTGauge::Read (SStream *stream, Tag tag)
09808 {
09809 int rc = TAG_IGNORED;
09810
09811 if (rc == TAG_IGNORED) {
09812 rc = CSimpleSwitch::Read (stream, tag);
09813 }
09814
09815 if (rc == TAG_IGNORED) {
09816 char s[64];
09817 TagToString (s, tag);
09818 globals->logWarning->Write ("CTwoStateELTGauge::Read : Unknown tag %s", s);
09819 }
09820
09821 return rc;
09822 }
09823
09824
09825
09826
09827
09828
09829 CSwitchPairGauge::CSwitchPairGauge (void)
09830 {
09831 memset (&s1ms, 0, sizeof(SMessage));
09832 memset (&s2ms, 0, sizeof(SMessage));
09833 }
09834
09835 int CSwitchPairGauge::Read (SStream *stream, Tag tag)
09836 {
09837 int rc = TAG_IGNORED;
09838
09839 switch (tag) {
09840 case 's1ms':
09841 ReadMessage (&s1ms, stream);
09842 rc = TAG_READ;
09843 break;
09844
09845 case 's2ms':
09846 ReadMessage (&s2ms, stream);
09847 rc = TAG_READ;
09848 break;
09849
09850 case 's1of':
09851 ReadFrom (&s1of, stream);
09852 rc = TAG_READ;
09853 break;
09854
09855 case 's1on':
09856 ReadFrom (&s1on, stream);
09857 rc = TAG_READ;
09858 break;
09859
09860 case 's2on':
09861 ReadFrom (&s2on, stream);
09862 rc = TAG_READ;
09863 break;
09864
09865 case 's2of':
09866 ReadFrom (&s2of, stream);
09867 rc = TAG_READ;
09868 break;
09869 }
09870
09871 if (rc == TAG_IGNORED) {
09872 rc = CSimpleSwitch::Read (stream, tag);
09873 }
09874
09875 if (rc == TAG_IGNORED) {
09876 char s[64];
09877 TagToString (s, tag);
09878 globals->logWarning->Write ("CSwitchPairGauge::Read : Unknown tag %s", s);
09879 }
09880
09881 return rc;
09882 }
09883
09884 ECursorResult CSwitchPairGauge::MouseMoved (int x, int y)
09885 {
09886 ECursorResult rc = CURSOR_NOT_CHANGED;
09887
09888
09889 if (rc == CURSOR_NOT_CHANGED) rc = s1of.MouseMoved (x, y);
09890 if (rc == CURSOR_NOT_CHANGED) rc = s1on.MouseMoved (x, y);
09891 if (rc == CURSOR_NOT_CHANGED) rc = s2of.MouseMoved (x, y);
09892 if (rc == CURSOR_NOT_CHANGED) rc = s2on.MouseMoved (x, y);
09893
09894
09895 if (rc == CURSOR_NOT_CHANGED) {
09896 rc = CSimpleSwitch::MouseMoved (x, y);
09897 }
09898
09899 return rc;
09900 }
09901
09902
09903
09904
09905
09906
09907 CSimpleFloatSwitch::CSimpleFloatSwitch (void)
09908 {
09909 strcpy (bmap_art, "");
09910 strcpy (csru_csr, "");
09911 strcpy (csrd_csr, "");
09912 csru_tag = csrd_tag = 0;
09913 strcpy (sfxu_wav, "");
09914 strcpy (sfxd_wav, "");
09915 sfxu_tag = sfxd_tag = 0;
09916 stat_n = 0;
09917 stat = NULL;
09918 sstr_n = 0;
09919 sstr = NULL;
09920 mmnt = false;
09921 }
09922
09923 CSimpleFloatSwitch::~CSimpleFloatSwitch (void)
09924 {
09925 if (stat != NULL) delete[] stat;
09926 if (sstr != NULL) {
09927 for (int i=0; i<sstr_n; i++) {
09928 delete[] sstr[i];
09929 }
09930 delete[] sstr;
09931 }
09932 }
09933
09934 int CSimpleFloatSwitch::Read (SStream *stream, Tag tag)
09935 {
09936 int rc = TAG_IGNORED;
09937
09938 switch (tag) {
09939 case 'bmap':
09940 ReadString (bmap_art, 64, stream);
09941 rc = TAG_READ;
09942 break;
09943
09944 case 'csru':
09945 ReadString (csru_csr, 64, stream);
09946 rc = TAG_READ;
09947 break;
09948
09949 case 'csrd':
09950 ReadString (csrd_csr, 64, stream);
09951 rc = TAG_READ;
09952 break;
09953
09954 case 'sfxu':
09955 ReadString (sfxu_wav, 64, stream);
09956 rc = TAG_READ;
09957 break;
09958
09959 case 'sfxd':
09960 ReadString (sfxd_wav, 64, stream);
09961 rc = TAG_READ;
09962 break;
09963
09964 case 'stat':
09965 {
09966 ReadInt (&stat_n, stream);
09967 if (stat_n > 16) {
09968 gtfo ("CSimpleFloatSwitch : <stat> maximum 16 states exceeded");
09969 }
09970 stat = new float[stat_n];
09971 for (int i=0; i<stat_n; i++) {
09972 ReadFloat (&stat[i], stream);
09973 }
09974 }
09975 rc = TAG_READ;
09976 break;
09977
09978 case 'sstr':
09979 {
09980 ReadInt (&sstr_n, stream);
09981 if (sstr_n > 16) {
09982 gtfo ("CSimpleFloatSwitchGauge : <sstr> maximum 16 states exceeded");
09983 }
09984 sstr = new char*[sstr_n];
09985 for (int i=0; i<sstr_n; i++) {
09986 sstr[i] = new char[64];
09987 ReadString (sstr[i], 64, stream);
09988 }
09989 }
09990 rc = TAG_READ;
09991 break;
09992
09993 case 'mmnt':
09994 {
09995 int i;
09996 ReadInt (&i, stream);
09997 mmnt = (i != 0);
09998 }
09999 rc = TAG_READ;
10000 break;
10001 }
10002
10003 if (rc == TAG_IGNORED) {
10004 rc = CGauge::Read (stream, tag);
10005 }
10006
10007 if (rc == TAG_IGNORED) {
10008 char s[64];
10009 TagToString (s, tag);
10010 globals->logWarning->Write ("CSimpleFloatSwitch::Read : Unknown tag %s", s);
10011 }
10012
10013 return rc;
10014 }
10015
10016 void CSimpleFloatSwitch::ReadFinished (void)
10017 {
10018 CGauge::ReadFinished ();
10019
10020
10021 if (strlen (csru_csr) > 0) {
10022 csru_tag = globals->cursormgr->BindCursor (csru_csr);
10023 }
10024 if (strlen (csrd_csr) > 0) {
10025 csrd_tag = globals->cursormgr->BindCursor (csrd_csr);
10026 }
10027
10028
10029 if (strlen (sfxu_wav) > 0) {
10030 char sfxFullname[64];
10031 strcpy (sfxFullname, "SOUND\\");
10032 strcat (sfxFullname, sfxu_wav);
10033 sfxu_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
10034 }
10035 }
10036
10037
10038
10039
10040
10041
10042
10043 CDualSwitch::CDualSwitch (void)
10044 {
10045 nums = 0;
10046 orie = 0;
10047 memset (&usrl, 0, sizeof(SMessage));
10048 memset (&usrr, 0, sizeof(SMessage));
10049 mmnt = false;
10050 }
10051
10052 int CDualSwitch::Read (SStream *stream, Tag tag)
10053 {
10054 int rc = TAG_IGNORED;
10055
10056 switch (tag) {
10057 case 'nums':
10058 ReadInt (&nums, stream);
10059 rc = TAG_READ;
10060 break;
10061
10062 case 'orie':
10063 ReadInt (&orie, stream);
10064 rc = TAG_READ;
10065 break;
10066
10067 case 'usrl':
10068 ReadMessage (&usrl, stream);
10069 rc = TAG_READ;
10070 break;
10071
10072 case 'usrr':
10073 ReadMessage (&usrr, stream);
10074 rc = TAG_READ;
10075 break;
10076
10077 case 'mmnt':
10078 {
10079 int i;
10080 ReadInt (&i, stream);
10081 mmnt = (i != 0);
10082 }
10083 rc = TAG_READ;
10084 break;
10085 }
10086
10087 if (rc == TAG_IGNORED) {
10088 rc = CSimpleSwitch::Read (stream, tag);
10089 }
10090
10091 if (rc == TAG_IGNORED) {
10092 char s[64];
10093 TagToString (s, tag);
10094 globals->logWarning->Write ("CDualSwitchGauge::Read : Unknown tag %s", s);
10095 }
10096
10097 return rc;
10098 }
10099
10100
10101
10102
10103
10104
10105 CPushPullKnobGauge::CPushPullKnobGauge (void)
10106 {
10107 strcpy (bmap_art, "");
10108 memset (&mesg, 0, sizeof(SMessage));
10109 memset (&lnk1, 0, sizeof(SMessage));
10110 ytop = ybtm = 0;
10111 valu_n = 0;
10112 valu = NULL;
10113 lowv = high = 0;
10114 poll = false;
10115 }
10116
10117 CPushPullKnobGauge::~CPushPullKnobGauge (void)
10118 {
10119 if (valu != NULL) {
10120 delete[] valu;
10121 }
10122 }
10123
10124 int CPushPullKnobGauge::Read (SStream *stream, Tag tag)
10125 {
10126 int rc = TAG_IGNORED;
10127
10128 switch (tag) {
10129 case 'bmap':
10130 ReadString (bmap_art, 64, stream);
10131 rc = TAG_READ;
10132 break;
10133
10134 case 'mesg':
10135 ReadMessage (&mesg, stream);
10136 rc = TAG_READ;
10137 break;
10138
10139 case 'lnk1':
10140 ReadMessage (&lnk1, stream);
10141 rc = TAG_READ;
10142 break;
10143
10144 case 'ytop':
10145 ReadInt (&ytop, stream);
10146 rc = TAG_READ;
10147 break;
10148
10149 case 'ybtm':
10150 ReadInt (&ybtm, stream);
10151 rc = TAG_READ;
10152 break;
10153
10154 case 'valu':
10155 {
10156 ReadInt (&valu_n, stream);
10157 if (valu_n > 32) {
10158 gtfo ("CPushPullKnobGauge : <valu> maximum 32 values exceeded");
10159 }
10160 valu = new SKnobArea[valu_n];
10161 for (int i=0; i<valu_n; i++) {
10162 ReadInt (&valu[i].ytop, stream);
10163 ReadInt (&valu[i].ybtm, stream);
10164 ReadFloat (&valu[i].valu, stream);
10165 ReadString (valu[i].help, 64, stream);
10166 }
10167 }
10168 rc = TAG_READ;
10169 break;
10170
10171 case 'lowv':
10172 ReadFloat (&lowv, stream);
10173 rc = TAG_READ;
10174 break;
10175
10176 case 'high':
10177 ReadFloat (&high, stream);
10178 rc = TAG_READ;
10179 break;
10180
10181 case 'poll':
10182 {
10183 int i;
10184 ReadInt (&i, stream);
10185 poll = (i != 0);
10186 }
10187 rc = TAG_READ;
10188 break;
10189 }
10190
10191 if (rc == TAG_IGNORED) {
10192 rc = CGauge::Read (stream, tag);
10193 }
10194
10195 if (rc == TAG_IGNORED) {
10196 char s[64];
10197 TagToString (s, tag);
10198 globals->logWarning->Write ("CPushPullKnobGauge::Read : Unknown tag %s", s);
10199 }
10200
10201 return rc;
10202 }
10203
10204
10205
10206
10207
10208
10209 CPrimerKnobGauge::CPrimerKnobGauge (void)
10210 {
10211 }
10212
10213 int CPrimerKnobGauge::Read (SStream *stream, Tag tag)
10214 {
10215 int rc = TAG_IGNORED;
10216
10217 if (rc == TAG_IGNORED) {
10218 rc = CPushPullKnobGauge::Read (stream, tag);
10219 }
10220
10221 if (rc == TAG_IGNORED) {
10222 char s[64];
10223 TagToString (s, tag);
10224 globals->logWarning->Write ("CPrimerKnobGauge::Read : Unknown tag %s", s);
10225 }
10226
10227 return rc;
10228
10229 }
10230
10231
10232
10233
10234
10235 CFlapsSwitchGauge::CFlapsSwitchGauge (void)
10236 {
10237 }
10238
10239 int CFlapsSwitchGauge::Read (SStream *stream, Tag tag)
10240 {
10241 int rc = TAG_IGNORED;
10242
10243 if (rc == TAG_IGNORED) {
10244 rc = CPushPullKnobGauge::Read (stream, tag);
10245 }
10246
10247 if (rc == TAG_IGNORED) {
10248 char s[64];
10249 TagToString (s, tag);
10250 globals->logWarning->Write ("CFlapsSwitchGauge::Read : Unknown tag %s", s);
10251 }
10252
10253 return rc;
10254 }
10255
10256
10257
10258
10259
10260
10261 CLitLandingGearKnobGauge::CLitLandingGearKnobGauge (void)
10262 {
10263 }
10264
10265 int CLitLandingGearKnobGauge::Read (SStream *stream, Tag tag)
10266 {
10267 int rc = TAG_IGNORED;
10268
10269 if (rc == TAG_IGNORED) {
10270 rc = CPushPullKnobGauge::Read (stream, tag);
10271 }
10272
10273 if (rc == TAG_IGNORED) {
10274 char s[64];
10275 TagToString (s, tag);
10276 globals->logWarning->Write ("CLitLandingGearKnobGauge::Read : Unknown tag %s", s);
10277 }
10278
10279 return rc;
10280 }
10281
10282
10283
10284
10285
10286
10287 CMixtureKnobGauge::CMixtureKnobGauge (void)
10288 {
10289 }
10290
10291 int CMixtureKnobGauge::Read (SStream *stream, Tag tag)
10292 {
10293 int rc = TAG_IGNORED;
10294
10295 if (rc == TAG_IGNORED) {
10296 rc = CPushPullKnobGauge::Read (stream, tag);
10297 }
10298
10299 if (rc == TAG_IGNORED) {
10300 char s[64];
10301 TagToString (s, tag);
10302 globals->logWarning->Write ("CMixtureKnobGauge::Read : Unknown tag %s", s);
10303 }
10304
10305 return rc;
10306 }
10307
10308
10309
10310
10311
10312
10313 CReversibleThrottleKnobGauge::CReversibleThrottleKnobGauge (void)
10314 {
10315 memset (&rvsr, 0, sizeof(SMessage));
10316 strcpy (rbmp_art, "");
10317 rtop = rbtm = 0;
10318 }
10319
10320 int CReversibleThrottleKnobGauge::Read (SStream *stream, Tag tag)
10321 {
10322 int rc = TAG_IGNORED;
10323
10324 switch (tag) {
10325 case 'rvsr':
10326 ReadMessage (&rvsr, stream);
10327 rc = TAG_READ;
10328 break;
10329
10330 case 'rbmp':
10331 ReadString (rbmp_art, 64, stream);
10332 rc = TAG_READ;
10333 break;
10334
10335 case 'rtop':
10336 ReadInt (&rtop, stream);
10337 rc = TAG_READ;
10338 break;
10339
10340 case 'rbtm':
10341 ReadInt (&rbtm, stream);
10342 rc = TAG_READ;
10343 break;
10344 }
10345
10346 if (rc == TAG_IGNORED) {
10347 rc = CPushPullKnobGauge::Read (stream, tag);
10348 }
10349
10350 if (rc == TAG_IGNORED) {
10351 char s[64];
10352 TagToString (s, tag);
10353 globals->logWarning->Write ("CReversibleThrottleKnobGauge::Read : Unknown tag %s", s);
10354 }
10355
10356 return rc;
10357 }
10358
10359
10360
10361
10362
10363
10364 CDualKnobGauge::CDualKnobGauge (void)
10365 {
10366 memset (&imsg, 0, sizeof(SMessage));
10367 memset (&omsg, 0, sizeof(SMessage));
10368 iinc = idec = oinc = odec = 0;
10369 }
10370
10371 int CDualKnobGauge::Read (SStream *stream, Tag tag)
10372 {
10373 int rc = TAG_IGNORED;
10374
10375 switch (tag) {
10376 case 'imsg':
10377 ReadMessage (&imsg, stream);
10378 rc = TAG_READ;
10379 break;
10380
10381 case 'usri':
10382 {
10383
10384 char s[64];
10385 ReadString (s, 64, stream);
10386
10387
10388 }
10389 rc = TAG_READ;
10390 break;
10391
10392 case 'igrp':
10393 {
10394
10395 Tag tag;
10396 ReadTag (&tag, stream);
10397 imsg.group = tag;
10398 }
10399 rc = TAG_READ;
10400 break;
10401
10402 case 'omsg':
10403 ReadMessage (&omsg, stream);
10404 rc = TAG_READ;
10405 break;
10406
10407 case 'usro':
10408 {
10409
10410 char s[64];
10411 ReadString (s, 64, stream);
10412
10413
10414 }
10415 rc = TAG_READ;
10416 break;
10417
10418 case 'ogrp':
10419 {
10420
10421 Tag tag;
10422 ReadTag (&tag, stream);
10423 omsg.group = tag;
10424 }
10425 rc = TAG_READ;
10426 break;
10427
10428 case 'iinc':
10429 ReadFloat (&iinc, stream);
10430 rc = TAG_READ;
10431 break;
10432
10433 case 'idec':
10434 ReadFloat (&idec, stream);
10435 rc = TAG_READ;
10436 break;
10437
10438 case 'oinc':
10439 ReadFloat (&oinc, stream);
10440 rc = TAG_READ;
10441 break;
10442
10443 case 'odec':
10444 ReadFloat (&odec, stream);
10445 rc = TAG_READ;
10446 break;
10447
10448 case 'inca':
10449 ReadFrom (&inca, stream);
10450 rc = TAG_READ;
10451 break;
10452
10453 case 'ouca':
10454 ReadFrom (&ouca, stream);
10455 rc = TAG_READ;
10456 break;
10457 }
10458
10459 if (rc == TAG_IGNORED) {
10460 rc = CGauge::Read (stream, tag);
10461 }
10462
10463 if (rc == TAG_IGNORED) {
10464 char s[64];
10465 TagToString (s, tag);
10466 globals->logWarning->Write ("CDualKnobGauge::Read : Unknown tag %s", s);
10467 }
10468
10469 return rc;
10470 }
10471
10472 ECursorResult CDualKnobGauge::MouseMoved (int x, int y)
10473 {
10474 ECursorResult rc = CURSOR_NOT_CHANGED;
10475
10476
10477 if (rc == CURSOR_NOT_CHANGED) rc = inca.MouseMoved (x, y);
10478 if (rc == CURSOR_NOT_CHANGED) rc = ouca.MouseMoved (x, y);
10479
10480
10481 if (rc == CURSOR_NOT_CHANGED) {
10482 rc = CGauge::MouseMoved (x, y);
10483 }
10484
10485 return rc;
10486 }
10487
10488
10489
10490
10491
10492
10493 CFlyhawkLightKnobGauge::CFlyhawkLightKnobGauge (void)
10494 {
10495 }
10496
10497 int CFlyhawkLightKnobGauge::Read (SStream *stream, Tag tag)
10498 {
10499 int rc = TAG_IGNORED;
10500
10501 if (rc == TAG_IGNORED) {
10502 rc = CDualKnobGauge::Read (stream, tag);
10503 }
10504
10505 if (rc == TAG_IGNORED) {
10506 char s[64];
10507 TagToString (s, tag);
10508 globals->logWarning->Write ("CFlyhawkLightKnobGauge::Read : Unknown tag %s", s);
10509 }
10510
10511 return rc;
10512 }
10513
10514
10515
10516
10517
10518
10519 CTurnKnobGauge::CTurnKnobGauge (void)
10520 {
10521 strcpy (bmap_art, "");
10522 incr = decr = 0;
10523 }
10524
10525 int CTurnKnobGauge::Read (SStream *stream, Tag tag)
10526 {
10527 int rc = TAG_IGNORED;
10528
10529 switch (tag) {
10530 case 'bmap':
10531 ReadString (bmap_art, 64, stream);
10532 rc = TAG_READ;
10533 break;
10534
10535 case 'incr':
10536 case 'rght':
10537 ReadFloat (&incr, stream);
10538 rc = TAG_READ;
10539 break;
10540
10541 case 'decr':
10542 case 'left':
10543 ReadFloat (&decr, stream);
10544 rc = TAG_READ;
10545 break;
10546 }
10547
10548 if (rc == TAG_IGNORED) {
10549 rc = CGauge::Read (stream, tag);
10550 }
10551
10552 if (rc == TAG_IGNORED) {
10553 char s[64];
10554 TagToString (s, tag);
10555 globals->logWarning->Write ("CTurnKnobGauge::Read : Unknown tag %s", s);
10556 }
10557
10558 return rc;
10559 }
10560
10561
10562
10563
10564
10565
10566 CCoveredSwitch::CCoveredSwitch (void)
10567 {
10568 }
10569
10570 int CCoveredSwitch::Read (SStream *stream, Tag tag)
10571 {
10572 int rc = TAG_IGNORED;
10573
10574 if (rc == TAG_IGNORED) {
10575 rc = CSimpleSwitch::Read (stream, tag);
10576 }
10577
10578 if (rc == TAG_IGNORED) {
10579 char s[64];
10580 TagToString (s, tag);
10581 globals->logWarning->Write ("CCoveredSwitch::Read : Unknown tag %s", s);
10582 }
10583
10584 return rc;
10585 }
10586
10587
10588
10589
10590
10591
10592 CCoveredLightButtonGauge::CCoveredLightButtonGauge (void)
10593 {
10594 strcpy (lbmp_art, "");
10595 memset (&lmsg, 0, sizeof(SMessage));
10596 }
10597
10598 int CCoveredLightButtonGauge::Read (SStream *stream, Tag tag)
10599 {
10600 int rc = TAG_IGNORED;
10601
10602 switch (tag) {
10603 case 'lbmp':
10604 ReadString (lbmp_art, 64, stream);
10605 rc = TAG_READ;
10606 break;
10607
10608 case 'lmsg':
10609 ReadMessage (&lmsg, stream);
10610 rc = TAG_READ;
10611 break;
10612 }
10613
10614 if (rc == TAG_IGNORED) {
10615 rc = CCoveredSwitch::Read (stream, tag);
10616 }
10617
10618 if (rc == TAG_IGNORED) {
10619 char s[64];
10620 TagToString (s, tag);
10621 globals->logWarning->Write ("CCoveredLightButtonGauge::Read : Unknown tag %s", s);
10622 }
10623
10624 return rc;
10625 }
10626
10627
10628
10629
10630
10631
10632 CVerticalSliderGauge::CVerticalSliderGauge (void)
10633 {
10634 }
10635
10636 int CVerticalSliderGauge::Read (SStream *stream, Tag tag)
10637 {
10638 int rc = TAG_IGNORED;
10639
10640 if (rc == TAG_IGNORED) {
10641 rc = CGauge::Read (stream, tag);
10642 }
10643
10644 if (rc == TAG_IGNORED) {
10645 char s[64];
10646 TagToString (s, tag);
10647 globals->logWarning->Write ("CVerticalSliderGauge::Read : Unknown tag %s", s);
10648 }
10649
10650 return rc;
10651 }
10652
10653
10654
10655
10656
10657
10658 CTrimWheelGauge::CTrimWheelGauge (void)
10659 {
10660 strcpy (bmap_art, "");
10661 }
10662
10663 int CTrimWheelGauge::Read (SStream *stream, Tag tag)
10664 {
10665 int rc = TAG_IGNORED;
10666
10667 switch (tag) {
10668 case 'bmap':
10669 ReadString (bmap_art, 64, stream);
10670 rc = TAG_READ;
10671 break;
10672
10673 case 'down':
10674 case 'left':
10675 ReadFrom (&down, stream);
10676 rc = TAG_READ;
10677 break;
10678
10679 case 'up ':
10680 case 'rght':
10681 ReadFrom (&up, stream);
10682 rc = TAG_READ;
10683 break;
10684 }
10685
10686 if (rc == TAG_IGNORED) {
10687 rc = CGauge::Read (stream, tag);
10688 }
10689
10690 if (rc == TAG_IGNORED) {
10691 char s[64];
10692 TagToString (s, tag);
10693 globals->logWarning->Write ("CTrimWheelGauge::Read : Unknown tag %s", s);
10694 }
10695
10696 return rc;
10697 }
10698
10699 ECursorResult CTrimWheelGauge::MouseMoved (int x, int y)
10700 {
10701 ECursorResult rc = CURSOR_NOT_CHANGED;
10702
10703
10704 if (rc == CURSOR_NOT_CHANGED) rc = down.MouseMoved (x, y);
10705 if (rc == CURSOR_NOT_CHANGED) rc = up.MouseMoved (x, y);
10706
10707
10708 if (rc == CURSOR_NOT_CHANGED) {
10709 rc = CGauge::MouseMoved (x, y);
10710 }
10711
10712 return rc;
10713 }
10714
10715
10716
10717
10718
10719
10720 CTrimWheelIndicatorGauge::CTrimWheelIndicatorGauge (void)
10721 {
10722 }
10723
10724 int CTrimWheelIndicatorGauge::Read (SStream *stream, Tag tag)
10725 {
10726 int rc = TAG_IGNORED;
10727
10728 if (rc == TAG_IGNORED) {
10729 rc = CTrimWheelGauge::Read (stream, tag);
10730 }
10731
10732 if (rc == TAG_IGNORED) {
10733 char s[64];
10734 TagToString (s, tag);
10735 globals->logWarning->Write ("CTrimWheelIndicatorGauge::Read : Unknown tag %s", s);
10736 }
10737
10738 return rc;
10739 }
10740
10741
10742
10743
10744
10745
10746 CIndicatorGauge::CIndicatorGauge (void)
10747 {
10748 strcpy (bmap_art, "");
10749 lval = hval = 0;
10750 }
10751
10752 int CIndicatorGauge::Read (SStream *stream, Tag tag)
10753 {
10754 int rc = TAG_IGNORED;
10755
10756 switch (tag) {
10757 case 'bmap':
10758 ReadString (bmap_art, 64, stream);
10759 rc = TAG_READ;
10760 break;
10761
10762 case 'lval':
10763 ReadFloat (&lval, stream);
10764 rc = TAG_READ;
10765 break;
10766
10767 case 'hval':
10768 ReadFloat (&hval, stream);
10769 rc = TAG_READ;
10770 break;
10771 }
10772
10773 if (rc == TAG_IGNORED) {
10774 rc = CGauge::Read (stream, tag);
10775 }
10776
10777 if (rc == TAG_IGNORED) {
10778 char s[64];
10779 TagToString (s, tag);
10780 globals->logWarning->Write ("CIndicatorGauge::Read : Unknown tag %s", s);
10781 }
10782
10783 return rc;
10784 }
10785
10786
10787
10788
10789
10790
10791 CFlapsIndicatorGauge::CFlapsIndicatorGauge (void)
10792 {
10793 }
10794
10795 int CFlapsIndicatorGauge::Read (SStream *stream, Tag tag)
10796 {
10797 int rc = TAG_IGNORED;
10798
10799 if (rc == TAG_IGNORED) {
10800 rc = CIndicatorGauge::Read (stream, tag);
10801 }
10802
10803 if (rc == TAG_IGNORED) {
10804 char s[64];
10805 TagToString (s, tag);
10806 globals->logWarning->Write ("CFlapsIndicatorGauge::Read : Unknown tag %s", s);
10807 }
10808
10809 return rc;
10810 }
10811
10812
10813
10814
10815
10816
10817 CPushButtonGauge::CPushButtonGauge (void)
10818 {
10819 strcpy (bmap_art, "");
10820 strcpy (curs_csr, "");
10821 mmnt = false;
10822 }
10823
10824 int CPushButtonGauge::Read (SStream *stream, Tag tag)
10825 {
10826 int rc = TAG_IGNORED;
10827
10828 switch (tag) {
10829 case 'bmap':
10830 ReadString (bmap_art, 64, stream);
10831 rc = TAG_READ;
10832 break;
10833
10834 case 'curs':
10835 ReadString (curs_csr, 64, stream);
10836 rc = TAG_READ;
10837 break;
10838
10839 case 'mmnt':
10840 mmnt = true;
10841 rc = TAG_READ;
10842 break;
10843 }
10844
10845 if (rc == TAG_IGNORED) {
10846 rc = CGauge::Read (stream, tag);
10847 }
10848
10849 if (rc == TAG_IGNORED) {
10850 char s[64];
10851 TagToString (s, tag);
10852 globals->logWarning->Write ("CPushButtonGauge::Read : Unknown tag %s", s);
10853 }
10854
10855 return rc;
10856 }
10857
10858
10859
10860
10861
10862
10863 CLightButtonGauge::CLightButtonGauge (void)
10864 {
10865 memset (&lmsg, 0, sizeof(SMessage));
10866 stat_off = stat_on = 0;
10867 strcpy (sstr_off, "");
10868 strcpy (sstr_on, "");
10869 }
10870
10871 int CLightButtonGauge::Read (SStream *stream, Tag tag)
10872 {
10873 int rc = TAG_IGNORED;
10874
10875 switch (tag) {
10876 case 'lmsg':
10877 ReadMessage (&lmsg, stream);
10878 rc = TAG_READ;
10879 break;
10880
10881 case 'stat':
10882 ReadInt (&stat_off, stream);
10883 ReadInt (&stat_on, stream);
10884 rc = TAG_READ;
10885 break;
10886
10887 case 'sstr':
10888 ReadString (sstr_off, 64, stream);
10889 ReadString (sstr_on, 64, stream);
10890 rc = TAG_READ;
10891 break;
10892 }
10893
10894 if (rc == TAG_IGNORED) {
10895 rc = CPushButtonGauge::Read (stream, tag);
10896 }
10897
10898 if (rc == TAG_IGNORED) {
10899 char s[64];
10900 TagToString (s, tag);
10901 globals->logWarning->Write ("CLightButtonGauge::Read : Unknown tag %s", s);
10902 }
10903
10904 return rc;
10905 }
10906
10907
10908
10909
10910
10911
10912 CTurnSwitchGauge::CTurnSwitchGauge (void)
10913 {
10914 }
10915
10916 int CTurnSwitchGauge::Read (SStream *stream, Tag tag)
10917 {
10918 int rc = TAG_IGNORED;
10919
10920 if (rc == TAG_IGNORED) {
10921 rc = CSimpleSwitch::Read (stream, tag);
10922 }
10923
10924 if (rc == TAG_IGNORED) {
10925 char s[64];
10926 TagToString (s, tag);
10927 globals->logWarning->Write ("CTurnSwitchGauge::Read : Unknown tag %s", s);
10928 }
10929
10930 return rc;
10931 }
10932
10933
10934
10935
10936
10937
10938 CMasterCautionWarningButtonGauge::CMasterCautionWarningButtonGauge (void)
10939 {
10940 strcpy (bmap_art, "");
10941 strcpy (sfx_wav, "");
10942 sfx_tag = 0;
10943 memset (&smsg, 0, sizeof(SMessage));
10944 memset (&lmsg, 0, sizeof(SMessage));
10945 }
10946
10947 int CMasterCautionWarningButtonGauge::Read (SStream *stream, Tag tag)
10948 {
10949 int rc = TAG_IGNORED;
10950
10951 switch (tag) {
10952 case 'bmap':
10953 ReadString (bmap_art, 64, stream);
10954 rc = TAG_READ;
10955 break;
10956
10957 case 'sfx_':
10958 ReadString (sfx_wav, 64, stream);
10959 rc = TAG_READ;
10960 break;
10961
10962 case 'smsg':
10963 case 'swch':
10964 ReadMessage (&smsg, stream);
10965 rc = TAG_READ;
10966 break;
10967
10968 case 'lmsg':
10969 ReadMessage (&lmsg, stream);
10970 rc = TAG_READ;
10971 break;
10972 }
10973
10974 if (rc == TAG_IGNORED) {
10975 rc = CGauge::Read (stream, tag);
10976 }
10977
10978 if (rc == TAG_IGNORED) {
10979 char s[64];
10980 TagToString (s, tag);
10981 globals->logWarning->Write ("CMasterCautionWarningButtonGauge::Read : Unknown tag %s", s);
10982 }
10983
10984 return rc;
10985 }
10986
10987 void CMasterCautionWarningButtonGauge::ReadFinished (void)
10988 {
10989 CGauge::ReadFinished ();
10990
10991
10992 if (strlen (sfx_wav) > 0) {
10993 char sfxFullname[64];
10994 strcpy (sfxFullname, "SOUND\\");
10995 strcat (sfxFullname, sfx_wav);
10996 sfx_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
10997 }
10998 }
10999
11000
11001
11002
11003
11004
11005 CKAFireExtinguisherButton::CKAFireExtinguisherButton (void)
11006 {
11007 strcpy (fire.art, "");
11008 fire.x = fire.y = 0;
11009 strcpy (ok.art, "");
11010 ok.x = ok.y = 0;
11011 strcpy (dsch.art, "");
11012 dsch.x = dsch.y = 0;
11013 strcpy (sfx_wav, "");
11014 sfx_tag = 0;
11015 strcpy (curs_csr, "");
11016 curs_tag = 0;
11017 }
11018
11019 int CKAFireExtinguisherButton::Read (SStream *stream, Tag tag)
11020 {
11021 int rc = TAG_IGNORED;
11022
11023 switch (tag) {
11024 case 'd___':
11025 ReadString (dsch.art, 64, stream);
11026 ReadInt (&dsch.x, stream);
11027 ReadInt (&dsch.y, stream);
11028 rc = TAG_READ;
11029 break;
11030
11031 case 'ok__':
11032 ReadString (ok.art, 64, stream);
11033 ReadInt (&ok.x, stream);
11034 ReadInt (&ok.y, stream);
11035 rc = TAG_READ;
11036 break;
11037
11038 case 'fire':
11039 ReadString (fire.art, 64, stream);
11040 ReadInt (&fire.x, stream);
11041 ReadInt (&fire.y, stream);
11042 rc = TAG_READ;
11043 break;
11044
11045 case 'sfx_':
11046 ReadString (sfx_wav, 64, stream);
11047 rc = TAG_READ;
11048 break;
11049
11050 case 'curs':
11051 ReadString (curs_csr, 64, stream);
11052 rc = TAG_READ;
11053 break;
11054 }
11055
11056 if (rc == TAG_IGNORED) {
11057 rc = CGauge::Read (stream, tag);
11058 }
11059
11060 if (rc == TAG_IGNORED) {
11061 char s[64];
11062 TagToString (s, tag);
11063 globals->logWarning->Write ("CKAFireExtinguisherButton::Read : Unknown tag %s", s);
11064 }
11065
11066 return rc;
11067 }
11068
11069 void CKAFireExtinguisherButton::ReadFinished (void)
11070 {
11071 CGauge::ReadFinished ();
11072
11073
11074 if (strlen (curs_csr) > 0) {
11075 curs_tag = globals->cursormgr->BindCursor (curs_csr);
11076 }
11077
11078
11079 if (strlen (sfx_wav) > 0) {
11080 char sfxFullname[64];
11081 strcpy (sfxFullname, "SOUND\\");
11082 strcat (sfxFullname, sfx_wav);
11083 sfx_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
11084 }
11085 }
11086
11087
11088
11089
11090
11091
11092 CWalkerAPPanel::CWalkerAPPanel (void)
11093 {
11094 strcpy (enga_yd_art, "");
11095 strcpy (enga_ap_art, "");
11096 strcpy (knob_bnk_art, "");
11097 strcpy (knob_trm_art, "");
11098 }
11099
11100 int CWalkerAPPanel::Read (SStream *stream, Tag tag)
11101 {
11102 int rc = TAG_IGNORED;
11103
11104 switch (tag) {
11105 case 'left':
11106 ReadFrom (&left, stream);
11107 rc = TAG_READ;
11108 break;
11109
11110 case 'rght':
11111 ReadFrom (&rght, stream);
11112 rc = TAG_READ;
11113 break;
11114
11115 case 'up__':
11116 ReadFrom (&up, stream);
11117 rc = TAG_READ;
11118 break;
11119
11120 case 'down':
11121 ReadFrom (&down, stream);
11122 rc = TAG_READ;
11123 break;
11124
11125 case 'xfer':
11126 ReadFrom (&xfer, stream);
11127 rc = TAG_READ;
11128 break;
11129
11130 case 'turb':
11131 ReadFrom (&turb, stream);
11132 rc = TAG_READ;
11133 break;
11134
11135 case 'ydon':
11136 ReadFrom (&ydon, stream);
11137 rc = TAG_READ;
11138 break;
11139
11140 case 'ydof':
11141 ReadFrom (&ydof, stream);
11142 rc = TAG_READ;
11143 break;
11144
11145 case 'apon':
11146 ReadFrom (&apon, stream);
11147 rc = TAG_READ;
11148 break;
11149
11150 case 'apof':
11151 ReadFrom (&apof, stream);
11152 rc = TAG_READ;
11153 break;
11154
11155 case 'enga':
11156 ReadString (enga_yd_art, 64, stream);
11157 ReadString (enga_ap_art, 64, stream);
11158 rc = TAG_READ;
11159 break;
11160
11161 case 'knob':
11162 ReadString (knob_bnk_art, 64, stream);
11163 ReadString (knob_trm_art, 64, stream);
11164 rc = TAG_READ;
11165 break;
11166 }
11167
11168 if (rc == TAG_IGNORED) {
11169 rc = CGauge::Read (stream, tag);
11170 }
11171
11172 if (rc == TAG_IGNORED) {
11173 char s[64];
11174 TagToString (s, tag);
11175 globals->logWarning->Write ("CWalkerAPPanel::Read : Unknown tag %s", s);
11176 }
11177
11178 return rc;
11179 }
11180
11181
11182
11183
11184
11185
11186 CWalkerFirePanel::CWalkerFirePanel (void)
11187 {
11188 }
11189
11190 int CWalkerFirePanel::Read (SStream *stream, Tag tag)
11191 {
11192 int rc = TAG_IGNORED;
11193
11194 switch (tag) {
11195 case 'fir1':
11196 ReadMessage (&fir1, stream);
11197 rc = TAG_READ;
11198 break;
11199
11200 case 'fir2':
11201 ReadMessage (&fir2, stream);
11202 rc = TAG_READ;
11203 break;
11204
11205 case 'ext1':
11206 ReadFrom (&ext1, stream);
11207 rc = TAG_READ;
11208 break;
11209
11210 case 'ext2':
11211 ReadFrom (&ext2, stream);
11212 rc = TAG_READ;
11213 break;
11214
11215 case 'bel1':
11216 ReadFrom (&bel1, stream);
11217 rc = TAG_READ;
11218 break;
11219
11220 case 'bel2':
11221 ReadFrom (&bel2, stream);
11222 rc = TAG_READ;
11223 break;
11224
11225 case 'ann1':
11226 ReadFrom (&ann1, stream);
11227 rc = TAG_READ;
11228 break;
11229
11230 case 'ann2':
11231 ReadFrom (&ann2, stream);
11232 rc = TAG_READ;
11233 break;
11234
11235 case 'ef1_':
11236 ReadFrom (&ef1, stream);
11237 rc = TAG_READ;
11238 break;
11239
11240 case 'ef2_':
11241 ReadFrom (&ef2, stream);
11242 rc = TAG_READ;
11243 break;
11244 }
11245
11246 if (rc == TAG_IGNORED) {
11247 rc = CGauge::Read (stream, tag);
11248 }
11249
11250 if (rc == TAG_IGNORED) {
11251 char s[64];
11252 TagToString (s, tag);
11253 globals->logWarning->Write ("CWalkerFirePanel::Read : Unknown tag %s", s);
11254 }
11255
11256 return rc;
11257 }
11258
11259
11260
11261
11262
11263
11264 CLightSwitchSetGauge::CLightSwitchSetGauge (void)
11265 {
11266 memset (&lmsg, 0, sizeof(SMessage));
11267 }
11268
11269 int CLightSwitchSetGauge::Read (SStream *stream, Tag tag)
11270 {
11271 int rc = TAG_IGNORED;
11272
11273 switch (tag) {
11274 case 'lmsg':
11275 ReadMessage (&lmsg, stream);
11276 rc = TAG_READ;
11277 break;
11278 }
11279
11280 if (rc == TAG_IGNORED) {
11281 rc = CBitmapGauge::Read (stream, tag);
11282 }
11283
11284 if (rc == TAG_IGNORED) {
11285 char s[64];
11286 TagToString (s, tag);
11287 globals->logWarning->Write ("CLightSwitchSetGauge::Read : Unknown tag %s", s);
11288 }
11289
11290 return rc;
11291 }
11292
11293
11294
11295
11296
11297
11298 CRockerSwitch::CRockerSwitch (void)
11299 {
11300 memset (&msg1, 0, sizeof(SMessage));
11301 memset (&msg2, 0, sizeof(SMessage));
11302 strcpy (sfx1_wav, "");
11303 strcpy (sfx2_wav, "");
11304 sfx1_tag = sfx2_tag = 0;
11305 }
11306
11307 int CRockerSwitch::Read (SStream *stream, Tag tag)
11308 {
11309 int rc = TAG_IGNORED;
11310
11311 switch (tag) {
11312 case 'one_':
11313 ReadFrom (&one, stream);
11314 rc = TAG_READ;
11315 break;
11316
11317 case 'two_':
11318 ReadFrom (&two, stream);
11319 rc = TAG_READ;
11320 break;
11321
11322 case 'msg1':
11323 ReadMessage (&msg1, stream);
11324 rc = TAG_READ;
11325 break;
11326
11327 case 'msg2':
11328 ReadMessage (&msg2, stream);
11329 rc = TAG_READ;
11330 break;
11331
11332 case 'sfx1':
11333 ReadString (sfx1_wav, 64, stream);
11334 rc = TAG_READ;
11335 break;
11336
11337 case 'sfx2':
11338 ReadString (sfx2_wav, 64, stream);
11339 rc = TAG_READ;
11340 break;
11341 }
11342
11343 if (rc == TAG_IGNORED) {
11344 rc = CSimpleSwitch::Read (stream, tag);
11345 }
11346
11347 if (rc == TAG_IGNORED) {
11348 char s[64];
11349 TagToString (s, tag);
11350 globals->logWarning->Write ("CRockerSwitch::Read : Unknown tag %s", s);
11351 }
11352
11353 return rc;
11354 }
11355
11356 void CRockerSwitch::ReadFinished (void)
11357 {
11358 CGauge::ReadFinished ();
11359
11360
11361 if (strlen (sfx1_wav) > 0) {
11362 char sfxFullname[64];
11363 strcpy (sfxFullname, "SOUND\\");
11364 strcat (sfxFullname, sfx1_wav);
11365 sfx1_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
11366 }
11367 if (strlen (sfx2_wav) > 0) {
11368 char sfxFullname[64];
11369 strcpy (sfxFullname, "SOUND\\");
11370 strcat (sfxFullname, sfx2_wav);
11371 sfx2_tag = globals->audiomgr->CreateSfx (&globals->pfs, sfxFullname);
11372 }
11373 }
11374
11375 ECursorResult CRockerSwitch::MouseMoved (int x, int y)
11376 {
11377 ECursorResult rc = CURSOR_NOT_CHANGED;
11378
11379
11380 if (rc == CURSOR_NOT_CHANGED) rc = one.MouseMoved (x, y);
11381 if (rc == CURSOR_NOT_CHANGED) rc = two.MouseMoved (x, y);
11382
11383
11384 if (rc == CURSOR_NOT_CHANGED) {
11385 rc = CSimpleSwitch::MouseMoved (x, y);
11386 }
11387
11388 return rc;
11389 }