int QQuickSpriteEngine::spriteY(int sprite) { if (!m_loaded) return 0; int state = m_things[sprite]; if (!m_sprites[state]->m_generatedCount) return m_sprites[state]->m_rowY; int extra; if (m_sprites[state]->frameSync()) extra = m_startTimes[sprite]; else if (!m_duration[sprite]) return m_sprites[state]->m_rowY; else extra = pseudospriteProgress(sprite, state); if (m_sprites[state]->reverse()) extra = (m_sprites[state]->m_generatedCount - 1) - extra; return m_sprites[state]->m_rowY + m_sprites[state]->m_frameHeight * extra; }
int QQuickSpriteEngine::spriteFrames(int sprite) { if (!m_loaded) return 1; int state = m_things[sprite]; if (!m_sprites[state]->m_generatedCount) return m_sprites[state]->frames(); int extra; if (m_sprites[state]->frameSync()) extra = m_startTimes[sprite]; else if (!m_duration[sprite]) return m_sprites[state]->frames(); else extra = pseudospriteProgress(sprite, state); if (m_sprites[state]->reverse()) extra = (m_sprites[state]->m_generatedCount - 1) - extra; if (extra == m_sprites[state]->m_generatedCount - 1)//last state return m_sprites[state]->frames() % m_sprites[state]->m_framesPerRow; else return m_sprites[state]->m_framesPerRow; }