File indexing completed on 2024-04-14 04:02:23

0001 /*
0002     This file is part of the KDE games lskat program
0003     SPDX-FileCopyrightText: 2006 Martin Heni <kde@heni-online.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "abstractdisplay.h"
0009 
0010 // Qt includes
0011 
0012 // KF includes
0013 
0014 // Local includes
0015 #include "deck.h"
0016 #include "cardsprite.h"
0017 #include "thememanager.h"
0018 
0019 // Define static attributes
0020 QHash<int, CardSprite *> AbstractDisplay::mCards;
0021 
0022 // Constructor for the engine
0023 AbstractDisplay::AbstractDisplay(Deck *deck, QGraphicsScene *scene, ThemeManager *theme,
0024                                  int advancePeriod, QGraphicsView *parent)
0025                : QObject(parent)
0026 {
0027     // Store the scene
0028     mScene = scene;
0029     // Store the view
0030     mView = parent;
0031     // Store advance period
0032     mAdvancePeriod = advancePeriod;
0033     // Store theme manager
0034     mTheme = theme;
0035 
0036     // Set up deck
0037     setDeck(deck);
0038 
0039     // Initialize sprites
0040     createCardSprites();
0041     mSprites.clear();
0042 }
0043 
0044 // Destructor.
0045 AbstractDisplay::~AbstractDisplay()
0046 {
0047     qDeleteAll(mSprites);
0048     // Do not delete static cards for performance reasons
0049 }
0050 
0051 // Store the deck object for accessing the card deck
0052 void AbstractDisplay::setDeck(Deck *deck)
0053 {
0054     mDeck = deck;
0055 }
0056 
0057 // Explicitly reset stored data, e.g. sprites.
0058 void AbstractDisplay::reset()
0059 {
0060     mCards.clear();
0061 }
0062 
0063 // Create all sprites and store them for later access
0064 void AbstractDisplay::createCardSprites()
0065 {
0066     // Only create sprites once (unless explicitly reset)
0067     if (!mCards.isEmpty()) return;
0068 
0069     // Loop all cards
0070     for (int cardNo = 0; cardNo < mDeck->cardNumber(); cardNo++)
0071     {
0072         // Create sprite with card correct card image
0073         Suite suite        = Suite(cardNo % 4);
0074         CardType cardtype  = CardType(cardNo / 4);
0075         CardSprite *sprite = new CardSprite(suite, cardtype, mTheme, mAdvancePeriod, mScene);
0076         // Display sprite
0077         sprite->hide();
0078 
0079         // Store sprite
0080         mCards[cardNo] = sprite;
0081     }// next
0082 }
0083 
0084 #include "moc_abstractdisplay.cpp"