00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "MenuListField.hpp"
00020 #include "Singletons.hpp"
00021
00022 CMenuListField::CMenuListField()
00023 : m_BitMapFont(NULL),
00024 m_CurSel(0),
00025 m_Scroll(0),
00026 m_X(0),
00027 m_Y(0),
00028 m_SizeX(0),
00029 m_SizeY(0)
00030 {}
00031
00032 CMenuListField::~CMenuListField()
00033 {}
00034
00035 void CMenuListField::Init(CBitmapFont* BitMapFont, std::string ListSelectionName)
00036 {
00037 m_BitMapFont = BitMapFont;
00038
00039 m_ListSelectionSprite.SetImage(sgl::get_imagemgr().get_img(ListSelectionName));
00040 m_ListSelectionSprite.SetColor(sf::Color(255,255,255,128));
00041 }
00042
00043 void CMenuListField::Draw()
00044 {
00045 if(m_BitMapFont == NULL)
00046 {
00047 return;
00048 }
00049
00050 std::size_t CurIndex = 0;
00051
00052 for(std::size_t CurEntry = m_Scroll; CurEntry < m_Entrys.size(); CurEntry++)
00053 {
00054 if(CurEntry == m_CurSel)
00055 {
00056 m_ListSelectionSprite.SetPosition(m_X + 20,m_Y + (CurEntry - m_Scroll) * 32 + 10);
00057 sgl::get_window().Draw(m_ListSelectionSprite);
00058 }
00059
00060 if(m_Entrys[CurEntry].length() * 25 < m_X + m_SizeX)
00061 {
00062 m_BitMapFont->DrawText(m_X + 20,m_Y + (CurEntry - m_Scroll) * 32 + 10, m_Entrys[CurEntry]);
00063 }
00064 else
00065 {
00066 m_BitMapFont->DrawText(m_X + 20,m_Y + (CurEntry - m_Scroll) * 32 + 10, m_Entrys[CurEntry].substr(0,m_SizeX / 32 - 2)+"...");
00067 }
00068
00069 CurIndex++;
00070
00071 if(CurIndex > MENU_DISPLAY_COUNT)
00072 {
00073 break;
00074 }
00075 }
00076 }