Skip to content

Commit d6c5a34

Browse files
committed
Activate conchains on profile load by using console
1 parent 499e1e4 commit d6c5a34

File tree

3 files changed

+62
-65
lines changed

3 files changed

+62
-65
lines changed

src/game/client/components/tclient/menus_tclient.cpp

Lines changed: 22 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,13 +2205,6 @@ void CMenus::RenderSettingsTClientProfiles(CUIRect MainView)
22052205
ColorRGBA Color(1.0f, 1.0f, 1.0f, 1.0f);
22062206
GameClient()->m_CountryFlags.Render(m_Dummy ? g_Config.m_ClDummyCountry : g_Config.m_PlayerCountry, Color, FlagRect.x, FlagRect.y, FlagRect.w, FlagRect.h);
22072207

2208-
bool DoSkin = g_Config.m_ClProfileSkin;
2209-
bool DoColors = g_Config.m_ClProfileColors;
2210-
bool DoEmote = g_Config.m_ClProfileEmote;
2211-
bool DoName = g_Config.m_ClProfileName;
2212-
bool DoClan = g_Config.m_ClProfileClan;
2213-
bool DoFlag = g_Config.m_ClProfileFlag;
2214-
22152208
// After load
22162209
if(s_SelectedProfile != -1 && s_SelectedProfile < (int)GameClient()->m_SkinProfiles.m_Profiles.size())
22172210
{
@@ -2224,14 +2217,14 @@ void CMenus::RenderSettingsTClientProfiles(CUIRect MainView)
22242217
MainView.HSplitTop(50.0f, &Label, &MainView);
22252218
Label.VSplitLeft(250.0f, &Label, nullptr);
22262219

2227-
if(DoSkin && strlen(LoadProfile.m_SkinName) != 0)
2220+
if(g_Config.m_ClProfileSkin && strlen(LoadProfile.m_SkinName) != 0)
22282221
{
22292222
const CSkin *pLoadSkin = GameClient()->m_Skins.Find(LoadProfile.m_SkinName);
22302223
OwnSkinInfo.m_OriginalRenderSkin = pLoadSkin->m_OriginalSkin;
22312224
OwnSkinInfo.m_ColorableRenderSkin = pLoadSkin->m_ColorableSkin;
22322225
OwnSkinInfo.m_SkinMetrics = pLoadSkin->m_Metrics;
22332226
}
2234-
if(*pUseCustomColor && DoColors && LoadProfile.m_BodyColor != -1 && LoadProfile.m_FeetColor != -1)
2227+
if(*pUseCustomColor && g_Config.m_ClProfileColors && LoadProfile.m_BodyColor != -1 && LoadProfile.m_FeetColor != -1)
22352228
{
22362229
OwnSkinInfo.m_ColorBody = color_cast<ColorRGBA>(ColorHSLA(LoadProfile.m_BodyColor).UnclampLighting(ColorHSLA::DARKEST_LGT));
22372230
OwnSkinInfo.m_ColorFeet = color_cast<ColorRGBA>(ColorHSLA(LoadProfile.m_FeetColor).UnclampLighting(ColorHSLA::DARKEST_LGT));
@@ -2240,13 +2233,13 @@ void CMenus::RenderSettingsTClientProfiles(CUIRect MainView)
22402233
CRenderTools::GetRenderTeeOffsetToRenderedTee(pIdleState, &OwnSkinInfo, OffsetToMid);
22412234
TeeRenderPos = vec2(Label.x + LineSize, Label.y + Label.h / 2.0f + OffsetToMid.y);
22422235
int LoadEmote = Emote;
2243-
if(DoEmote && LoadProfile.m_Emote != -1)
2236+
if(g_Config.m_ClProfileEmote && LoadProfile.m_Emote != -1)
22442237
LoadEmote = LoadProfile.m_Emote;
22452238
RenderTools()->RenderTee(pIdleState, &OwnSkinInfo, LoadEmote, vec2(1.0f, 0.0f), TeeRenderPos);
22462239

2247-
if(DoName && strlen(LoadProfile.m_Name) != 0)
2240+
if(g_Config.m_ClProfileName && strlen(LoadProfile.m_Name) != 0)
22482241
str_format(aName, sizeof(aName), "%s", LoadProfile.m_Name);
2249-
if(DoClan && (strlen(LoadProfile.m_Clan) != 0 || g_Config.m_ClProfileOverwriteClanWithEmpty))
2242+
if(g_Config.m_ClProfileClan && (strlen(LoadProfile.m_Clan) != 0 || g_Config.m_ClProfileOverwriteClanWithEmpty))
22502243
str_format(aClan, sizeof(aClan), "%s", LoadProfile.m_Clan);
22512244

22522245
Label.VSplitLeft(90.0f, &FlagRect, &Label);
@@ -2260,14 +2253,14 @@ void CMenus::RenderSettingsTClientProfiles(CUIRect MainView)
22602253
Ui()->DoLabel(&Section, aTempBuf, FontSize, TEXTALIGN_ML);
22612254

22622255
Label.HSplitTop(LineSize, &Section, &Label);
2263-
str_format(aTempBuf, sizeof(aTempBuf), TCLocalize("Skin: %s"), (DoSkin && strlen(LoadProfile.m_SkinName) != 0) ? LoadProfile.m_SkinName : pSkinName);
2256+
str_format(aTempBuf, sizeof(aTempBuf), TCLocalize("Skin: %s"), (g_Config.m_ClProfileSkin && strlen(LoadProfile.m_SkinName) != 0) ? LoadProfile.m_SkinName : pSkinName);
22642257
Ui()->DoLabel(&Section, aTempBuf, FontSize, TEXTALIGN_ML);
22652258

22662259
FlagRect.VSplitRight(50.0f, nullptr, &FlagRect);
22672260
FlagRect.HSplitBottom(25.0f, nullptr, &FlagRect);
22682261
FlagRect.y -= 10.0f;
22692262
int RenderFlag = m_Dummy ? g_Config.m_ClDummyCountry : g_Config.m_PlayerCountry;
2270-
if(DoFlag && LoadProfile.m_CountryFlag != -2)
2263+
if(g_Config.m_ClProfileFlag && LoadProfile.m_CountryFlag != -2)
22712264
RenderFlag = LoadProfile.m_CountryFlag;
22722265
GameClient()->m_CountryFlags.Render(RenderFlag, Color, FlagRect.x, FlagRect.y, FlagRect.w, FlagRect.h);
22732266

@@ -2320,44 +2313,8 @@ void CMenus::RenderSettingsTClientProfiles(CUIRect MainView)
23202313
if(s_SelectedProfile != -1 && s_SelectedProfile < (int)GameClient()->m_SkinProfiles.m_Profiles.size())
23212314
{
23222315
CProfile LoadProfile = GameClient()->m_SkinProfiles.m_Profiles[s_SelectedProfile];
2323-
if(!m_Dummy)
2324-
{
2325-
if(DoSkin && strlen(LoadProfile.m_SkinName) != 0)
2326-
str_copy(g_Config.m_ClPlayerSkin, LoadProfile.m_SkinName, sizeof(g_Config.m_ClPlayerSkin));
2327-
if(DoColors && LoadProfile.m_BodyColor != -1 && LoadProfile.m_FeetColor != -1)
2328-
{
2329-
g_Config.m_ClPlayerColorBody = LoadProfile.m_BodyColor;
2330-
g_Config.m_ClPlayerColorFeet = LoadProfile.m_FeetColor;
2331-
}
2332-
if(DoEmote && LoadProfile.m_Emote != -1)
2333-
g_Config.m_ClPlayerDefaultEyes = LoadProfile.m_Emote;
2334-
if(DoName && strlen(LoadProfile.m_Name) != 0)
2335-
str_copy(g_Config.m_PlayerName, LoadProfile.m_Name, sizeof(g_Config.m_PlayerName));
2336-
if(DoClan && (strlen(LoadProfile.m_Clan) != 0 || g_Config.m_ClProfileOverwriteClanWithEmpty))
2337-
str_copy(g_Config.m_PlayerClan, LoadProfile.m_Clan, sizeof(g_Config.m_PlayerClan));
2338-
if(DoFlag && LoadProfile.m_CountryFlag != -2)
2339-
g_Config.m_PlayerCountry = LoadProfile.m_CountryFlag;
2340-
}
2341-
else
2342-
{
2343-
if(DoSkin && strlen(LoadProfile.m_SkinName) != 0)
2344-
str_copy(g_Config.m_ClDummySkin, LoadProfile.m_SkinName, sizeof(g_Config.m_ClDummySkin));
2345-
if(DoColors && LoadProfile.m_BodyColor != -1 && LoadProfile.m_FeetColor != -1)
2346-
{
2347-
g_Config.m_ClDummyColorBody = LoadProfile.m_BodyColor;
2348-
g_Config.m_ClDummyColorFeet = LoadProfile.m_FeetColor;
2349-
}
2350-
if(DoEmote && LoadProfile.m_Emote != -1)
2351-
g_Config.m_ClDummyDefaultEyes = LoadProfile.m_Emote;
2352-
if(DoName && strlen(LoadProfile.m_Name) != 0)
2353-
str_copy(g_Config.m_ClDummyName, LoadProfile.m_Name, sizeof(g_Config.m_ClDummyName));
2354-
if(DoClan && (strlen(LoadProfile.m_Clan) != 0 || g_Config.m_ClProfileOverwriteClanWithEmpty))
2355-
str_copy(g_Config.m_ClDummyClan, LoadProfile.m_Clan, sizeof(g_Config.m_ClDummyClan));
2356-
if(DoFlag && LoadProfile.m_CountryFlag != -2)
2357-
g_Config.m_ClDummyCountry = LoadProfile.m_CountryFlag;
2358-
}
2316+
GameClient()->m_SkinProfiles.ApplyProfile(m_Dummy, LoadProfile);
23592317
}
2360-
SetNeedSendInfo();
23612318
}
23622319
LabelRight.HSplitTop(5.0f, nullptr, &LabelRight);
23632320

@@ -2366,13 +2323,13 @@ void CMenus::RenderSettingsTClientProfiles(CUIRect MainView)
23662323
if(DoButton_Menu(&s_SaveButton, TCLocalize("Save"), 0, &Button))
23672324
{
23682325
GameClient()->m_SkinProfiles.AddProfile(
2369-
DoColors ? *pColorBody : -1,
2370-
DoColors ? *pColorFeet : -1,
2371-
DoFlag ? CurrentFlag : -2,
2372-
DoEmote ? Emote : -1,
2373-
DoSkin ? pSkinName : "",
2374-
DoName ? aName : "",
2375-
DoClan ? aClan : "");
2326+
g_Config.m_ClProfileColors ? *pColorBody : -1,
2327+
g_Config.m_ClProfileColors ? *pColorFeet : -1,
2328+
g_Config.m_ClProfileFlag ? CurrentFlag : -2,
2329+
g_Config.m_ClProfileEmote ? Emote : -1,
2330+
g_Config.m_ClProfileSkin ? pSkinName : "",
2331+
g_Config.m_ClProfileName ? aName : "",
2332+
g_Config.m_ClProfileClan ? aClan : "");
23762333
}
23772334
LabelRight.HSplitTop(5.0f, nullptr, &LabelRight);
23782335

