go_dreamfactory/modules/rtask/help.go
2022-09-15 16:20:29 +08:00

180 lines
3.5 KiB
Go

package rtask
import (
"fmt"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
"github.com/pkg/errors"
)
func verifyParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (n int, err error) {
if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 && cfg.Data4 != 0 && cfg.Data5 != 0 {
if len(vals) != 5 {
err = errors.New(fmt.Sprintf("参数个数不一致,期望5实际是%v", len(vals)))
return
} else {
n = len(vals)
return
}
}
if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 && cfg.Data4 != 0 {
if len(vals) != 4 {
err = errors.New(fmt.Sprintf("参数个数不一致,期望4实际是%v", len(vals)))
return
} else {
n = len(vals)
return
}
}
if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 {
if len(vals) != 3 {
err = errors.New(fmt.Sprintf("参数个数不一致,期望3实际是%v", len(vals)))
return
} else {
n = len(vals)
return
}
}
if cfg.Data1 != 0 && cfg.Data2 != 0 {
if len(vals) != 2 {
err = errors.New(fmt.Sprintf("参数个数不一致,期望2实际是%v", len(vals)))
return
} else {
n = len(vals)
return
}
}
if cfg.Data1 != 0 {
if len(vals) != 1 {
err = errors.New(fmt.Sprintf("参数个数不一致,期望1实际是%v", len(vals)))
return
} else {
n = len(vals)
return
}
}
return
}
func toMap(vals ...int32) map[int32]int32 {
d := make(map[int32]int32, len(vals))
for i, v := range vals {
d[int32(i)] = v
}
return d
}
func toArr(m map[int32]int32) (params []int32) {
for _, v := range m {
params = append(params, v)
}
return
}
func hasUpdateData(len int, data *pb.RtaskData, vals ...int32) map[int32]int32 {
if data == nil || len == 0 {
return nil
}
res := make(map[int32]int32)
switch len {
case 1:
if vals[0] > data.Data[0] {
res[0] = vals[0]
}
case 2:
if vals[0] > data.Data[0] {
res[0] = vals[0]
} else if vals[1] > data.Data[1] {
res[1] = vals[1]
}
case 3:
if vals[0] > data.Data[0] {
res[0] = vals[0]
} else if vals[1] > data.Data[1] {
res[1] = vals[1]
} else if vals[2] > data.Data[2] {
res[2] = vals[2]
}
case 4:
if vals[0] > data.Data[0] {
res[0] = vals[0]
} else if vals[1] > data.Data[1] {
res[1] = vals[1]
} else if vals[2] > data.Data[2] {
res[2] = vals[2]
} else if vals[3] > data.Data[3] {
res[3] = vals[3]
}
case 5:
if vals[0] > data.Data[0] {
res[0] = vals[0]
} else if vals[1] > data.Data[1] {
res[1] = vals[1]
} else if vals[2] > data.Data[2] {
res[2] = vals[2]
} else if vals[3] > data.Data[3] {
res[3] = vals[3]
} else if vals[4] > data.Data[4] {
res[4] = vals[4]
}
}
return res
}
func printCondiLog(uid string, cfg *cfg.GameRdtaskCondiData) {
log.Infof("uid:%v condiId:%v rtype:%v", uid, cfg.Id, cfg.Type)
}
type Num interface {
~int32 | ~string | ~bool
}
func equal[T Num](actual, expected T) bool {
return actual == expected
}
func greatThan(actual, expected int32) bool {
return actual >= expected
}
func lessThan(actual, expected int32) bool {
return actual <= expected
}
func soEqual[T Num](actual T, expected T) (ok bool) {
if !equal(actual, expected) {
log.Debugf("实际:%v 期望:%v", actual, expected)
return
}
ok = true
return
}
func soGreatThan(actual, expected int32) (ok bool) {
if !greatThan(actual, expected) {
log.Debugf("实际:%v 期望:%v", actual, expected)
return
}
ok = true
return
}
func soLessThan(actual, expected int32) (ok bool) {
if !lessThan(actual, expected) {
log.Debugf("实际:%v 期望:%v", actual, expected)
return
}
ok = true
return
}