MCPcopy Create free account
hub / github.com/ddnet/ddnet / Load

Method Load

src/game/map/map_renderer.cpp:16–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14}
15
16void CMapRenderer::Load(ERenderType Type, CLayers *pLayers, IMapImages *pMapImages, IEnvelopeEval *pEnvelopeEval, std::optional<FRenderUploadCallback> RenderCallbackOptional)
17{
18 Clear();
19
20 std::shared_ptr<CEnvelopeManager> pEnvelopeManager = std::make_shared<CEnvelopeManager>(pEnvelopeEval, pLayers->Map());
21 bool PassedGameLayer = false;
22
23 for(int GroupId = 0; GroupId < pLayers->NumGroups(); GroupId++)
24 {
25 CMapItemGroup *pGroup = pLayers->GetGroup(GroupId);
26 std::unique_ptr<CRenderLayer> pRenderLayerGroup = std::make_unique<CRenderLayerGroup>(GroupId, pGroup);
27 pRenderLayerGroup->OnInit(Graphics(), TextRender(), RenderMap(), pEnvelopeManager, pLayers->Map(), pMapImages, RenderCallbackOptional);
28 if(!pRenderLayerGroup->IsValid())
29 {
30 log_error("map_renderer", "error group was null, group number = %d, total groups = %d", GroupId, pLayers->NumGroups());
31 log_error("map_renderer", "this is here to prevent a crash but the source of this is unknown, please report this for it to get fixed");
32 log_error("map_renderer", "we need mapname and crc and the map that caused this if possible, and anymore info you think is relevant");
33 continue;
34 }
35
36 for(int LayerId = 0; LayerId < pGroup->m_NumLayers; LayerId++)
37 {
38 CMapItemLayer *pLayer = pLayers->GetLayer(pGroup->m_StartLayer + LayerId);
39 int LayerType = GetLayerType(pLayer, pLayers);
40 PassedGameLayer |= LayerType == LAYER_GAME;
41
42 if(Type == ERenderType::RENDERTYPE_BACKGROUND_FORCE || Type == ERenderType::RENDERTYPE_BACKGROUND)
43 {
44 if(PassedGameLayer)
45 return;
46 }
47 else if(Type == ERenderType::RENDERTYPE_FOREGROUND)
48 {
49 if(!PassedGameLayer)
50 continue;
51 }
52
53 if(pRenderLayerGroup)
54 m_vpRenderLayers.push_back(std::move(pRenderLayerGroup));
55
56 std::unique_ptr<CRenderLayer> pRenderLayer;
57
58 if(pLayer->m_Type == LAYERTYPE_TILES)
59 {
60 CMapItemLayerTilemap *pTileLayer = (CMapItemLayerTilemap *)pLayer;
61
62 switch(LayerType)
63 {
64 case LAYER_DEFAULT_TILESET:
65 pRenderLayer = std::make_unique<CRenderLayerTile>(
66 GroupId,
67 LayerId,
68 pLayer->m_Flags,
69 pTileLayer);
70 break;
71 case LAYER_GAME:
72 pRenderLayer = std::make_unique<CRenderLayerEntityGame>(
73 GroupId,

Callers

nothing calls this directly

Calls 10

GraphicsFunction · 0.85
TextRenderFunction · 0.85
RenderMapFunction · 0.85
NumGroupsMethod · 0.80
GetLayerMethod · 0.80
MapMethod · 0.45
GetGroupMethod · 0.45
OnInitMethod · 0.45
IsValidMethod · 0.45
InitMethod · 0.45

Tested by

no test coverage detected