diff --git a/cpp/src/controller/controller.cpp b/cpp/src/controller/controller.cpp new file mode 100644 index 0000000..7ea97a8 --- /dev/null +++ b/cpp/src/controller/controller.cpp @@ -0,0 +1,7 @@ +#include "controller.hpp" + +#include "../view/view.hpp" + +Controller::Controller(Board b, View& v): board(b), view(v) { + v.set_controller(this); +} diff --git a/cpp/src/controller/controller.hpp b/cpp/src/controller/controller.hpp index 1091e16..dea5610 100644 --- a/cpp/src/controller/controller.hpp +++ b/cpp/src/controller/controller.hpp @@ -7,8 +7,11 @@ class View; class Controller { protected: Board board; + View& view; + public: - // Controller(Board, View); + Controller(Board, View&); + virtual void start() = 0; virtual void on_tile_selected(int, int) = 0; }; diff --git a/cpp/src/controller/human_vs_ai.cpp b/cpp/src/controller/human_vs_ai.cpp index 4339a85..57c45f2 100644 --- a/cpp/src/controller/human_vs_ai.cpp +++ b/cpp/src/controller/human_vs_ai.cpp @@ -4,10 +4,7 @@ HumanVsAIController::HumanVsAIController(Board b, View& v, ai::AI& ai) : ManualController(b, v), - ai(ai) { - view.set_controller(this); - reset_selection(); -} + ai(ai) {} void HumanVsAIController::on_tile_selected(int x, int y) { Coords c{x, y}; diff --git a/cpp/src/controller/manual.cpp b/cpp/src/controller/manual.cpp index 8400052..0b4c751 100644 --- a/cpp/src/controller/manual.cpp +++ b/cpp/src/controller/manual.cpp @@ -4,12 +4,14 @@ #include -ManualController::ManualController(Board b, View& view): view(view) { - board = b; - view.set_controller(this); +ManualController::ManualController(Board b, View& v): Controller(b, v) { reset_selection(); } +void ManualController::start() { + view.show(); +} + void ManualController::on_tile_selected(int x, int y) { Coords c{x, y}; Piece piece = board.piece_at(c); diff --git a/cpp/src/controller/manual.hpp b/cpp/src/controller/manual.hpp index 8940ce8..f5e9e44 100644 --- a/cpp/src/controller/manual.hpp +++ b/cpp/src/controller/manual.hpp @@ -7,7 +7,6 @@ class ManualController : public Controller { protected: - View& view; int8_t selected_index; Piece selected_piece; std::vector targets; @@ -19,4 +18,5 @@ class ManualController : public Controller { public: ManualController(Board, View&); void on_tile_selected(int, int) override; + void start() override; }; diff --git a/cpp/src/main.cpp b/cpp/src/main.cpp index 1cec09a..b995789 100644 --- a/cpp/src/main.cpp +++ b/cpp/src/main.cpp @@ -18,11 +18,9 @@ int main(int argc, char* argv[]) { GUI gui; HumanVsAIController manual(b, gui, ai); - - View& view = gui; Controller& controller = manual; - view.show(); + controller.start(); // perft(); // ai::v1_simple ai;