Engine.EffectGenericFlash = class extends Engine.Drawable { constructor() { super(); this.onFinish = null this.speedMult = 0; this.blurFilter = new PIXI.filters.BlurFilter(); this.colorizeFilter = new Engine.ColorizeFilter();//new PIXI.filters.AdjustmentFilter(); //this.colorizeFilter.brightness = 5; this.colorizeFilter.init(Colors.white); this.flashGraphic = new Engine.Drawable(); this.flashColorGraphic = new Engine.Drawable(); this.currentIndex = 0; this.tween = new Engine.SimpleTween(); this.alphaTargets = [0, 1, 0.38, 0]; this.flashGraphic.additive = true; this.flashColorGraphic.additive = true; this.addChild(this.flashGraphic); this.addChild(this.flashColorGraphic); this.addLiveEffect(this.blurFilter); this.addLiveEffect(this.colorizeFilter); //this.addLiveEffect(this.blurFilter); //this.addLiveEffect(this.colorizeFilter); } init(drawable /*Drawable*/, flashTime /*float*/, color /*Color*/) { this.speedMult = flashTime / 0.7; //var name = Engine.Filter.applyFiltersAndCache(drawable, this.filters); this.flashGraphic.loadFromGraphicName(drawable.graphicData.name); this.flashColorGraphic.loadFromGraphicName(drawable.graphicData.name); //this.flashColorGraphic.tint = color; this.flashGraphic.scale = drawable.scale; this.flashColorGraphic.scale = drawable.scale; } go() { this.currentIndex = 1; this.tween.init((v) => this.animateFilterUpdate(v), Engine.SimpleTween.quadEaseIn, 0, 1, 0.2 * this.speedMult); this.tween.onFinish = () => this.flashFadeInMid(); } flashFadeInMid() { this.currentIndex = 2; this.tween.init((v) => this.animateFilterUpdate(v), Engine.SimpleTween.quadEaseIn, 0, 1, 0.2 * this.speedMult); this.tween.onFinish = () => this.returnFilterToNormal(); } returnFilterToNormal() { this.currentIndex = 3; this.tween.init((v) => this.animateFilterUpdate(v), Engine.SimpleTween.quadEaseIn, 0, 1, 0.3 * this.speedMult); this.tween.onFinish = () => this.finished(); } finished() { if (this.onFinish != null) this.onFinish(); } animateFilterUpdate(value /*float*/) { var start = this.alphaTargets[this.currentIndex - 1]; var end = this.alphaTargets[this.currentIndex]; this.flashGraphic.alpha = start + value * (end - start); this.flashColorGraphic.alpha = start + value * (end - start); } }