pet_home_server/src/server/game_util/mapUtil.go
2026-02-04 15:00:04 +08:00

109 lines
1.8 KiB
Go

package GoUtil
import (
dailyTaskCfg "server/conf/daily_task"
"server/game/mod/item"
)
func MapIntToSlice(m map[int]struct{}) []int32 {
var s []int32
for k := range m {
s = append(s, int32(k))
}
return s
}
func MapIntToIntSlice(m map[int]struct{}) []int {
var s []int
for k := range m {
s = append(s, k)
}
return s
}
func MapIntToInt32(m map[int]int) map[int32]int32 {
r := make(map[int32]int32)
for k, v := range m {
r[int32(k)] = int32(v)
}
return r
}
func MapInt32ToInt(m map[int32]int32) map[int]int {
r := make(map[int]int)
for k, v := range m {
r[int(k)] = int(v)
}
return r
}
func GetMapKey(v any) []int {
if v == nil {
return []int{}
}
switch m := v.(type) {
case map[int]int:
var keys []int
for k := range m {
keys = append(keys, k)
}
return keys
case map[int32]int32:
var keys []int
for k := range m {
keys = append(keys, int(k))
}
return keys
case map[int]struct{}:
var keys []int
for k := range m {
keys = append(keys, int(k))
}
return keys
case map[int]string:
var keys []int
for k := range m {
keys = append(keys, int(k))
}
return keys
case map[int][]*item.Item:
var keys []int
for k := range m {
keys = append(keys, int(k))
}
return keys
case map[int]dailyTaskCfg.Jackpot:
var keys []int
for k := range m {
keys = append(keys, int(k))
}
return keys
}
return []int{}
}
func DiffMap(a, b map[int]int) map[int]int {
diff := make(map[int]int)
for k, v := range a {
if v2, ok := b[k]; !ok || v != v2 {
diff[k] = v
}
}
for k, v := range b {
if _, ok := a[k]; !ok {
diff[k] = v
}
}
return diff
}
func GetMapIntValueByKey(m interface{}, key string) int {
mi, ok := m.(map[string]interface{})
if !ok {
return 0
}
if v, ok := mi[key]; ok {
return Int(v)
}
return 0
}