void SpawnPointSpriteManager::update() {

	if (m_spawnPoint->isFree() && m_currentSprite.getImage() == Sprite::SPAWN_POINT_OCCUPIED) {
		m_currentSprite = Sprite(Sprite::SPAWN_POINT_FREE, m_spawnPoint->getShape());
		clearSprites();
		addSprite(m_currentSprite);
	} else if (!m_spawnPoint->isFree() && m_currentSprite.getImage() == Sprite::SPAWN_POINT_FREE) {
		clearSprites();
		m_currentSprite = Sprite(Sprite::SPAWN_POINT_OCCUPIED, m_spawnPoint->getShape());
		addSprite(m_currentSprite);
	}

	WorldSpriteManager::update();
}
/*
	unloadSprites - This method removes all artwork from memory that
	has been allocated for game sprites.
*/
void SpriteManager::unloadSprites()
{
	// @TODO - WE'LL DO THIS LATER WHEN WE LEARN MORE ABOUT MEMORY MANAGEMENT
	clearSprites();
}
示例#3
0
void StagePanel::clear()
{
	EditPanel::clear();
	clearSprites();
}
void AnimationViewerPanel::refresh()
{
    if (!isAnimationPlaying() || isAnimationExist())
    {
        refreshed = true;
        clearSprites();
    }

    if (!isAnimationPlaying())
    {
        float targetX = mpAnimationModel->getTargetSprite()->mSpriteDescriptor.mPosition.mX;
        float targetY = mpAnimationModel->getTargetSprite()->mSpriteDescriptor.mPosition.mY;

        QPoint centerPoint = getCenterPoint();

        if (targetX < -centerPoint.x()){targetX = -centerPoint.x();}
        if (targetX > centerPoint.x()){targetX = centerPoint.x();}
        if (targetY < -centerPoint.y()){targetY = -centerPoint.y();}
        if (targetY > centerPoint.y()){targetY = centerPoint.y();}

        mpAnimationModel->setTargetSpritePosition(targetX, targetY);

        // set cel reference
        KeyFrame::KeyFramePosition keyframePosition = mpAnimationModel->getCurrentKeyFramePosition();
        KeyFrame* pKeyframe = mpAnimationModel->getKeyFrame(keyframePosition.mLineNo, keyframePosition.mFrameNo);

        if (pKeyframe)
        {
            mpSelectedCelModel->setKeyFrameDataReference(pKeyframe->mpKeyFrameData);
            emit celSelected(pKeyframe->mpKeyFrameData);
        }
        else
        {
            mpSelectedCelModel->setKeyFrameDataReference(NULL);
            emit celSelected(NULL);
        }
    }

     // Update target info
    GLSprite* pTargetMonsterSprite = mpAnimationModel->createGLSpriteAt(NULL, mpAnimationModel->getCurrentKeyFramePosition().mFrameNo, AnimationModel::LINE_target);
    if (pTargetMonsterSprite)
    {
        if (pTargetMonsterSprite->mLineNo == AnimationModel::LINE_target)
        {
            GLSprite::Point2 pt = spTargetSprite->mSpriteDescriptor.mPosition;
            pt.mX = pTargetMonsterSprite->mSpriteDescriptor.mPosition.mX + AnimationModel::TARGET_originX;
            pt.mY = pTargetMonsterSprite->mSpriteDescriptor.mPosition.mY + AnimationModel::TARGET_originY;
            spTargetSprite->mSpriteDescriptor.mPosition = pt;
            //spTargetSprite->mSpriteDescriptor.mTextureSrcRect = pTargetMonsterSprite->mSpriteDescriptor.mTextureSrcRect;
            spTargetSprite->mSpriteDescriptor.mCenter.mX = 0;
            spTargetSprite->mSpriteDescriptor.mCenter.mY = 0;
        }
        delete pTargetMonsterSprite;
    }

    mGlSpriteList = mpAnimationModel->createGLSpriteListAt(NULL, mpAnimationModel->getCurrentKeyFramePosition().mFrameNo);

    mRenderSpriteList.append(mGlSpriteList);
    for (int lineNo = 0; lineNo < AnimationModel::LINE_COUNT; lineNo++)
    {
        for (int i = mEmittedAnimationList[lineNo].count() - 1; i >= 0; i--)
        {
            mRenderSpriteList.push_back(mEmittedAnimationList[lineNo][i]->getSprite());
        }
    }
    qSort(mRenderSpriteList.begin(), mRenderSpriteList.end(), GLSprite::priorityLessThan);

    repaint();
}