浏览代码

Spider: Port to the GML compiler

david072 1 年之前
父节点
当前提交
65b9cb63ee

+ 2 - 5
Userland/Games/Spider/CMakeLists.txt

@@ -4,15 +4,12 @@ serenity_component(
     TARGETS Spider
     TARGETS Spider
 )
 )
 
 
-stringify_gml(Spider.gml SpiderGML.h spider_gml)
+compile_gml(Spider.gml SpiderGML.cpp spider_gml)
 
 
 set(SOURCES
 set(SOURCES
     Game.cpp
     Game.cpp
     main.cpp
     main.cpp
-)
-
-set(GENERATED_SOURCES
-    SpiderGML.h
+    SpiderGML.cpp
 )
 )
 
 
 serenity_app(Spider ICON app-spider)
 serenity_app(Spider ICON app-spider)

+ 23 - 0
Userland/Games/Spider/MainWidget.h

@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2023, the SerenityOS developers
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <LibGUI/Widget.h>
+
+namespace Spider {
+
+class MainWidget : public GUI::Widget {
+    C_OBJECT_ABSTRACT(MainWidget)
+public:
+    static ErrorOr<NonnullRefPtr<Spider::MainWidget>> try_create();
+    virtual ~MainWidget() override = default;
+
+private:
+    MainWidget() = default;
+};
+
+}

+ 1 - 1
Userland/Games/Spider/Spider.gml

@@ -1,4 +1,4 @@
-@GUI::Widget {
+@Spider::MainWidget {
     fill_with_background_color: true
     fill_with_background_color: true
     layout: @GUI::VerticalBoxLayout {}
     layout: @GUI::VerticalBoxLayout {}
 
 

+ 3 - 3
Userland/Games/Spider/main.cpp

@@ -7,9 +7,9 @@
  */
  */
 
 
 #include "Game.h"
 #include "Game.h"
+#include "MainWidget.h"
 #include <AK/NumberFormat.h>
 #include <AK/NumberFormat.h>
 #include <AK/URL.h>
 #include <AK/URL.h>
-#include <Games/Spider/SpiderGML.h>
 #include <LibConfig/Client.h>
 #include <LibConfig/Client.h>
 #include <LibCore/System.h>
 #include <LibCore/System.h>
 #include <LibCore/Timer.h>
 #include <LibCore/Timer.h>
@@ -116,8 +116,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     if (statistic_display >= StatisticDisplay::__Count)
     if (statistic_display >= StatisticDisplay::__Count)
         update_statistic_display(StatisticDisplay::HighScore);
         update_statistic_display(StatisticDisplay::HighScore);
 
 
-    auto widget = window->set_main_widget<GUI::Widget>();
-    TRY(widget->load_from_gml(spider_gml));
+    auto widget = TRY(Spider::MainWidget::try_create());
+    window->set_main_widget(widget);
 
 
     auto& game = *widget->find_descendant_of_type_named<Spider::Game>("game");
     auto& game = *widget->find_descendant_of_type_named<Spider::Game>("game");
     game.set_focus(true);
     game.set_focus(true);