109 lines
1.8 KiB
Go
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
|
|
}
|