static void BuildLevel( TreeDiagram_Vector& vec, CLR_RT_EventCache::LookupEntry* node, int& depthTot, int depth, TreeDiagram*& tdThis ) { if(node) { TreeDiagram tdLocal; TreeDiagram* tdChild; int depthLeft = 0; int depthRight = 0; tdLocal.node = node; tdLocal.depth = depth; if(node->m_left ) depthLeft = ++depthTot; if(node->m_right) depthRight = ++depthTot; //--// BuildLevel( vec, (CLR_RT_EventCache::LookupEntry*)node->m_left, depthTot, depthLeft, tdChild ); if(tdChild) { tdLocal.leftChild = tdChild->center; tdLocal.depthOfLeftChildren = max(tdChild->depthOfLeftChildren,tdChild->depthOfRightChildren) + 1; } tdLocal.center = vec.size(); vec.push_back( TreeDiagram() ); BuildLevel( vec, (CLR_RT_EventCache::LookupEntry*)node->m_right, depthTot, depthRight, tdChild ); if(tdChild) { tdLocal.rightChild = tdChild->center; tdLocal.depthOfRightChildren = max(tdChild->depthOfLeftChildren,tdChild->depthOfRightChildren) + 1; } //--// if(tdLocal.leftChild != -1) vec[ tdLocal.leftChild ].parent = tdLocal.center; if(tdLocal.rightChild != -1) vec[ tdLocal.rightChild ].parent = tdLocal.center; //--// TreeDiagram& tdNew = vec[ tdLocal.center ]; tdNew = tdLocal; tdThis = &tdNew; } else { tdThis = NULL; } }
void LevelLoader::CreateLevel(const std::string& filepath, jvis::InstancedSpriteSet* instance, bool active) { _spriteSet = instance; ReadDefinitions(filepath); ReadLevel(filepath); BuildLevel(instance, active); }
GameApp::GameApp() { Init(); keys = SDL_GetKeyboardState(NULL); done = false; lastFrameTicks = 0.0f; timeLeftOver = 0.0f; state = STATE_GAME; dead = false; fontText = loadTexture("pixel_font.png"); spriteSheet = loadTexture("sprites.png"); music = Mix_LoadMUS("music.ogg"); Mix_PlayMusic(music, -1); jumpSound = Mix_LoadWAV("jump.wav"); starSound = Mix_LoadWAV("star.wav"); gravityX = 0.0f; gravityY = -1.0f; starsCollected = 0; BuildLevel(); //Build player player.sprite = SheetSprite(spriteSheet, 159, SPRITE_COUNT_X, SPRITE_COUNT_Y); player.isStatic = false; player.enableGravity = true; entities.push_back(&player); }
// ×é×°ÑÚÂë int MMaskCom::BuildData(unsigned char *buf, unsigned int *count) { unsigned int i; unsigned int err = 0; *count = 0; FillHead(); memmove(buf, m_head, sizeof(m_head)); buf += sizeof(m_head); for(i = 0; i < BLOCK_LEVELS; ++i){ err = BuildLevel(i, buf); buf += err; } *count = err+sizeof(m_head); return 0; }
void CLR_RT_EventCache::VirtualMethodTable::DumpTree() { TreeDiagram_Vector vec; TreeDiagram* tdChild; size_t tot; size_t col; int row; int depth = 0; BuildLevel( vec, (LookupEntry*)m_tree.m_root, depth, 0, tdChild ); tot = vec.size(); if(tot) { std::string nameCLS; std::string nameMD; printf( "Tree:\n\n" ); for(row=0; row<=depth; row++) { TreeDiagram tdActive; for(int j=0; j<4; j++) { for(col=0; col<tot; col++) { TreeDiagram& td = vec[ col ]; LPCSTR sz = " "; if(td.depth == row) { switch(j) { case 0: tdActive = td; sz = "*"; { LookupEntry* other; int res; other = (LookupEntry*)td.node->m_left; if(other) { res = td.node->m_payload.Compare( other->m_payload ); if(res != 1) sz = "#"; } other = (LookupEntry*)td.node->m_right; if(other) { res = td.node->m_payload.Compare( other->m_payload ); if(res != -1) sz = "#"; } } break; case 1: if(td.HasChildren()) sz = "|"; break; case 2: if(td.HasChildren()) sz = "+"; break; } } else if(td.parent != -1 && vec[ td.parent ].depth == row) { switch(j) { case 2: sz = td.parent < col ? "\\" : "/"; break; case 3: sz = "|"; break; } } else if(tdActive.DrawHorizontalBar( col )) { switch(j) { case 2: sz = "-"; break; } } else if(td.parent != -1 && vec[ td.parent ].depth < row && row < td.depth) { sz = "|"; } printf( sz ); } if(j == 0 && tdActive.node) { Payload& pl = tdActive.node->m_payload; CLR_RT_StringMap map; printf( " %08x %4d %4d [%08x %08x] ", (size_t)tdActive.node, tdActive.depthOfLeftChildren, tdActive.depthOfRightChildren, pl.m_mdVirtual.m_data, pl.m_cls.m_data ); CLR_RT_TypeDef_Instance instCLS; instCLS.InitializeFromIndex( pl.m_cls ); CLR_RT_MethodDef_Instance instMD ; instMD .InitializeFromIndex( pl.m_mdVirtual ); if(instCLS.InitializeFromIndex( pl.m_cls ) && instMD .InitializeFromIndex( pl.m_mdVirtual ) ) { instCLS.m_assm->BuildClassName ( instCLS.m_target, nameCLS, false ); instMD .m_assm->BuildMethodName( instMD .m_target, nameMD , map ); printf( " {%4d %s %s}", instMD.Hits(), nameCLS.c_str(), nameMD.c_str() ); } } printf( "\n" ); } } } }