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

Method LoadSkinDirect

src/game/client/components/skins.cpp:453–483  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

451}
452
453void CSkins::LoadSkinDirect(const char *pName)
454{
455 if(m_Skins.contains(pName))
456 {
457 return;
458 }
459 CSkinContainer SkinContainer(this, pName, CSkinContainer::EType::LOCAL, IStorage::TYPE_ALL);
460 auto &&pSkinContainer = std::make_unique<CSkinContainer>(std::move(SkinContainer));
461 pSkinContainer->SetState(pSkinContainer->DetermineInitialState());
462 const auto &[SkinIt, _] = m_Skins.insert({pSkinContainer->Name(), std::move(pSkinContainer)});
463
464 char aPath[IO_MAX_PATH_LENGTH];
465 str_format(aPath, sizeof(aPath), "skins/%s.png", pName);
466 CSkinLoadData DefaultSkinData;
467 SkinIt->second->SetState(CSkinContainer::EState::LOADING);
468 if(!Graphics()->LoadPng(DefaultSkinData.m_Info, aPath, SkinIt->second->StorageType()))
469 {
470 log_error("skins", "Failed to load PNG of skin '%s' from '%s'", pName, aPath);
471 SkinIt->second->SetState(CSkinContainer::EState::ERROR);
472 }
473 else if(LoadSkinData(pName, DefaultSkinData))
474 {
475 LoadSkinFinish(SkinIt->second.get(), DefaultSkinData);
476 }
477 else
478 {
479 SkinIt->second->SetState(CSkinContainer::EState::ERROR);
480 }
481 DefaultSkinData.m_Info.Free();
482 DefaultSkinData.m_InfoGrayscale.Free();
483}
484
485void CSkins::OnConsoleInit()
486{

Callers

nothing calls this directly

Calls 9

str_formatFunction · 0.85
GraphicsFunction · 0.85
DetermineInitialStateMethod · 0.80
StorageTypeMethod · 0.80
getMethod · 0.80
SetStateMethod · 0.45
NameMethod · 0.45
LoadPngMethod · 0.45
FreeMethod · 0.45

Tested by

no test coverage detected