File indexing completed on 2023-10-01 08:05: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"