コード例 #1
0
ファイル: ScutFrame.cpp プロジェクト: HongXiao/Client-source
	void CScutFrame::calTextureTileCount(int count)
	{
		CCTexture2D* textures[32] = {NULL};
		int tileCount[256] = {0};

		CScutTile* pTile = NULL;
		int i = 0;
		for (; i < count; i++)
		{
			pTile = getTileByIndex(i);

			m_pTexture = m_ScutAniGroup->getTextureByTile(pTile).pTex;

			if (m_pTexture == NULL)
			{
				continue;
			}

			for (int j = 0; j < count; j++)
			{
				if (textures[j] == m_pTexture)
				{
					tileCount[j] += 1;
					m_mapTextureCount[m_pTexture] = tileCount[j];
					break;
				}
				else if (textures[j] == NULL)
				{
					m_nTexCount++;

					textures[j] = m_pTexture;
					tileCount[j] += 1;

					m_mapTextureCount[m_pTexture] = tileCount[j];
					break;
				}
			}		
		}

		i = 0;
		int nMaxCount = 0;
		for (; i < m_nTexCount; i++)
		{
			if (tileCount[i] > nMaxCount)
			{
				nMaxCount = tileCount[i];
				m_nMaxIndex = i;
			}
		}

		for (map_TextureCount_it itCnt = m_mapTextureCount.begin(); itCnt != m_mapTextureCount.end(); itCnt++)
		{
			if ((*itCnt).second == nMaxCount)
			{
				m_nMaxTexture = (*itCnt).first;
				break;
			}
		}
	}
コード例 #2
0
ファイル: ScutFrame.cpp プロジェクト: HongXiao/Client-source
	void CScutFrame::initQuads(int nTotalCount)
	{
		int indexVBO = 0;

		for (map_TextureCount_it itCnt = m_mapTextureCount.begin(); itCnt != m_mapTextureCount.end(); itCnt++, indexVBO++)
		{
			int count = (*itCnt).second;
			m_pTexture = (*itCnt).first;
			m_pQuads = (ccV3F_T2F_Quad*)calloc( sizeof(ccV3F_T2F_Quad) * count, 1 );
			
			CScutTile* pTile = NULL;
			int indexQuad = 0;
			for (int i = 0; i < nTotalCount; i++, indexQuad++)
			{
				pTile = getTileByIndex(i);

				if (m_ScutAniGroup->getTextureByTile(pTile).pTex != m_pTexture)
				{
					indexQuad--;
					continue;
				}

				ccV3F_T2F_Quad pQuad;

				pQuad.bl.vertices.x = pTile->vertices[0];
				pQuad.bl.vertices.y = pTile->vertices[1];
				pQuad.bl.vertices.z = pTile->vertices[2];
				pQuad.bl.texCoords.u = pTile->m_tt.texCoord[0];
				pQuad.bl.texCoords.v = pTile->m_tt.texCoord[1];

				pQuad.br.vertices.x = pTile->vertices[3];
				pQuad.br.vertices.y = pTile->vertices[4];
				pQuad.br.vertices.z = pTile->vertices[5];
				pQuad.br.texCoords.u = pTile->m_tt.texCoord[2];
				pQuad.br.texCoords.v = pTile->m_tt.texCoord[3];

				pQuad.tl.vertices.x = pTile->vertices[6];
				pQuad.tl.vertices.y = pTile->vertices[7];
				pQuad.tl.vertices.z = pTile->vertices[8];
				pQuad.tl.texCoords.u = pTile->m_tt.texCoord[4];
				pQuad.tl.texCoords.v = pTile->m_tt.texCoord[5];

				pQuad.tr.vertices.x = pTile->vertices[9];
				pQuad.tr.vertices.y = pTile->vertices[10];
				pQuad.tr.vertices.z = pTile->vertices[11];
				pQuad.tr.texCoords.u = pTile->m_tt.texCoord[6];
				pQuad.tr.texCoords.v = pTile->m_tt.texCoord[7];

				m_pQuads[indexQuad] = pQuad;	
			}
			m_mapTexture[m_pTexture] = m_pQuads;
		}
	}
コード例 #3
0
ファイル: TileMap.cpp プロジェクト: WentingTan/SetRising
Tile* TileMap::getTileByPos(float x, float y)
{
	sf::Vector2i ind = getTileIndex(x, y);
	return getTileByIndex(ind.x, ind.y);
}