mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-11 10:38:20 +00:00
53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
|
|
/* If you are missing that file, acquire a complete release at teeworlds.com. */
|
|
#include <engine/graphics.h>
|
|
#include <engine/map.h>
|
|
#include <engine/storage.h>
|
|
#include <game/client/component.h>
|
|
#include <game/mapitems.h>
|
|
|
|
#include "mapimages.h"
|
|
|
|
CMapImages::CMapImages()
|
|
{
|
|
m_Count = 0;
|
|
}
|
|
|
|
void CMapImages::OnMapLoad()
|
|
{
|
|
IMap *pMap = Kernel()->RequestInterface<IMap>();
|
|
|
|
// unload all textures
|
|
for(int i = 0; i < m_Count; i++)
|
|
{
|
|
Graphics()->UnloadTexture(m_aTextures[i]);
|
|
m_aTextures[i] = -1;
|
|
}
|
|
m_Count = 0;
|
|
|
|
int Start;
|
|
pMap->GetType(MAPITEMTYPE_IMAGE, &Start, &m_Count);
|
|
|
|
// load new textures
|
|
for(int i = 0; i < m_Count; i++)
|
|
{
|
|
m_aTextures[i] = 0;
|
|
|
|
CMapItemImage *pImg = (CMapItemImage *)pMap->GetItem(Start+i, 0, 0);
|
|
if(pImg->m_External)
|
|
{
|
|
char Buf[256];
|
|
char *pName = (char *)pMap->GetData(pImg->m_ImageName);
|
|
str_format(Buf, sizeof(Buf), "mapres/%s.png", pName);
|
|
m_aTextures[i] = Graphics()->LoadTexture(Buf, IStorage::TYPE_ALL, CImageInfo::FORMAT_AUTO, 0);
|
|
}
|
|
else
|
|
{
|
|
void *pData = pMap->GetData(pImg->m_ImageData);
|
|
m_aTextures[i] = Graphics()->LoadTextureRaw(pImg->m_Width, pImg->m_Height, CImageInfo::FORMAT_RGBA, pData, CImageInfo::FORMAT_RGBA, 0);
|
|
pMap->UnloadData(pImg->m_ImageData);
|
|
}
|
|
}
|
|
}
|
|
|