diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index d6f4935a..5e144ae4 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -7,8 +7,9 @@ import ( userCfg "server/conf/user" ) -var reflectChess = map[int]int{} +var reflectChess = map[int]int{} // 棋子难度映射表 +// 订单棋子数量 func getChessNumRand(OrderN int) map[int]int { return map[int]int{ 1: int(15 - 3*OrderN), @@ -17,6 +18,7 @@ func getChessNumRand(OrderN int) map[int]int { } } +// 根据上一个订单难度和系数 生成订单难度 func getOrderDiffRand(Diff, OrderN int) map[int]int { var d map[int]int switch Diff { @@ -42,6 +44,7 @@ func getOrderDiffRand(Diff, OrderN int) map[int]int { return d } +// 根据订单难度生成棋子难度 func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int { var rs map[int]int switch ChessNum { @@ -124,6 +127,7 @@ func getChessDiff(ChessNum, OrderDiff, OrderN int) map[int]int { return rs } +// 根据难度生成棋子等级 func getChessLv(Min, Max, Diff int) int { Start := Min End := Max @@ -142,35 +146,7 @@ func getChessLv(Min, Max, Diff int) int { return GoUtil.RandNum(Start, End) } -// func getRandChessColorList(o *OrderMod, Emit []int, EnergyMul int) map[string]int { -// r := make(map[string]int) -// ChessList := make([]int, 0) -// for _, v := range o.OrderList { -// if v.Type == Common_type { -// ChessList = append(ChessList, v.MergeId...) -// } -// } -// for _, v := range Emit { -// Produce := mergeDataCfg.GetEmitProduceType(v) -// if len(Produce) == 0 { -// continue -// } -// if len(Produce) == 1 { -// if Produce[0] == "" { -// continue -// } -// r[Produce[0]] = 100 -// continue -// } -// r[Produce[0]] = 80 -// r[Produce[1]] = 20 -// if checkA1High(ChessList, v, EnergyMul) { -// r[Produce[1]] += 20 -// } -// } -// return r -// } - +// 宝箱雨随机棋子类型 func RandChessColor(Emit []int) string { r := make(map[string]int) for _, v := range Emit { @@ -191,22 +167,7 @@ func RandChessColor(Emit []int) string { return GoUtil.RandStringMap(r) } -// func checkA1High(ChessList []int, Emit int, EnergyMul int) bool { -// ChessMinLev, ChessMaxLev := getChesslvRange(Emit, EnergyMul) -// HighLv := ChessMinLev + ((ChessMaxLev-ChessMinLev)/3)*2 -// Produce := mergeDataCfg.GetEmitProduceChessType(Emit) -// for _, v := range ChessList { -// ChessColor := mergeDataCfg.GetColorById(v) -// if ChessColor == Produce[0] { -// ChessLv := mergeDataCfg.GetLvById(v) -// if ChessLv >= HighLv { -// return true -// } -// } -// } -// return false -// } - +// 获取棋子等级范围 func getChesslvRange(Emit int, EnergyMul int) (int, int) { RandEmitLv := mergeDataCfg.GetLvById(Emit) EmitId := mergeDataCfg.GetEmitId(Emit) @@ -219,6 +180,7 @@ func getChesslvRange(Emit int, EnergyMul int) (int, int) { return ChessMinLev, ChessMaxLev } +// 根据类型获取发射器id func getEmitByColor(Emit []int, color string) int { for _, v := range Emit { Produce := mergeDataCfg.GetEmitProduceChessType(v) @@ -231,9 +193,10 @@ func getEmitByColor(Emit []int, color string) int { return 0 } -// 生成订单 +// 随机生成订单棋子 func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, error) { initReflectChess(Emit, EnergyMul) + filterPool(o) OrderN, err := userCfg.GetOrderNByLv(lv) RandChessNum := getChessNumRand(OrderN) if err != nil { @@ -259,7 +222,19 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul int) ([]int, int, return mergeList, OrderDiff, nil } -func getEmitId(o *OrderMod, Emit []int) string { +// 筛选棋子池 从中剔除不符合难度的棋子 +func filterPool(o *OrderMod) { + NewPool := make([]int, 0) + for _, v := range o.ChessPool { + if _, ok := reflectChess[v]; ok { + NewPool = append(NewPool, v) + } + } + o.ChessPool = NewPool +} + +// 获取发射器系列 +func getEmitSeries(o *OrderMod, Emit []int) string { if o.EmitShuffle == nil { o.EmitShuffle = make([]string, 0) for _, v := range Emit { @@ -301,6 +276,7 @@ func getEmitId(o *OrderMod, Emit []int) string { return PopEmitId } +// 订单能获取的宠物币 func getOrderStar(ChessList []int) int { Star := 0 for _, v := range ChessList { @@ -309,9 +285,10 @@ func getOrderStar(ChessList []int) int { return Star } +// 从棋子池中获取棋子 func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int { - EmitId := getEmitId(o, Emit) - EmitChessId := getEmitBySeries(Emit, EmitId) + EmitSeries := getEmitSeries(o, Emit) + EmitChessId := getEmitBySeries(Emit, EmitSeries) ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId) // 从棋子池中获取棋子 MinChessId := 0 @@ -375,7 +352,9 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in return ChessId } +// 初始化棋子难度映射表 func initReflectChess(Emits []int, EnergyMul int) { + reflectChess = make(map[int]int) Start, End := 0, 0 for _, Emit := range Emits { ProduceColor := mergeDataCfg.GetEmitProduceType(Emit) @@ -413,10 +392,12 @@ func initReflectChess2(Color string, Start, End, Diff, adjust int) { } } +// 调整棋子等级 func adjustLev(Lev, EnergyMul int) int { return max(min(Lev, EnergyMul+12), EnergyMul+1) } +// 获取发射器系列 func getEmitBySeries(EmitList []int, EmitId string) int { for _, v := range EmitList { ProduceColor := mergeDataCfg.GetEmitProduceType(v)