示例#1
0
//------------------------------------------------------------------
// The masking function. It computes res = LUT(x) where 
// res = res[0], ..., res[n-1] and x = x[0], ..., x[n-1] s.t.
// res[0] ^ ... ^ res[n-1] = LUT(x[0] ^ ... ^ x[n-1])
//------------------------------------------------------------------
void mask(T x[], T* res, int n) {
    T T0[sizeof(lut) / sizeof(T)][PARTITIONS];
    T T1[sizeof(lut) / sizeof(T)][PARTITIONS];
    
    const int lut_size = sizeof(lut) / sizeof(T);
    int u, i, j;
    
    for(u = 0; u < lut_size; u++) {
        T0[u][0] = lut[u];
        for(i = 1; i < n; i++) {
            T0[u][i] = 0;
        }
    }
    
    for(i = 0; i < n - 1; i++) {
        for(u = 0; u < lut_size; u++) {
           for(j = 0; j < n; j++) {
               T1[u][j] = T0[u ^ x[i]][j];   
           }
        }
        for(u = 0; u < lut_size; u++) {
           refreshMasks(T0[u], T1[u], n);
        }
    }
    
    refreshMasks(res, T0[x[n - 1]], n);
}
void TileMapLoader::onLoadComplete(ResTask* pTask)
{
	if( pTask->result == ResResult_Ok )
	{
		refreshTiles();
		refreshMasks();
	}

	for ( size_t i = 0;i<m_vTiles.size();++i )
	{
		CC_SAFE_DELETE(m_vTiles[i]->img);
		CC_SAFE_DELETE(m_vTiles[i]);
	}
	m_vTiles.clear();
	for ( size_t i = 0;i<m_vMasks.size();++i )
	{
		CC_SAFE_DELETE(m_vMasks[i]->img);
		CC_SAFE_DELETE(m_vMasks[i]->mask_relation);
		CC_SAFE_DELETE(m_vMasks[i]);
	}
	m_vMasks.clear();

	ResBase::onLoadComplete(pTask);

	delete this;
}