aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game_tab/left_panel/board/BoardCanvas.cpp9
-rw-r--r--src/game_tab/left_panel/board/BoardCanvas.hpp2
2 files changed, 6 insertions, 5 deletions
diff --git a/src/game_tab/left_panel/board/BoardCanvas.cpp b/src/game_tab/left_panel/board/BoardCanvas.cpp
index de9fac7..bf3e909 100644
--- a/src/game_tab/left_panel/board/BoardCanvas.cpp
+++ b/src/game_tab/left_panel/board/BoardCanvas.cpp
@@ -110,7 +110,7 @@ void BoardCanvas::SetupBoard(std::string board, bool is_black_turn,
Refresh();
}
-void BoardCanvas::Animate(std::string board, bool is_black_turn, std::map<char, std::uint8_t> captures, std::string src, std::string dst,bool faster){
+void BoardCanvas::Animate(const std::string &board, bool is_black_turn, std::map<char, std::uint8_t> captures, std::string src, std::string dst,bool faster){
adata.final_board=board;
adata.final_is_black_turn=is_black_turn;
adata.final_captures=captures;
@@ -151,15 +151,16 @@ void BoardCanvas::Animate(std::string board, bool is_black_turn, std::map<char,
adata.reuseBuffer=true;
int duration_backup=adata.duration;
adata.duration=faster ? adata.duration_fast : adata.duration;
+ int frame_duration=(1000/adata.fps);
adata.frame=0;
- adata.frames=adata.duration/(1000/adata.fps); // total number of frames
+ adata.frames=adata.duration/frame_duration; // total number of frames
int time_per_frame=adata.duration/adata.frames;
wxStopWatch sw;
for(int i=adata.frames;i>0;i--){
Refresh();
Update();
- int delay=sw.Time()-time_per_frame;
- if(delay>10){
+ int delay=sw.Time()-frame_duration;
+ if(delay>5){ // 5ms tolerance
wxMilliSleep(delay);
}
sw.Start(0);
diff --git a/src/game_tab/left_panel/board/BoardCanvas.hpp b/src/game_tab/left_panel/board/BoardCanvas.hpp
index 2f459c5..64e99b0 100644
--- a/src/game_tab/left_panel/board/BoardCanvas.hpp
+++ b/src/game_tab/left_panel/board/BoardCanvas.hpp
@@ -100,7 +100,7 @@ public:
void Swap();
void SetupBoard(std::string board, bool is_black_turn,
std::map<char, std::uint8_t> captures);
- void Animate(std::string board, bool is_black_turn, std::map<char, std::uint8_t> captures, std::string src, std::string dst,bool faster);
+ void Animate(const std::string &board, bool is_black_turn, std::map<char, std::uint8_t> captures, std::string src, std::string dst,bool faster);
void SetClockTime(short hours, short min, short sec, bool IsBlack);
DECLARE_EVENT_TABLE()
};