Animation improvements
This commit is contained in:
parent
975ee6ea25
commit
27c13a57d4
|
|
@ -713,19 +713,26 @@ export default class GoFishGame extends Phaser.Scene {
|
||||||
const askerCard = beforeState.players[askerSeat].hand.find(c => c.rank === rank);
|
const askerCard = beforeState.players[askerSeat].hand.find(c => c.rank === rank);
|
||||||
if (!askerCard) { onComplete(); return; }
|
if (!askerCard) { onComplete(); return; }
|
||||||
|
|
||||||
const askerSprite = this.makeCardSprite(askerCard, askerLayout.handCenter.x, askerLayout.handCenter.y, {
|
const existingSprite = this.cardObjs.get(`hand-${askerSeat}-${askerCard.id}`);
|
||||||
faceUp: false, rotation: 0,
|
const askerSprite = existingSprite
|
||||||
});
|
?? this.makeCardSprite(askerCard, askerLayout.handCenter.x, askerLayout.handCenter.y, {
|
||||||
|
faceUp: askerLayout.handFaceUp, rotation: 0,
|
||||||
|
});
|
||||||
|
if (existingSprite) this.cardObjs.delete(`hand-${askerSeat}-${askerCard.id}`);
|
||||||
|
const origX = askerSprite.x;
|
||||||
|
const origY = askerSprite.y;
|
||||||
askerSprite.setDepth(D.banner - 4);
|
askerSprite.setDepth(D.banner - 4);
|
||||||
this.transientObjs.push(askerSprite);
|
this.transientObjs.push(askerSprite);
|
||||||
|
|
||||||
// Move asker card to show zone then flip it face-up.
|
// Move asker card to show zone then flip it face-up (skip flip if already face-up).
|
||||||
this.tweens.add({
|
this.tweens.add({
|
||||||
targets: askerSprite,
|
targets: askerSprite,
|
||||||
x: askerShow.x, y: askerShow.y,
|
x: askerShow.x, y: askerShow.y,
|
||||||
duration: 280,
|
duration: 280,
|
||||||
ease: 'Cubic.easeOut',
|
ease: 'Cubic.easeOut',
|
||||||
onComplete: () => this.flipCardFaceUp(askerSprite, askerCard),
|
onComplete: () => {
|
||||||
|
if (!askerLayout.handFaceUp) this.flipCardFaceUp(askerSprite, askerCard);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// After card is revealed, cast fishing line toward the target, then show result.
|
// After card is revealed, cast fishing line toward the target, then show result.
|
||||||
|
|
@ -782,12 +789,13 @@ export default class GoFishGame extends Phaser.Scene {
|
||||||
this.time.delayedCall(320, () => onComplete(allSprites));
|
this.time.delayedCall(320, () => onComplete(allSprites));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Fish — flip card back face-down and return it to hand.
|
// Fish — flip card back face-down (if needed) and return it to hand.
|
||||||
this.flipCardFaceDown(askerSprite);
|
if (!askerLayout.handFaceUp) this.flipCardFaceDown(askerSprite);
|
||||||
this.time.delayedCall(340, () => {
|
const returnDelay = askerLayout.handFaceUp ? 80 : 340;
|
||||||
|
this.time.delayedCall(returnDelay, () => {
|
||||||
this.tweens.add({
|
this.tweens.add({
|
||||||
targets: askerSprite,
|
targets: askerSprite,
|
||||||
x: askerLayout.handCenter.x, y: askerLayout.handCenter.y,
|
x: origX, y: origY,
|
||||||
duration: 280, ease: 'Cubic.easeIn',
|
duration: 280, ease: 'Cubic.easeIn',
|
||||||
onComplete: () => { if (askerSprite.active) askerSprite.destroy(); },
|
onComplete: () => { if (askerSprite.active) askerSprite.destroy(); },
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue