Ejemplo n.º 1
0
CzActor* CzApp::FindTappedActor(int x, int y)
{
	CzActor* hit_actor = NULL;
	CzScene* hit = NULL;
	for (_Iterator it = Scenes.begin(); it != Scenes.end(); ++it)
	{
		if ((CurrentScene == *it || (*it)->getAllowFocus()) && (*it)->isActive())
		{
			if (hit == NULL || (hit->getLayer() <= (*it)->getLayer()))
			{
				if (!(*it)->isDragging())
				{
					CzActor* tapped_actor = (*it)->FindTappedActor(x, y);
					CzScene* new_hit = *it;
					if (tapped_actor != NULL)
					{
						hit_actor = tapped_actor;
						hit = *it;
					}
				}
			}
		}
	}

	return hit_actor;
}
Ejemplo n.º 2
0
void CzApp::Draw()
{
	PLATFORM_RENDER->Begin();
#if defined(CZ_ENABLE_METRICS)
	CzMetrics::TotalSpritesProcessed = 0;
	CzMetrics::TotalActorsProcessed = 0;
#endif

	// Calculate max layers, also draw any scenes that have negative layers
	int max_layers = 0;
	for (_Iterator it = Scenes.begin(); it != Scenes.end(); ++it)
	{
		CzScene* s = *it;
		if (!s->isDestroyed())
		{
			int layer = s->getLayer();
			if (layer < 0)
				s->Draw();
			else
			if (layer < CZ_MAX_SCENE_LAYERS && layer > max_layers)
				max_layers = layer;
		}
	}

	// Draw all scenes in layer order
	int num_scenes = Scenes.size();
	for (int t = 0; t <= max_layers; t++)
	{
		for (_Iterator it = Scenes.begin(); it != Scenes.end(); ++it)
		{
			CzScene* s = *it;
			if (!s->isDestroyed())
			{
				if (s->getLayer() == t)
					s->Draw();
			}
		}
	}
	// Draw any scenes that have layers that are out of range last
	for (_Iterator it = Scenes.begin(); it != Scenes.end(); ++it)
	{
		CzScene* s = *it;
		if (!s->isDestroyed())
		{
			int layer = s->getLayer();
			if (layer >= CZ_MAX_SCENE_LAYERS)
				s->Draw();
		}
	}

	// Take care of any post draw rendering
	PostDraw();

#if defined(CZ_ENABLE_METRICS)
	CzDebug::Log(CZ_DEBUG_CHANNEL_INFO, "TotalSpritesProcessed - ", CzString(CzMetrics::TotalSpritesProcessed).c_str());
	CzDebug::Log(CZ_DEBUG_CHANNEL_INFO, "TotalSpritesCreated - ", CzString(CzMetrics::TotalSpritesCreated).c_str());
	CzDebug::Log(CZ_DEBUG_CHANNEL_INFO, "TotalSpritesDestroyed - ", CzString(CzMetrics::TotalSpritesDestroyed).c_str());
#endif
	PLATFORM_RENDER->End();

	// Swap display buffers
	PLATFORM_DISPLAY->Swap();

	// Clear the screen
	PLATFORM_DISPLAY->Clear();

	// Yield to the operating system
	PLATFORM_SYS->YieldToOS(0);
}