(svn r24442) -Codechange: Split some members of Vehicle into a new class BaseConsist.

This commit is contained in:
frosch
2012-07-29 16:44:39 +00:00
parent c8f6159464
commit 2a875a1907
8 changed files with 81 additions and 6 deletions

25
src/base_consist.cpp Normal file
View File

@@ -0,0 +1,25 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file base_consist.cpp Properties for front vehicles/consists. */
#include "stdafx.h"
#include "base_consist.h"
/**
* Copy properties of other BaseConsist.
* @param src Source for copying
*/
void BaseConsist::CopyConsistPropertiesFrom(const BaseConsist *src)
{
if (this == src) return;
this->service_interval = src->service_interval;
this->cur_real_order_index = src->cur_real_order_index;
}

26
src/base_consist.h Normal file
View File

@@ -0,0 +1,26 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file base_consist.h Properties for front vehicles/consists. */
#ifndef BASE_CONSIST_H
#define BASE_CONSIST_H
#include "order_type.h"
#include "date_type.h"
/** Various front vehicle properties that are preserved when autoreplacing, using order-backup or switching front engines within a consist. */
struct BaseConsist {
Date service_interval; ///< The interval for (automatic) servicing; either in days or %.
VehicleOrderID cur_real_order_index;///< The index to the current real (non-implicit) order
void CopyConsistPropertiesFrom(const BaseConsist *src);
};
#endif /* BASE_CONSIST_H */

View File

@@ -21,6 +21,7 @@
#include "order_func.h"
#include "transport_type.h"
#include "group_type.h"
#include "base_consist.h"
/** Vehicle status bits in #Vehicle::vehstatus. */
enum VehStatus {
@@ -121,7 +122,7 @@ extern void FixOldVehicles();
struct GRFFile;
/** %Vehicle data structure. */
struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle {
struct Vehicle : VehiclePool::PoolItem<&_vehicle_pool>, BaseVehicle, BaseConsist {
private:
Vehicle *next; ///< pointer to the next vehicle in the chain
Vehicle *previous; ///< NOSAVE: pointer to the previous vehicle in the chain
@@ -173,7 +174,6 @@ public:
Date age; ///< Age in days
Date max_age; ///< Maximum age
Date date_of_last_service; ///< Last date the vehicle had a service at a depot.
Date service_interval; ///< The interval for (automatic) servicing; either in days or %.
uint16 reliability; ///< Reliability.
uint16 reliability_spd_dec; ///< Reliability decrease speed.
byte breakdown_ctr; ///< Counter for managing breakdown events. @see Vehicle::HandleBreakdown
@@ -229,7 +229,6 @@ public:
byte vehstatus; ///< Status
Order current_order; ///< The current order (+ status, like: loading)
VehicleOrderID cur_real_order_index;///< The index to the current real (non-implicit) order
VehicleOrderID cur_implicit_order_index;///< The index to the current implicit order
union {
@@ -597,9 +596,10 @@ public:
*/
inline void CopyVehicleConfigAndStatistics(const Vehicle *src)
{
this->CopyConsistPropertiesFrom(src);
this->unitnumber = src->unitnumber;
this->cur_real_order_index = src->cur_real_order_index;
this->cur_implicit_order_index = src->cur_implicit_order_index;
this->current_order = src->current_order;
this->dest_tile = src->dest_tile;
@@ -614,8 +614,6 @@ public:
if (HasBit(src->vehicle_flags, VF_TIMETABLE_STARTED)) SetBit(this->vehicle_flags, VF_TIMETABLE_STARTED);
if (HasBit(src->vehicle_flags, VF_AUTOFILL_TIMETABLE)) SetBit(this->vehicle_flags, VF_AUTOFILL_TIMETABLE);
if (HasBit(src->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME)) SetBit(this->vehicle_flags, VF_AUTOFILL_PRES_WAIT_TIME);
this->service_interval = src->service_interval;
}