YAPOG
0.0.1
Yet Another Pokemon Online Game
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
PokemonExperience.cpp
Go to the documentation of this file.
1
#include "
YAPOG/Game/Pokemon/PokemonExperience.hpp
"
2
#include "
YAPOG/System/MathHelper.hpp
"
3
4
namespace
yap
5
{
6
const
uint
PokemonExperience::INITIAL_EXPERIENCE_VALUE
= 0;
7
const
UInt16
PokemonExperience::INITIAL_LEVEL_VALUE
= 1;
8
const
uint
PokemonExperience::MAX_EXPERIENCE_VALUE
= 2000000;
9
const
UInt16
PokemonExperience::MAX_LEVEL_VALUE
= 100;
10
11
PokemonExperience::PokemonExperience
()
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
23
ComputeTotalExperienceToNextLevel
(
GetLevel
());
24
}
25
26
void
PokemonExperience::InitFromLevel
(
UInt16
level)
27
{
28
if
(level ==
INITIAL_LEVEL_VALUE
)
29
value_
=
INITIAL_EXPERIENCE_VALUE
;
30
else
31
{
32
if
(level >
MAX_LEVEL_VALUE
)
33
level =
MAX_LEVEL_VALUE
;
34
35
value_
=
ComputeExperienceFromLevel
(level);
36
}
37
38
ComputeTotalExperienceToNextLevel
(level);
39
}
40
41
void
PokemonExperience::ComputeTotalExperienceToNextLevel
(
UInt16
level)
42
{
43
totalExperienceToNextLevel_
=
ComputeExperienceFromLevel
(level + 1);
44
}
45
47
48
UInt32
PokemonExperience::GetValue
()
const
49
{
50
return
value_
;
51
}
52
53
UInt32
PokemonExperience::GetExperienceToNextLevel
()
const
54
{
55
return
totalExperienceToNextLevel_
-
value_
;
56
}
57
58
UInt32
PokemonExperience::GetTotalExperienceToNextLevel
()
const
59
{
60
return
totalExperienceToNextLevel_
;
61
}
62
63
float
PokemonExperience::GetExperiencePercentage
()
64
{
65
UInt32
base =
ComputeExperienceFromLevel
(
GetLevel
());
66
67
return
static_cast<
float
>
(
value_
- base) /
68
static_cast<float>(
totalExperienceToNextLevel_
- base);
69
}
70
71
UInt16
PokemonExperience::GetLevel
()
72
{
73
if
(
previousValue_
!=
value_
)
74
{
75
previousValue_
=
value_
;
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
(
88
currentLevel_
,
89
INITIAL_LEVEL_VALUE
,
90
MAX_LEVEL_VALUE
);
91
}
92
93
int
PokemonExperience::AddExperience
(
const
UInt32
& value)
94
{
95
int
levelEarned = 0;
96
UInt16
level =
GetLevel
();
97
98
if
((
value_
+ value) <=
MAX_EXPERIENCE_VALUE
)
99
value_
+= value;
100
101
if
(
value_
>=
totalExperienceToNextLevel_
)
102
{
103
while
(
value_
>=
totalExperienceToNextLevel_
)
104
{
105
levelEarned++;
106
level++;
107
ComputeTotalExperienceToNextLevel
(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
YAPOG
src
YAPOG
Game
Pokemon
PokemonExperience.cpp
Generated on Mon Sep 17 2012 22:24:25 for YAPOG by
1.8.1.1