@@ -30,18 +30,20 @@ export const useChessStore = defineStore('chess', () => {
30
30
} ;
31
31
32
32
const setFenCode = ( fen : string ) => {
33
- try {
34
- console . log ( '[Store] 设置 FEN:' , {
35
- current : fenCode . value ,
36
- new : fen ,
37
- isProcessing : isProcessing . value ,
38
- bestMove : bestMove . value ,
39
- } ) ;
40
- fenCode . value = fen ;
41
- fenHistory . value . push ( fen ) ;
42
- } catch ( err ) {
43
- setError ( `设置 FEN 码时出错: ${ ( err as Error ) . message } ` ) ;
33
+ console . log ( '[Store] 设置 FEN:' , {
34
+ current : fenCode . value ,
35
+ new : fen ,
36
+ isProcessing : isProcessing . value ,
37
+ bestMove : bestMove . value ,
38
+ } ) ;
39
+
40
+ // 如果是初始化或重置,清空历史并设置初始状态
41
+ if ( fenCode . value === INITIAL_FEN ) {
42
+ fenHistory . value = [ fen ] ;
43
+ moveHistory . value = [ ] ;
44
44
}
45
+
46
+ fenCode . value = fen ;
45
47
} ;
46
48
47
49
const setBestMove = ( move : string ) => {
@@ -63,8 +65,14 @@ export const useChessStore = defineStore('chess', () => {
63
65
}
64
66
try {
65
67
const newFen = updateFEN ( fenCode . value , bestMove . value ) ;
66
- setFenCode ( newFen ) ;
67
- moveHistory . value . push ( bestMove . value ) ;
68
+ const currentMove = bestMove . value ;
69
+
70
+ // 先更新历史记录
71
+ fenHistory . value = [ ...fenHistory . value , newFen ] ;
72
+ moveHistory . value = [ ...moveHistory . value , currentMove ] ;
73
+
74
+ // 再更新当前状态
75
+ fenCode . value = newFen ;
68
76
setBestMove ( '' ) ;
69
77
} catch ( err ) {
70
78
setError ( `执行下一步时出错: ${ ( err as Error ) . message } ` ) ;
@@ -73,24 +81,29 @@ export const useChessStore = defineStore('chess', () => {
73
81
74
82
const handlePreviousMove = ( ) => {
75
83
if ( fenHistory . value . length > 1 ) {
76
- fenHistory . value . pop ( ) ;
77
- moveHistory . value . pop ( ) ;
84
+ // 移除最后一步
85
+ fenHistory . value = fenHistory . value . slice ( 0 , - 1 ) ;
86
+ moveHistory . value = moveHistory . value . slice ( 0 , - 1 ) ;
87
+
88
+ // 更新当前状态
78
89
fenCode . value = fenHistory . value [ fenHistory . value . length - 1 ] ;
79
90
setBestMove ( '' ) ;
80
91
}
81
92
} ;
82
93
83
94
const resetHistory = ( ) => {
84
95
console . log ( '[Store] 重置历史' ) ;
85
- bestMove . value = '' ; // 清空最佳着法
96
+ // 先重置所有状态
97
+ bestMove . value = '' ;
86
98
fenHistory . value = [ INITIAL_FEN ] ;
99
+ moveHistory . value = [ ] ;
87
100
fenCode . value = INITIAL_FEN ;
88
101
overlayImageSrc . value = '' ;
89
102
chessboardRect . value = null ;
90
103
originalImageSize . value = { width : 0 , height : 0 } ;
91
104
error . value = null ;
92
105
isCalculating . value = false ;
93
- isProcessing . value = true ; // 设置为 true,表示正在处理
106
+ isProcessing . value = true ;
94
107
} ;
95
108
96
109
const setDepth = ( newDepth : number ) => {
0 commit comments