YAPOG  0.0.1
Yet Another Pokemon Online Game
PokemonExperience.cpp
Go to the documentation of this file.
3 
4 namespace yap
5 {
10 
12  : value_ (INITIAL_EXPERIENCE_VALUE)
13  , totalExperienceToNextLevel_ (INITIAL_EXPERIENCE_VALUE)
14  , previousValue_ (INITIAL_EXPERIENCE_VALUE + 1)
15  , currentLevel_ (INITIAL_LEVEL_VALUE)
16  {
17  }
18 
19  void PokemonExperience::Init (UInt32 experience)
20  {
21  value_ = experience;
22 
24  }
25 
27  {
28  if (level == INITIAL_LEVEL_VALUE)
30  else
31  {
32  if (level > MAX_LEVEL_VALUE)
33  level = MAX_LEVEL_VALUE;
34 
36  }
37 
39  }
40 
42  {
44  }
45 
47 
49  {
50  return value_;
51  }
52 
54  {
56  }
57 
59  {
61  }
62 
64  {
66 
67  return static_cast<float>(value_ - base) /
68  static_cast<float>(totalExperienceToNextLevel_ - base);
69  }
70 
72  {
73  if (previousValue_ != value_)
74  {
76 
77  for (int level = currentLevel_ + 1; level <= MAX_LEVEL_VALUE; level++)
78  {
79  if (ComputeExperienceFromLevel (level) > value_)
80  {
81  currentLevel_ = level - 1;
82  break;
83  }
84  }
85  }
86 
87  return MathHelper::Clamp(
91  }
92 
94  {
95  int levelEarned = 0;
96  UInt16 level = GetLevel ();
97 
98  if ((value_ + value) <= MAX_EXPERIENCE_VALUE)
99  value_ += value;
100 
102  {
104  {
105  levelEarned++;
106  level++;
108  }
109 
110  return levelEarned;
111  }
112 
113  return levelEarned;
114  }
115 
116  /*
117  void PokemonExperience::LevelUp ()
118  {
119  if (level_ < MAX_LEVEL_VALUE)
120  {
121  level_++;
122  ComputeExperienceToNextLevel ();
123  }
124  }
125  */
126 
127 } // namespace yap