@@ -2396,13 +2353,13 @@ void CMenus::RenderSettingsTClientProfiles(CUIRect MainView)
23962353
if(s_SelectedProfile != -1 && s_SelectedProfile < (int)GameClient()->m_SkinProfiles.m_Profiles.size())
23972354
{
23982355
GameClient()->m_SkinProfiles.m_Profiles[s_SelectedProfile] = CProfile(
2399-
DoColors ? *pColorBody : -1,
2400-
DoColors ? *pColorFeet : -1,
2401-
DoFlag ? CurrentFlag : -2,
2402-
DoEmote ? Emote : -1,
2403-
DoSkin ? pSkinName : "",
2404-
DoName ? aName : "",
2405-
DoClan ? aClan : "");
2356+
g_Config.m_ClProfileColors ? *pColorBody : -1,
2357+
g_Config.m_ClProfileColors ? *pColorFeet : -1,
2358+
g_Config.m_ClProfileFlag ? CurrentFlag : -2,
2359+
g_Config.m_ClProfileEmote ? Emote : -1,
2360+
g_Config.m_ClProfileSkin ? pSkinName : "",
2361+
g_Config.m_ClProfileName ? aName : "",
2362+
g_Config.m_ClProfileClan ? aClan : "");
24062363
}
24072364
}
24082365
}

