Pārlūkot izejas kodu

Solitaire: Move cards functionality into LibCards

Gunnar Beutner 4 gadi atpakaļ
vecāks
revīzija
3e47eec862

+ 0 - 0
Base/res/icons/solitaire/buggie-deck.png → Base/res/icons/cards/buggie-deck.png


+ 1 - 3
Userland/Games/Solitaire/CMakeLists.txt

@@ -1,12 +1,10 @@
 compile_gml(Solitaire.gml SolitaireGML.h solitaire_gml)
 
 set(SOURCES
-    Card.cpp
-    CardStack.cpp
     Game.cpp
     main.cpp
     SolitaireGML.h
 )
 
 serenity_app(Solitaire ICON app-solitaire)
-target_link_libraries(Solitaire LibGUI LibGfx LibCore)
+target_link_libraries(Solitaire LibCards LibGUI LibGfx LibCore)

+ 4 - 1
Userland/Games/Solitaire/Game.h

@@ -6,10 +6,13 @@
 
 #pragma once
 
-#include "CardStack.h"
+#include <LibCards/CardStack.h>
 #include <LibGUI/Frame.h>
 #include <LibGUI/Painter.h>
 
+using Cards::Card;
+using Cards::CardStack;
+
 namespace Solitaire {
 
 enum class Mode : u8 {

+ 1 - 0
Userland/Libraries/CMakeLists.txt

@@ -1,6 +1,7 @@
 add_subdirectory(LibArchive)
 add_subdirectory(LibAudio)
 add_subdirectory(LibC)
+add_subdirectory(LibCards)
 add_subdirectory(LibChess)
 add_subdirectory(LibCompress)
 add_subdirectory(LibCore)

+ 7 - 0
Userland/Libraries/LibCards/CMakeLists.txt

@@ -0,0 +1,7 @@
+set(SOURCES
+    Card.cpp
+    CardStack.cpp
+)
+
+serenity_lib(LibCards cards)
+target_link_libraries(LibCards LibC LibCore)

+ 2 - 2
Userland/Games/Solitaire/Card.cpp → Userland/Libraries/LibCards/Card.cpp

@@ -9,7 +9,7 @@
 #include <LibGfx/Font.h>
 #include <LibGfx/FontDatabase.h>
 
-namespace Solitaire {
+namespace Cards {
 
 static const NonnullRefPtr<Gfx::CharacterBitmap> s_diamond = Gfx::CharacterBitmap::create_from_ascii(
     "    #    "
@@ -75,7 +75,7 @@ Card::Card(Type type, uint8_t value)
         Gfx::Painter bg_painter(*s_background);
 
         s_background->fill(Color::White);
-        auto image = Gfx::Bitmap::load_from_file("/res/icons/solitaire/buggie-deck.png");
+        auto image = Gfx::Bitmap::load_from_file("/res/icons/cards/buggie-deck.png");
         VERIFY(!image.is_null());
 
         float aspect_ratio = image->width() / static_cast<float>(image->height());

+ 8 - 8
Userland/Games/Solitaire/Card.h → Userland/Libraries/LibCards/Card.h

@@ -15,7 +15,7 @@
 #include <LibGfx/Rect.h>
 #include <ctype.h>
 
-namespace Solitaire {
+namespace Cards {
 
 class Card final : public Core::Object {
     C_OBJECT(Card)
@@ -74,28 +74,28 @@ private:
 }
 
 template<>
-struct AK::Formatter<Solitaire::Card> : Formatter<FormatString> {
-    void format(FormatBuilder& builder, const Solitaire::Card& card)
+struct AK::Formatter<Cards::Card> : Formatter<FormatString> {
+    void format(FormatBuilder& builder, const Cards::Card& card)
     {
         StringView type;
 
         switch (card.type()) {
-        case Solitaire::Card::Type::Clubs:
+        case Cards::Card::Type::Clubs:
             type = "C"sv;
             break;
-        case Solitaire::Card::Type::Diamonds:
+        case Cards::Card::Type::Diamonds:
             type = "D"sv;
             break;
-        case Solitaire::Card::Type::Hearts:
+        case Cards::Card::Type::Hearts:
             type = "H"sv;
             break;
-        case Solitaire::Card::Type::Spades:
+        case Cards::Card::Type::Spades:
             type = "S"sv;
             break;
         default:
             VERIFY_NOT_REACHED();
         }
 
-        Formatter<FormatString>::format(builder, "{:>2}{}", Solitaire::Card::labels[card.value()], type);
+        Formatter<FormatString>::format(builder, "{:>2}{}", Cards::Card::labels[card.value()], type);
     }
 };

+ 1 - 1
Userland/Games/Solitaire/CardStack.cpp → Userland/Libraries/LibCards/CardStack.cpp

@@ -6,7 +6,7 @@
 
 #include "CardStack.h"
 
-namespace Solitaire {
+namespace Cards {
 
 CardStack::CardStack()
     : m_position({ 0, 0 })

+ 8 - 8
Userland/Games/Solitaire/CardStack.h → Userland/Libraries/LibCards/CardStack.h

@@ -10,7 +10,7 @@
 #include <AK/Format.h>
 #include <AK/Vector.h>
 
-namespace Solitaire {
+namespace Cards {
 
 class CardStack final {
 public:
@@ -88,25 +88,25 @@ private:
 }
 
 template<>
-struct AK::Formatter<Solitaire::CardStack> : Formatter<FormatString> {
-    void format(FormatBuilder& builder, const Solitaire::CardStack& stack)
+struct AK::Formatter<Cards::CardStack> : Formatter<FormatString> {
+    void format(FormatBuilder& builder, const Cards::CardStack& stack)
     {
         StringView type;
 
         switch (stack.type()) {
-        case Solitaire::CardStack::Type::Stock:
+        case Cards::CardStack::Type::Stock:
             type = "Stock"sv;
             break;
-        case Solitaire::CardStack::Type::Normal:
+        case Cards::CardStack::Type::Normal:
             type = "Normal"sv;
             break;
-        case Solitaire::CardStack::Type::Foundation:
+        case Cards::CardStack::Type::Foundation:
             type = "Foundation"sv;
             break;
-        case Solitaire::CardStack::Type::Waste:
+        case Cards::CardStack::Type::Waste:
             type = "Waste"sv;
             break;
-        case Solitaire::CardStack::Type::Play:
+        case Cards::CardStack::Type::Play:
             type = "Play"sv;
             break;
         default: