diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index b9f6da87..e2ded422 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -11,11 +11,9 @@ import ( ) const ( - CFG_NAME = "MergeData" - CONST_NAME = "MergeDataConst" - CFG_MERGE_EMIT = "MergeDataEmit" - CFG_MERGE_EMIT_TYPE = "MergeDataEmitType" - CFG_MERGE_COLOR = "MergeDataColor" + CFG_NAME = "MergeData" + CONST_NAME = "MergeDataConst" + CFG_MERGE_EMIT = "MergeDataEmit" // 棋子类型 CHESS_PRODUCT_MAIN_TYPE = 1 // 主产物 @@ -27,17 +25,6 @@ func init() { gamedata.InitCfg(CFG_NAME) gamedata.InitCfg(CONST_NAME) gamedata.InitCfg(CFG_MERGE_EMIT) - gamedata.InitCfg(CFG_MERGE_EMIT_TYPE) - gamedata.InitCfg(CFG_MERGE_COLOR) -} - -func GetEmitTypeProduce(EmitType string) []string { - data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT_TYPE, EmitType) - if err != nil { - // log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType) - return []string{} - } - return strings.Split(gamedata.GetStringValue(data, "Produce"), ",") } func GetEmitTypeByColor(Color string) string { @@ -91,6 +78,7 @@ func GetOne(Id int) (*gamedata.MergeDataRecord, error) { Type: gamedata.ParseString(data["Type"]), Emit_Product: gamedata.ParseString(data["Emit_Product"]), CoolTime: gamedata.ParseInt(data["CoolTime"]), + Emit_Type: gamedata.ParseString(data["Emit_Type"]), }, nil } @@ -591,24 +579,6 @@ func getColorProb(Emit_List string, Color string) float64 { return Prob } -func GetColorType(Color string) int { - data, err := gamedata.GetDataByKey(CFG_MERGE_COLOR, Color) - if err != nil { - log.Debug("GetColorType GetOne Color:%s not found", Color) - return 0 - } - Type := gamedata.GetStringValue(data, "Type") - switch Type { - case "main": - return CHESS_PRODUCT_MAIN_TYPE - case "secondary": - return CHESS_PRODUCT_SECONDARY_TYPE - case "sub": - return CHESS_PRODUCT_SUB_TYPE - } - return CHESS_PRODUCT_MAIN_TYPE -} - func GetMergeStar(MergeList []int) int { Star := 0 for _, v := range MergeList { diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 16c6e055..25662c4a 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -1,6 +1,8 @@ package game import ( + "bytes" + "encoding/gob" "fmt" "math" mergeDataCfg "server/conf/mergeData" @@ -372,7 +374,13 @@ func UnitOrderPetReward(p *Player) error { } func UnitCatnip(p *Player) error { - p.CatnipBackData() + //OrderMod := p.PlayMod.getOrderMod() + //KvMod := p.PlayMod.getKvMod() + ChessMod := p.PlayMod.getChessMod() + var buf bytes.Buffer + encode := gob.NewEncoder(&buf) + encode.Encode(ChessMod) + fmt.Printf("buf len:%dk\n", buf.Len()/1024) return nil } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index c286cfe4..91cabb17 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -501,7 +501,7 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) ( } //获取订单体力范围和棋子数量 MinEnergy, MaxEnergy, ChessNum := getChessByDiff(lv, OrderDiff, OrderType) - mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff) + mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff, OrderType) return mergeList, OrderDiff, nil } @@ -626,7 +626,7 @@ func ShuffleColor(List []string, Last string) []string { } // 获取发射器系列 -func getEmitSeries(o *OrderMod, Emit []int) string { +func getEmitSeries(o *OrderMod, Emit []int, OrderType int) string { o.initColorShuffle(Emit) PopEmitId := "" NewSlice := make([]string, 0) @@ -652,6 +652,14 @@ func getEmitSeries(o *OrderMod, Emit []int) string { if o.LastColor == PopEmitId { continue } + + if OrderType == Pet_type { + EmitId := getEmitBySeries(Emit, PopEmitId) + EmitInfo, _ := mergeDataCfg.GetOne(EmitId) + if EmitInfo.Emit_Type == "auto" { + continue + } + } PopEmitIdProductNum := mergeDataCfg.GetEmitProductNumByColor(PopEmitId) o.initColorShuffle(Emit) // 单链棋子 且订单中已有两个 跳过 @@ -845,10 +853,10 @@ func (o *OrderMod) getChessIdPool(Emit []int, Color string, EnergyMul, Lv, MinEn } return Chess, ChessLv } -func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff int) []int { +func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, Emit []int, EnergyMul, OrderDiff, OrderType int) []int { ColorArr := make([]string, 0) for i := 0; i < ChessNum; i++ { - ColorArr = append(ColorArr, getEmitSeries(o, Emit)) + ColorArr = append(ColorArr, getEmitSeries(o, Emit, OrderType)) } if len(ColorArr) == 2 && ColorArr[0] == ColorArr[1] { log.Default() @@ -876,7 +884,7 @@ func getChessFromPoolByEnergy(o *OrderMod, MinEnergy, MaxEnergy, ChessNum int, E // 从棋子池中获取棋子 func getChessFromPoolByDiff(o *OrderMod, Diff int, Emit []int, EnergyMul int) int { - Color := getEmitSeries(o, Emit) + Color := getEmitSeries(o, Emit, 0) EmitChessId := getEmitBySeries(Emit, Color) //ColorRand := mergeDataCfg.GetEmitProduceType(EmitChessId) // 从棋子池中获取棋子 diff --git a/src/server/gamedata/type.go b/src/server/gamedata/type.go index 0268123a..2bb48771 100644 --- a/src/server/gamedata/type.go +++ b/src/server/gamedata/type.go @@ -16,6 +16,7 @@ type MergeDataRecord struct { Type string `json:"Type"` Emit_Product string `json:"Emit_Product"` Color string `json:"Color"` + Emit_Type string `json:"Emit_Type"` } type StartOrderData struct {