diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index 05d29c48..a89b1d57 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -596,6 +596,20 @@ func (cb *ChessBorad) TakeChessOutBag(grid int) (int, error) { return gridInfo.ChessId, cb.AddChess(gridInfo.ChessId) } +// 将棋子从背包放入荣誉室 +func (cb *ChessBorad) TakeChessOutBagToHonor(grid int) (int, error) { + gridInfo, ok := cb.ChessBag.List[grid] + if !ok { + return 0, errors.New("ChessBag Grid unlock") + } + if gridInfo.ChessId == 0 { + return 0, errors.New("ChessBag Grid is empty") + } + cb.ChessBag.List[grid] = ChessBagGrid{} + cb.AddHonor(gridInfo.ChessId) + return gridInfo.ChessId, nil +} + func (cb *ChessBorad) GetOrderEmit() []int { return cb.GetEmitList() } diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index c4fba6f5..1fde9b69 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -877,6 +877,36 @@ func ReqTakeChessOutBag(player *Player, buf []byte) error { return nil } +func ReqTakeChessOutBagToHonor(player *Player, buf []byte) error { + req := &msg.ReqTakeChessOutBagToHonor{} + err := proto.Unmarshal(buf, req) + if err != nil { + return err + } + ChessMod := player.PlayMod.getChessMod() + chessId, err := ChessMod.TakeChessOutBagToHonor(int(req.BagId)) + if err != nil { + player.SendErrClienRes(&msg.ResTakeChessOutBagToHonor{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } + + player.TeLog("ReqTakeChessOutBagToHonor", map[string]interface{}{ + "bag_id": req.BagId, + "chess_id": chessId, + }) + player.InitOrderItem() + player.PlayMod.save() + player.PushClientRes(ChessMod.BackData()) + player.PushClientRes(&msg.ResTakeChessOutBagToHonor{ + Code: msg.RES_CODE_SUCCESS, + }) + player.UpdateUserInfo() + return nil +} + func ReqBuyChessBagGrid(player *Player, buf []byte) error { req := &msg.ReqBuyChessBagGrid{} err := proto.Unmarshal(buf, req)