Engine.DialogTransitionerExpand = class { constructor(dialog /*Dialog*/) { this.active = false; this.dialog = dialog; this.dontSettle this.waiter = new CountWaiter(CountWaiterStatics.CountWaiterMode.WaitForGo); this.sx = new Engine.SimpleTween(); this.sy = new Engine.SimpleTween(); this.dx = new Engine.SimpleTween(); this.dy = new Engine.SimpleTween(); this.popInTime = 0.3; this.startX = -1; this.startY = -1; this.endX = -1; this.endY = -1; this.enter } setValues(startX /*float*/, startY /*float*/, endX /*float*/, endY /*float*/, dontSettle /*bool*/) { if (dontSettle === undefined) dontSettle = false; this.dontSettle = dontSettle; this.popInTime = dontSettle ? 0.3 : 0.2; if (endX != -1) { this.endX = endX; this.endY = endY; } this.startX = startX; this.startY = startY; } transitionOut(finishHide /*Action*/) { this.enter = false; this.transition(() => finishHide()); } transitionIn(finishSlide /*Action*/) { if (this.startX == -1) { this.setValues(EngineSettings.screenWidth / 2, EngineSettings.screenHeight / 2, EngineSettings.screenWidth / 2, EngineSettings.screenHeight / 2); } this.enter = true; this.transition(() => finishSlide()); } transition(callback /*Action*/) { this.active = true; this.sx.stop(); this.sy.stop(); this.dx.stop(); this.dy.stop(); if (this.enter) { this.dialog.scale.x = 0; this.dialog.scale.y = 0; } if (this.enter) { this.sx.init((v) => { this.dialog.scale.x = v; }, Engine.SimpleTween.sineWaveIn, 0.0, 1.0, this.popInTime, false); this.sy.init((v) => { this.dialog.scale.y = v; }, Engine.SimpleTween.sineWaveIn, 0.0, 1.0, this.popInTime, false); this.dx.init((v) => { this.dialog.x = v; }, Engine.SimpleTween.sineWaveIn, this.startX, this.endX, this.popInTime, false); this.dy.init((v) => { this.dialog.y = v; }, Engine.SimpleTween.sineWaveIn, this.startY, this.endY, this.popInTime, false); } else { this.sx.init((v) => { this.dialog.scale.x = v; }, Engine.SimpleTween.easeLinear, 1.0, 0.0, this.popInTime, false); this.sy.init((v) => { this.dialog.scale.y = v; }, Engine.SimpleTween.easeLinear, 1.0, 0.0, this.popInTime, false); this.dx.init((v) => { this.dialog.x = v; }, Engine.SimpleTween.easeLinear, this.endX, this.startX, this.popInTime, false); this.dy.init((v) => { this.dialog.y = v; }, Engine.SimpleTween.easeLinear, this.endY, this.startY, this.popInTime, false); } this.waiter.init(() => { this.active = false; if (callback != null) callback(); }); this.waiter.waitMany(4); this.sx.onFinish = () => { this.waiter.waitDone(); }; this.sy.onFinish = () => { this.waiter.waitDone(); }; this.dx.onFinish = () => { this.waiter.waitDone(); }; this.dy.onFinish = () => { this.waiter.waitDone(); }; this.waiter.go(); } getTargetPosition() { return [endX, endY]; } }