订单优化

This commit is contained in:
hahwu 2025-09-16 18:46:17 +08:00
parent 51bed78e8b
commit 00f6d544d8
2 changed files with 45 additions and 13 deletions

View File

@ -2,7 +2,6 @@ package order
import ( import (
"fmt" "fmt"
"log"
"server/GoUtil" "server/GoUtil"
limitedTimeEventCfg "server/conf/limitedTimeEvent" limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData" mergeDataCfg "server/conf/mergeData"
@ -30,6 +29,7 @@ type OrderMod struct {
FinishOrder []int // 已完成订单 FinishOrder []int // 已完成订单
IsCharge bool // 是否充值 IsCharge bool // 是否充值
AutoEmit []string // 自动发射器 AutoEmit []string // 自动发射器
LastChess int // 上次生成订单的棋子
} }
type Order struct { type Order struct {
@ -433,7 +433,18 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
} }
break break
} }
log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) // if len(mergeList) == 2 {
// ColorMap := make(map[string]int)
// for _, v := range mergeList {
// Color := mergeDataCfg.GetColorById(v)
// ColorMap[Color]++
// if ColorMap[Color] > 1 {
// log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err)
// return fmt.Errorf("订单生成失败,重复颜色")
// }
// }
// }
o.addOrder(mergeList, OrderDiff, Common_type) o.addOrder(mergeList, OrderDiff, Common_type)
return nil return nil
} }

View File

@ -421,17 +421,17 @@ func ShuffleColor(List []string, Last string) []string {
Break := 0 Break := 0
for { for {
Break++ Break++
if Break > 100 { if Break > 1000 {
break break
} }
Same := false Same := false
List = GoUtil.ShuffleStringArray(List) NewList := GoUtil.ShuffleStringArray(List)
if List[0] == Last { if NewList[0] == Last {
continue continue
} }
for i := 1; i < len(List); i++ { for i := 1; i < len(NewList); i++ {
BeforeSries := mergeDataCfg.GetEmitTypeByColor(List[i-1]) BeforeSries := mergeDataCfg.GetEmitTypeByColor(NewList[i-1])
NowSries := mergeDataCfg.GetEmitTypeByColor(List[i]) NowSries := mergeDataCfg.GetEmitTypeByColor(NewList[i])
if BeforeSries == NowSries { if BeforeSries == NowSries {
Same = true Same = true
break break
@ -439,7 +439,27 @@ func ShuffleColor(List []string, Last string) []string {
} }
if !Same { if !Same {
return List return NewList
}
}
L1 := make(map[string][]string, 0)
for _, v := range List {
Sries := mergeDataCfg.GetEmitTypeByColor(v)
L1[Sries] = append(L1[Sries], v)
}
List = make([]string, 0)
for _, v := range L1 {
List = append(List, v[0])
}
for _, v := range L1 {
if len(v) > 1 {
List = append(List, v[1])
}
}
for _, v := range L1 {
if len(v) > 2 {
List = append(List, v[2])
} }
} }
return List return List
@ -464,6 +484,7 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
} }
PopEmitId, NewSlice := GoUtil.PopStringArray(o.ColorShuffle) PopEmitId, NewSlice := GoUtil.PopStringArray(o.ColorShuffle)
o.ColorShuffle = NewSlice o.ColorShuffle = NewSlice
o.LastColor = PopEmitId
if len(o.ColorShuffle) == 0 { if len(o.ColorShuffle) == 0 {
ColorShuffle := make([]string, 0) ColorShuffle := make([]string, 0)
for _, v := range Emit { for _, v := range Emit {
@ -479,7 +500,6 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
} }
o.ColorShuffle = ShuffleColor(ColorShuffle, o.LastColor) o.ColorShuffle = ShuffleColor(ColorShuffle, o.LastColor)
} }
o.LastColor = PopEmitId
return PopEmitId return PopEmitId
} }
@ -515,12 +535,13 @@ func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) in
MinChessId := 0 MinChessId := 0
for i, chess := range o.ChessPool { for i, chess := range o.ChessPool {
chessColor := mergeDataCfg.GetColorById(chess) chessColor := mergeDataCfg.GetColorById(chess)
if reflectChess[chess] > Diff {
MinChessId = chess
}
if Color != chessColor { if Color != chessColor {
continue continue
} }
if reflectChess[chess] > Diff {
MinChessId = chess
}
ChessLv := mergeDataCfg.GetLvById(chess) ChessLv := mergeDataCfg.GetLvById(chess)
if reflectChess[chess] == Diff && ChessLv >= EnergyMul+1 && ChessLv <= EnergyMul+12 { if reflectChess[chess] == Diff && ChessLv >= EnergyMul+1 && ChessLv <= EnergyMul+12 {
o.ChessPool = append(o.ChessPool[:i], o.ChessPool[i+1:]...) o.ChessPool = append(o.ChessPool[:i], o.ChessPool[i+1:]...)