/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ #ifndef GAME_CLIENT_COMPONENTS_COUNTRYFLAGS_H #define GAME_CLIENT_COMPONENTS_COUNTRYFLAGS_H #include #include class CCountryFlags : public CComponent { public: struct CCountryFlag { int m_CountryCode; char m_aCountryCodeString[8]; IGraphics::CTextureHandle m_Texture; bool operator<(const CCountryFlag &Other) const { return str_comp(m_aCountryCodeString, Other.m_aCountryCodeString) < 0; } }; virtual int Sizeof() const override { return sizeof(*this); } void OnInit() override; size_t Num() const; const CCountryFlag *GetByCountryCode(int CountryCode) const; const CCountryFlag *GetByIndex(size_t Index) const; void Render(int CountryCode, const ColorRGBA *pColor, float x, float y, float w, float h); private: enum { CODE_LB = -1, CODE_UB = 999, CODE_RANGE = CODE_UB - CODE_LB + 1, }; std::vector m_vCountryFlags; size_t m_CodeIndexLUT[CODE_RANGE]; int m_FlagsQuadContainerIndex; void LoadCountryflagsIndexfile(); }; #endif