固定订单优化

This commit is contained in:
hahwu 2025-08-28 11:09:51 +08:00
parent c869a2a3d5
commit c1c30dc936

View File

@ -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
} }