Index: src/industry_cmd.cpp
===================================================================
--- src/industry_cmd.cpp (revision 27931)
+++ src/industry_cmd.cpp (working copy)
@@ -491,7 +491,12 @@
return CommandCost(EXPENSES_CONSTRUCTION, indspec->GetRemovalCost());
}
-static void TransportIndustryGoods(TileIndex tile)
+/**
+ * Move produced cargo from industry to nearby stations.
+ * @param tile Industry tile
+ * @return true if any cargo was moved.
+ */
+static bool TransportIndustryGoods(TileIndex tile)
{
Industry *i = Industry::GetByTile(tile);
const IndustrySpec *indspec = GetIndustrySpec(i->type);
@@ -516,16 +521,7 @@
}
}
- if (moved_cargo && !StartStopIndustryTileAnimation(i, IAT_INDUSTRY_DISTRIBUTES_CARGO)) {
- uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
-
- if (newgfx != INDUSTRYTILE_NOANIM) {
- ResetIndustryConstructionStage(tile);
- SetIndustryCompleted(tile);
- SetIndustryGfx(tile, newgfx);
- MarkTileDirtyByTile(tile);
- }
- }
+ return moved_cargo;
}
@@ -810,8 +806,18 @@
if (_game_mode == GM_EDITOR) return;
- TransportIndustryGoods(tile);
+ if (TransportIndustryGoods(tile) && !StartStopIndustryTileAnimation(Industry::GetByTile(tile), IAT_INDUSTRY_DISTRIBUTES_CARGO)) {
+ uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
+ if (newgfx != INDUSTRYTILE_NOANIM) {
+ ResetIndustryConstructionStage(tile);
+ SetIndustryCompleted(tile);
+ SetIndustryGfx(tile, newgfx);
+ MarkTileDirtyByTile(tile);
+ return;
+ }
+ }
+
if (StartStopIndustryTileAnimation(tile, IAT_TILELOOP)) return;
IndustryGfx newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_next;