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); }
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); } }