penguins  1.0.0
controllers.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include "bot.h"
4 #include "game.h"
5 #include <memory>
6 #include <wx/dc.h>
7 #include <wx/defs.h>
8 #include <wx/event.h>
9 #include <wx/thread.h>
10 
11 class GamePanel;
12 class CanvasPanel;
13 class BotThread;
14 
15 class GameController : public wxEvtHandler {
16 public:
18  virtual ~GameController() {}
19 
21 
22  virtual void on_activated();
23  virtual void configure_bot_turn_ui();
24  virtual void configure_log_viewer_ui();
25  virtual void on_deactivated(GameController* next_controller);
26  virtual void update_tile_attributes();
27  virtual void paint_overlay(wxDC& dc);
28  virtual void update_status_bar();
29  virtual void on_mouse_enter_leave(wxMouseEvent& event);
30  virtual void on_mouse_down(wxMouseEvent& event);
31  virtual void on_mouse_move(wxMouseEvent& event);
32  virtual void on_mouse_up(wxMouseEvent& event);
33 
37  std::shared_ptr<BotParameters>& bot_params;
38 };
39 
41 public:
43  virtual void paint_overlay(wxDC& dc) override;
44 };
45 
47 public:
49  virtual void update_tile_attributes() override;
50  virtual void on_mouse_move(wxMouseEvent& event) override;
51  virtual void on_mouse_up(wxMouseEvent& event) override;
52  virtual void update_status_bar() override;
53 };
54 
56 public:
58  virtual void update_tile_attributes() override;
59  virtual void paint_overlay(wxDC& dc) override;
60  virtual void update_status_bar() override;
61  virtual void on_mouse_down(wxMouseEvent& event) override;
62  virtual void on_mouse_move(wxMouseEvent& event) override;
63  virtual void on_mouse_up(wxMouseEvent& event) override;
64 };
65 
67 public:
69  virtual ~BotTurnController();
70  virtual void configure_bot_turn_ui() override;
71  virtual void on_activated() override;
72  virtual void on_deactivated(GameController* next_controller) override;
73  virtual void update_tile_attributes() override;
74  virtual void update_status_bar() override;
75  virtual void on_mouse_up(wxMouseEvent& event) override;
76 
77  virtual BotThread* create_bot_thread() = 0;
78  void on_bot_thread_done_work(bool cancelled);
79  void start_bot_thread();
80  void stop_bot_thread();
81  void unregister_bot_thread(BotThread* thread);
82 
83  bool executing_bot_turn = false;
85  BotThread* bot_thread = nullptr;
86 };
87 
89 public:
91  virtual BotThread* create_bot_thread() override;
92 };
93 
95 public:
97  virtual BotThread* create_bot_thread() override;
98 };
99 
101 public:
103  virtual void on_activated() override;
104  virtual void update_status_bar() override;
105 };
106 
108 public:
112  virtual void on_activated() override;
113  virtual void update_status_bar() override;
114  virtual void configure_log_viewer_ui() override;
115  virtual void paint_overlay(wxDC& dc) override;
116  size_t entry_index;
117 };
The bot algorithm.
virtual BotThread * create_bot_thread() override
Definition: controllers.cc:76
BotMovementController(GamePanel *panel)
Definition: controllers.hh:96
BotPlacementController(GamePanel *panel)
Definition: controllers.hh:90
virtual BotThread * create_bot_thread() override
Definition: controllers.cc:72
virtual BotThread * create_bot_thread()=0
virtual ~BotTurnController()
Definition: controllers.cc:89
virtual void on_mouse_up(wxMouseEvent &event) override
Definition: controllers.cc:422
BotThread * bot_thread
Definition: controllers.hh:85
void unregister_bot_thread(BotThread *thread)
Definition: controllers.cc:134
wxCriticalSection bot_thread_cs
Definition: controllers.hh:84
virtual void update_status_bar() override
Definition: controllers.cc:338
void on_bot_thread_done_work(bool cancelled)
Definition: controllers.cc:93
virtual void on_activated() override
Definition: controllers.cc:80
virtual void update_tile_attributes() override
Definition: controllers.cc:217
virtual void configure_bot_turn_ui() override
Definition: controllers.cc:68
virtual void on_deactivated(GameController *next_controller) override
Definition: controllers.cc:85
BotTurnController(GamePanel *panel)
Definition: controllers.hh:68
Responsible for drawing the board and painting the UI overlays.
Definition: canvas.hh:17
virtual void on_mouse_move(wxMouseEvent &event)
Definition: controllers.cc:45
GameController(GamePanel *panel)
Definition: controllers.cc:19
virtual void on_mouse_up(wxMouseEvent &event)
Definition: controllers.cc:46
virtual ~GameController()
Definition: controllers.hh:18
virtual void on_deactivated(GameController *next_controller)
Definition: controllers.cc:42
void update_game_state_and_indirectly_delete_this()
Definition: controllers.cc:22
virtual void update_status_bar()
Definition: controllers.cc:48
virtual void configure_log_viewer_ui()
Definition: controllers.cc:38
std::shared_ptr< BotParameters > & bot_params
Definition: controllers.hh:37
virtual void on_activated()
Definition: controllers.cc:26
CanvasPanel * canvas
Definition: controllers.hh:35
virtual void on_mouse_down(wxMouseEvent &event)
Definition: controllers.cc:44
virtual void on_mouse_enter_leave(wxMouseEvent &event)
Definition: controllers.cc:52
virtual void paint_overlay(wxDC &dc)
Definition: controllers.cc:43
virtual void configure_bot_turn_ui()
Definition: controllers.cc:34
GamePanel * panel
Definition: controllers.hh:34
virtual void update_tile_attributes()
Definition: controllers.cc:162
virtual void update_status_bar() override
Definition: controllers.cc:343
virtual void on_activated() override
Definition: controllers.cc:57
GameEndedController(GamePanel *panel)
Definition: controllers.hh:102
virtual ~LogEntryViewerController()
Definition: controllers.hh:111
virtual void paint_overlay(wxDC &dc) override
Definition: controllers.cc:244
virtual void configure_log_viewer_ui() override
Definition: controllers.cc:158
LogEntryViewerController(GamePanel *panel, size_t entry_index)
Definition: controllers.hh:109
virtual void update_status_bar() override
Definition: controllers.cc:348
virtual void on_activated() override
Definition: controllers.cc:144
PlayerMovementController(GamePanel *panel)
Definition: controllers.hh:57
virtual void update_status_bar() override
Definition: controllers.cc:297
virtual void on_mouse_move(wxMouseEvent &event) override
Definition: controllers.cc:368
virtual void on_mouse_down(wxMouseEvent &event) override
Definition: controllers.cc:355
virtual void update_tile_attributes() override
Definition: controllers.cc:181
virtual void paint_overlay(wxDC &dc) override
Definition: controllers.cc:230
virtual void on_mouse_up(wxMouseEvent &event) override
Definition: controllers.cc:395
virtual void on_mouse_up(wxMouseEvent &event) override
Definition: controllers.cc:380
virtual void update_status_bar() override
Definition: controllers.cc:266
virtual void update_tile_attributes() override
Definition: controllers.cc:167
PlayerPlacementController(GamePanel *panel)
Definition: controllers.hh:48
virtual void on_mouse_move(wxMouseEvent &event) override
Definition: controllers.cc:360
PlayerTurnController(GamePanel *panel)
Definition: controllers.hh:42
virtual void paint_overlay(wxDC &dc) override
Definition: controllers.cc:222
The core of the unified game logic library, contains the Game struct.
The central struct of the application, holds the game data and settings.
Definition: game.h:237