// Build the screen LTBOOL CScreenPlayerSkills::Build() { g_pSkillsScreen = this; CreateTitle(IDS_TITLE_SKILLS); int kColumn = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PLAYER_SKILLS,"ColumnWidth"); int kSlider = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_PLAYER_SKILLS,"SliderWidth"); s_nMaxPool = g_pSkillsButeMgr->GetMultiplayerPool(); LTIntPt pos = m_nextPos; AddTextItem(IDS_SKILL_PTS,LTNULL,LTNULL,pos,LTTRUE); pos.x += kColumn; m_pPool = AddTextItem("999",LTNULL,LTNULL,pos,LTTRUE); pos.y += (m_pPool->GetBaseHeight() + 16); for (uint8 i = 0; i < kNumSkills; i++) { pos.x = GetPageLeft(); eSkill skl = (eSkill)i; if (g_pSkillsButeMgr->IsAvailable(skl) ) { m_pSkill[i] = AddSlider(GetSkillNameId(skl),GetSkillDescriptionId(skl),kColumn,kSlider,-1,&m_nLevels[i], pos); m_pSkill[i]->SetSliderIncrement(1); m_pSkill[i]->SetSliderRange(0,kNumSkillLevels-1); m_pSkill[i]->SetRangeCallback(SliderCallBack); m_pSkill[i]->SetParam1(i); pos.x += (kColumn + kSlider + 5); m_pLabel[i] = AddCycle(" ",NULL,20,&s_nLevels[i],pos,LTTRUE); for (int j = 0; j < kNumSkillLevels; j++) { eSkillLevel nxt = (eSkillLevel)(j+1); char szTemp[32]; if ( nxt < kNumSkillLevels) { uint32 nCost = g_pSkillsButeMgr->GetCostToUpgrade(skl,nxt); sprintf(szTemp,"%s (%d)",GetSkillLevelName((eSkillLevel)j),nCost); } else { SAFE_STRCPY(szTemp,GetSkillLevelName((eSkillLevel)j)); } m_pLabel[i]->AddString(szTemp); } pos.y += m_pSkill[i]->GetBaseHeight(); kNumAvailSkills++; } } pos.x = GetPageLeft(); pos.y += 8; AddTextItem(IDS_RESET_SKILLS,CMD_SKILLS,IDS_HELP_RESET_SKILLS,pos); // Make sure to call the base class return CBaseScreen::Build(); }
const char* GetSkillName(eSkill skl) { return (const char *)LoadTempString(GetSkillNameId(skl)); }