Esempio n. 1
0
bool WorldSceneManager::GetSceneCreateParam( int16 nSceneSID, SceneCreateArg& obj)
{
	if( nSceneSID == SCENE_ID_NULL )
		nSceneSID = 1;

	const SceneInfo* pSD = GetSceneInfo(nSceneSID);
	if(!pSD)
		return false;

	pSD->FillSceneCreateArg(obj);

	return true;

}
Esempio n. 2
0
//如果是灯组状态与场景是邦定的
int CTrafficLightImpl::GetSceneNumber(const LIGHT_TEAM_STATUS& ltsInfo, const int& iSceneCount)
{
	int iRet = -1;
	char szSceneInfo[64];
	memset(szSceneInfo, 0, 64);
	int iPos = 0;
	DWORD32 dwStatus = 0;
	for(DWORD32 i = 0; i < ltsInfo.nTeamCount; ++i)
	{
		dwStatus = ltsInfo.pdwStatus[i];
		for(int k = ltsInfo.pnLightCount[i] - 1; k >= 0 ; --k)
		{
			switch (dwStatus & 0x0F)
			{
			case TS_RED:
				szSceneInfo[iPos + k] = '1';
				break;
			case TS_YELLOW:
				szSceneInfo[iPos + k] = '2';
				break;
			case TS_GREEN:
				szSceneInfo[iPos + k] = '3';
				break;
			case TS_UNSURE:
				szSceneInfo[iPos + k] = '0';
				break;
			default:
				szSceneInfo[iPos + k] = '?';
				break;
			}
			dwStatus >>= 4;
		}
		iPos += ltsInfo.pnLightCount[i];
		if(  DWORD32(i+1) < ltsInfo.nTeamCount )
		{
			szSceneInfo[iPos++] = '_';
		}
	}

	SCENE_INFO stInfo;
	int iLen = 0;
	for( int i = 0; i < iSceneCount; ++i )
	{
		if( GetSceneInfo(i, &stInfo) )
		{
			iLen = (int)strlen(stInfo.pszInfo);
			if( strlen(szSceneInfo) != iLen ) continue;
			
			int k = 0;
			for(k = 0; k < iLen; ++k)
			{
				if( stInfo.pszInfo[k] == '?' ) continue;
				if( stInfo.pszInfo[k] == '*' &&  szSceneInfo[k] > '0' ) continue;
				if( stInfo.pszInfo[k] != szSceneInfo[k] ) break; 
			}
			if( k >= iLen ) 
			{
				iRet = i;
				break;
			}
		}
	}
	return iRet;
}
Esempio n. 3
0
WorldSceneInfo* WorldSceneManager::GetWorldSceneInfo(uint16 nSceneSID)
{
	return (WorldSceneInfo*)GetSceneInfo(nSceneSID);
}