File indexing completed on 2024-04-14 03:59:23

0001 /******************************************************************************
0002 *   KBlocks, a falling blocks game by KDE                                     *
0003 *   SPDX-FileCopyrightText: 2009-2021 Mauricio Piacentini <mauricio@tabuleiro.com>      *
0004 *                           Zhongjie Cai <squall.leonhart.cai@gmail.com>      *
0005 *                           Julian Helfferich <julian.helfferich@mailbox.org> *
0006 *                                                                             *
0007 *   SPDX-License-Identifier: GPL-2.0-or-later
0008 ******************************************************************************/
0009 #include "KBlocksAnimDrop.h"
0010 
0011 #include "SvgItemInterface.h"
0012 
0013 KBlocksAnimDrop::KBlocksAnimDrop(const QList<SvgItemInterface *> &items, int duration, QTimeLine::Direction direction)
0014 {
0015     mItemList = items;
0016 
0017     mpTimeLine = new QTimeLine(duration);
0018     mpTimeLine->setFrameRange(0, 30);
0019     mpTimeLine->setDirection(direction);
0020 
0021     connect(mpTimeLine, &QTimeLine::valueChanged, this, &KBlocksAnimDrop::valueChanged);
0022     connect(mpTimeLine, &QTimeLine::finished, this, &KBlocksAnimDrop::endAnimation);
0023 
0024     mpTimeLine->start();
0025 }
0026 
0027 KBlocksAnimDrop::~KBlocksAnimDrop()
0028 {
0029     delete mpTimeLine;
0030 }
0031 
0032 void KBlocksAnimDrop::valueChanged(qreal value)
0033 {
0034     Q_UNUSED(value);
0035     for (SvgItemInterface *pItem : std::as_const(mItemList)) {
0036         pItem->execPosAnim(value);
0037     }
0038 }
0039 
0040 void KBlocksAnimDrop::endAnimation()
0041 {
0042     Q_EMIT animationFinished();
0043 }
0044 
0045 #include "moc_KBlocksAnimDrop.cpp"