import BezierEasing from "bezier-easing"
import { Utility_EaseOut } from "../utils/utility"
import { AutoDestroy } from "./common/AutoDestroy"

const { regClass, property } = Laya

@regClass()
export class ScoreAdd extends Laya.Script {
  declare owner: Laya.Box

  @property(Laya.Label)
  public shadow: Laya.Label

  @property(Laya.Label)
  public label: Laya.Label

  onAwake(): void {
    this.shadow.scaleX = 0
    this.shadow.scaleY = 0
    this.label.scaleX = 0
    this.label.scaleY = 0

    const d = this.owner.getComponent(AutoDestroy)
    d.lifeTime = 2
  }

  onStart(): void {
    // const filter: Laya.GlowFilter = new Laya.GlowFilter("#000000", 5, 0, 0);
    // this.label.filters = [filter];

    function bezierEaseLaya1(t: number, b: number, c: number, d: number) {
      const bezier = BezierEasing(0.55, 1.8, 0.8, 0.95)
      const p = bezier(t / d)
      return c * p + b
    }
    Laya.Tween.to(this.shadow, { scaleX: 1, scaleY: 1 }, 300, bezierEaseLaya1, null, 0)
    Laya.Tween.to(this.label, { scaleX: 1, scaleY: 1 }, 300, bezierEaseLaya1, null, 0)

    Laya.Tween.to(this.shadow, { y: -102 }, 300, Utility_EaseOut, null, 500)
    Laya.Tween.to(this.label, { y: -102 }, 300, Utility_EaseOut, null, 500)

    Laya.Tween.to(this.shadow, { alpha: 0 }, 300, Utility_EaseOut, null, 500)
    Laya.Tween.to(this.label, { alpha: 0 }, 300, Utility_EaseOut, null, 500)

    // Laya.Tween.to(this.label, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.bounceIn, null, 0)
    // Laya.Tween.to(this.label, { y: -102 }, 300, Laya.Ease.linearOut, null, 500)
    // Laya.Tween.to(this.label, { alpha: 0 }, 300, Laya.Ease.linearOut, null, 500)
  }

  public onSetText(text: string): void {
    this.label.text = text
  }
}
