订单优化
This commit is contained in:
parent
51bed78e8b
commit
00f6d544d8
@ -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
|
||||
}
|
||||
|
||||
@ -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:]...)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user