diff options
Diffstat (limited to 'app/bin/dcar.c')
| -rw-r--r-- | app/bin/dcar.c | 97 |
1 files changed, 84 insertions, 13 deletions
diff --git a/app/bin/dcar.c b/app/bin/dcar.c index 11a5a1e..cab29e7 100644 --- a/app/bin/dcar.c +++ b/app/bin/dcar.c @@ -35,6 +35,7 @@ static int log_carList; static int log_carInvList; static int log_carDlgState; static int log_carDlgList; +static int log_carDlgDims; //static paramFloatRange_t r0_99999 = { 0, 99999, 80 }; static paramFloatRange_t r0d001_99999 = { 0.001, 99999, 80 }; @@ -1178,6 +1179,7 @@ static BOOL_T CarPartWrite( BOOL_T rc = TRUE; carPartParent_p parentP=partP->parent; tabString_t tabs[7]; + long longCenterOffset = (long)(partP->dim.truckCenterOffset*1000); SetCLocale(); @@ -1191,8 +1193,9 @@ static BOOL_T CarPartWrite( tabs[T_NUMBER].len, tabs[T_NUMBER].ptr ); rc &= fprintf( f, "CARPART %s \"%s\"", GetScaleName(partP->parent->scale), PutTitle(message) )>0; - rc &= fprintf( f, " %ld %ld %0.3f %0.3f 0 0 %0.3f %0.3f %ld\n", + rc &= fprintf( f, " %ld %ld %0.3f %0.3f 0 %ld %0.3f %0.3f %ld\n", partP->options, partP->type, partP->dim.carLength, partP->dim.carWidth, + longCenterOffset, partP->dim.truckCenter, partP->dim.coupledLength, wDrawGetRGB(partP->color) )>0; SetUserLocale(); @@ -1643,6 +1646,7 @@ static void CarItemHotbarUpdate( } carItemInx = (wIndex_t)VP2L(wListGetItemContext( (wList_p) pg->paramPtr[inx].control, carItemInx )); + CHECK( carItemInx < carItemHotbar_da.cnt ); item = carItemHotbar(carItemInx); if ( item != NULL ) { currCarItemPtr = item; @@ -1787,6 +1791,7 @@ static char * CarItemHotbarProc( char * cp; wWinPix_t w, h; + CHECK( carItemInx < carItemHotbar_da.cnt ); item = carItemHotbar(carItemInx); if ( item == NULL ) { return NULL; @@ -1811,7 +1816,8 @@ static char * CarItemHotbarProc( /*wListSetValue( (wList_p)newCarPLs[0].control, "Select a car" );*/ wListSetIndex( (wList_p)newCarPLs[0].control, 0 ); cp = CarItemHotbarProc( HB_BARTITLE, I2VP(carItemInx), NULL, NULL ); - strncpy( newCarLabel1, cp, sizeof newCarLabel1 ); + strncpy( newCarLabel1, cp, sizeof(newCarLabel1) -1); + newCarLabel1[sizeof(newCarLabel1) -1] = 0; ParamLoadControls( &newCarPG ); ParamGroupRecord( &newCarPG ); @@ -1869,6 +1875,8 @@ EXPORT void AddHotBarCarDesc( void ) coOrd orig; coOrd size; + LOG( log_carDlgDims, 1, ( "AddHotBarCarDesc/load carItemHB: carItemHB.cnt:%d\n", + carItemInfo_da.cnt ) ); DYNARR_SET( carItem_t*, carItemHotbar_da, carItemInfo_da.cnt ); memcpy( &carItemHotbar(0), &carItemInfo(0), carItemInfo_da.cnt * sizeof carItemHotbar(0) ); @@ -1891,6 +1899,7 @@ EXPORT void AddHotBarCarDesc( void ) orig = zero; size.x = item1->dim.carLength; size.y = item1->dim.carWidth; + LOG( log_carDlgDims, 1, ( "AddHotBarElement( %d: %s\n", inx, item1->title ) ); AddHotBarElement( FormatCarTitle( item1, carHotbarContents[carHotbarModeInx] ), size, orig, FALSE, FALSE, (60.0*12.0/curScaleRatio), I2VP(inx), CarItemHotbarProc ); @@ -2128,7 +2137,9 @@ EXPORT void CarItemDraw( int direction, BOOL_T locoIsMaster, vector_t *coupler, +#ifdef CAR_CLEARANCE BOOL_T pencils, +#endif track_p traverse) { coOrd size, pos, pos2; @@ -2168,9 +2179,11 @@ EXPORT void CarItemDraw( DrawSegs( d, pos, item->angle-90.0, item->segPtr, item->segCnt, 0.0, color ); } +#ifdef CAR_CLEARANCE if (pencils) { // No code for pencils } +#endif if ( drawCarTrucks ) { @@ -3741,8 +3754,10 @@ static void CarDlgUpdate( cmp_key_t cmp_key; coOrd orig, size, size2; carPartParent_p parentP; +#ifdef TRUCK_OFFSET static DIST_T carDlgTruckOffsetL; static DIST_T carDlgTruckOffsetR; +#endif static long carDlgClock; static long carDlgCarLengthClock; static long carDlgTruckCenterClock; @@ -3756,6 +3771,7 @@ static void CarDlgUpdate( switch ( inx ) { case -1: +#ifdef TRUCK_OFFSET if ( carDlgDim.truckCenter > 0 && carDlgDim.carLength > carDlgDim.truckCenter ) { carDlgTruckOffsetL = (carDlgDim.carLength - carDlgDim.truckCenter)/2 - @@ -3766,9 +3782,18 @@ static void CarDlgUpdate( carDlgTruckOffsetL = 0; carDlgTruckOffsetR = 0; } +#endif carDlgCarLengthClock = carDlgCoupledLengthClock = carDlgTruckCenterClock = carDlgCouplerLengthClock = carDlgClock = 0; +#ifdef TRUCK_OFFSET + LOG( log_carDlgDims, 1, + ( "truckCenter(%d): trkCenter:%0.3f, .carLength:%0.3f = trackOffset: %0.3f %0.3f\n", + carDlgDim.truckCenter, + carDlgDim.carLength, + carDlgTruckOffsetL, + carDlgTruckOffsetR ) ); +#endif redraw = TRUE; break; @@ -3991,17 +4016,21 @@ static void CarDlgUpdate( case I_CD_TRKOFFSET: carDlgChanged++; +#ifdef TRUCK_OFFSET if ( carDlgDim.truckCenterOffset == 0 ) { carDlgTruckOffsetL = carDlgDim.truckCenter/2; carDlgTruckOffsetR = carDlgTruckOffsetL; } else if (carDlgDim.carLength - carDlgDim.truckCenter > 2*fabs( carDlgDim.truckCenterOffset)) { - carDlgTruckOffsetL = carDlgDim.truckCenter/2 - carDlgDim.truckCenterOffset; - carDlgTruckOffsetR = carDlgDim.truckCenter/2 + carDlgDim.truckCenterOffset; + carDlgTruckOffsetL = (carDlgDim.carLength-carDlgDim.truckCenter)/2 - + carDlgDim.truckCenterOffset; + carDlgTruckOffsetR = (carDlgDim.carLength-carDlgDim.truckCenter)/2 + + carDlgDim.truckCenterOffset; } else { carDlgTruckOffsetL = 0; carDlgTruckOffsetR = 0; } +#endif if ( 2*carDlgDim.truckCenterOffset > carDlgDim.carLength - carDlgDim.truckCenter) { ok = FALSE; @@ -4009,11 +4038,22 @@ static void CarDlgUpdate( _("Truck Center Offset plus Truck Centers must be less than Car Length") ); } redraw = TRUE; +#ifdef TRUCK_OFFSET + LOG( log_carDlgDims, 1, + ("I_CD_TRKOFFSET: len:%0.3f, center:%0.3f, cenoff:%0.3f = offset:%0.3f %0.3f\n", + carDlgDim.carLength, + carDlgDim.truckCenter, + carDlgDim.truckCenterOffset, + carDlgTruckOffsetL, + carDlgTruckOffsetR ) ); +#endif break; case I_CD_TRKCENTER: carDlgChanged++; - if ( carDlgDim.truckCenter == 0 ) { +#ifdef TRUCK_OFFSET + if ( carDlgDim.truckCenter == 0 || + carDlgDim.truckCenterOffset == 0.0 ) { carDlgTruckOffsetL = 0; carDlgTruckOffsetR = 0; } else if ( carDlgDim.truckCenter < @@ -4023,12 +4063,22 @@ static void CarDlgUpdate( return; } else if ( carDlgDim.carLength - carDlgDim.truckCenter > 2*fabs( carDlgDim.truckCenterOffset) ) { - carDlgTruckOffsetL = carDlgDim.truckCenter/2-carDlgDim.truckCenterOffset; - carDlgTruckOffsetR = carDlgDim.truckCenter/2+carDlgDim.truckCenterOffset; + carDlgTruckOffsetL = (carDlgDim.carLength-carDlgDim.truckCenter)/2 - + carDlgDim.truckCenterOffset; + carDlgTruckOffsetR = (carDlgDim.carLength-carDlgDim.truckCenter)/2 + + carDlgDim.truckCenterOffset; } else { carDlgTruckOffsetL = 0; carDlgTruckOffsetR = 0; } + LOG( log_carDlgDims, 1, + ("I_CD_TRKCENTER: len:%0.3f, center:%0.3f, cenoff:%0.3f = offset:%0.3f %0.3f\n", + carDlgDim.carLength, + carDlgDim.truckCenter, + carDlgDim.truckCenterOffset, + carDlgTruckOffsetL, + carDlgTruckOffsetR ) ); +#endif redraw = TRUE; break; @@ -4135,6 +4185,7 @@ static void CarDlgUpdate( carDlgDim.carLength = size2.x; carDlgDim.carWidth = size2.y; carDlgDim.coupledLength = carDlgDim.carLength + 32; +#ifdef TRUCK_OFFSET if ( carDlgDim.carLength > 120 ) { carDlgDim.truckCenter = carDlgDim.carLength - 120; carDlgTruckOffsetL = (carDlgDim.carLength - carDlgDim.truckCenter)/2; @@ -4144,6 +4195,7 @@ static void CarDlgUpdate( carDlgTruckOffsetL = 0; carDlgTruckOffsetR = 0; } +#endif carDlgFlipToggle = FALSE; ParamLoadControl( &carDlgPG, I_CD_CARLENGTH ); ParamLoadControl( &carDlgPG, I_CD_CARWIDTH ); @@ -4168,6 +4220,14 @@ static void CarDlgUpdate( } if ( checkTruckCenter && carDlgDim.carLength > 0 ) { +#ifdef TRUCK_OFFSET + DIST_T offL = (carDlgDim.carLength - carDlgDim.truckCenter)/2 - + carDlgDim.truckCenterOffset; + DIST_T offR = (carDlgDim.carLength - carDlgDim.truckCenter)/2 + + carDlgDim.truckCenterOffset; + LOG( log_carDlgDims, 1, ( "OFF %0.3f %0.3f %0.3f %0.3f\n", + carDlgTruckOffsetL, carDlgTruckOffsetR, offL, offR ) ); + if ( carDlgTruckOffsetL > 0 || carDlgTruckOffsetR > 0 ) { carDlgDim.truckCenter = carDlgDim.carLength - ( carDlgTruckOffsetL + carDlgTruckOffsetR ); @@ -4176,6 +4236,11 @@ static void CarDlgUpdate( carDlgDim.truckCenter = carDlgDim.carLength * 0.75; carDlgDim.truckCenterOffset = 0; } + LOG( log_carDlgDims, 1, + ( "checkTruckCenter length:%0.3f, offset %0.3f, %0.3f = truckCenter:%0.3f, truckCenterOffset:%0.3f\n", + carDlgDim.carLength, carDlgTruckOffsetL, carDlgTruckOffsetR, + carDlgDim.truckCenter, carDlgDim.truckCenterOffset ) ); +#endif ParamLoadControl( &carDlgPG, I_CD_TRKCENTER ); ParamLoadControl( &carDlgPG, I_CD_TRKOFFSET ); } @@ -4596,7 +4661,8 @@ static void DoCarPartDlg( carDlgAction_e *actions ) if ( carDlgPG.win == NULL ) { ParamCreateDialog( &carDlgPG, MakeWindowTitle(_("New Car Part")), _("Add"), - CarDlgOk, CarDlgClose, TRUE, CarDlgLayout, + CarDlgOk, ParamCancel_Custom( CarDlgClose ), + TRUE, CarDlgLayout, F_BLOCK|F_RESIZE|F_RECALLSIZE|PD_F_ALT_CANCELLABEL, CarDlgUpdate ); if ( carDlgDim.carWidth==0 ) { @@ -4845,6 +4911,8 @@ static void CarInvDlgDeleteShelve( void ) } bShowMsg = TRUE; } + LOG( log_carDlgDims, 1, ( "CarInvDlgDeleteShelve( %d, %s\n", inx, + item->title ) ); wListDelete( (wList_p)carInvPLs[I_CI_LIST].control, inx ); if ( item->title ) { MyFree( item->title ); } if ( item->data.number ) { MyFree( item->data.number ); } @@ -4855,10 +4923,12 @@ static void CarInvDlgDeleteShelve( void ) carItemInfo_da.cnt -= 1; inx--; cnt--; + bNeedReload = TRUE; //DB } } if ( bNeedReload ) { CarInvListLoad(); + ChangeHotBar( CHANGE_SCALE ); MainRedraw(); // Shelve Car from layout } SetFileChanged(); @@ -5684,7 +5754,7 @@ EXPORT void DoCarDlg( void * unused ) int inx, inx2; if ( carInvPG.win == NULL ) { ParamCreateDialog( &carInvPG, MakeWindowTitle(_("Car Inventory")), _("Find"), - CarInvDlgFind, wHide, TRUE, NULL, + CarInvDlgFind, ParamCancel_Current, TRUE, NULL, F_BLOCK|F_RESIZE|F_RECALLSIZE|PD_F_ALT_CANCELLABEL, CarInvDlgUpdate ); for ( inx=I_CI_SORT; inx<I_CI_SORT+N_SORT; inx++ ) { for ( inx2=0; inx2<COUNT( sortOrders ); inx2++ ) { @@ -5750,6 +5820,7 @@ EXPORT void InitCarDlg( void ) log_carInvList = LogFindIndex( "carInvList" ); log_carDlgState = LogFindIndex( "carDlgState" ); log_carDlgList = LogFindIndex( "carDlgList" ); + log_carDlgDims = LogFindIndex( "carDlgDims" ); carDlgBodyColor = wDrawFindColor( wRGB(255,128,0) ); ParamRegister( &carDlgPG ); ParamRegister( &carInvPG ); @@ -5843,8 +5914,8 @@ static int CarProtoCustMgmProc( } -#include "bitmaps/carpart.xpm" -#include "bitmaps/carproto.xpm" +#include "bitmaps/carpart.image1" +#include "bitmaps/carproto.image1" EXPORT void CarCustMgmLoad( void ) { @@ -5856,10 +5927,10 @@ EXPORT void CarCustMgmLoad( void ) static wIcon_p carprotoI = NULL; if ( carpartI == NULL ) { - carpartI = wIconCreatePixMap( carpart_xpm ); + carpartI = wIconCreatePixMap( carpart_image1 ); } if ( carprotoI == NULL ) { - carprotoI = wIconCreatePixMap( carproto_xpm ); + carprotoI = wIconCreatePixMap( carproto_image1 ); } for ( parentX=0; parentX<carPartParent_da.cnt; parentX++ ) { |
