修改订单逻辑
This commit is contained in:
parent
d4c01061aa
commit
d26720a9c2
@ -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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user