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;
}
}