订单优化
This commit is contained in:
parent
bce5d809df
commit
6c62608929
@ -194,6 +194,21 @@ func GetEmitRetire(Id string) int {
|
|||||||
return gamedata.GetIntValue(data, "Retire")
|
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获取棋子类型
|
// 根据Id获取棋子类型
|
||||||
func GetTypeById(Id int) string {
|
func GetTypeById(Id int) string {
|
||||||
data, err := gamedata.GetDataByIntKey(CFG_NAME, Id)
|
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)
|
initReflectChess(Emit, EnergyMul)
|
||||||
filterPool(o)
|
filterPool(o)
|
||||||
OrderN, err := userCfg.GetOrderNByLv(lv)
|
OrderN, err := userCfg.GetOrderNByLv(lv)
|
||||||
RandChessNum := getChessNumRand(OrderN)
|
//RandChessNum := getChessNumRand(OrderN)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, DIFF_LOW, err
|
return nil, DIFF_LOW, err
|
||||||
}
|
}
|
||||||
// 生成订单难度和棋子数量
|
// 生成订单难度和棋子数量
|
||||||
ChessNum := GoUtil.RandMap(RandChessNum)
|
//ChessNum := GoUtil.RandMap(RandChessNum)
|
||||||
OrderDiffRand := getOrderDiffRand(lv, o.LastDiff, OrderN)
|
OrderDiffRand := getOrderDiffRand(lv, o.LastDiff, OrderN)
|
||||||
OrderDiff := GoUtil.RandMap(OrderDiffRand)
|
OrderDiff := GoUtil.RandMap(OrderDiffRand)
|
||||||
if o.NextDiff != 0 {
|
if o.NextDiff != 0 {
|
||||||
@ -569,16 +569,23 @@ func filterPool(o *OrderMod) {
|
|||||||
|
|
||||||
func ShuffleColor(List []string, Last string) []string {
|
func ShuffleColor(List []string, Last string) []string {
|
||||||
Break := 0
|
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 {
|
for {
|
||||||
Break++
|
Break++
|
||||||
if Break > 1000 {
|
if Break > 1000 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
Same := false
|
Same := false
|
||||||
NewList := GoUtil.ShuffleStringArray(List)
|
NewList := GoUtil.ShuffleStringArray(List2)
|
||||||
if NewList[0] == Last {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
for i := 1; i < len(NewList); i++ {
|
for i := 1; i < len(NewList); i++ {
|
||||||
BeforeSries := mergeDataCfg.GetEmitTypeByColor(NewList[i-1])
|
BeforeSries := mergeDataCfg.GetEmitTypeByColor(NewList[i-1])
|
||||||
NowSries := mergeDataCfg.GetEmitTypeByColor(NewList[i])
|
NowSries := mergeDataCfg.GetEmitTypeByColor(NewList[i])
|
||||||
@ -586,8 +593,23 @@ func ShuffleColor(List []string, Last string) []string {
|
|||||||
Same = true
|
Same = true
|
||||||
break
|
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 {
|
if !Same {
|
||||||
return NewList
|
return NewList
|
||||||
}
|
}
|
||||||
@ -620,7 +642,44 @@ func ShuffleColor(List []string, Last string) []string {
|
|||||||
|
|
||||||
// 获取发射器系列
|
// 获取发射器系列
|
||||||
func getEmitSeries(o *OrderMod, Emit []int) 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)
|
ColorShuffle := make([]string, 0)
|
||||||
for _, v := range Emit {
|
for _, v := range Emit {
|
||||||
EmitId := mergeDataCfg.GetEmitId(v)
|
EmitId := mergeDataCfg.GetEmitId(v)
|
||||||
@ -641,25 +700,6 @@ func getEmitSeries(o *OrderMod, Emit []int) string {
|
|||||||
}
|
}
|
||||||
o.ColorShuffle = ShuffleColor(ColorShuffle, o.LastColor)
|
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