aboutsummaryrefslogtreecommitdiff
path: root/src/CGEHalfMove.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/CGEHalfMove.hpp')
-rw-r--r--src/CGEHalfMove.hpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/CGEHalfMove.hpp b/src/CGEHalfMove.hpp
new file mode 100644
index 0000000..2ed7516
--- /dev/null
+++ b/src/CGEHalfMove.hpp
@@ -0,0 +1,47 @@
+#pragma once
+
+#include <string>
+#include <vector>
+
+namespace cgeditor {
+
+/**
+ * @brief Move (mainlines and variations) displayed in the editor
+ *
+ */
+class CGEHalfMove {
+ /// @brief Comment linked to the move
+ std::string comment;
+ /// @brief Number of line in @a comment
+ std::uint16_t NbLineComment = 0;
+
+public:
+ CGEHalfMove();
+ CGEHalfMove(CGEHalfMove *parent);
+ CGEHalfMove(std::string move);
+
+ /// @brief CUrrent move number
+ std::uint16_t Number;
+ /// @brief Current move value
+ std::string move;
+
+ CGEHalfMove *MainLine;
+ CGEHalfMove *Parent;
+ bool IsBlack;
+ /// @brief Says if variations of that move must be drawn
+ bool Folded = false;
+ /// @brief Says if this move must be drawn
+ bool Hide = false;
+ /// @brief Variations of the move
+ std::vector<CGEHalfMove *> variations;
+
+ /// @brief Set comment and update number of lines
+ void SetComment(const std::string &c);
+ /// @brief Get current value of comment
+ std::string GetComment();
+ /// @brief Get number of lines in comment
+ std::uint16_t GetNbLineComment();
+ /// @brief Remove a move from the MainLine and/or variations
+ void RemoveChild(CGEHalfMove *m);
+};
+} // namespace cgeditor \ No newline at end of file