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

0001 /*
0002     This file is part of the KDE project "KLines"
0003 
0004     SPDX-FileCopyrightText: 2006 Dmitry Suzdalev <dimsuz@gmail.com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "ballitem.h"
0010 #include "renderer.h"
0011 
0012 #include <QGraphicsScene>
0013 
0014 BallItem::BallItem( QGraphicsScene* parent )
0015   : KGameRenderedItem(KLinesRenderer::renderer() , QString(), nullptr)
0016 {
0017     parent->addItem(this);
0018     setShapeMode( BoundingRectShape );
0019 
0020     m_color = NumColors; // = uninitialized
0021 
0022     m_timeLine.setEasingCurve(QEasingCurve::Linear);
0023     m_timeLine.setLoopCount(0);
0024 
0025     connect(&m_timeLine, &QTimeLine::frameChanged, this, &BallItem::animFrameChanged);
0026 }
0027 
0028 void BallItem::setColor( BallColor c, bool setPix )
0029 {
0030     m_color = c;
0031     if(setPix)
0032       setSpriteKey(KLinesRenderer::ballPixmapId(m_color));
0033 }
0034 
0035 void BallItem::startSelectedAnimation()
0036 {
0037     if(m_timeLine.state() == QTimeLine::Running)
0038         return;
0039     // it needs to be here rather than in constructor,
0040     // because if different theme would get selected
0041     // new settings will be picked up from KLinesRenderer
0042     m_timeLine.setDuration(KLinesRenderer::animDuration(KLinesRenderer::SelectedAnim));
0043     m_timeLine.setFrameRange(0, KLinesRenderer::frameCount(KLinesRenderer::SelectedAnim)-1);
0044     m_timeLine.start();
0045 }
0046 
0047 void BallItem::stopAnimation()
0048 {
0049     m_timeLine.stop();
0050     setSpriteKey(KLinesRenderer::ballPixmapId(m_color));
0051 }
0052 
0053 
0054 
0055 void BallItem::animFrameChanged(int frame)
0056 {
0057   setSpriteKey(KLinesRenderer::animationFrameId(KLinesRenderer::SelectedAnim, m_color, frame ));
0058 }
0059 
0060 #include "moc_ballitem.cpp"