예제 #1
0
파일: layers.cpp 프로젝트: MJavad/teeworlds
void CLayers::Init(class IKernel *pKernel)
{
	// reset pointers to race specific layers
	m_pTeleLayer = 0;
	m_pSpeedupLayer = 0;
	m_pFrontLayer = 0;

	m_pMap = pKernel->RequestInterface<IMap>();
	m_pMap->GetType(MAPITEMTYPE_GROUP, &m_GroupsStart, &m_GroupsNum);
	m_pMap->GetType(MAPITEMTYPE_LAYER, &m_LayersStart, &m_LayersNum);

	for(int g = 0; g < NumGroups(); g++)
	{
		CMapItemGroup *pGroup = GetGroup(g);
		for(int l = 0; l < pGroup->m_NumLayers; l++)
		{
			CMapItemLayer *pLayer = GetLayer(pGroup->m_StartLayer+l);

			if(pLayer->m_Type == LAYERTYPE_TILES)
			{
				CMapItemLayerTilemap *pTilemap = reinterpret_cast<CMapItemLayerTilemap *>(pLayer);
				if(pTilemap->m_Flags&TILESLAYERFLAG_GAME)
				{
					m_pGameLayer = pTilemap;
					m_pGameGroup = pGroup;

					// make sure the game group has standard settings
					m_pGameGroup->m_OffsetX = 0;
					m_pGameGroup->m_OffsetY = 0;
					m_pGameGroup->m_ParallaxX = 100;
					m_pGameGroup->m_ParallaxY = 100;

					if(m_pGameGroup->m_Version >= 2)
					{
						m_pGameGroup->m_UseClipping = 0;
						m_pGameGroup->m_ClipX = 0;
						m_pGameGroup->m_ClipY = 0;
						m_pGameGroup->m_ClipW = 0;
						m_pGameGroup->m_ClipH = 0;
					}

					//break;
				}
				else if(pTilemap->m_Flags&2)
				{
					if(pTilemap->m_Version < 3) // get the right values for tele layer
					{
						int *pTele = (int*)(pTilemap)+15;
						pTilemap->m_Tele = *pTele;
					}
					m_pTeleLayer = pTilemap;
				}
				else if(pTilemap->m_Flags&4)
				{
					if(pTilemap->m_Version < 3) // get the right values for speedup layer
					{
						int *pSpeedup = (int*)(pTilemap)+16;
						pTilemap->m_Speedup = *pSpeedup;
					}
					m_pSpeedupLayer = pTilemap;
				}
				if(pTilemap->m_Flags&8)
				{
					if(pTilemap->m_Version < 3) // get the right values for front layer
					{
						pTilemap->m_Front = *((int*)(pTilemap)+17);
					}
					m_pFrontLayer = pTilemap;
				}
			}
		}
	}
}
예제 #2
0
 GroupInfo RegexPattern::GetGroup(int groupId) const
 {
     Assert(groupId == 0 || WasLastMatchSuccessful());
     Assert(groupId >= 0 && groupId < NumGroups());
     return rep.unified.matcher->GetGroup(groupId);
 }
inline std::size_t Groups::NumGroups(HexColor color) const
{
    return NumGroups(HexColorSetUtil::Only(color));
}