修改订单逻辑

This commit is contained in:
hahwu 2025-01-17 09:55:59 +08:00
parent d4c01061aa
commit d26720a9c2

View File

@ -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)