Exemplo n.º 1
0
// 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();
}
Exemplo n.º 2
0
void CMenuPlayer::UpdatePopup()
{
	eSkill skl = (eSkill)g_nSkill;
	eSkillLevel lvl = (eSkillLevel)g_pPlayerStats->GetSkillLevel(skl);
	eSkillLevel nxt = (eSkillLevel)(g_pPlayerStats->GetSkillLevel(skl) + 1);

	m_Name.SetString(GetSkillName(skl));
	m_Level.SetString(GetSkillLevelName(lvl));

	m_Header.GetColumn(2)->Show(!IsMultiplayerGame());

	uint8 nMax = g_pSkillsButeMgr->GetNumModifiers(skl);
	
	for (uint8 m = 0; m < kMaxModifiers; ++m)
	{
		if (m < nMax)
		{
			m_Mods[m].GetColumn(0)->SetString(LoadTempString(g_pSkillsButeMgr->GetModifierNameId(skl,m)));
			m_Mods[m].SetHelpID(g_pSkillsButeMgr->GetModifierDescriptionId(skl,m));

			char szTmp[8];

			float fBase = g_pSkillsButeMgr->GetModifier(skl,SKL_NOVICE,m);
			
			if (fBase <= 0.0f)
			{
				ASSERT(!"MenuPlayer::Bad skill mod");
				fBase = 1.0f;
			}
			float fCur = g_pSkillsButeMgr->GetModifier(skl,lvl,m);
			if (fCur <= 0.0f)
			{
				ASSERT(!"MenuPlayer::Bad skill mod");
				fCur = 1.0f;
			}

			if (fCur >= fBase)
			{
				sprintf(szTmp,"%3.0f%%",100.0f*fCur/fBase);
			}
			else
			{
				sprintf(szTmp,"%3.0f%%",100.0f*fBase/fCur);
			}

			m_Mods[m].GetColumn(1)->SetString(szTmp);


			if ( nxt < kNumSkillLevels)
			{
				float fNxt = g_pSkillsButeMgr->GetModifier(skl,nxt,m);
				if (fNxt <= 0.0f)
				{
					ASSERT(!"MenuPlayer::Bad skill mod");
					fNxt = 1.0f;
				}
				if (fNxt >= fBase)
				{
					sprintf(szTmp,"%3.0f%%",100.0f*fNxt/fBase);
				}
				else
				{
					sprintf(szTmp,"%3.0f%%",100.0f*fBase/fNxt);
				}

			}
			else
			{
				sprintf(szTmp," - ");
			}
			m_Mods[m].GetColumn(2)->SetString(szTmp);
			m_Mods[m].GetColumn(2)->Show(!IsMultiplayerGame());
		
			
			m_Mods[m].Show(true);
		}
		else
		{
			m_Mods[m].Show(false);
		}
	}

	
	if (IsMultiplayerGame())
	{
		m_Upgrade.Show(LTFALSE);
		m_Upgrade.Enable(LTFALSE);
		m_Upgrade.Select(LTFALSE);
		m_Popup.ClearSelection();
		m_Popup.NextSelection();
	}
	else if ( nxt < kNumSkillLevels)
	{
		uint32 nCost = g_pPlayerStats->GetCostToUpgrade(skl);

		char szNext[32];
		SAFE_STRCPY(szNext,GetSkillLevelName(nxt));
		m_Upgrade.SetString(FormatTempString(IDS_SKILL_UPGRADE,szNext,nCost));
		m_Upgrade.SetColors(m_SelectedColor,m_NonSelectedColor,m_DisabledColor);
		LTBOOL bCanAfford =  (nCost <= g_pPlayerStats->GetAvailSkillPoints()  );

		m_Upgrade.Show(LTTRUE);
		m_Upgrade.Enable(bCanAfford);
		m_Upgrade.Select(bCanAfford);
		if (!bCanAfford)
		{
			m_Popup.ClearSelection();
			m_Popup.NextSelection();
		}
	}
	else
	{
		m_Upgrade.Show(LTTRUE);
		m_Upgrade.SetString(FormatTempString(IDS_SKILL_MAX));
		m_Upgrade.SetColors(m_NonSelectedColor,m_NonSelectedColor,m_NonSelectedColor);
		m_Upgrade.Enable(LTFALSE);
		m_Upgrade.Select(LTFALSE);
		m_Popup.ClearSelection();
		m_Popup.NextSelection();

	}

	m_Points.SetString(FormatTempString(IDS_SKILL_AVAIL,g_pPlayerStats->GetAvailSkillPoints()));
	m_Points.Show(!IsMultiplayerGame());
	
}