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;
    }
}
Exemplo n.º 2
0
void LevelLoader::CreateLevel(const std::string& filepath, jvis::InstancedSpriteSet* instance, bool active)
{
    _spriteSet = instance;
    ReadDefinitions(filepath);
    ReadLevel(filepath);
    BuildLevel(instance, active);
}
Exemplo n.º 3
0
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);
}
Exemplo n.º 4
0
//	×é×°ÑÚÂë
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" );
            }
        }
    }
}