summaryrefslogtreecommitdiff
path: root/app/bin/dcar.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/bin/dcar.c')
-rw-r--r--app/bin/dcar.c97
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++ ) {