| 411 | } |
| 412 | |
| 413 | void CSkins::LoadSkinFinish(CSkinContainer *pSkinContainer, const CSkinLoadData &Data) |
| 414 | { |
| 415 | CSkin Skin{pSkinContainer->Name()}; |
| 416 | |
| 417 | Skin.m_OriginalSkin.m_Body = Graphics()->LoadSpriteTexture(Data.m_Info, &g_pData->m_aSprites[SPRITE_TEE_BODY]); |
| 418 | Skin.m_OriginalSkin.m_BodyOutline = Graphics()->LoadSpriteTexture(Data.m_Info, &g_pData->m_aSprites[SPRITE_TEE_BODY_OUTLINE]); |
| 419 | Skin.m_OriginalSkin.m_Feet = Graphics()->LoadSpriteTexture(Data.m_Info, &g_pData->m_aSprites[SPRITE_TEE_FOOT]); |
| 420 | Skin.m_OriginalSkin.m_FeetOutline = Graphics()->LoadSpriteTexture(Data.m_Info, &g_pData->m_aSprites[SPRITE_TEE_FOOT_OUTLINE]); |
| 421 | Skin.m_OriginalSkin.m_Hands = Graphics()->LoadSpriteTexture(Data.m_Info, &g_pData->m_aSprites[SPRITE_TEE_HAND]); |
| 422 | Skin.m_OriginalSkin.m_HandsOutline = Graphics()->LoadSpriteTexture(Data.m_Info, &g_pData->m_aSprites[SPRITE_TEE_HAND_OUTLINE]); |
| 423 | for(size_t i = 0; i < std::size(Skin.m_OriginalSkin.m_aEyes); ++i) |
| 424 | { |
| 425 | Skin.m_OriginalSkin.m_aEyes[i] = Graphics()->LoadSpriteTexture(Data.m_Info, &g_pData->m_aSprites[SPRITE_TEE_EYE_NORMAL + i]); |
| 426 | } |
| 427 | |
| 428 | Skin.m_ColorableSkin.m_Body = Graphics()->LoadSpriteTexture(Data.m_InfoGrayscale, &g_pData->m_aSprites[SPRITE_TEE_BODY]); |
| 429 | Skin.m_ColorableSkin.m_BodyOutline = Graphics()->LoadSpriteTexture(Data.m_InfoGrayscale, &g_pData->m_aSprites[SPRITE_TEE_BODY_OUTLINE]); |
| 430 | Skin.m_ColorableSkin.m_Feet = Graphics()->LoadSpriteTexture(Data.m_InfoGrayscale, &g_pData->m_aSprites[SPRITE_TEE_FOOT]); |
| 431 | Skin.m_ColorableSkin.m_FeetOutline = Graphics()->LoadSpriteTexture(Data.m_InfoGrayscale, &g_pData->m_aSprites[SPRITE_TEE_FOOT_OUTLINE]); |
| 432 | Skin.m_ColorableSkin.m_Hands = Graphics()->LoadSpriteTexture(Data.m_InfoGrayscale, &g_pData->m_aSprites[SPRITE_TEE_HAND]); |
| 433 | Skin.m_ColorableSkin.m_HandsOutline = Graphics()->LoadSpriteTexture(Data.m_InfoGrayscale, &g_pData->m_aSprites[SPRITE_TEE_HAND_OUTLINE]); |
| 434 | for(size_t i = 0; i < std::size(Skin.m_ColorableSkin.m_aEyes); ++i) |
| 435 | { |
| 436 | Skin.m_ColorableSkin.m_aEyes[i] = Graphics()->LoadSpriteTexture(Data.m_InfoGrayscale, &g_pData->m_aSprites[SPRITE_TEE_EYE_NORMAL + i]); |
| 437 | } |
| 438 | |
| 439 | Skin.m_Metrics = Data.m_Metrics; |
| 440 | Skin.m_BloodColor = Data.m_BloodColor; |
| 441 | |
| 442 | if(g_Config.m_Debug) |
| 443 | { |
| 444 | log_trace("skins", "Loaded skin '%s'", Skin.GetName()); |
| 445 | } |
| 446 | |
| 447 | auto SkinIt = m_Skins.find(pSkinContainer->Name()); |
| 448 | dbg_assert(SkinIt != m_Skins.end(), "LoadSkinFinish on skin '%s' which is not in m_Skins", pSkinContainer->Name()); |
| 449 | SkinIt->second->m_pSkin = std::make_unique<CSkin>(std::move(Skin)); |
| 450 | pSkinContainer->SetState(CSkinContainer::EState::LOADED); |
| 451 | } |
| 452 | |
| 453 | void CSkins::LoadSkinDirect(const char *pName) |
| 454 | { |