unified controller interface

This commit is contained in:
Karma Riuk 2025-02-06 20:59:05 +01:00
parent a47130e5d0
commit 47cf8b3539
6 changed files with 19 additions and 12 deletions

View File

@ -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);
}

View File

@ -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;
};

View File

@ -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};

View File

@ -4,12 +4,14 @@
#include <algorithm>
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);

View File

@ -7,7 +7,6 @@
class ManualController : public Controller {
protected:
View& view;
int8_t selected_index;
Piece selected_piece;
std::vector<int8_t> targets;
@ -19,4 +18,5 @@ class ManualController : public Controller {
public:
ManualController(Board, View&);
void on_tile_selected(int, int) override;
void start() override;
};

View File

@ -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;