@@ -16,6 +16,7 @@ import (
16
16
"github.com/FloatTech/floatbox/file"
17
17
"github.com/FloatTech/gg"
18
18
"github.com/FloatTech/zbputils/control"
19
+ "github.com/FloatTech/zbputils/img/text"
19
20
"github.com/RomiChan/syncx"
20
21
"github.com/jinzhu/gorm"
21
22
"github.com/notnil/chess"
@@ -103,9 +104,11 @@ func draw(groupCode, senderUin int64) message.Message {
103
104
eloString = elo
104
105
}
105
106
replyMsg := textWithAt (senderUin , "接受和棋,游戏结束。\n " + eloString + chessString )
106
- if err := cleanTempFiles (groupCode ); err != nil {
107
- log .Debugln ("[chess]" , "Fail to clean temp files" , err )
108
- return message.Message {message .Text ("ERROR: " , err )}
107
+ if inkscapeExists () {
108
+ if err := cleanTempFiles (groupCode ); err != nil {
109
+ log .Debugln ("[chess]" , "Fail to clean temp files" , err )
110
+ return message.Message {message .Text ("ERROR: " , err )}
111
+ }
109
112
}
110
113
chessRoomMap .Delete (groupCode )
111
114
return replyMsg
@@ -169,9 +172,11 @@ func resign(groupCode, senderUin int64) message.Message {
169
172
replyMsg = textWithAt (senderUin , "对手认输,游戏结束,你胜利了。\n " + eloString + chessString )
170
173
}
171
174
// 删除临时文件
172
- if err := cleanTempFiles (groupCode ); err != nil {
173
- log .Debugln ("[chess]" , "Fail to clean temp files" , err )
174
- return message.Message {message .Text ("ERROR: " , err )}
175
+ if inkscapeExists () {
176
+ if err := cleanTempFiles (groupCode ); err != nil {
177
+ log .Debugln ("[chess]" , "Fail to clean temp files" , err )
178
+ return message.Message {message .Text ("ERROR: " , err )}
179
+ }
175
180
}
176
181
chessRoomMap .Delete (groupCode )
177
182
return replyMsg
@@ -231,9 +236,11 @@ func play(senderUin int64, groupCode int64, moveStr string) message.Message {
231
236
chessString := getChessString (* room )
232
237
replyMsg := textWithAt (senderUin , "违例两次,游戏结束。\n " + chessString )
233
238
// 删除临时文件
234
- if err := cleanTempFiles (groupCode ); err != nil {
235
- log .Debugln ("[chess]" , "Fail to clean temp files" , err )
236
- return message.Message {message .Text ("ERROR: " , err )}
239
+ if inkscapeExists () {
240
+ if err := cleanTempFiles (groupCode ); err != nil {
241
+ log .Debugln ("[chess]" , "Fail to clean temp files" , err )
242
+ return message.Message {message .Text ("ERROR: " , err )}
243
+ }
237
244
}
238
245
chessRoomMap .Delete (groupCode )
239
246
return replyMsg
@@ -309,9 +316,11 @@ func play(senderUin int64, groupCode int64, moveStr string) message.Message {
309
316
if ! room .isBlindfold {
310
317
replyMsg = append (replyMsg , boardImgEle )
311
318
}
312
- if err := cleanTempFiles (groupCode ); err != nil {
313
- log .Debugln ("[chess]" , "Fail to clean temp files" , err )
314
- return message.Message {message .Text ("ERROR: " , err )}
319
+ if inkscapeExists () {
320
+ if err := cleanTempFiles (groupCode ); err != nil {
321
+ log .Debugln ("[chess]" , "Fail to clean temp files" , err )
322
+ return message.Message {message .Text ("ERROR: " , err )}
323
+ }
315
324
}
316
325
chessRoomMap .Delete (groupCode )
317
326
return replyMsg
@@ -445,9 +454,11 @@ func abortGame(room chessRoom, groupCode int64, hint string) message.Message {
445
454
return message.Message {message .Text ("ERROR: " , err )}
446
455
}
447
456
}
448
- if err := cleanTempFiles (groupCode ); err != nil {
449
- log .Debugln ("[chess]" , "Fail to clean temp files" , err )
450
- return message.Message {message .Text ("ERROR: " , err )}
457
+ if inkscapeExists () {
458
+ if err := cleanTempFiles (groupCode ); err != nil {
459
+ log .Debugln ("[chess]" , "Fail to clean temp files" , err )
460
+ return message.Message {message .Text ("ERROR: " , err )}
461
+ }
451
462
}
452
463
chessRoomMap .Delete (groupCode )
453
464
msg := simpleText (hint )
@@ -470,7 +481,7 @@ func getBoardElement(groupCode int64) (message.MessageSegment, bool, string) {
470
481
}
471
482
// 未安装 inkscape 直接返回对局字符串
472
483
// TODO: 使用原生 go 库渲染 svg
473
- if ! commandExists ( "inkscape" ) {
484
+ if ! inkscapeExists ( ) {
474
485
boardString := room .chessGame .Position ().Board ().Draw ()
475
486
boardImageB64 , err := generateCharBoardImage (boardString )
476
487
if err != nil {
@@ -618,8 +629,7 @@ func generateCharBoardImage(boardString string) (string, error) {
618
629
dc .SetRGB (1 , 1 , 1 )
619
630
dc .Clear ()
620
631
dc .SetRGB (0 , 0 , 0 )
621
- // fnt := text.GNUUnifontFontFile
622
- fontdata , err := file .GetLazyData ("text.GNUUnifontFontFile" , control .Md5File , true )
632
+ fontdata , err := file .GetLazyData (text .GNUUnifontFontFile , control .Md5File , true )
623
633
if err != nil {
624
634
// TODO: err solve
625
635
panic (err )
@@ -694,9 +704,9 @@ func getELORate(whiteUin, blackUin int64, dbService *chessDBService) (whiteRate
694
704
return
695
705
}
696
706
697
- // commandExists 判断 指令是否存在
698
- func commandExists ( cmd string ) bool {
699
- _ , err := exec .LookPath (cmd )
707
+ // inkscapeExists 判断 inkscape 是否存在
708
+ func inkscapeExists ( ) bool {
709
+ _ , err := exec .LookPath ("inkscape" )
700
710
return err == nil
701
711
}
702
712
0 commit comments