63 lines
1.2 KiB
Go
63 lines
1.2 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 ParseAdminArgs(args []interface{}) (gate.Agent, []byte) {
|
|
a := args[0].(gate.Agent)
|
|
buf := args[1].([]byte)
|
|
return a, 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)
|
|
}
|