订单优化
This commit is contained in:
parent
bce5d809df
commit
6c62608929
@ -194,6 +194,21 @@ func GetEmitRetire(Id string) int {
|
||||
return gamedata.GetIntValue(data, "Retire")
|
||||
}
|
||||
|
||||
func GetEmitProductNumByColor(Id string) int {
|
||||
data, err := gamedata.GetData(CFG_MERGE_EMIT)
|
||||
if err != nil {
|
||||
log.Debug("GetEmitProductNumByColor GetOne Id:%v not found", Id)
|
||||
return 0
|
||||
}
|
||||
for _, v := range data {
|
||||
ColorList := strings.Split(gamedata.GetStringValue(v, "Product_Type"), ",")
|
||||
if GoUtil.InStringArray(Id, ColorList) {
|
||||
return len(strings.Split(gamedata.GetStringValue(v, "Product_Type"), ","))
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// 根据Id获取棋子类型
|
||||
func GetTypeById(Id int) string {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
|
||||
|
||||
@ -486,12 +486,12 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) (
|
||||
initReflectChess(Emit, EnergyMul)
|
||||
filterPool(o)
|
||||
OrderN, err := userCfg.GetOrderNByLv(lv)
|
||||
RandChessNum := getChessNumRand(OrderN)
|
||||
//RandChessNum := getChessNumRand(OrderN)
|
||||
if err != nil {
|
||||
return nil, DIFF_LOW, err
|
||||
}
|
||||
// 生成订单难度和棋子数量
|
||||
ChessNum := GoUtil.RandMap(RandChessNum)
|
||||
//ChessNum := GoUtil.RandMap(RandChessNum)
|
||||
OrderDiffRand := getOrderDiffRand(lv, o.LastDiff, OrderN)
|
||||
OrderDiff := GoUtil.RandMap(OrderDiffRand)
|
||||
if o.NextDiff != 0 {
|
||||
@ -569,16 +569,23 @@ func filterPool(o *OrderMod) {
|
||||
|
||||
func ShuffleColor(List []string, Last string) []string {
|
||||
Break := 0
|
||||
List2 := make([]string, len(List))
|
||||
List3 := make([]string, len(List))
|
||||
for _, v := range List {
|
||||
if mergeDataCfg.GetEmitProductNumByColor(v) == 1 {
|
||||
List2 = append(List2, v)
|
||||
} else {
|
||||
List3 = append(List3, v)
|
||||
}
|
||||
}
|
||||
|
||||
for {
|
||||
Break++
|
||||
if Break > 1000 {
|
||||
break
|
||||
}
|
||||
Same := false
|
||||
NewList := GoUtil.ShuffleStringArray(List)
|
||||
if NewList[0] == Last {
|
||||
continue
|
||||
}
|
||||
NewList := GoUtil.ShuffleStringArray(List2)
|
||||
for i := 1; i < len(NewList); i++ {
|
||||
BeforeSries := mergeDataCfg.GetEmitTypeByColor(NewList[i-1])
|
||||
NowSries := mergeDataCfg.GetEmitTypeByColor(NewList[i])
|
||||
@ -586,8 +593,23 @@ func ShuffleColor(List []string, Last string) []string {
|
||||
Same = true
|
||||
break
|
||||
}
|
||||
|
||||
}
|
||||
// 将 List3 随机插入 NewList 中
|
||||
if len(List3) > 0 {
|
||||
for _, v := range GoUtil.ShuffleStringArray(List3) {
|
||||
idx := GoUtil.RandNum(0, len(NewList))
|
||||
if idx >= len(NewList) {
|
||||
NewList = append(NewList, v)
|
||||
} else {
|
||||
NewList = append(NewList[:idx+1], NewList[idx:]...)
|
||||
NewList[idx] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
if NewList[0] == Last {
|
||||
continue
|
||||
}
|
||||
|
||||
if !Same {
|
||||
return NewList
|
||||
}
|
||||
@ -620,7 +642,44 @@ func ShuffleColor(List []string, Last string) []string {
|
||||
|
||||
// 获取发射器系列
|
||||
func getEmitSeries(o *OrderMod, Emit []int) string {
|
||||
if o.ColorShuffle == nil {
|
||||
o.initColorShuffle(Emit)
|
||||
PopEmitId := ""
|
||||
NewSlice := make([]string, 0)
|
||||
ChessColorNum := map[string]int{}
|
||||
for _, v := range o.OrderList {
|
||||
for _, c := range v.MergeId {
|
||||
Color := mergeDataCfg.GetColorById(c)
|
||||
ChessColorNum[Color]++
|
||||
}
|
||||
}
|
||||
Break := 0
|
||||
for {
|
||||
if Break > 1000 {
|
||||
break
|
||||
}
|
||||
Break++
|
||||
PopEmitId, NewSlice = GoUtil.PopStringArray(o.ColorShuffle)
|
||||
o.ColorShuffle = NewSlice
|
||||
if PopEmitId == "" {
|
||||
o.initColorShuffle(Emit)
|
||||
continue
|
||||
}
|
||||
PopEmitIdProductNum := mergeDataCfg.GetEmitProductNumByColor(PopEmitId)
|
||||
o.initColorShuffle(Emit)
|
||||
if PopEmitIdProductNum == 1 && ChessColorNum[PopEmitId] >= 2 {
|
||||
continue
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
o.ColorShuffle = NewSlice
|
||||
o.LastColor = PopEmitId
|
||||
o.initColorShuffle(Emit)
|
||||
return PopEmitId
|
||||
}
|
||||
|
||||
func (o *OrderMod) initColorShuffle(Emit []int) {
|
||||
if len(o.ColorShuffle) == 0 {
|
||||
ColorShuffle := make([]string, 0)
|
||||
for _, v := range Emit {
|
||||
EmitId := mergeDataCfg.GetEmitId(v)
|
||||
@ -641,25 +700,6 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
|
||||
}
|
||||
o.ColorShuffle = ShuffleColor(ColorShuffle, o.LastColor)
|
||||
}
|
||||
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 {
|
||||
EmitId := mergeDataCfg.GetEmitId(v)
|
||||
if GoUtil.InStringArray(EmitId, o.AutoEmit) {
|
||||
continue
|
||||
}
|
||||
EmitProduct := mergeDataCfg.GetEmitProduceType(v)
|
||||
if len(EmitProduct) == 0 || EmitProduct[0] == "" {
|
||||
continue
|
||||
}
|
||||
ColorShuffle = append(ColorShuffle, EmitProduct...)
|
||||
}
|
||||
o.ColorShuffle = ShuffleColor(ColorShuffle, o.LastColor)
|
||||
}
|
||||
return PopEmitId
|
||||
}
|
||||
|
||||
// 订单能获取的宠物币
|
||||
|
||||
Loading…
Reference in New Issue
Block a user