//------------------------------------------------
    //------------------------------------------------
    void ScoringSystem::OnInit()
    {
        for(auto& score : m_scores)
        {
            score = 0;
        }
        
        auto entityFactory = GetState()->GetSystem<GameEntityFactory>();
        auto scene = GetState()->GetScene();
        const CSCore::Vector2 k_digitSize(20, 20);
        const f32 distanceFromGround = 6.0f;
        
        const f32 k_paddingFromCentre = 10.0f;
        
        CSCore::EntitySPtr player1TensEntity = entityFactory->CreateScoreSprite(k_digitSize, CSRendering::AlignmentAnchor::k_middleRight);
        m_scoreViews[0].first = player1TensEntity->GetComponent<CSRendering::SpriteComponent>();
        player1TensEntity->GetTransform().SetPosition(-k_paddingFromCentre - k_digitSize.x, 0.0f, distanceFromGround);
        scene->Add(player1TensEntity);
        
        CSCore::EntitySPtr player1SinglesEntity = entityFactory->CreateScoreSprite(k_digitSize, CSRendering::AlignmentAnchor::k_middleRight);
        m_scoreViews[0].second = player1SinglesEntity->GetComponent<CSRendering::SpriteComponent>();
        player1SinglesEntity->GetTransform().SetPosition(-k_paddingFromCentre, 0.0f, distanceFromGround);
        scene->Add(player1SinglesEntity);

        CSCore::EntitySPtr player2TensEntity = entityFactory->CreateScoreSprite(k_digitSize, CSRendering::AlignmentAnchor::k_middleLeft);
        m_scoreViews[1].first = player2TensEntity->GetComponent<CSRendering::SpriteComponent>();
        player2TensEntity->GetTransform().SetPosition(k_paddingFromCentre, 0.0f, distanceFromGround);
        scene->Add(player2TensEntity);
        
        CSCore::EntitySPtr player2SinglesEntity = entityFactory->CreateScoreSprite(k_digitSize, CSRendering::AlignmentAnchor::k_middleLeft);
        m_scoreViews[1].second = player2SinglesEntity->GetComponent<CSRendering::SpriteComponent>();
        player2SinglesEntity->GetTransform().SetPosition(k_paddingFromCentre + k_digitSize.x, 0.0f, distanceFromGround);
        scene->Add(player2SinglesEntity);
    }
예제 #2
0
//************************************************************************
void CNutDropScene::CreateSprites()
//************************************************************************
{
	FNAME szFileName;
	POINT ptOrigin;

	ptOrigin.x = 0;
	ptOrigin.y = 0; 

	// Create the object sprites
	for (int i = 0 ; i < MAX_PIECES ; i++)
	{
		if (m_ObjectList[i].m_szImage[0] != '\0')
		{
			m_ObjectList[i].m_lpSprite = m_pAnimator->CreateSprite (&ptOrigin);
			if (m_ObjectList[i].m_lpSprite)
			{
				GetPathName (szFileName, m_ObjectList[i].m_szImage);
				// Set up the sprite parameters
				m_ObjectList[i].m_lpSprite->AddCells (szFileName, m_ObjectList[i].m_nTotalCells, NULL);
				m_ObjectList[i].m_lpSprite->SetCellsPerSec (10);
				m_ObjectList[i].m_lpSprite->SetSpeed (m_nObjectSpeed);
				m_ObjectList[i].m_lpSprite->SetCycleBack (TRUE);
				m_ObjectList[i].m_lpSprite->Jump (0, 0);
				m_ObjectList[i].m_lpSprite->SetNotifyProc (OnSpriteNotify, (DWORD)this);    
				m_ObjectList[i].m_lpSprite->Show (FALSE);
			}
		}
	}

	// Create the player sprite
	m_lpPlayerSprite = m_pAnimator->CreateSprite (&ptOrigin);
	if (m_lpPlayerSprite)
	{
		if (! m_nPlayerCells)
			m_nPlayerCells = 1;
		GetPathName (szFileName, m_szPlayerBmp); 
		m_lpPlayerSprite->AddCells (szFileName, m_nPlayerCells, NULL);
		m_lpPlayerSprite->ActivateCells(0, (m_nPlayerCells/2)-1, YES);
		m_lpPlayerSprite->ActivateCells(m_nPlayerCells/2, m_nPlayerCells, NO);
		m_lpPlayerSprite->SetCellsPerSec (0);
		m_lpPlayerSprite->SetSpeed (m_nPlayerSpeed);
		m_lpPlayerSprite->Jump (m_nScreenLeftEdge, m_nScreenBottom);
		m_lpPlayerSprite->SetNotifyProc (OnSpriteNotify, (DWORD)this);    
		m_lpPlayerSprite->Show (TRUE);
	}

	// Initially walking right
	m_WalkDir = WALKRIGHT;

	// Create the score sprites
	m_lpCaughtScore[0] = CreateScoreSprite (m_ptCaughtScore.x, m_ptCaughtScore.y, 10);
	m_lpCaughtScore[1] = CreateScoreSprite (m_ptCaughtScore.x + m_nScoreWidth, m_ptCaughtScore.y, 0);
}