Engine.DialogTransitionerSlide = class
{
constructor(dialog)
{
this.dialog = dialog;
this.active = false;
this.TransitionLocation = { "Left":1, "Right":2, "Top":3, "Bottom":4, "Center":5 };
this.fromSide = this.TransitionLocation.Left;
this.toSide = this.TransitionLocation.Right;
this.start = this.TransitionLocation.Left;
this.target = this.TransitionLocation.Center;
}
setTransitionStyle(fromSide, toSide)
{
this.fromSide = fromSide;
this.toSide = toSide;
}
transitionOut(finishHide)
{
this.start = this.TransitionLocation.Center;
this.target = this.toSide;
this.time = 0.5;
this.transition(finishHide);
}
transitionIn(finishSlide)
{
this.start = this.fromSide;
this.target = this.TransitionLocation.Center;
this.time = 0.5;
this.transition(finishSlide);
}
transition(callback)
{
this.active = true;
if (this.dialog.dialogWidth == 0) this.dialog.dialogWidth = this.dialog.width;
if (this.dialog.dialogHeight == 0) this.dialog.dialogHeight = this.dialog.height;
var screenWidth = EngineSettings.screenWidth;
var screenHeight = EngineSettings.screenHeight;
var startLoc = new PIXI.Point(0, 0);
switch (this.start)
{
case this.TransitionLocation.Left:
startLoc.x = -this.dialog.dialogWidth;
startLoc.y = (screenHeight - this.dialog.dialogHeight) / 2;
break;
case this.TransitionLocation.Right:
startLoc.x = screenWidth;
startLoc.y = (screenHeight - this.dialog.dialogHeight) / 2;
break;
case this.TransitionLocation.Top:
startLoc.x = (screenWidth - this.dialog.dialogWidth) / 2;
startLoc.y = -dialog.Height;
break;
case this.TransitionLocation.Bottom:
startLoc.x = (screenWidth - this.dialog.dialogWidth) / 2;
startLoc.y = screenHeight;
break;
case this.TransitionLocation.Center:
startLoc.x = (screenWidth - this.dialog.dialogWidth) / 2;
startLoc.y = (screenHeight - this.dialog.dialogHeight) / 2;
break;
}
var endLoc = this.getTargetPosition();
var tx = new Engine.SimpleTween((v) => { this.dialog.x = v; }, Engine.SimpleTween.quadEaseOut, startLoc.x, endLoc.x, this.time, true);
var ty = new Engine.SimpleTween((v) => { this.dialog.y = v; }, Engine.SimpleTween.quadEaseOut, startLoc.y, endLoc.y, this.time, true);
this.dialog.x = startLoc.x;
this.dialog.y = startLoc.y;
ty.onFinish = () =>
{
this.active = false;
if (callback != null) callback();
};
}
getTargetPosition()
{
var screenWidth = EngineSettings.screenWidth;
var screenHeight = EngineSettings.screenHeight;
var endLoc = new PIXI.Point(0, 0);
switch (this.target)
{
case this.TransitionLocation.Left:
endLoc.x = -this.dialog.dialogWidth;
endLoc.y = (screenHeight - this.dialog.dialogHeight) / 2;
break;
case this.TransitionLocation.Right:
endLoc.x = screenWidth;
endLoc.y = (screenHeight - this.dialog.dialogHeight) / 2;
break;
case this.TransitionLocation.Top:
endLoc.x = (screenWidth - this.dialog.dialogWidth) / 2;
endLoc.y = -this.dialog.dialogHeight;
break;
case this.TransitionLocation.Bottom:
endLoc.x = (screenWidth - this.dialog.dialogWidth) / 2;
endLoc.y = screenHeight;
break;
case this.TransitionLocation.Center:
endLoc.x = (screenWidth - this.dialog.dialogWidth) / 2;
endLoc.y = (screenHeight - this.dialog.dialogHeight) / 2;
break;
}
return endLoc;
}
}