Skip to content

Commit c2af4a3

Browse files
committed
✨ Refactor mouse event handling across scenes: unify MouseEvent usage with engine::ui::MouseEvent for consistency and improved integration
1 parent c93f462 commit c2af4a3

24 files changed

Lines changed: 269 additions & 360 deletions

include/core/scenes/achievements_scene.hpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,23 @@ namespace towerforge::ui {
88
}
99

1010
namespace towerforge::core {
11-
1211
class AchievementsScene : public GameScene {
1312
public:
14-
AchievementsScene(Game* game, ui::AchievementsMenu& achievements_menu);
13+
AchievementsScene(Game *game, ui::AchievementsMenu &achievements_menu);
14+
1515
~AchievementsScene() override = default;
1616

1717
void Initialize() override;
18+
1819
void Shutdown() override;
20+
1921
void Update(float delta_time) override;
22+
2023
void Render() override;
2124

22-
private:
23-
void HandleInput();
25+
void HandleMouseEvent(const engine::ui::MouseEvent &event) override;
2426

25-
ui::AchievementsMenu& achievements_menu_;
27+
private:
28+
ui::AchievementsMenu &achievements_menu_;
2629
};
27-
2830
}

include/core/scenes/game_scene.hpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,30 @@
22

33
#include <functional>
44

