import { Vec2 } from 'cc'

export default class RandomUtil {
  // 随机minNum到maxNum的数字 （包含maxNum）
  public static nextInt(minNum: number, maxNum: number) {
    return Math.floor(Math.random() * (maxNum - minNum + 1) + minNum)
  }

  public static nextNumber(minNum: number, maxNum: number) {
    return Math.random() * (maxNum - minNum) + minNum
  }

  public static nextSign() {
    const temp = Math.random()
    if (temp < 0.5) return 1

    return -1
  }

  public static nextBoolean() {
    const temp = Math.random()
    return temp < 0.5
  }

  public static randomArr(nowArr: Array<any>, needNum: number) {
    const tempArr: Array<any> = nowArr.concat()
    const resultArr: Array<any> = []
    for (let index = 0; index < needNum; index++) {
      if (tempArr.length <= 0) break

      const randomIndex: number = RandomUtil.nextInt(0, tempArr.length - 1)
      resultArr.push(tempArr.splice(randomIndex, 1)[0])
    }
    return resultArr
  }

  public static randomItem(nowArr: Array<any>) {
    return this.randomArr(nowArr, 1)[0]
  }

  public static randomP(left: number, right: number, up: number, down: number) {
    const randomX: number = RandomUtil.nextNumber(left, right)
    const randomY: number = RandomUtil.nextNumber(up, down)
    return new Vec2(randomX, randomY)
  }
}
