summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-01-09 09:50:33 +0000
committerrubidium <rubidium@openttd.org>2009-01-09 09:50:33 +0000
commit331b8dd7d4c95266aae579171064879d847ea8aa (patch)
tree47f3329bacefb524923e0d2c068f27c7f21ad964
parent729cebda47bfb8385f75bc6ea962c34b25eef0db (diff)
downloadopenttd-331b8dd7d4c95266aae579171064879d847ea8aa.tar.xz
(svn r14931) -Fix [FS#2512]: the "animation state" of the bubbles was stored in a variable that was not stored in the savegame. Using a variable that gets saved in the savegame solves the desync and makes it a bit clearer.
-rw-r--r--src/effectvehicle.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/effectvehicle.cpp b/src/effectvehicle.cpp
index 6d97b49c2..62337993c 100644
--- a/src/effectvehicle.cpp
+++ b/src/effectvehicle.cpp
@@ -514,7 +514,7 @@ static const BubbleMovement * const _bubble_movement[] = {
static void BubbleTick(Vehicle *v)
{
- uint et;
+ uint anim_state;
v->progress++;
if ((v->progress & 3) != 0) return;
@@ -533,12 +533,12 @@ static void BubbleTick(Vehicle *v)
} else {
v->spritenum = 6;
}
- et = 0;
+ anim_state = 0;
} else {
- et = v->engine_type + 1;
+ anim_state = v->u.effect.animation_state + 1;
}
- const BubbleMovement *b = &_bubble_movement[v->spritenum - 1][et];
+ const BubbleMovement *b = &_bubble_movement[v->spritenum - 1][anim_state];
if (b->y == 4 && b->x == 0) {
EndVehicleMove(v);
@@ -551,21 +551,21 @@ static void BubbleTick(Vehicle *v)
v->spritenum = 5;
SndPlayVehicleFx(SND_2F_POP, v);
}
- et = 0;
+ anim_state = 0;
}
if (b->y == 4 && b->x == 2) {
TileIndex tile;
- et++;
+ anim_state++;
SndPlayVehicleFx(SND_31_EXTRACT, v);
tile = TileVirtXY(v->x_pos, v->y_pos);
if (IsTileType(tile, MP_INDUSTRY) && GetIndustryGfx(tile) == GFX_BUBBLE_CATCHER) AddAnimatedTile(tile);
}
- v->engine_type = et;
- b = &_bubble_movement[v->spritenum - 1][et];
+ v->u.effect.animation_state = anim_state;
+ b = &_bubble_movement[v->spritenum - 1][anim_state];
v->x_pos += b->x;
v->y_pos += b->y;