优化订单生成

This commit is contained in:
hahwu 2024-11-28 10:26:29 +08:00
parent fbf8a5c257
commit 3df1b09ac6
4 changed files with 44 additions and 11 deletions

View File

@ -23,13 +23,16 @@ func GetLvMin(EnergyMul int) int {
} }
func GetLvMax(EnergyMul, N int) int { func GetLvMax(EnergyMul, N int) int {
if v, ok := gamedata.G_AllConfigsJsonData["OrderChessData"]; ok { data, err := gamedata.GetData(CFG_ORDER_CHESS_DATA)
data := v.GetData() if err != nil {
for _, v := range data { return 0
dEnergy := gamedata.GetIntValue(v, "EnergyMul") }
Min := gamedata.GetIntValue(v, "MinN") for _, v := range data {
Max := gamedata.GetIntValue(v, "MaxN") dEnergy := gamedata.GetIntValue(v, "EnergyMul")
if dEnergy == EnergyMul && N >= Min && N <= Max { Min := gamedata.GetIntValue(v, "MinN")
Max := gamedata.GetIntValue(v, "MaxN")
if dEnergy == EnergyMul {
if N >= Min && N <= Max {
return gamedata.GetIntValue(v, "MaxLv") return gamedata.GetIntValue(v, "MaxLv")
} }
} }

View File

@ -40,3 +40,10 @@ func UnitChessShop(p *Player) error {
fmt.Println(b) fmt.Println(b)
return nil return nil
} }
func UnitOrder(p *Player) error {
OrderMod := p.PlayMod.getOrderMod()
ChessMod := p.PlayMod.getChessMod()
OrderMod.CreateNormalOrder(4, ChessMod.GetEmitList())
return nil
}

View File

@ -118,7 +118,10 @@ func (o *OrderMod) CreateOrder(lv int, Emit []int) error {
if o.CreatePriorityOrder(lv, Emit) { if o.CreatePriorityOrder(lv, Emit) {
return nil return nil
} }
o.CreateNormalOrder(lv, Emit) err := o.CreateNormalOrder(lv, Emit)
if err != nil {
return err
}
} }
} }
return nil return nil
@ -208,8 +211,18 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int) error {
NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) NewLev := getChessLv(ChessMinLev, ChessMaxLev, v)
ChessColor := getRandChessColor(RandEmit) ChessColor := getRandChessColor(RandEmit)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor)
Type := mergeDataCfg.GetTypeById(ChessId)
if Type != "Product" {
continue
}
if ChessId == 0 {
continue
}
mergeList = append(mergeList, ChessId) mergeList = append(mergeList, ChessId)
} }
if len(mergeList) == 0 {
return errors.New("mergeList is nil")
}
o.addOrder(mergeList, OrderDiff, Common_type) o.addOrder(mergeList, OrderDiff, Common_type)
return nil return nil
} }
@ -258,11 +271,18 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int) error {
NewLev := getChessLv(ChessMinLev, ChessMaxLev, v) NewLev := getChessLv(ChessMinLev, ChessMaxLev, v)
ChessColor := getRandChessColor(RandEmit) ChessColor := getRandChessColor(RandEmit)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor) ChessId := mergeDataCfg.GetChessIdByLvAndColor(NewLev, ChessColor)
Type := mergeDataCfg.GetTypeById(ChessId)
if Type != "Product" {
continue
}
if ChessId == 0 { if ChessId == 0 {
return errors.New("ChessId is 0") continue
} }
mergeList = append(mergeList, ChessId) mergeList = append(mergeList, ChessId)
} }
if len(mergeList) == 0 {
return errors.New("mergeList is nil")
}
o.addOrder(mergeList, OrderDiff, Super_type) o.addOrder(mergeList, OrderDiff, Super_type)
return nil return nil
} }
@ -284,10 +304,11 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool
OrderEmit := 0 OrderEmit := 0
MaxLvChess := make(map[int]int) MaxLvChess := make(map[int]int)
for _, v := range AddNewEmit { for _, v := range AddNewEmit {
ChessLv := mergeDataCfg.GetLvById(v)
Emit_Id := mergeDataCfg.GetEmitId(v) Emit_Id := mergeDataCfg.GetEmitId(v)
_, ok := GetExtraEmitId[Emit_Id] _, ok := GetExtraEmitId[Emit_Id]
_, ok1 := o.EimtOrder[Emit_Id] _, ok1 := o.EimtOrder[Emit_Id]
if ok && !ok1 { if ok && !ok1 && ChessLv >= 4 {
b1 = true b1 = true
OrderEmit = v OrderEmit = v
o.EimtOrder[Emit_Id] = struct{}{} o.EimtOrder[Emit_Id] = struct{}{}
@ -309,7 +330,9 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int) bool
if b1 { if b1 {
ChessColor := mergeDataCfg.GetEmitProduceType(OrderEmit) ChessColor := mergeDataCfg.GetEmitProduceType(OrderEmit)
ChessId := mergeDataCfg.GetChessIdByLvAndColor(1, ChessColor[0]) ChessId := mergeDataCfg.GetChessIdByLvAndColor(1, ChessColor[0])
o.addOrder([]int{ChessId}, diff_low, Preheat_type) if ChessId != 0 {
o.addOrder([]int{ChessId}, diff_low, Preheat_type)
}
} }
//额外订单补充2当玩家的棋盘中出现三个相同的满级产物时立刻生成一个对应的收购订单 //额外订单补充2当玩家的棋盘中出现三个相同的满级产物时立刻生成一个对应的收购订单
for k := range MaxLvChess { for k := range MaxLvChess {

View File