diff options
| author | oy <Tom_Adams@web.de> | 2010-09-24 13:21:03 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-09-24 13:21:03 +0200 |
| commit | 27425facffc62b6164d20ff2c1270f2f0d1abe23 (patch) | |
| tree | 78ca1f1a196b2cbc24325dee454b21f3e64a1861 /src/game/client/components | |
| parent | aa46c22e10f85285dae87454724d9b6ed161c9c3 (diff) | |
| download | zcatch-27425facffc62b6164d20ff2c1270f2f0d1abe23.tar.gz zcatch-27425facffc62b6164d20ff2c1270f2f0d1abe23.zip | |
fixed last commit
Diffstat (limited to 'src/game/client/components')
| -rw-r--r-- | src/game/client/components/menus_settings.cpp | 19 | ||||
| -rw-r--r-- | src/game/client/components/skins.cpp | 4 | ||||
| -rw-r--r-- | src/game/client/components/skins.h | 8 |
3 files changed, 15 insertions, 16 deletions
diff --git a/src/game/client/components/menus_settings.cpp b/src/game/client/components/menus_settings.cpp index 33a5695a..c8040bfa 100644 --- a/src/game/client/components/menus_settings.cpp +++ b/src/game/client/components/menus_settings.cpp @@ -209,28 +209,27 @@ void CMenus::RenderSettingsPlayer(CUIRect MainView) MainView.HSplitTop(MainView.h/2, 0, &MainView); // render skinselector - static const int s_MaxSkins = 256; - static const CSkins::CSkin *s_paSkinList[s_MaxSkins]; - static int s_NumSkins = -1; + static bool s_InitSkinlist = true; + static sorted_array<const CSkins::CSkin *> s_paSkinList; static float s_ScrollValue = 0; - if(s_NumSkins == -1) + if(s_InitSkinlist) { - mem_zero(s_paSkinList, sizeof(s_paSkinList)); - s_NumSkins = 0; - for(int i = 0; i < m_pClient->m_pSkins->Num() && i < s_MaxSkins; ++i) + s_paSkinList.clear(); + for(int i = 0; i < m_pClient->m_pSkins->Num(); ++i) { const CSkins::CSkin *s = m_pClient->m_pSkins->Get(i); // no special skins if(s->m_aName[0] == 'x' && s->m_aName[1] == '_') continue; - s_paSkinList[s_NumSkins++] = s; + s_paSkinList.add(s); } + s_InitSkinlist = false; } int OldSelected = -1; - UiDoListboxStart(&s_NumSkins , &MainView, 50.0f, Localize("Skins"), "", s_NumSkins, 4, OldSelected, s_ScrollValue); + UiDoListboxStart(&s_InitSkinlist, &MainView, 50.0f, Localize("Skins"), "", s_paSkinList.size(), 4, OldSelected, s_ScrollValue); - for(int i = 0; i < s_NumSkins; ++i) + for(int i = 0; i < s_paSkinList.size(); ++i) { const CSkins::CSkin *s = s_paSkinList[i]; if(s == 0) diff --git a/src/game/client/components/skins.cpp b/src/game/client/components/skins.cpp index b5cb8239..757c2008 100644 --- a/src/game/client/components/skins.cpp +++ b/src/game/client/components/skins.cpp @@ -14,9 +14,7 @@ void CSkins::SkinScan(const char *pName, int IsDir, void *pUser) { CSkins *pSelf = (CSkins *)pUser; int l = str_length(pName); - if(l < 4 || IsDir) - return; - if(str_comp(pName+l-4, ".png") != 0) + if(l < 4 || IsDir || str_comp(pName+l-4, ".png") != 0) return; char aBuf[512]; diff --git a/src/game/client/components/skins.h b/src/game/client/components/skins.h index 08e8c5e0..e1000e3a 100644 --- a/src/game/client/components/skins.h +++ b/src/game/client/components/skins.h @@ -1,7 +1,7 @@ #ifndef GAME_CLIENT_COMPONENTS_SKINS_H #define GAME_CLIENT_COMPONENTS_SKINS_H #include <base/vmath.h> -#include <base/tl/array.h> +#include <base/tl/sorted_array.h> #include <game/client/component.h> class CSkins : public CComponent @@ -12,8 +12,10 @@ public: { int m_OrgTexture; int m_ColorTexture; - char m_aName[32]; + char m_aName[24]; vec3 m_BloodColor; + + bool operator<(const CSkin &Other) { return str_comp(m_aName, Other.m_aName) < 0; } }; void Init(); @@ -24,7 +26,7 @@ public: int Find(const char *pName); private: - array<CSkin> m_aSkins; + sorted_array<CSkin> m_aSkins; static void SkinScan(const char *pName, int IsDir, void *pUser); }; |