src/vehicle.cpp
changeset 7054 edbb4d7765f2
parent 7049 01825af2ce90
child 7057 61e90db7d804
--- a/src/vehicle.cpp	Tue May 01 15:25:00 2007 +0000
+++ b/src/vehicle.cpp	Tue May 01 16:35:14 2007 +0000
@@ -224,6 +224,8 @@
 	Vehicle *v;
 
 	FOR_ALL_VEHICLES(v) {
+		v->UpdateDeltaXY(v->direction);
+
 		v->first = NULL;
 		if (v->type == VEH_TRAIN) v->u.rail.first_engine = INVALID_ENGINE;
 	}
@@ -1443,9 +1445,8 @@
 		v->x_pos = x;
 		v->y_pos = y;
 		v->z_pos = z;
-		v->z_height = v->sprite_width = v->sprite_height = 1;
-		v->x_offs = v->y_offs = 0;
 		v->tile = 0;
+		v->UpdateDeltaXY(INVALID_DIR);
 		v->vehstatus = VS_UNCLICKABLE;
 
 		_effect_init_procs[type](v);
@@ -2644,13 +2645,13 @@
 	    SLE_VAR(Vehicle, z_pos,                SLE_UINT8),
 	    SLE_VAR(Vehicle, direction,            SLE_UINT8),
 
-	    SLE_VAR(Vehicle, cur_image,            SLE_UINT16),
+	SLE_CONDVAR(Vehicle, cur_image,            SLE_UINT16,                  0, 57),
 	    SLE_VAR(Vehicle, spritenum,            SLE_UINT8),
-	    SLE_VAR(Vehicle, sprite_width,         SLE_UINT8),
-	    SLE_VAR(Vehicle, sprite_height,        SLE_UINT8),
-	    SLE_VAR(Vehicle, z_height,             SLE_UINT8),
-	    SLE_VAR(Vehicle, x_offs,               SLE_INT8),
-	    SLE_VAR(Vehicle, y_offs,               SLE_INT8),
+	SLE_CONDVAR(Vehicle, sprite_width,         SLE_UINT8,                   0, 57),
+	SLE_CONDVAR(Vehicle, sprite_height,        SLE_UINT8,                   0, 57),
+	SLE_CONDVAR(Vehicle, z_height,             SLE_UINT8,                   0, 57),
+	SLE_CONDVAR(Vehicle, x_offs,               SLE_INT8,                    0, 57),
+	SLE_CONDVAR(Vehicle, y_offs,               SLE_INT8,                    0, 57),
 	    SLE_VAR(Vehicle, engine_type,          SLE_UINT16),
 
 	    SLE_VAR(Vehicle, max_speed,            SLE_UINT16),
@@ -2818,11 +2819,11 @@
 	    SLE_VAR(Vehicle, z_pos,         SLE_UINT8),
 
 	    SLE_VAR(Vehicle, cur_image,     SLE_UINT16),
-	    SLE_VAR(Vehicle, sprite_width,  SLE_UINT8),
-	    SLE_VAR(Vehicle, sprite_height, SLE_UINT8),
-	    SLE_VAR(Vehicle, z_height,      SLE_UINT8),
-	    SLE_VAR(Vehicle, x_offs,        SLE_INT8),
-	    SLE_VAR(Vehicle, y_offs,        SLE_INT8),
+	SLE_CONDVAR(Vehicle, sprite_width,  SLE_UINT8,                  0, 57),
+	SLE_CONDVAR(Vehicle, sprite_height, SLE_UINT8,                  0, 57),
+	SLE_CONDVAR(Vehicle, z_height,      SLE_UINT8,                  0, 57),
+	SLE_CONDVAR(Vehicle, x_offs,        SLE_INT8,                   0, 57),
+	SLE_CONDVAR(Vehicle, y_offs,        SLE_INT8,                   0, 57),
 	    SLE_VAR(Vehicle, progress,      SLE_UINT8),
 	    SLE_VAR(Vehicle, vehstatus,     SLE_UINT8),
 
@@ -2853,11 +2854,11 @@
 	    SLE_VAR(Vehicle, z_pos,         SLE_UINT8),
 	    SLE_VAR(Vehicle, direction,     SLE_UINT8),
 
-	    SLE_VAR(Vehicle, x_offs,        SLE_INT8),
-	    SLE_VAR(Vehicle, y_offs,        SLE_INT8),
-	    SLE_VAR(Vehicle, sprite_width,  SLE_UINT8),
-	    SLE_VAR(Vehicle, sprite_height, SLE_UINT8),
-	    SLE_VAR(Vehicle, z_height,      SLE_UINT8),
+	SLE_CONDVAR(Vehicle, x_offs,        SLE_INT8,                    0, 57),
+	SLE_CONDVAR(Vehicle, y_offs,        SLE_INT8,                    0, 57),
+	SLE_CONDVAR(Vehicle, sprite_width,  SLE_UINT8,                   0, 57),
+	SLE_CONDVAR(Vehicle, sprite_height, SLE_UINT8,                   0, 57),
+	SLE_CONDVAR(Vehicle, z_height,      SLE_UINT8,                   0, 57),
 	    SLE_VAR(Vehicle, owner,         SLE_UINT8),
 	    SLE_VAR(Vehicle, vehstatus,     SLE_UINT8),
 	SLE_CONDVARX(cpp_offsetof(Vehicle, current_order) + cpp_offsetof(Order, dest), SLE_FILE_U8 | SLE_VAR_U16, 0, 4),
@@ -3000,3 +3001,13 @@
 	current_order.flags = 0;
 	GetStation(this->last_station_visited)->loading_vehicles.remove(this);
 }
+
+
+void SpecialVehicle::UpdateDeltaXY(Direction direction)
+{
+	this->x_offs        = 0;
+	this->y_offs        = 0;
+	this->sprite_width  = 1;
+	this->sprite_height = 1;
+	this->z_height      = 1;
+}