固定订单优化
This commit is contained in:
parent
c869a2a3d5
commit
c1c30dc936
@ -171,22 +171,33 @@ func (o *OrderMod) CreatOrderPool(lv int, Emit []int, EnergyMul int) error {
|
|||||||
// 触发生成新的固定订单
|
// 触发生成新的固定订单
|
||||||
func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int) error {
|
func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int) error {
|
||||||
TriggerOrderList := orderCfg.GetStartOrderList()
|
TriggerOrderList := orderCfg.GetStartOrderList()
|
||||||
|
FixedOrder := 0
|
||||||
|
for _, v := range o.OrderList {
|
||||||
|
if v.Type == Fixed_type {
|
||||||
|
FixedOrder++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OrderList := make(map[int]Order, len(o.OrderList))
|
||||||
|
for k, v := range o.OrderList {
|
||||||
|
OrderList[k] = v
|
||||||
|
}
|
||||||
|
// 触发生成新的固定订单
|
||||||
for _, v := range TriggerOrderList {
|
for _, v := range TriggerOrderList {
|
||||||
if GoUtil.InArray(v.Id, o.FinishOrder) {
|
if GoUtil.InArray(v.Id, o.FinishOrder) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
orderInfo, exists := o.OrderList[v.Id]
|
orderInfo, exists := OrderList[v.Id]
|
||||||
if exists && v.Preview == "" {
|
if exists && v.Preview == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// 预览条件不为空且未存在且未完成
|
// 预览条件不为空且未存在且未完成
|
||||||
if v.Preview != "" && !exists && !GoUtil.InArray(v.Id, o.FinishOrder) {
|
if v.Preview != "" && !exists && !GoUtil.InArray(v.Id, o.FinishOrder) {
|
||||||
if o.CheckCondition(lv, v.Preview, Type, Emit) {
|
if o.CheckCondition(lv, v.Preview, Type, Emit, FixedOrder, OrderList) {
|
||||||
o.addFixOrder(v.Id, v.MergeList, Preview_type, v.Items)
|
o.addFixOrder(v.Id, v.MergeList, Preview_type, v.Items)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if v.Appear != "" {
|
if v.Appear != "" {
|
||||||
if o.CheckCondition(lv, v.Appear, Type, Emit) {
|
if o.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) {
|
||||||
if exists {
|
if exists {
|
||||||
orderInfo.Type = Fixed_type
|
orderInfo.Type = Fixed_type
|
||||||
o.OrderList[v.Id] = orderInfo
|
o.OrderList[v.Id] = orderInfo
|
||||||
@ -210,7 +221,7 @@ func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int)
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *OrderMod) CheckCondition(lv int, condition, Type string, Emit []int) bool {
|
func (o *OrderMod) CheckCondition(lv int, condition, Type string, Emit []int, FixedOrder int, OrderList map[int]Order) bool {
|
||||||
r1 := strings.Split(condition, "|")
|
r1 := strings.Split(condition, "|")
|
||||||
for _, v := range r1 {
|
for _, v := range r1 {
|
||||||
r2 := strings.Split(v, "=")
|
r2 := strings.Split(v, "=")
|
||||||
@ -230,18 +241,12 @@ func (o *OrderMod) CheckCondition(lv int, condition, Type string, Emit []int) bo
|
|||||||
}
|
}
|
||||||
case "OrderNum":
|
case "OrderNum":
|
||||||
id := GoUtil.Int(r2[1])
|
id := GoUtil.Int(r2[1])
|
||||||
FixedOrder := 0
|
|
||||||
for _, v := range o.OrderList {
|
|
||||||
if v.Type == Fixed_type {
|
|
||||||
FixedOrder++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if FixedOrder != id {
|
if FixedOrder != id {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case "Order":
|
case "Order":
|
||||||
id := GoUtil.Int(r2[1])
|
id := GoUtil.Int(r2[1])
|
||||||
_, ok := o.OrderList[id]
|
_, ok := OrderList[id]
|
||||||
if !GoUtil.InArray(id, o.FinishOrder) && !ok {
|
if !GoUtil.InArray(id, o.FinishOrder) && !ok {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user