pet_home_server/src/server/game/common.go
2024-11-21 19:36:12 +08:00

56 lines
1.0 KiB
Go

package game
import (
"reflect"
"server/game/internal"
"server/pkg/github.com/name5566/leaf/gate"
"sort"
)
const (
PLAYER_BASE_DATA = "PlayerBaseData"
BASE_MODULE = "base"
CHESS_MODULE = "chess"
)
// 解析参数
func ParseArgs(args []interface{}) (gate.Agent, *Player, []byte) {
a := args[0].(gate.Agent)
p, _ := internal.Agents.Load(a)
player := p.(*Player)
buf := args[1].([]byte)
return a, player, buf
}
// 获取结构体名称
func GetStructName(v interface{}) string {
t := reflect.TypeOf(v)
if t.Kind() == reflect.Ptr {
t = t.Elem()
}
if t.Kind() == reflect.Struct {
return t.Name()
}
return ""
}
// 判断两个切片的元素是否一致
func SlicesEqual(a, b []int) bool {
if len(a) != len(b) {
return false
}
// 创建副本以避免修改原始切片
aCopy := make([]int, len(a))
bCopy := make([]int, len(b))
copy(aCopy, a)
copy(bCopy, b)
// 对切片进行排序
sort.Ints(aCopy)
sort.Ints(bCopy)
// 比较排序后的切片
return reflect.DeepEqual(aCopy, bCopy)
}