mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
Merge #2653
2653: Fix background map loading r=def- a=Jupeyy As reported. Tested all possible contexts, hope this is right now Co-authored-by: Jupeyy <jupjopjap@gmail.com>
This commit is contained in:
commit
efdd35439e
|
@ -50,14 +50,16 @@ void CBackground::LoadBackground()
|
||||||
m_pLayers = m_pBackgroundLayers;
|
m_pLayers = m_pBackgroundLayers;
|
||||||
m_pImages = m_pBackgroundImages;
|
m_pImages = m_pBackgroundImages;
|
||||||
|
|
||||||
|
bool NeedImageLoading = false;
|
||||||
|
|
||||||
str_copy(m_aMapName, g_Config.m_ClBackgroundEntities, sizeof(m_aMapName));
|
str_copy(m_aMapName, g_Config.m_ClBackgroundEntities, sizeof(m_aMapName));
|
||||||
char aBuf[128];
|
char aBuf[128];
|
||||||
str_format(aBuf, sizeof(aBuf), "maps/%s", g_Config.m_ClBackgroundEntities);
|
str_format(aBuf, sizeof(aBuf), "maps/%s", g_Config.m_ClBackgroundEntities);
|
||||||
if(m_pMap->Load(aBuf))
|
if(m_pMap->Load(aBuf))
|
||||||
{
|
{
|
||||||
m_pLayers->InitBackground(m_pMap);
|
m_pLayers->InitBackground(m_pMap);
|
||||||
m_pImages->LoadBackground(m_pMap);
|
|
||||||
RenderTools()->RenderTilemapGenerateSkip(m_pLayers);
|
RenderTools()->RenderTilemapGenerateSkip(m_pLayers);
|
||||||
|
NeedImageLoading = true;
|
||||||
m_Loaded = true;
|
m_Loaded = true;
|
||||||
}
|
}
|
||||||
else if(str_comp(g_Config.m_ClBackgroundEntities, CURRENT) == 0)
|
else if(str_comp(g_Config.m_ClBackgroundEntities, CURRENT) == 0)
|
||||||
|
@ -72,7 +74,11 @@ void CBackground::LoadBackground()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_Loaded)
|
if(m_Loaded)
|
||||||
|
{
|
||||||
CMapLayers::OnMapLoad();
|
CMapLayers::OnMapLoad();
|
||||||
|
if(NeedImageLoading)
|
||||||
|
m_pImages->LoadBackground(m_pLayers, m_pMap);
|
||||||
|
}
|
||||||
|
|
||||||
m_LastLoad = time_get();
|
m_LastLoad = time_get();
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,10 +29,8 @@ void CMapImages::OnInit()
|
||||||
InitOverlayTextures();
|
InitOverlayTextures();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMapImages::OnMapLoad()
|
void CMapImages::OnMapLoadImpl(class CLayers *pLayers, IMap *pMap)
|
||||||
{
|
{
|
||||||
IMap *pMap = Kernel()->RequestInterface<IMap>();
|
|
||||||
|
|
||||||
// unload all textures
|
// unload all textures
|
||||||
for(int i = 0; i < m_Count; i++)
|
for(int i = 0; i < m_Count; i++)
|
||||||
{
|
{
|
||||||
|
@ -45,7 +43,6 @@ void CMapImages::OnMapLoad()
|
||||||
int Start;
|
int Start;
|
||||||
pMap->GetType(MAPITEMTYPE_IMAGE, &Start, &m_Count);
|
pMap->GetType(MAPITEMTYPE_IMAGE, &Start, &m_Count);
|
||||||
|
|
||||||
CLayers *pLayers = m_pClient->Layers();
|
|
||||||
for(int g = 0; g < pLayers->NumGroups(); g++)
|
for(int g = 0; g < pLayers->NumGroups(); g++)
|
||||||
{
|
{
|
||||||
CMapItemGroup *pGroup = pLayers->GetGroup(g);
|
CMapItemGroup *pGroup = pLayers->GetGroup(g);
|
||||||
|
@ -99,9 +96,16 @@ void CMapImages::OnMapLoad()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMapImages::LoadBackground(class IMap *pMap)
|
void CMapImages::OnMapLoad()
|
||||||
{
|
{
|
||||||
CMapImages::OnMapLoad();
|
IMap *pMap = Kernel()->RequestInterface<IMap>();
|
||||||
|
CLayers *pLayers = m_pClient->Layers();
|
||||||
|
OnMapLoadImpl(pLayers, pMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMapImages::LoadBackground(class CLayers *pLayers, class IMap *pMap)
|
||||||
|
{
|
||||||
|
OnMapLoadImpl(pLayers, pMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
IGraphics::CTextureHandle CMapImages::GetEntities()
|
IGraphics::CTextureHandle CMapImages::GetEntities()
|
||||||
|
|
|
@ -20,9 +20,10 @@ public:
|
||||||
IGraphics::CTextureHandle Get(int Index) const { return m_aTextures[Index]; }
|
IGraphics::CTextureHandle Get(int Index) const { return m_aTextures[Index]; }
|
||||||
int Num() const { return m_Count; }
|
int Num() const { return m_Count; }
|
||||||
|
|
||||||
|
void OnMapLoadImpl(class CLayers *pLayers, class IMap *pMap);
|
||||||
virtual void OnMapLoad();
|
virtual void OnMapLoad();
|
||||||
virtual void OnInit();
|
virtual void OnInit();
|
||||||
void LoadBackground(class IMap *pMap);
|
void LoadBackground(class CLayers *pLayers, class IMap *pMap);
|
||||||
|
|
||||||
// DDRace
|
// DDRace
|
||||||
IGraphics::CTextureHandle GetEntities();
|
IGraphics::CTextureHandle GetEntities();
|
||||||
|
|
Loading…
Reference in a new issue