package ludo

import (
	"crypto/rand"
	"fmt"
	"math/big"
	"server/msg"
)

func randomSz() int32 {
	// 生成0-5的随机数
	n, err := rand.Int(rand.Reader, big.NewInt(6))
	if err != nil {
		panic(err) // 在实际应用中应该更优雅地处理错误
	}
	// 转换为int32并加1得到1-6的范围
	return int32(n.Int64()) + 1
}
func roleIndexOf(arr []*msg.ColorData, target *msg.ColorData) int {
	for i, v := range arr {
		if v == target { // 比较指针地址
			return i
		}
	}
	return -1 // 未找到
}

func getRandomItem[T any](slice []T) T {
	if len(slice) == 0 {
		var zero T
		return zero
	}

	// 生成加密安全的随机数
	n, _ := rand.Int(rand.Reader, big.NewInt(int64(len(slice))))
	return slice[n.Int64()]
}

// 随机获取一个人机名字
func getRandomRobotName() string {
	n, err := rand.Int(rand.Reader, big.NewInt(100))
	if err != nil {
		panic(err) // 在实际应用中应该更优雅地处理错误
	}
	return fmt.Sprintf("robot_%d", n)
}

// 随机获取一个人机头像
func getRandomRobotHead() string {
	n, err := rand.Int(rand.Reader, big.NewInt(13))
	if err != nil {
		panic(err) // 在实际应用中应该更优雅地处理错误
	}
	return fmt.Sprintf("3_%d", n)
}

// 随机获取一个人机金币
func getRandomRobotCoin() int32 {
	n, err := rand.Int(rand.Reader, big.NewInt(1000))
	if err != nil {
		panic(err) // 在实际应用中应该更优雅地处理错误
	}
	return int32(n.Int64()) + 1000
}
