summaryrefslogtreecommitdiff
path: root/src/economy.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-07-04 18:27:21 +0000
committerrubidium <rubidium@openttd.org>2007-07-04 18:27:21 +0000
commit1bdb72ebd42cf18972b67b2bf73086d6fda47693 (patch)
tree055e7c9a0bb15c98a3fd1404abeba74e87f53ab1 /src/economy.cpp
parent2d1a3d920c6c2d5ab4de0c7e73399ded3eece5b4 (diff)
downloadopenttd-1bdb72ebd42cf18972b67b2bf73086d6fda47693.tar.xz
(svn r10439) -Codechange: initial steps for customized industry productions.
Diffstat (limited to 'src/economy.cpp')
-rw-r--r--src/economy.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/economy.cpp b/src/economy.cpp
index fe3d14913..c2c677dab 100644
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -1234,9 +1234,18 @@ static void DeliverGoodsToIndustry(TileIndex xy, CargoID cargo_type, int num_pie
/* Found one? */
if (best != NULL) {
indspec = GetIndustrySpec(best->type);
+ uint16 callback = indspec->callback_flags;
best->was_cargo_delivered = true;
- best->cargo_waiting[0] = min(best->cargo_waiting[0] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][0] / 256), 0xFFFF);
- best->cargo_waiting[1] = min(best->cargo_waiting[1] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][1] / 256), 0xFFFF);
+
+ if (callback & (CBM_IND_PRODUCTION_CARGO_ARRIVAL | CBM_IND_PRODUCTION_256_TICKS)) {
+ best->incoming_cargo_waiting[accepted_cargo_index] = min(num_pieces + best->incoming_cargo_waiting[accepted_cargo_index], 0xFFFF);
+ if (callback & CBM_IND_PRODUCTION_CARGO_ARRIVAL) {
+ /** @todo Perform some magic */
+ }
+ } else {
+ best->produced_cargo_waiting[0] = min(best->produced_cargo_waiting[0] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][0] / 256), 0xFFFF);
+ best->produced_cargo_waiting[1] = min(best->produced_cargo_waiting[1] + (num_pieces * indspec->input_cargo_multiplier[accepted_cargo_index][1] / 256), 0xFFFF);
+ }
}
}