TwentyFourtyEight: Port to GML compilation

This commit is contained in:
Aryan Baburajan 2024-03-31 13:51:10 +05:30 committed by Tim Schumacher
parent 1c75aa98b8
commit 72a5c8f3d8
8 changed files with 65 additions and 16 deletions

View file

@ -4,20 +4,17 @@ serenity_component(
TARGETS 2048
)
stringify_gml(GameSizeDialog.gml GameSizeDialogGML.h game_size_dialog_gml)
stringify_gml(GameWindow.gml GameWindowGML.h game_window_gml)
compile_gml(GameSizeDialog.gml GameSizeDialogGML.cpp)
compile_gml(GameWindowWidget.gml GameWindowWidgetGML.cpp)
set(SOURCES
BoardView.cpp
Game.cpp
GameSizeDialog.cpp
GameSizeDialogGML.cpp
GameWindowWidgetGML.cpp
main.cpp
)
set(GENERATED_SOURCES
GameSizeDialogGML.h
GameWindowGML.h
)
serenity_app(2048 ICON app-2048)
target_link_libraries(2048 PRIVATE LibConfig LibCore LibGfx LibGUI LibMain LibDesktop LibURL)

View file

@ -6,14 +6,15 @@
#include "GameSizeDialog.h"
#include "Game.h"
#include "GameSizeDialogWidget.h"
#include <AK/IntegralMath.h>
#include <LibGUI/BoxLayout.h>
#include <LibGUI/Button.h>
#include <LibGUI/CheckBox.h>
#include <LibGUI/Label.h>
#include <LibGUI/SpinBox.h>
#include <Userland/Games/TwentyFourtyEight/GameSizeDialogGML.h>
namespace TwentyFourtyEight {
GameSizeDialog::GameSizeDialog(GUI::Window* parent, size_t board_size, size_t target, bool evil_ai)
: GUI::Dialog(parent)
, m_board_size(board_size)
@ -25,8 +26,8 @@ GameSizeDialog::GameSizeDialog(GUI::Window* parent, size_t board_size, size_t ta
set_icon(parent->icon());
set_resizable(false);
auto main_widget = set_main_widget<GUI::Widget>();
main_widget->load_from_gml(game_size_dialog_gml).release_value_but_fixme_should_propagate_errors();
auto main_widget = GameSizeDialogWidget::try_create().release_value_but_fixme_should_propagate_errors();
set_main_widget(main_widget);
auto board_size_spinbox = main_widget->find_descendant_of_type_named<GUI::SpinBox>("board_size_spinbox");
board_size_spinbox->set_value(m_board_size);
@ -65,3 +66,4 @@ GameSizeDialog::GameSizeDialog(GUI::Window* parent, size_t board_size, size_t ta
done(ExecResult::OK);
};
}
}

View file

@ -1,4 +1,4 @@
@GUI::Frame {
@TwentyFourtyEight::GameSizeDialogWidget {
fill_with_background_color: true
layout: @GUI::VerticalBoxLayout {
margins: [4]

View file

@ -9,6 +9,7 @@
#include <AK/Types.h>
#include <LibGUI/Dialog.h>
namespace TwentyFourtyEight {
class GameSizeDialog : public GUI::Dialog {
C_OBJECT(GameSizeDialog)
public:
@ -25,3 +26,4 @@ private:
bool m_evil_ai;
bool m_temporary { false };
};
}

View file

@ -0,0 +1,24 @@
/*
* Copyright (c) 2024, Aryan Baburajan <aryanbaburajan2007@gmail.com>.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibGUI/Frame.h>
namespace TwentyFourtyEight {
class GameSizeDialogWidget : public GUI::Widget {
C_OBJECT_ABSTRACT(GameSizeDialogWidget)
public:
static ErrorOr<NonnullRefPtr<GameSizeDialogWidget>> try_create();
virtual ~GameSizeDialogWidget() override = default;
private:
GameSizeDialogWidget() = default;
};
}

View file

@ -1,4 +1,4 @@
@GUI::Frame {
@TwentyFourtyEight::GameWindowWidget {
fill_with_background_color: true
layout: @GUI::VerticalBoxLayout {}

View file

@ -0,0 +1,24 @@
/*
* Copyright (c) 2024, Aryan Baburajan <aryanbaburajan2007@gmail.com>.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibGUI/Frame.h>
namespace TwentyFourtyEight {
class GameWindowWidget : public GUI::Widget {
C_OBJECT_ABSTRACT(GameWindowWidget)
public:
static ErrorOr<NonnullRefPtr<GameWindowWidget>> try_create();
virtual ~GameWindowWidget() override = default;
private:
GameWindowWidget() = default;
};
}

View file

@ -7,7 +7,7 @@
#include "BoardView.h"
#include "Game.h"
#include "GameSizeDialog.h"
#include <Games/TwentyFourtyEight/GameWindowGML.h>
#include "GameWindowWidget.h"
#include <LibConfig/Client.h>
#include <LibCore/System.h>
#include <LibDesktop/Launcher.h>
@ -65,8 +65,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->set_title("2048");
window->resize(315, 336);
auto main_widget = window->set_main_widget<GUI::Widget>();
TRY(main_widget->load_from_gml(game_window_gml));
auto main_widget = TwentyFourtyEight::GameWindowWidget::try_create().release_value_but_fixme_should_propagate_errors();
window->set_main_widget(main_widget);
Game game { board_size, target_tile, evil_ai };
@ -119,7 +119,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
redo_action->set_enabled(false);
auto change_settings = [&] {
auto size_dialog = GameSizeDialog::construct(window, board_size, target_tile, evil_ai);
auto size_dialog = TwentyFourtyEight::GameSizeDialog::construct(window, board_size, target_tile, evil_ai);
if (size_dialog->exec() != GUI::Dialog::ExecResult::OK)
return;