From 0012e72d34a441dd9b73ec15b3a0eb3ae93aad4c Mon Sep 17 00:00:00 2001 From: Jupeyy Date: Sun, 11 Apr 2021 14:34:08 +0200 Subject: [PATCH] Add console chain for assets, reload current asset on reload button click --- src/game/client/components/menus.cpp | 5 ++ src/game/client/components/menus.h | 5 ++ .../components/menus_settings_assets.cpp | 72 +++++++++++++++++++ 3 files changed, 82 insertions(+) diff --git a/src/game/client/components/menus.cpp b/src/game/client/components/menus.cpp index 46702fca9..78f7728f0 100644 --- a/src/game/client/components/menus.cpp +++ b/src/game/client/components/menus.cpp @@ -1424,6 +1424,11 @@ void CMenus::OnInit() Console()->Chain("add_friend", ConchainFriendlistUpdate, this); Console()->Chain("remove_friend", ConchainFriendlistUpdate, this); + Console()->Chain("cl_assets_entities", ConchainAssetsEntities, this); + Console()->Chain("cl_asset_game", ConchainAssetGame, this); + Console()->Chain("cl_asset_emoticons", ConchainAssetEmoticons, this); + Console()->Chain("cl_asset_particles", ConchainAssetParticles, this); + m_TextureBlob = Graphics()->LoadTexture("blob.png", IStorage::TYPE_ALL, CImageInfo::FORMAT_AUTO, 0); // setup load amount diff --git a/src/game/client/components/menus.h b/src/game/client/components/menus.h index 638e53044..e631caced 100644 --- a/src/game/client/components/menus.h +++ b/src/game/client/components/menus.h @@ -270,6 +270,11 @@ protected: static int EmoticonsScan(const char *pName, int IsDir, int DirType, void *pUser); static int ParticlesScan(const char *pName, int IsDir, int DirType, void *pUser); + static void ConchainAssetsEntities(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData); + static void ConchainAssetGame(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData); + static void ConchainAssetParticles(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData); + static void ConchainAssetEmoticons(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData); + void ClearCustomItems(int CurTab); int m_MenuPage; diff --git a/src/game/client/components/menus_settings_assets.cpp b/src/game/client/components/menus_settings_assets.cpp index e3d608ff7..a5cff34d9 100644 --- a/src/game/client/components/menus_settings_assets.cpp +++ b/src/game/client/components/menus_settings_assets.cpp @@ -249,18 +249,30 @@ void CMenus::ClearCustomItems(int CurTab) } } m_EntitiesList.clear(); + + // reload current entities + m_pClient->m_pMapimages->ChangeEntitiesPath(g_Config.m_ClAssetsEntites); } else if(CurTab == 1) { ClearAssetList(m_GameList, Graphics()); + + // reload current game skin + GameClient()->LoadGameSkin(g_Config.m_ClAssetGame); } else if(CurTab == 2) { ClearAssetList(m_EmoticonList, Graphics()); + + // reload current emoticons skin + GameClient()->LoadEmoticonsSkin(g_Config.m_ClAssetEmoticons); } else if(CurTab == 3) { ClearAssetList(m_ParticlesList, Graphics()); + + // reload current particles skin + GameClient()->LoadParticlesSkin(g_Config.m_ClAssetParticles); } s_InitCustomList[CurTab] = true; } @@ -548,3 +560,63 @@ void CMenus::RenderSettingsCustom(CUIRect MainView) TextRender()->SetRenderFlags(0); TextRender()->SetCurFont(NULL); } + +void CMenus::ConchainAssetsEntities(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData) +{ + CMenus *pThis = (CMenus *)pUserData; + if(pResult->NumArguments() == 1) + { + const char *pArg = pResult->GetString(0); + if(str_comp(pArg, g_Config.m_ClAssetsEntites) != 0) + { + pThis->m_pClient->m_pMapimages->ChangeEntitiesPath(pArg); + } + } + + pfnCallback(pResult, pCallbackUserData); +} + +void CMenus::ConchainAssetGame(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData) +{ + CMenus *pThis = (CMenus *)pUserData; + if(pResult->NumArguments() == 1) + { + const char *pArg = pResult->GetString(0); + if(str_comp(pArg, g_Config.m_ClAssetGame) != 0) + { + pThis->GameClient()->LoadGameSkin(pArg); + } + } + + pfnCallback(pResult, pCallbackUserData); +} + +void CMenus::ConchainAssetParticles(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData) +{ + CMenus *pThis = (CMenus *)pUserData; + if(pResult->NumArguments() == 1) + { + const char *pArg = pResult->GetString(0); + if(str_comp(pArg, g_Config.m_ClAssetParticles) != 0) + { + pThis->GameClient()->LoadParticlesSkin(pArg); + } + } + + pfnCallback(pResult, pCallbackUserData); +} + +void CMenus::ConchainAssetEmoticons(IConsole::IResult *pResult, void *pUserData, IConsole::FCommandCallback pfnCallback, void *pCallbackUserData) +{ + CMenus *pThis = (CMenus *)pUserData; + if(pResult->NumArguments() == 1) + { + const char *pArg = pResult->GetString(0); + if(str_comp(pArg, g_Config.m_ClAssetEmoticons) != 0) + { + pThis->GameClient()->LoadEmoticonsSkin(pArg); + } + } + + pfnCallback(pResult, pCallbackUserData); +}