订单优化

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

View File

@ -2,7 +2,6 @@ package order
import (
"fmt"
"log"
"server/GoUtil"
limitedTimeEventCfg "server/conf/limitedTimeEvent"
mergeDataCfg "server/conf/mergeData"
@ -30,6 +29,7 @@ type OrderMod struct {
FinishOrder []int // 已完成订单
IsCharge bool // 是否充值
AutoEmit []string // 自动发射器
LastChess int // 上次生成订单的棋子
}
type Order struct {
@ -433,7 +433,18 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error {
}
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)
return nil
}

View File

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