abstract class ScaleButtonEffects( val grow : float ) : ButtonEffects { var initialScale : float override fun initialise(button: Button) { initialScale = button.actor.scaleXY } override fun enter(button: Button): Action { return ScaleTo(button.actor, 0.1, initialScale * 1.2, Eases.easeOut) } override fun exit(button: Button): Action { return ScaleTo(button.actor, 0.1, initialScale, Eases.easeIn) } } class PostcardButtonEffects : ScaleButtonEffects( 1.2 ) { override fun clicked(button: Button): Action { return TurnBy(button.actor.direction, 0.5, Angle.degrees(10), Eases.easeIn) and ScaleTo(button.actor, 0.5, initialScale * 1.5, Eases.easeIn) } } class MenuButtonEffects : ScaleButtonEffects( 1.2 ) { override fun clicked(button: Button): Action { return ScaleTo(button.actor, 0.7, initialScale, Eases.easeOut) and TurnBy(button.actor.direction, 0.65, button.actor.direction + Angle.degrees(2 * 360.0), Eases.easeOutBack) } } class GameButtonEffects : ScaleButtonEffects( 1.2 ) { }