Esempio n. 1
0
void Engine::Render(const std::vector<uint>& list) {
    CDEBUG("render");
    const Point res = video->GetResolution();

    if (!_isMapLoaded) {
        return;
    }

    tiles->UpdateAnimation(GetTime());

    if (cameraTarget) {
        const Map::Layer* layer = map.GetLayer(cameraTarget->layerIndex);

        SetCamera(Point(
            cameraTarget->x + cameraTarget->sprite->nHotw / 2 - res.x / 2 + layer->x,
            cameraTarget->y + cameraTarget->sprite->nHoth / 2 - res.y / 2 + layer->y));
    }

    // Note that we do not clear the screen here.  This is intentional.

    for (uint i = 0; i < list.size(); i++) {
        uint j = list[i];
        if (j < map.NumLayers()) {
            RenderLayer(j);
            RenderEntities(j);
        }
    }

    DoHook(_hookRetrace);
}
Esempio n. 2
0
void MAP::render(int x, int y, image *dest)
{
	bool first = true;
	int tx = (dest -> width / 16) + 2;
	int ty = (dest -> height / 16) + 2;
	char *src = renderstring;
	char token[10];

	while (*src)
	{
		int n=0;
		while (*src != 0 && *src !=',')
			token[n++] = *src++;
		if (*src == ',') src++;
		token[n] = 0;

		if (token[0] == 'E')
		{
			RenderEntities();
			continue;
		}
		if (token[0] == 'R')
		{
			HookRetrace();
			continue;
		}
		int layer = atoi(token)-1;
		if (first)
		{
			BlitLayer<false>(layer, tx, ty, x, y, dest);
			first = false;
			continue;
		}
		BlitLayer<true>(layer, tx, ty, x, y, dest);
	}
}