(svn r12230) -Codechange: [autoreplace] made a function to detect if a vehicle needs autorenewing
This will remove duplicated code and ensure that the check is consistent
--- a/src/aircraft_cmd.cpp Sat Feb 23 11:42:41 2008 +0000
+++ b/src/aircraft_cmd.cpp Sat Feb 23 22:01:55 2008 +0000
@@ -1574,7 +1574,7 @@
/* There is no autoreplace assigned to this EngineID so we will set it to renew to the same type if needed */
new_engine = v->engine_type;
- if(!p->engine_renew || (v->age - v->max_age) < p->engine_renew_months * 30) {
+ if (!v->NeedsAutorenewing(p)) {
/* No need to replace the aircraft */
return false;
}
--- a/src/autoreplace_cmd.cpp Sat Feb 23 11:42:41 2008 +0000
+++ b/src/autoreplace_cmd.cpp Sat Feb 23 22:01:55 2008 +0000
@@ -25,6 +25,16 @@
#include "table/strings.h"
+bool Vehicle::NeedsAutorenewing(const Player *p) const
+{
+ assert(p == GetPlayer(this->owner));
+
+ if (!p->engine_renew) return false;
+ if (this->age - this->max_age < (p->engine_renew_months * 30)) return false;
+
+ return true;
+}
+
/*
* move the cargo from one engine to another if possible
*/
@@ -342,8 +352,7 @@
}
// check if the vehicle should be replaced
- if (!p->engine_renew ||
- w->age - w->max_age < (p->engine_renew_months * 30) || // replace if engine is too old
+ if (!w->NeedsAutorenewing(p) || // replace if engine is too old
w->max_age == 0) { // rail cars got a max age of 0
/* If the vehicle belongs to a group, check if the group is protected from the global autoreplace.
If not, chek if an global auto remplacement is defined */
--- a/src/vehicle_base.h Sat Feb 23 11:42:41 2008 +0000
+++ b/src/vehicle_base.h Sat Feb 23 22:01:55 2008 +0000
@@ -481,6 +481,8 @@
* @return true if there are other vehicles sharing the same order
*/
inline bool IsOrderListShared() const { return this->next_shared != NULL || this->prev_shared != NULL; };
+
+ bool NeedsAutorenewing(const Player *p) const;
};
/**