src/game/client/components/tclient/skinprofiles.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,45 @@ void CSkinProfiles::AddProfile(int BodyColor, int FeetColor, int CountryFlag, in
4343
m_Profiles.push_back(Profile);
4444
}
4545

46+
void CSkinProfiles::ApplyProfile(int Dummy, const CProfile &Profile)
47+
{
48+
char aCommand[2048] = "";
49+
auto FAddPart = [&](const char *pName, const char *pValue){
50+
str_append(aCommand, Dummy ? "dummy" : "player");
51+
str_append(aCommand, "_");
52+
str_append(aCommand, pName);
53+
str_append(aCommand, " \"");
54+
char *pDst = aCommand + str_length(aCommand);
55+
str_escape(&pDst, pValue, aCommand + sizeof(aCommand) - 1); // 1 extra for end quote
56+
str_append(aCommand, "\";");
57+
};
58+
auto FAddPartNumber = [&](const char *pName, int Value){
59+
str_append(aCommand, Dummy ? "dummy" : "player");
60+
str_append(aCommand, "_");
61+
str_append(aCommand, pName);
62+
str_append(aCommand, " ");
63+
int Length = str_length(aCommand);
64+
str_format(aCommand + Length, sizeof(aCommand) - Length, "%d", Value);
65+
str_append(aCommand, ";");
66+
};
67+
if(g_Config.m_ClProfileSkin && strlen(Profile.m_SkinName) != 0)
68+
FAddPart("skin", Profile.m_SkinName);
69+
if(g_Config.m_ClProfileColors && Profile.m_BodyColor != -1 && Profile.m_FeetColor != -1)
70+
{
71+
FAddPartNumber("color_body", Profile.m_BodyColor);
72+
FAddPartNumber("color_feet", Profile.m_FeetColor);
73+
}
74+
if(g_Config.m_ClProfileEmote && Profile.m_Emote != -1)
75+
FAddPartNumber("default_eyes", Profile.m_Emote);
76+
if(g_Config.m_ClProfileName && strlen(Profile.m_Name) != 0)
77+
FAddPart("name", Profile.m_Name);
78+
if(g_Config.m_ClProfileClan && (strlen(Profile.m_Clan) != 0 || g_Config.m_ClProfileOverwriteClanWithEmpty))
79+
FAddPart("clan", Profile.m_Clan);
80+
if(g_Config.m_ClProfileFlag && Profile.m_CountryFlag != -2)
81+
FAddPartNumber("country", Profile.m_CountryFlag);
82+
Console()->ExecuteLine(aCommand);
83+
}
84+
4685
void CSkinProfiles::ConfigSaveCallback(IConfigManager *pConfigManager, void *pUserData)
4786
{
4887
CSkinProfiles *pThis = (CSkinProfiles *)pUserData;

src/game/client/components/tclient/skinprofiles.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class CSkinProfiles : public CComponent
3333
public:
3434
std::vector<CProfile> m_Profiles;
3535
void AddProfile(int BodyColor, int FeetColor, int CountryFlag, int Emote, const char *pSkinName, const char *pName, const char *pClan);
36+
void ApplyProfile(int Dummy, const CProfile &Profile);
3637

3738
virtual int Sizeof() const override { return sizeof(*this); }
3839

0 commit comments

Comments
 (0)