mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-16 19:22:16 +00:00
## Description: Add SAM interception animation: https://github.com/user-attachments/assets/5bfae4f2-f040-41cb-8fba-790538091807 Previously an intercepted nuke detonated with the regular nuke explosion, which was confusing. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors ## Please put your Discord username so you can be contacted if a bug or regression is found: IngloriousTom
35 lines
968 B
TypeScript
35 lines
968 B
TypeScript
import { AnimatedSprite } from "../AnimatedSprite";
|
|
import { createAnimatedSpriteForUnit } from "../AnimatedSpriteLoader";
|
|
import { Fx, FxType } from "./Fx";
|
|
|
|
/**
|
|
* Explosion effect: sprite animation of an explosion
|
|
*/
|
|
export class SAMExplosionFx implements Fx {
|
|
private lifeTime: number = 0;
|
|
private explosionSprite: AnimatedSprite | null;
|
|
constructor(
|
|
private x: number,
|
|
private y: number,
|
|
private duration: number,
|
|
) {
|
|
this.explosionSprite = createAnimatedSpriteForUnit(FxType.SAMExplosion);
|
|
}
|
|
|
|
renderTick(frameTime: number, ctx: CanvasRenderingContext2D): boolean {
|
|
if (this.explosionSprite) {
|
|
this.lifeTime += frameTime;
|
|
if (this.lifeTime >= this.duration) {
|
|
return false;
|
|
}
|
|
if (this.explosionSprite.isActive()) {
|
|
this.explosionSprite.update(frameTime);
|
|
this.explosionSprite.draw(ctx, this.x, this.y);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
return false;
|
|
}
|
|
}
|