Skip to content

Commit ff359c2

Browse files
creator1creeper1bgianfo
authored andcommitted
FlappyBug: Propagate errors in Bug class
Move-construct Bug into the Game class to improve error handling.
1 parent a67afa7 commit ff359c2

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

Userland/Games/FlappyBug/Game.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
namespace FlappyBug {
1010

11-
Game::Game()
11+
Game::Game(Bug bug)
12+
: m_bug(move(bug))
1213
{
1314
set_override_cursor(Gfx::StandardCursor::Hidden);
1415
start_timer(16);

Userland/Games/FlappyBug/Game.h

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,26 @@ class Game final : public GUI::Frame {
4444
const float x { 50 };
4545
const float radius { 16 };
4646
const float starting_y { 200 };
47-
NonnullRefPtr<Gfx::Bitmap> falling_bitmap { Gfx::Bitmap::try_load_from_file("/res/icons/flappybug/falling.png").release_value_but_fixme_should_propagate_errors() };
48-
NonnullRefPtr<Gfx::Bitmap> flapping_bitmap { Gfx::Bitmap::try_load_from_file("/res/icons/flappybug/flapping.png").release_value_but_fixme_should_propagate_errors() };
47+
NonnullRefPtr<Gfx::Bitmap> falling_bitmap;
48+
NonnullRefPtr<Gfx::Bitmap> flapping_bitmap;
4949
float y {};
5050
float velocity {};
5151

52+
private:
53+
Bug(NonnullRefPtr<Gfx::Bitmap> falling_bitmap_value, NonnullRefPtr<Gfx::Bitmap> flapping_bitmap_value)
54+
: falling_bitmap(move(falling_bitmap_value))
55+
, flapping_bitmap(move(flapping_bitmap_value))
56+
{
57+
}
58+
59+
public:
60+
static ErrorOr<Bug> construct()
61+
{
62+
NonnullRefPtr<Gfx::Bitmap> falling_bitmap = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/flappybug/falling.png"));
63+
NonnullRefPtr<Gfx::Bitmap> flapping_bitmap = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/flappybug/flapping.png"));
64+
return Bug(move(falling_bitmap), move(flapping_bitmap));
65+
}
66+
5267
void reset()
5368
{
5469
y = starting_y;
@@ -153,7 +168,7 @@ class Game final : public GUI::Frame {
153168
const Gfx::IntRect m_score_rect { 10, 10, 20, 20 };
154169
const Gfx::IntRect m_text_rect { game_width / 2 - 80, game_height / 2 - 40, 160, 80 };
155170

156-
Game();
171+
Game(Bug);
157172
};
158173

159174
}

Userland/Games/FlappyBug/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
3737
window->set_title("Flappy Bug");
3838
window->set_double_buffering_enabled(false);
3939
window->set_resizable(false);
40-
auto widget = TRY(window->try_set_main_widget<FlappyBug::Game>());
40+
auto widget = TRY(window->try_set_main_widget<FlappyBug::Game>(TRY(FlappyBug::Game::Bug::construct())));
4141

4242
widget->on_game_end = [&](u32 score) {
4343
if (score <= high_score)

0 commit comments

Comments
 (0)