|
6 | 6 | #include "Game.h" |
7 | 7 | #include "GameState.h" |
8 | 8 | #include "../Assets/ArenaPaletteName.h" |
| 9 | +#include "../Assets/ArenaSoundName.h" |
9 | 10 | #include "../Assets/ArenaTextureName.h" |
10 | 11 | #include "../Assets/BinaryAssetLibrary.h" |
11 | 12 | #include "../Assets/ExeData.h" |
|
23 | 24 | #include "../Rendering/RenderCamera.h" |
24 | 25 | #include "../Rendering/Renderer.h" |
25 | 26 | #include "../Rendering/RendererUtils.h" |
| 27 | +#include "../Stats/CharacterClassLibrary.h" |
26 | 28 | #include "../Stats/CharacterRaceLibrary.h" |
27 | 29 | #include "../Time/ArenaClockUtils.h" |
28 | 30 | #include "../Time/ClockLibrary.h" |
@@ -913,6 +915,24 @@ void GameState::tickPlayerAttack(double dt, Game &game) |
913 | 915 | player.queuedMeleeSwingDirection = -1; |
914 | 916 | } |
915 | 917 |
|
| 918 | +void GameState::tickPlayerLevel(Game &game) |
| 919 | +{ |
| 920 | + Player &player = game.player; |
| 921 | + const CharacterClassDefinition &charClassDef = CharacterClassLibrary::getInstance().getDefinition(player.charClassDefID); |
| 922 | + const int requiredExpForLevelUp = charClassDef.getExperienceCap(player.level); |
| 923 | + |
| 924 | + if (player.experience >= requiredExpForLevelUp) |
| 925 | + { |
| 926 | + player.level++; |
| 927 | + |
| 928 | + AudioManager &audioManager = game.audioManager; |
| 929 | + audioManager.playSoundOneShot(ArenaSoundName::Fanfare1); |
| 930 | + DebugLogFormat("Player is now level %d.", player.level); |
| 931 | + |
| 932 | + // @todo character sheet UI context |
| 933 | + } |
| 934 | +} |
| 935 | + |
916 | 936 | void GameState::tickVoxels(double dt, Game &game) |
917 | 937 | { |
918 | 938 | SceneManager &sceneManager = game.sceneManager; |
|
0 commit comments