// Adds a column to the control // nWidth - Width of the column // hString - The initial text for the column uint8 CLTGUIColumnCtrl::AddColumn(const char *pString, uint16 nWidth, LTBOOL bClip) { if ( !pString ) { assert(LTFALSE); return -1; } CLTGUITextCtrl *pCtrl = debug_new(CLTGUITextCtrl); if (!pCtrl->Create(pString,LTNULL,LTNULL,m_pFont,m_nBaseFontSize,LTNULL)) { debug_delete(pCtrl); return -1; } m_columnArray.push_back(pCtrl); //force a little extra space between columns, if we can nWidth -= (m_nBaseFontSize/2); if (nWidth < m_nBaseFontSize + 1) nWidth = m_nBaseFontSize + 1 ; pCtrl->SetFixedWidth(nWidth,bClip); LTIntPt pos = m_basePos; pos.x += m_nBaseWidth; pCtrl->SetColors(m_argbSelected, m_argbNormal, m_argbDisabled); pCtrl->SetBasePos(pos); pCtrl->SetScale(m_fScale); CalculateSize(); return m_columnArray.size() - 1; }
LTBOOL CMenuMgr::Init() { //build menu array m_MenuArray.reserve(MENU_ID_UNASSIGNED); //add menus here m_MenuArray.push_back(&m_MenuSystem); m_MenuArray.push_back(&m_MenuMission); m_MenuArray.push_back(&m_MenuInventory); m_MenuArray.push_back(&m_MenuKeys); m_MenuArray.push_back(&m_MenuIntel); m_MenuArray.push_back(&m_MenuPlayer); //init menus MenuArray::iterator iter = m_MenuArray.begin(); while (iter != m_MenuArray.end()) { if (!(*iter)->Init()) return LTFALSE; iter++; } m_fSlideInTime = g_pLayoutMgr->GetMenuSlideInTime(); m_fSlideOutTime = g_pLayoutMgr->GetMenuSlideOutTime(); m_nMenuPos = g_pLayoutMgr->GetMenuPosition(); char szTemp[128]; char *pTag = "Menu"; g_pLayoutMgr->GetString(pTag,"SlideInSound",szTemp,sizeof(szTemp)); m_sSlideInSound = szTemp; g_pLayoutMgr->GetString(pTag,"SlideOutSound",szTemp,sizeof(szTemp)); m_sSlideOutSound = szTemp; g_pLayoutMgr->GetString(pTag,"Bar",szTemp,sizeof(szTemp)); HTEXTURE hBar = g_pInterfaceResMgr->GetTexture(szTemp); g_pLayoutMgr->GetString(pTag,"BarTip",szTemp,sizeof(szTemp)); HTEXTURE hBarTip = g_pInterfaceResMgr->GetTexture(szTemp); LTIntPt size = g_pLayoutMgr->GetPoint(pTag,"BarSize"); uint8 fontFace = (uint8)g_pLayoutMgr->GetInt(pTag,"BarFont"); uint8 fontSize = (uint8)g_pLayoutMgr->GetInt(pTag,"BarFontSize"); m_nBarPos = g_pLayoutMgr->GetInt(pTag,"BarPosition"); int nBarSpacing = g_pLayoutMgr->GetInt(pTag,"BarSpacing"); LTVector vCol = g_pLayoutMgr->GetVector(pTag,"BarSelectColor"); uint8 nR = (uint8)vCol.x; uint8 nG = (uint8)vCol.y; uint8 nB = (uint8)vCol.z; g_nSelectColor = SET_ARGB(0xFF,nR,nG,nB); m_MenuBar.Init(hBar,hBarTip,size); m_MenuBar.SetBasePos(LTIntPt(0,m_nBarPos)); CUIFont* pFont = g_pInterfaceResMgr->GetFont(fontFace); LTIntPt offset(nBarSpacing,(size.y-fontSize)/2); for (uint8 i =0; i < m_MenuArray.size(); i++) { CLTGUITextCtrl *pCtrl = debug_new(CLTGUITextCtrl); CBaseMenu *pMenu = m_MenuArray[i]; pCtrl->Create(pMenu->GetTitle(),i,NULL,pFont,fontSize,&m_MenuBar); pCtrl->SetColors(g_nSelectColor,argbBlack,argbWhite); pCtrl->SetParam1(pMenu->GetMenuID()); m_MenuBar.AddControl(pCtrl,offset); offset.x += nBarSpacing + pCtrl->GetWidth(); } return LTTRUE; }
// This is called when the screen gets or loses focus void CMenuIntel::OnFocus(LTBOOL bFocus) { if (!m_PopupText.IsVisible()) { ClearSelection(); } if (bFocus) { uint16 nextItem = 0; CIntelItemList *pList = g_pPlayerStats->GetIntelList(); char szTemp[512] = ""; for (uint16 i = 0; i < pList->GetCount(); i++) { uint16 nIndex = (pList->GetCount() - i) - 1; INTEL_ITEM* pItem = pList->Get(nIndex); if (!pItem) { continue; } GetIntelName(pItem->nTextId,szTemp,sizeof(szTemp)); CLTGUITextCtrl* pCtrl = LTNULL; if (nextItem < m_List.GetNumControls()) { pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nextItem); if (pCtrl) { pCtrl->SetString(szTemp); pCtrl->Show(LTTRUE); nextItem++; } } else { uint16 ndx = AddControl(szTemp,MC_INTEL); pCtrl = (CLTGUITextCtrl*)m_List.GetControl(ndx); nextItem++; } if (pCtrl) { pCtrl->SetParam1(nIndex); if (pItem->bIsIntel) { pCtrl->SetColors(0xFFFF0000,0xFFA00000,m_DisabledColor); } else { pCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); } } } for (uint16 nIndex = nextItem; nIndex < m_List.GetNumControls(); nIndex++) { CLTGUITextCtrl* pCtrl = (CLTGUITextCtrl*)m_List.GetControl(nIndex); if (pCtrl) { pCtrl->Show(LTFALSE); } } if (m_fScale != g_pInterfaceResMgr->GetXRatio()) { SetScale(g_pInterfaceResMgr->GetXRatio()); } SetSelection(GetIndex(&m_List)); } }