File indexing completed on 2024-04-14 03:59:52
0001 /* 0002 SPDX-FileCopyrightText: 2012 Christian Krippendorf <Coding@Christian-Krippendorf.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 // own 0008 #include "movelistanimation.h" 0009 0010 // KMahjongg 0011 #include "gamedata.h" 0012 0013 MoveListAnimation::MoveListAnimation(QObject * parent) 0014 : QTimer(parent) 0015 , m_step(0) 0016 , m_animationSpeed(0) 0017 , m_gameData(nullptr) 0018 { 0019 connect(this, &MoveListAnimation::timeout, this, &MoveListAnimation::timeoutOccurred); 0020 } 0021 0022 MoveListAnimation::~MoveListAnimation() 0023 { 0024 } 0025 0026 void MoveListAnimation::setAnimationSpeed(int animationSpeed) 0027 { 0028 m_animationSpeed = animationSpeed; 0029 } 0030 0031 int MoveListAnimation::getAnimationSpeed() const 0032 { 0033 return m_animationSpeed; 0034 } 0035 0036 void MoveListAnimation::start(GameData * gameData) 0037 { 0038 m_gameData = gameData; 0039 0040 // Test whether the tileNum is max or 0. 0041 if (m_gameData->m_tileNum == m_gameData->m_maxTileNum) { 0042 m_direction = AnimationDirection::Forward; 0043 } else { 0044 m_direction = AnimationDirection::Backward; 0045 } 0046 0047 QTimer::start(m_animationSpeed); 0048 } 0049 0050 void MoveListAnimation::stop() 0051 { 0052 QTimer::stop(); 0053 0054 m_step = 0; 0055 } 0056 0057 void MoveListAnimation::timeoutOccurred() 0058 { 0059 if (m_gameData == nullptr) { 0060 return; 0061 } 0062 0063 if (m_direction == AnimationDirection::Forward) { 0064 // Remove items... 0065 Q_EMIT removeItem(m_gameData->MoveListData(m_gameData->m_tileNum)); 0066 Q_EMIT removeItem(m_gameData->MoveListData(m_gameData->m_tileNum)); 0067 0068 if (m_gameData->m_tileNum == 0) { 0069 m_direction = AnimationDirection::Backward; 0070 } 0071 } else { 0072 ++m_gameData->m_tileNum; 0073 Q_EMIT addItem(m_gameData->MoveListData(m_gameData->m_tileNum)); 0074 ++m_gameData->m_tileNum; 0075 Q_EMIT addItem(m_gameData->MoveListData(m_gameData->m_tileNum)); 0076 0077 if (m_gameData->m_tileNum == m_gameData->m_maxTileNum) { 0078 m_direction = AnimationDirection::Forward; 0079 } 0080 } 0081 } 0082 0083 #include "moc_movelistanimation.cpp"