From 6acc5296989c23cea3ff58dac65785b18427be1b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 23 Jan 2026 11:43:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A2=E5=8D=95=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/chess/Chess.go | 29 ++++++++++++++++++++++++++++- src/server/test/order_test.go | 11 +++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index c5502a94..dd9880ac 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -339,14 +339,37 @@ func (cb *ChessBorad) GetEmitList() []int { // 完成订单 移除棋子 func (cb *ChessBorad) FinishOrder(ChessId []int) error { + unlockChessList := cb.GetUnlockChessList() + unlockChessMap := make(map[int]int) + for _, v := range unlockChessList { + unlockChessMap[v]++ + } + + boardChess := []int{} + BagChess := []int{} for _, v := range ChessId { + if unlockChessMap[v] > 0 { + unlockChessMap[v]-- + boardChess = append(boardChess, v) + } else { + BagChess = append(BagChess, v) + } + } + for _, v := range boardChess { err := cb.FinishOrderChess(v) if err != nil { return err } } + for _, v := range BagChess { + err := cb.FinishOrderChessByBag(v) + if err != nil { + return err + } + } return nil } + func (cb *ChessBorad) FinishOrderChess(Chess int) error { for k, v := range cb.ChessList { if v == Chess { @@ -354,13 +377,17 @@ func (cb *ChessBorad) FinishOrderChess(Chess int) error { return nil } } + return fmt.Errorf("order finish board chess id:%d not exist", Chess) +} + +func (cb *ChessBorad) FinishOrderChessByBag(Chess int) error { for k, v := range cb.ChessBag.List { if v.ChessId == Chess { cb.ChessBag.List[k] = ChessBagGrid{} return nil } } - return errors.New("order finish chess id not exist") + return fmt.Errorf("order finish bag chess id:%d not exist", Chess) } // 棋子转换 diff --git a/src/server/test/order_test.go b/src/server/test/order_test.go index 456bc06d..ff7a89f7 100644 --- a/src/server/test/order_test.go +++ b/src/server/test/order_test.go @@ -20,3 +20,14 @@ func TestOrderStart(t *testing.T) { star = int(float64(star)*float64(order_facotry)/1000+0.5) * 10 fmt.Printf("star is %d", star) } + +func TestOrderFinish(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("3625212") + game.G_GameLogicPtr.SetPlayer(p1) + ChessMod := p1.GetChessMod() + err := ChessMod.FinishOrder([]int{1, 2, 3}) + if err != nil { + t.Errorf("finish order failed:%v", err) + } +}