diff options
author | peter1138 <peter1138@openttd.org> | 2010-01-09 15:33:41 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2010-01-09 15:33:41 +0000 |
commit | 1382964fa016988f144782b7c5c446782553ea86 (patch) | |
tree | e8c9a2806b809648a0d7642f88537fc8388b3d8a /src/train_cmd.cpp | |
parent | b9052fff9fa4f0c836d4e1d7f85c23c4fb4150a2 (diff) | |
download | openttd-1382964fa016988f144782b7c5c446782553ea86.tar.xz |
(svn r18766) -Codechange: Make train acceleration type (rail/elrail/monorail vs maglev) a rail type property
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r-- | src/train_cmd.cpp | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 352e0969e..17dad7aea 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -531,10 +531,12 @@ static int GetTrainAcceleration(Train *v, bool mode) v->max_speed = max_speed; + bool maglev = GetRailTypeInfo(v->railtype)->acceleration_type == 2; + const int area = 120; const int friction = 35; //[1e-3] int resistance; - if (v->railtype != RAILTYPE_MAGLEV) { + if (!maglev) { resistance = 13 * mass / 10; resistance += 60 * num; resistance += friction * mass * speed / 1000; @@ -548,24 +550,17 @@ static int GetTrainAcceleration(Train *v, bool mode) const int max_te = v->tcache.cached_max_te; // [N] int force; if (speed > 0) { - switch (v->railtype) { - case RAILTYPE_RAIL: - case RAILTYPE_ELECTRIC: - case RAILTYPE_MONO: - force = power / speed; //[N] - force *= 22; - force /= 10; - if (mode == AM_ACCEL && force > max_te) force = max_te; - break; - - default: NOT_REACHED(); - case RAILTYPE_MAGLEV: - force = power / 25; - break; + if (!maglev) { + force = power / speed; //[N] + force *= 22; + force /= 10; + if (mode == AM_ACCEL && force > max_te) force = max_te; + } else { + force = power / 25; } } else { /* "kickoff" acceleration */ - force = (mode == AM_ACCEL && v->railtype != RAILTYPE_MAGLEV) ? min(max_te, power) : power; + force = (mode == AM_ACCEL && !maglev) ? min(max_te, power) : power; force = max(force, (mass * 8) + resistance); } |