Fix last bugs from rebase

This commit is contained in:
Lukas Klingsbo
2020-10-06 23:14:07 +02:00
parent c68a524942
commit 09b0801efe
4 changed files with 24 additions and 13 deletions

View File

@ -73,14 +73,14 @@ class MyGame extends BaseGame with TapDetector {
final combination = CombinedEffect(
effects: [move2, rotate],
isAlternating: false,
isInfinite: true,
isInfinite: false,
);
final sequence = SequenceEffect(
effects: [move1, scale, combination],
isInfinite: true,
isAlternating: false,
isInfinite: false,
isAlternating: true,
);
greenSquare.addEffect(combination);
greenSquare.addEffect(sequence);
}
}

View File

@ -96,6 +96,11 @@ class CombinedEffect extends PositionComponentEffect {
}
}
@override
bool hasFinished() {
return super.hasFinished() && effects.every((e) => e.hasFinished());
}
void _maybeReverse(PositionComponentEffect effect) {
if (isAlternating && !effect.isAlternating && effect.isMax()) {
// Make the effect go in reverse

View File

@ -51,7 +51,7 @@ abstract class ComponentEffect<T extends Component> {
if (isAlternating) {
curveDirection = isMax() ? -1 : (isMin() ? 1 : curveDirection);
} else if (isInfinite && isMax()) {
currentTime = 0.0;
reset();
}
final driftMultiplier = (isAlternating && isMax() ? 2 : 1) * curveDirection;
if (!hasFinished()) {

View File

@ -20,6 +20,10 @@ class SequenceEffect extends PositionComponentEffect {
effects.every((effect) => effect.component == null),
"No effects can be added to components from the start",
);
assert(
effects.every((effect) => !effect.isInfinite),
"No effects added to the sequence can be infinite",
);
}
@override
@ -63,9 +67,9 @@ class SequenceEffect extends PositionComponentEffect {
_driftModifier = currentEffect.driftTime;
_currentIndex++;
final iterationSize = isAlternating ? effects.length * 2 : effects.length;
if (_currentIndex != 0
&& _currentIndex == iterationSize
&& (currentEffect.isAlternating ||
if (_currentIndex != 0 &&
_currentIndex == iterationSize &&
(currentEffect.isAlternating ||
currentEffect.isAlternating == isAlternating)) {
isInfinite ? reset() : dispose();
return;
@ -92,10 +96,12 @@ class SequenceEffect extends PositionComponentEffect {
@override
void reset() {
super.reset();
component.position = originalPosition;
component.angle = originalAngle;
component.size = originalSize;
initialize(component);
//effects.forEach((e) => e.reset());
effects.forEach((e) => e.reset());
if (component != null) {
component.position = originalPosition;
component.angle = originalAngle;
component.size = originalSize;
initialize(component);
}
}
}