i have layer, such as:
MainLayer
OptionLayer
GameLayer
and so on.
my current code is
Code: Select all
Layer_ID layerID;
layerID = UTAMA;
while(true)
{
switch(layerID)
{
case UTAMA:
{
MenuUtama *layer = new MenuUtama();
layer->init(device, soundEngine);
layerID = layer->update();
delete layer;
}
break;
case BUY:
{
Buy *layer = new Buy();
layer->init(device, soundEngine, player);
layerID = layer->update();
delete layer;
}
break;
case TIME_TRIAL:
{
TimeTrial *layer = new TimeTrial();
layer->init(device, soundEngine, player);
layerID = layer->update();
delete layer;
}
break;
case GAME:
{
Game *layer = new Game(device, soundEngine, player);
layer->init();
layerID = layer->update();
delete layer;
}
break;
default:
//layerID = UTAMA;
break;
}
// Quit when layer id is QUIT
if (layerID == QUIT)
break;
}
device->drop();
on release i can run it.
each layer->update() will have an infinite loop, until the EventReceiver change the layer id.
the update for my MainLayer is like this:
Code: Select all
u32 last = device->getTimer()->getTime();
while(true)
{
device->run();
u32 now = device->getTimer()->getTime();
if(now - last >= 8)
{
driver->beginScene(true, true, BGColor);
env->drawAll();
driver->endScene();
if( input->getLayer() != layerID )
return input->getLayer();
}
}