diff options
author | peter1138 <peter1138@openttd.org> | 2006-02-04 21:48:46 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2006-02-04 21:48:46 +0000 |
commit | 500a7e6627c130d3ec8bae00384dafe18e86da7e (patch) | |
tree | 87ce1a898e14813f5cc02bbe02c5671b8f166c37 /newgrf_engine.c | |
parent | 78b51cbec2d027a4e8f3066370d5994d4e8b0935 (diff) | |
download | openttd-500a7e6627c130d3ec8bae00384dafe18e86da7e.tar.xz |
(svn r3546) - NewGRF feature: Implement rail vehicle 'property' 0x1A: allows shuffling order of rail vehicle purchase list (and replace vehicle list)
Diffstat (limited to 'newgrf_engine.c')
-rw-r--r-- | newgrf_engine.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/newgrf_engine.c b/newgrf_engine.c index 827014225..ebaa15c1d 100644 --- a/newgrf_engine.c +++ b/newgrf_engine.c @@ -591,3 +591,44 @@ StringID GetCustomEngineName(EngineID engine) return STR_SPEC_USERSTRING; } +// Functions for changing the order of vehicle purchase lists +// This is currently only implemented for rail vehicles. +static EngineID engine_list_order[NUM_TRAIN_ENGINES]; + +void ResetEngineListOrder(void) +{ + EngineID i; + + for (i = 0; i < NUM_TRAIN_ENGINES; i++) + engine_list_order[i] = i; +} + +EngineID GetRailVehAtPosition(EngineID pos) +{ + return engine_list_order[pos]; +} + +void AlterRailVehListOrder(EngineID engine, EngineID target) +{ + EngineID i; + bool moving = false; + + if (engine == target) return; + + // First, remove our ID from the list. + for (i = 0; i < NUM_TRAIN_ENGINES - 1; i++) { + if (engine_list_order[i] == engine) + moving = true; + if (moving) + engine_list_order[i] = engine_list_order[i + 1]; + } + + // Now, insert it again, before the target engine. + for (i = NUM_TRAIN_ENGINES - 1; i > 0; i--) { + engine_list_order[i] = engine_list_order[i - 1]; + if (engine_list_order[i] == target) { + engine_list_order[i - 1] = engine; + break; + } + } +} |