| 1089 | } |
| 1090 | |
| 1091 | void GameMode::onFrameStarted(const Ogre::FrameEvent& evt) |
| 1092 | { |
| 1093 | GameEditorModeBase::onFrameStarted(evt); |
| 1094 | |
| 1095 | refreshGuiSkill(); |
| 1096 | refreshSpellButtonCoolDowns(); |
| 1097 | |
| 1098 | Player* player = mGameMap->getLocalPlayer(); |
| 1099 | if (player == nullptr) |
| 1100 | { |
| 1101 | OD_LOG_ERR("No local player"); |
| 1102 | return; |
| 1103 | } |
| 1104 | player->frameStarted(evt.timeSinceLastFrame); |
| 1105 | |
| 1106 | if((mSkillCurrentCompletion.mProgressBar != nullptr) && |
| 1107 | (mSkillCurrentCompletion.mCompletenessDisplayed < mSkillCurrentCompletion.mCompleteness)) |
| 1108 | { |
| 1109 | const float completeTime = 3.0f; |
| 1110 | // We update current skill completeness. Because the required amount of skill |
| 1111 | // may be pretty high between the lowest and highest skills, we cannot fill it |
| 1112 | // linearly according to this amount (it would be too fast for cheap skills or |
| 1113 | // too slow for expensive ones). |
| 1114 | // We want to fill it so that a 100% skill is filled in 'completeTime' seconds |
| 1115 | float progress = evt.timeSinceLastFrame / completeTime; |
| 1116 | mSkillCurrentCompletion.mCompletenessDisplayed = std::min(mSkillCurrentCompletion.mCompleteness, |
| 1117 | mSkillCurrentCompletion.mCompletenessDisplayed + progress); |
| 1118 | |
| 1119 | mSkillCurrentCompletion.mProgressBar->setProgress(mSkillCurrentCompletion.mCompletenessDisplayed); |
| 1120 | } |
| 1121 | } |
| 1122 | |
| 1123 | void GameMode::onFrameEnded(const Ogre::FrameEvent& evt) |
| 1124 | { |
no test coverage detected