1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-09-01 19:09:09 +00:00

(svn r12134) -Change: count the number of ticks a vehicle was running this day to calculate running cost

-Fix [FS#1739]: vehicle profit is now counted with 8bit fract, so it is now shown properly in the vehicle details window
This commit is contained in:
smatz
2008-02-13 19:24:40 +00:00
parent b7cd791988
commit a0ddc43e92
14 changed files with 75 additions and 49 deletions

View File

@@ -735,6 +735,7 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
v->x_pos = x;
v->y_pos = y;
v->z_pos = GetSlopeZ(x, y);
v->running_ticks = 0;
v->u.rail.track = TRACK_BIT_DEPOT;
v->vehstatus = VS_HIDDEN | VS_STOPPED | VS_DEFPAL;
v->spritenum = rvi->image_index;
@@ -3595,6 +3596,7 @@ void Train::Tick()
this->tick_counter++;
if (IsFrontEngine(this)) {
if (!(this->vehstatus & VS_STOPPED)) this->running_ticks++;
this->current_order_time++;
TrainLocoHandler(this, false);
@@ -3665,11 +3667,12 @@ void Train::OnNewDay()
if (tile != 0) this->dest_tile = tile;
}
if ((this->vehstatus & VS_STOPPED) == 0) {
if (this->running_ticks != 0) {
/* running costs */
CommandCost cost(EXPENSES_TRAIN_RUN, this->GetRunningCost() / 364);
CommandCost cost(EXPENSES_TRAIN_RUN, this->GetRunningCost() * this->running_ticks / (364 * DAY_TICKS));
this->profit_this_year -= cost.GetCost() >> 8;
this->profit_this_year -= cost.GetCost();
this->running_ticks = 0;
SubtractMoneyFromPlayerFract(this->owner, cost);