LTBOOL CScreenHostLevels::FillAvailList() { // Sanity checks... if (!m_pAvailMissions) return(LTFALSE); for (int nMission = 0; nMission < g_pMissionButeMgr->GetNumMissions(); nMission++) { MISSION* pMission = g_pMissionButeMgr->GetMission(nMission); if (pMission) { CLTGUITextCtrl *pCtrl = NULL; if (pMission->nNameId > 0) pCtrl = CreateTextItem(LoadTempString(pMission->nNameId),CMD_ADD_LEVEL,pMission->nDescId); else if (!pMission->sName.empty()) pCtrl = CreateTextItem((char *)pMission->sName.c_str(),CMD_ADD_LEVEL,pMission->nDescId); else { char szWorldTitle[MAX_PATH] = ""; _splitpath( pMission->aLevels[0].szLevel, NULL, NULL, szWorldTitle, NULL ); pCtrl = CreateTextItem(szWorldTitle,CMD_ADD_LEVEL,0); } pCtrl->SetFont(LTNULL,nListFontSize); pCtrl->SetParam1(nMission); pCtrl->SetFixedWidth(nAvailWidth,LTTRUE); m_pAvailMissions->AddControl(pCtrl); } } return (LTTRUE); }
void CScreenProfile::CreateProfileList() { // Empty the list m_pListCtrl->RemoveAll(); // Get new stuff m_ProfileList.clear(); g_pProfileMgr->GetProfileList(m_ProfileList); CUIFont *pFont = g_pInterfaceResMgr->GetFont(nListFont); // Profiles to the list for (StringSet::iterator iter = m_ProfileList.begin(); iter != m_ProfileList.end(); ++iter) { char *pStr = (char *)iter->c_str(); CLTGUITextCtrl* pTextCtrl = CreateTextItem(pStr, CMD_OK, LTNULL); pTextCtrl->SetFont(pFont,nListFontSz); uint16 ndx = m_pListCtrl->AddControl(pTextCtrl); pTextCtrl->SetParam1(ndx); if (stricmp(iter->c_str(),m_pProfile->m_sName.c_str()) == 0) m_pListCtrl->SetSelection(ndx); } }
// Build the screen LTBOOL CScreenFailure::Build() { CreateTitle(NULL); if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"FailStringRect")) { stringRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_FAILURE,"FailStringRect"); } if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"FailStringSize")) { stringSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_FAILURE,"FailStringSize"); } if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"HelpStringPos")) { helpPos = g_pLayoutMgr->GetScreenCustomPoint(SCREEN_ID_FAILURE,"HelpStringPos"); } if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"HelpStringSize")) { helpSize = (uint8)g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_FAILURE,"HelpStringSize"); } LTIntPt stringPos; stringPos.x = (stringRect.left + stringRect.right) / 2; stringPos.y = stringRect.top; m_pString = AddTextItem("failed",NULL,NULL,stringPos,LTTRUE); if (m_pString) { m_pString->SetFont(NULL,stringSize); m_pString->SetFixedWidth(stringRect.right - stringRect.left); CUIFormattedPolyString *pStr = m_pString->GetString(); if (pStr) { pStr->SetAlignmentH(CUI_HALIGN_CENTER); } } if (g_pLayoutMgr->HasCustomValue(SCREEN_ID_FAILURE,"Delay")) { g_fDelay = g_pLayoutMgr->GetScreenCustomFloat(SCREEN_ID_FAILURE,"Delay"); } CLTGUITextCtrl *pString = AddTextItem(IDS_HELP_FAILURE,NULL,NULL,helpPos,LTTRUE); if (pString) { pString->SetFont(NULL,helpSize); } // Make sure to call the base class if (! CBaseScreen::Build()) return LTFALSE; UseBack(LTFALSE); return LTTRUE; }
// Build the list of Chapters void CScreenSingle::BuildChapterList() { LTRect rect = g_pLayoutMgr->GetScreenCustomRect((eScreenID)m_nScreenID,"ChapterRect"); int nWidth = (rect.right - rect.left) - 16; CLTGUITextCtrl* pItem; uint8 nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); for (int i = 0; i < g_pMissionButeMgr->GetNumMissions(); i++) { const MISSION* pMission = g_pMissionButeMgr->GetMission(i); pItem = CreateTextItem(pMission->nNameId, CMD_CUSTOM+1000+i, pMission->nDescId); pItem->SetFont(LTNULL, nListFontSize); pItem->SetFixedWidth(nWidth,LTTRUE); m_pChapter->AddControl(pItem); } }
void CScreenHostLevels::AddMissionToList(int nMissionId) { // Sanity checks... if (!m_pSelMissions) return; if (m_pSelMissions->GetNumControls() == MAX_GAME_LEVELS) return; // Add the level to the list... MISSION *pMission = g_pMissionButeMgr->GetMission(nMissionId); if (pMission) { CLTGUITextCtrl *pCtrl = NULL; if (pMission->nNameId > 0) pCtrl = CreateTextItem(LoadTempString(pMission->nNameId),CMD_REMOVE_LEVEL,pMission->nDescId); else if (!pMission->sName.empty()) pCtrl = CreateTextItem((char *)pMission->sName.c_str(),CMD_REMOVE_LEVEL,pMission->nDescId); else { char szWorldTitle[MAX_PATH] = ""; _splitpath( pMission->aLevels[0].szLevel, NULL, NULL, szWorldTitle, NULL ); pCtrl = CreateTextItem(szWorldTitle,CMD_REMOVE_LEVEL,0); } pCtrl->SetFont(LTNULL,nListFontSize); pCtrl->SetParam1(nMissionId); pCtrl->SetFixedWidth(nSelWidth,LTTRUE); m_pSelMissions->AddControl(pCtrl); } else { ASSERT(!"Invalid mission id"); } }
// Build the screen LTBOOL CScreenProfile::Build() { // Set the title's text CreateTitle(IDS_TITLE_PROFILE); // Get edit controls position and create it. LTIntPt pos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"ProfileNamePos"); m_pCurrent = AddTextItem(" ", LTNULL, LTNULL, pos, LTTRUE); AddTextItem(IDS_CREATE, CMD_CREATE, IDS_HELP_PROFILE_CREATE); AddTextItem(IDS_LOAD, CMD_LOAD, IDS_HELP_PROFILE_LOAD); //jrg - 8/18/02 removed as a quick and dirty to multiple issues caused by renaming profiles. // m_pRename = AddTextItem(IDS_RENAME, CMD_RENAME, IDS_HELP_PROFILE_RENAME); m_pDelete = AddTextItem(IDS_DELETE, CMD_DELETE, IDS_HELP_PROFILE_DELETE); LTIntPt dlgPos = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogPos"); LTIntPt dlgSz = g_pLayoutMgr->GetScreenCustomPoint((eScreenID)m_nScreenID,"DialogSize"); kDlgHt = dlgSz.y; kDlgWd = dlgSz.x; uint8 nDlgFont = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"DialogFontFace"); uint8 nDlgFontSz = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"DialogFontSize"); nListFont = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontFace"); nListFontSz = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); char szBack[128] = ""; g_pLayoutMgr->GetScreenCustomString((eScreenID)m_nScreenID,"DialogFrame",szBack,sizeof(szBack)); m_pDlg = debug_new(CLTGUIWindow); m_pDlg->Create(g_pInterfaceResMgr->GetTexture(szBack),kDlgHt,kDlgWd); LTIntPt tmp(8,8); CUIFont *pFont = g_pInterfaceResMgr->GetFont(nDlgFont); CLTGUITextCtrl *pCtrl = CreateTextItem(IDS_PROFILE_LIST, LTNULL, LTNULL, kDefaultPos, LTTRUE); pCtrl->SetFont(pFont,nDlgFontSz); m_pDlg->AddControl(pCtrl, tmp); tmp.y += 24; // Make a list controller m_pListCtrl = debug_new(CLTGUIListCtrl); if (m_pListCtrl->Create(kDlgHt-64)) { HTEXTURE hUp = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup.dtx"); HTEXTURE hUpH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowup_h.dtx"); HTEXTURE hDown = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn.dtx"); HTEXTURE hDownH = g_pInterfaceResMgr->GetTexture("interface\\menu\\sprtex\\arrowdn_h.dtx"); m_pListCtrl->UseArrows(kDlgWd-48,1.0f,hUp,hUpH,hDown,hDownH); m_pListCtrl->SetIndent(LTIntPt(4,4)); m_pListCtrl->SetFrameWidth(2); m_pListCtrl->SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor); m_pDlg->AddControl(m_pListCtrl, tmp); } pCtrl = CreateTextItem(IDS_CANCEL, CMD_CANCEL, LTNULL); pCtrl->SetFont(pFont,nDlgFontSz); tmp.x = (kDlgWd - pCtrl->GetBaseWidth()) / 2; tmp.y = (kDlgHt - pCtrl->GetBaseHeight()) - 8; m_pDlg->AddControl(pCtrl, tmp); AddControl(m_pDlg); m_pDlg->SetBasePos(dlgPos); m_pDlg->SetScale(g_pInterfaceResMgr->GetXRatio()); m_pDlg->Show(LTFALSE); m_pDlg->SetSelection(1); UseBack(LTTRUE); // Make sure to call the base class return CBaseScreen::Build(); }
// Build the list of Custom Levels void CScreenSingle::BuildCustomLevelsList(int nWidth) { m_Filenames.clear(); m_pCustom->RemoveAll(); // Get a list of world names and sort them alphabetically uint8 nNumPaths = g_pClientButeMgr->GetNumSingleWorldPaths(); char pathBuf[128]; FileEntry** pFilesArray = debug_newa(FileEntry*, nNumPaths); if (pFilesArray) { for (int i=0; i < nNumPaths; ++i) { pathBuf[0] = '\0'; g_pClientButeMgr->GetWorldPath(i, pathBuf, ARRAY_LEN(pathBuf)); if (pathBuf[0]) { pFilesArray[i] = g_pLTClient->GetFileList(pathBuf); } else { pFilesArray[i] = LTNULL; } } } char Buf[255]; for (int i=0; i < nNumPaths; ++i) { pathBuf[0] = '\0'; g_pClientButeMgr->GetWorldPath(i, pathBuf, ARRAY_LEN(pathBuf)); if (pathBuf[0] && pFilesArray[i]) { sprintf(Buf, "%s\\", pathBuf); AddFilesToFilenames(pFilesArray[i], Buf); g_pLTClient->FreeFileList(pFilesArray[i]); } } debug_deletea(pFilesArray); CLTGUITextCtrl* pItem; uint8 nListFontSize = (uint8)g_pLayoutMgr->GetScreenCustomInt((eScreenID)m_nScreenID,"ListFontSize"); int index = 0; StringSet::iterator iter = m_Filenames.begin(); while (iter != m_Filenames.end()) { pItem = CreateTextItem((char *)iter->c_str(), CMD_CUSTOM+index, IDS_HELP_CUSTOMLEVEL); pItem->SetFont(LTNULL, nListFontSize); pItem->SetFixedWidth(nWidth,LTTRUE); m_pCustom->AddControl(pItem); ++index; iter++; } }
void CScreenHostMission::CreateCampaignList() { // Empty the list m_pListCtrl->RemoveAll(); m_CampaignList.clear(); CUIFont *pFont = g_pInterfaceResMgr->GetFont(nListFont); m_CampaignList.insert(DEFAULT_CAMPAIGN); // Get new stuff struct _finddata_t file; intptr_t hFile; CUserProfile* pUserProfile = g_pProfileMgr->GetCurrentProfile( ); std::string directory = GetCampaignDir( g_pProfileMgr->GetCurrentProfileName( ), pUserProfile->m_ServerGameOptions.m_eGameType ); directory += "*.txt"; // find first file if((hFile = _findfirst(directory.c_str(), &file)) != -1L) { do { if (_stricmp(file.name,DEFAULT_CAMPAIGN_FILE) != 0) { char *pName = strtok(file.name,"."); m_CampaignList.insert(pName); } } while(_findnext(hFile, &file) == 0); } _findclose(hFile); // add campaigns to the list control for (StringSet::iterator iter = m_CampaignList.begin(); iter != m_CampaignList.end(); ++iter) { CLTGUITextCtrl* pTextCtrl = NULL; uint16 ndx = 0; if (iter->compare(DEFAULT_CAMPAIGN) == 0) { m_pDefaultTextCtrl = CreateTextItem(IDS_HOST_CAMPAIGN_DEFAULT, CMD_OK, LTNULL); ndx = m_pListCtrl->AddControl(m_pDefaultTextCtrl); m_nDefaultCampaign = ndx; m_pDefaultTextCtrl->Show(LTFALSE); m_pDefaultTextCtrl->SetParam1(ndx); m_pDefaultTextCtrl->SetFont(pFont,nListFontSz); } else { pTextCtrl = CreateTextItem((char *)iter->c_str(), CMD_OK, LTNULL); pTextCtrl->SetFont(pFont,nListFontSz); ndx = m_pListCtrl->AddControl(pTextCtrl); pTextCtrl->SetParam1(ndx); } if (iter->compare(m_pProfile->m_ServerGameOptions.GetCampaignName()) == 0) m_pListCtrl->SetSelection(ndx); } }