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

Method LoadParticlesSkin

src/game/client/gameclient.cpp:4249–4318  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4247}
4248
4249void CGameClient::LoadParticlesSkin(const char *pPath, bool AsDir)
4250{
4251 if(m_ParticlesSkinLoaded)
4252 {
4253 Graphics()->UnloadTexture(&m_ParticlesSkin.m_SpriteParticleSlice);
4254 Graphics()->UnloadTexture(&m_ParticlesSkin.m_SpriteParticleBall);
4255 for(auto &SpriteParticleSplat : m_ParticlesSkin.m_aSpriteParticleSplat)
4256 Graphics()->UnloadTexture(&SpriteParticleSplat);
4257 Graphics()->UnloadTexture(&m_ParticlesSkin.m_SpriteParticleSmoke);
4258 Graphics()->UnloadTexture(&m_ParticlesSkin.m_SpriteParticleShell);
4259 Graphics()->UnloadTexture(&m_ParticlesSkin.m_SpriteParticleExpl);
4260 Graphics()->UnloadTexture(&m_ParticlesSkin.m_SpriteParticleAirJump);
4261 Graphics()->UnloadTexture(&m_ParticlesSkin.m_SpriteParticleHit);
4262
4263 for(auto &SpriteParticle : m_ParticlesSkin.m_aSpriteParticles)
4264 SpriteParticle = IGraphics::CTextureHandle();
4265
4266 m_ParticlesSkinLoaded = false;
4267 }
4268
4269 char aPath[IO_MAX_PATH_LENGTH];
4270 bool IsDefault = false;
4271 if(str_comp(pPath, "default") == 0)
4272 {
4273 str_copy(aPath, g_pData->m_aImages[IMAGE_PARTICLES].m_pFilename);
4274 IsDefault = true;
4275 }
4276 else
4277 {
4278 if(AsDir)
4279 str_format(aPath, sizeof(aPath), "assets/particles/%s/%s", pPath, g_pData->m_aImages[IMAGE_PARTICLES].m_pFilename);
4280 else
4281 str_format(aPath, sizeof(aPath), "assets/particles/%s.png", pPath);
4282 }
4283
4284 CImageInfo ImgInfo;
4285 bool PngLoaded = Graphics()->LoadPng(ImgInfo, aPath, IStorage::TYPE_ALL);
4286 if(!PngLoaded && !IsDefault)
4287 {
4288 if(AsDir)
4289 LoadParticlesSkin("default");
4290 else
4291 LoadParticlesSkin(pPath, true);
4292 }
4293 else if(PngLoaded && Graphics()->CheckImageDivisibility(aPath, ImgInfo, g_pData->m_aSprites[SPRITE_PART_SLICE].m_pSet->m_Gridx, g_pData->m_aSprites[SPRITE_PART_SLICE].m_pSet->m_Gridy, true) && Graphics()->IsImageFormatRgba(aPath, ImgInfo))
4294 {
4295 m_ParticlesSkin.m_SpriteParticleSlice = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_SLICE]);
4296 m_ParticlesSkin.m_SpriteParticleBall = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_BALL]);
4297 for(int i = 0; i < 3; ++i)
4298 m_ParticlesSkin.m_aSpriteParticleSplat[i] = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_SPLAT01 + i]);
4299 m_ParticlesSkin.m_SpriteParticleSmoke = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_SMOKE]);
4300 m_ParticlesSkin.m_SpriteParticleShell = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_SHELL]);
4301 m_ParticlesSkin.m_SpriteParticleExpl = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_EXPL01]);
4302 m_ParticlesSkin.m_SpriteParticleAirJump = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_AIRJUMP]);
4303 m_ParticlesSkin.m_SpriteParticleHit = Graphics()->LoadSpriteTexture(ImgInfo, &g_pData->m_aSprites[SPRITE_PART_HIT01]);
4304
4305 m_ParticlesSkin.m_aSpriteParticles[0] = m_ParticlesSkin.m_SpriteParticleSlice;
4306 m_ParticlesSkin.m_aSpriteParticles[1] = m_ParticlesSkin.m_SpriteParticleBall;

Callers 3

ClearCustomItemsMethod · 0.80
RenderSettingsCustomMethod · 0.80

Calls 11

GraphicsFunction · 0.85
CTextureHandleClass · 0.85
str_compFunction · 0.85
str_formatFunction · 0.85
UnloadTextureMethod · 0.80
IsImageFormatRgbaMethod · 0.80
LoadSpriteTextureMethod · 0.80
str_copyFunction · 0.50
LoadPngMethod · 0.45
FreeMethod · 0.45

Tested by

no test coverage detected