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