if statement trouble...I think
The problem is that the last skill type gets outputted as Master when it should be instead Novice.
As you can see the skill level of each is zero. Unfortunately I cant figure out why it is doing that. I cant find anything wrong with my if statement. (screenshot is below the code)
Heres the code:
Code:
void CPlayer::SetCurrentSkill(int nSkill)
{
switch(nSkill)
{
case 0:
m_CurrentSkill = &m_HandtoHand;
break;
case 1:
m_CurrentSkill = &m_Blade;
break;
case 2:
m_CurrentSkill = &m_Axe;
break;
case 3:
m_CurrentSkill = &m_Blunt;
break;
}
}
void CPlayer::SetSkillName(int nSkill)
{
switch(nSkill)
{
case 0:
m_CurrentSkill->s_SkillName = "Hand to Hand";
break;
case 1:
m_CurrentSkill->s_SkillName = "Blade";
break;
case 2:
m_CurrentSkill->s_SkillName = "Axe";
break;
case 3:
m_CurrentSkill->s_SkillName = "Blunt";
break;
}
}
void CPlayer::SetSkillLevel(int nSkill)
{
SetCurrentSkill(nSkill);
if (m_CurrentSkill->s_Level < 21)
{
m_CurrentSkill->s_SkillLevel = Skills_s::NOVICE;
m_CurrentSkill->s_SkillAbility = "Novice";
}
else if (m_CurrentSkill->s_Level > 20 && m_CurrentSkill->s_Level < 41)
{
m_CurrentSkill->s_SkillLevel = Skills_s::APPRENTICE;
m_CurrentSkill->s_SkillAbility = "Apprentice";
}
else if (m_CurrentSkill->s_Level > 40 && m_CurrentSkill->s_Level < 61)
{
m_CurrentSkill->s_SkillLevel = Skills_s::SKILLED;
m_CurrentSkill->s_SkillAbility = "Skilled";
}
else if (m_CurrentSkill->s_Level > 60 && m_CurrentSkill->s_Level < 81)
{
m_CurrentSkill->s_SkillLevel = Skills_s::PROFESSIONAL;
m_CurrentSkill->s_SkillAbility = "Professional";
}
else
{
m_CurrentSkill->s_SkillLevel = Skills_s::MASTER;
m_CurrentSkill->s_SkillAbility = "Master";
}
}
void CPlayer::SetSkills()
{
for (int x = 0; x < 4; x++)
{
SetCurrentSkill(x);
SetSkillName(x);
SetSkillLevel(x);
m_CurrentSkill->s_Total = 1;
m_CurrentSkill->s_Increment = 0.2f;
m_CurrentSkill->s_Level = m_CurrentSkill->s_Increment * m_CurrentSkill->s_Total;
}
}