5-
namespace towerforge::core {
5+
import engine;
66

7+
namespace towerforge::core {
78
class Game;
89

910
class GameScene {
1011
public:
11-
explicit GameScene(Game* game) : game_(game) {}
12+
explicit GameScene(Game *game) : game_(game) {
13+
}
14+
1215
virtual ~GameScene() = default;
1316

1417
virtual void Initialize() = 0;
18+
1519
virtual void Shutdown() = 0;
20+
1621
virtual void Update(float delta_time) = 0;
22+
23+
virtual void HandleMouseEvent(const engine::ui::MouseEvent &event) {
24+
}
25+
1726
virtual void Render() = 0;
1827

1928
protected:
20-
Game* game_;
29+
Game *game_;
2130
};
22-
2331
}

include/core/scenes/ingame_scene.hpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ namespace towerforge::rendering {
2626
}
2727

2828
namespace towerforge::core {
29-
3029
// Forward declarations
3130
class ECSWorld;
3231
class SaveLoadManager;
@@ -36,23 +35,31 @@ namespace towerforge::core {
3635

3736
class InGameScene : public GameScene {
3837
public:
39-
explicit InGameScene(Game* game);
38+
explicit InGameScene(Game *game);
39+
4040
~InGameScene() override;
4141

4242
void Initialize() override;
43+
4344
void Shutdown() override;
45+
4446
void Update(float delta_time) override;
47+
4548
void Render() override;
4649

4750
protected:
48-
void HandleInput();
51+
void HandleMouseEvent(const engine::ui::MouseEvent &event) override;
52+
4953
void CalculateTowerRating();
54+
5055
void UpdateCameraBounds() const;
56+
5157
ui::IncomeBreakdown CollectIncomeAnalytics() const;
58+
5259
ui::PopulationBreakdown CollectPopulationAnalytics() const;
5360

54-
audio::AudioManager* audio_manager_;
55-
AchievementManager* achievement_manager_;
61+
audio::AudioManager *audio_manager_;
62+
AchievementManager *achievement_manager_;
5663

5764
// InGame systems
5865
std::unique_ptr<ECSWorld> ecs_world_;
@@ -94,5 +101,4 @@ namespace towerforge::core {
94101
const float time_step_;
95102
const float total_time_;
96103
};
97-
98104
}

include/core/scenes/settings_scene.hpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,30 @@ namespace towerforge::ui {
99
}
1010

1111
namespace towerforge::core {
12-
1312
class SettingsScene : public GameScene {
1413
public:
15-
SettingsScene(Game* game, ui::GeneralSettingsMenu& general_settings_menu,
16-
ui::AudioSettingsMenu& audio_settings_menu,
17-
ui::AccessibilitySettingsMenu& accessibility_settings_menu);
14+
SettingsScene(Game *game, ui::GeneralSettingsMenu &general_settings_menu,
15+
ui::AudioSettingsMenu &audio_settings_menu,
16+
ui::AccessibilitySettingsMenu &accessibility_settings_menu);
17+
1818
~SettingsScene() override = default;
1919

2020
void Initialize() override;
21+
2122
void Shutdown() override;
23+
2224
void Update(float delta_time) override;
25+
2326
void Render() override;
2427

28+
void HandleMouseEvent(const engine::ui::MouseEvent &event) override;
29+
2530
private:
26-
void HandleInput();
31+
ui::GeneralSettingsMenu &general_settings_menu_;
32+
ui::AudioSettingsMenu &audio_settings_menu_;
33+
ui::AccessibilitySettingsMenu &accessibility_settings_menu_;
2734

28-
ui::GeneralSettingsMenu& general_settings_menu_;
29-
ui::AudioSettingsMenu& audio_settings_menu_;
30-
ui::AccessibilitySettingsMenu& accessibility_settings_menu_;
31-
3235
bool in_audio_settings_ = false;
3336
bool in_accessibility_settings_ = false;
3437
};
35-
3638
}

include/ui/accessibility_settings_menu.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@
88
import engine;
99

1010
namespace towerforge::ui {
11-
// Forward declarations
12-
struct MouseEvent;
13-
1411
/**
1512
* @brief Accessibility settings menu for configuring accessibility features
1613
*
@@ -57,7 +54,7 @@ namespace towerforge::ui {
5754
* @param event Mouse event data
5855
* @return true if event was consumed
5956
*/
60-
bool ProcessMouseEvent(const MouseEvent &event) const;
57+
bool ProcessMouseEvent(const engine::ui::MouseEvent &event) const;
6158

6259
/**
6360
* @brief Handle keyboard input for menu navigation

include/ui/achievements_menu.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import engine;
1010

1111
namespace towerforge::ui {
12-
struct MouseEvent;
13-
1412
/**
1513
* @brief Achievements menu for displaying unlocked and locked achievements
1614
*
@@ -52,7 +50,7 @@ namespace towerforge::ui {
5250
* @param event Mouse event data
5351
* @return true if event was consumed
5452
*/
55-
bool ProcessMouseEvent(const MouseEvent &event) const;
53+
bool ProcessMouseEvent(const engine::ui::MouseEvent &event) const;
5654

5755
/**
5856
* @brief Handle keyboard input for menu navigation
@@ -94,7 +92,7 @@ namespace towerforge::ui {
9492
* @return Unique pointer to the constructed container
9593
*/
9694
std::unique_ptr<engine::ui::elements::Container> CreateAchievementItem(
97-
const towerforge::core::Achievement& achievement,
95+
const towerforge::core::Achievement &achievement,
9896
bool is_unlocked,
9997
float item_width) const;
10098

include/ui/audio_settings_menu.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import engine;
1010

1111
namespace towerforge::ui {
12-
// Forward declaration
13-
struct MouseEvent;
1412

1513
/**
1614
* @brief Audio settings menu for adjusting volume levels
@@ -57,7 +55,7 @@ namespace towerforge::ui {
5755
* @param event Mouse event data
5856
* @return true if event was consumed
5957
*/
60-
bool ProcessMouseEvent(const MouseEvent &event) const;
58+
bool ProcessMouseEvent(const engine::ui::MouseEvent &event) const;
6159

6260
/**
6361
* @brief Handle keyboard input for menu navigation

include/ui/build_menu.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import engine;
1010
namespace towerforge::ui {
1111
// Forward declarations
1212
class TooltipManager;
13-
struct MouseEvent;
1413

1514
/**
1615
* @brief Facility categories for organized building menu
@@ -148,7 +147,7 @@ namespace towerforge::ui {
148147
/**
149148
* @brief Handle mouse events
150149
*/
151-
bool ProcessMouseEvent(const MouseEvent &event) const;
150+
bool ProcessMouseEvent(const engine::ui::MouseEvent &event) const;
152151

153152
private:
154153
void UpdateLayout();

include/ui/general_settings_menu.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
import engine;
99

1010
namespace towerforge::ui {
11-
struct MouseEvent;
12-
1311
/**
1412
* @brief Settings options available in the general settings menu
1513
*/
@@ -58,7 +56,7 @@ namespace towerforge::ui {
5856
* @param event Mouse event data
5957
* @return true if event was consumed
6058
*/
61-
bool ProcessMouseEvent(const MouseEvent &event) const;
59+
bool ProcessMouseEvent(const engine::ui::MouseEvent &event) const;
6260

6361
/**
6462
* @brief Handle keyboard input for menu navigation

include/ui/hud/hud.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
#include <functional>
77
#include <variant>
88

9-
namespace towerforge::ui {
10-
struct MouseEvent;
9+
import engine;
1110

11+
namespace towerforge::ui {
1212
// Forward declarations
1313
class UIWindowManager;
1414
class TooltipManager;
@@ -151,9 +151,9 @@ namespace towerforge::ui {
151151
*/
152152
class HUD {
153153
public:
154-
/**
155-
* @brief Callback type for action bar actions
156-
*/
154+
/**
155+
* @brief Callback type for action bar actions
156+
*/
157157
using ActionBarCallback = std::function<void(int action)>;
158158
using DemolishFacilityCallback = std::function<void()>;
159159

@@ -213,7 +213,7 @@ namespace towerforge::ui {
213213
* @param event Mouse event data
214214
* @return true if event was consumed by HUD
215215
*/
216-
bool ProcessMouseEvent(const MouseEvent &event) const;
216+
bool ProcessMouseEvent(const engine::ui::MouseEvent &event) const;
217217

218218
/**
219219
* @brief Update tooltips based on mouse position

0 commit comments

Comments
 (0)