Disable story mode timer for old profile

This commit is contained in:
Benau 2019-11-23 08:58:32 +08:00
parent f0dd933ef6
commit af2e609fff
3 changed files with 27 additions and 3 deletions

View File

@ -215,6 +215,12 @@ void StoryModeTimer::updateTimer()
void StoryModeTimer::updateSpeedrunTimer()
{
if (m_stored_speedrun_milliseconds < 0)
{
m_speedrun_milliseconds = -1;
return;
}
uint64_t elapsed_time;
if (m_valid_speedrun_ended)
@ -232,6 +238,12 @@ void StoryModeTimer::updateSpeedrunTimer()
void StoryModeTimer::updateStoryModeTimer()
{
if (m_stored_story_mode_milliseconds < 0)
{
m_story_mode_milliseconds = -1;
return;
}
uint64_t elapsed_time;
if (m_story_mode_ended)

View File

@ -1860,6 +1860,9 @@ void IrrDriver::displayFPS()
void IrrDriver::displayStoryModeTimer()
{
#ifndef SERVER_ONLY
if (story_mode_timer->getStoryModeTime() < 0)
return;
gui::ScalableFont* font = GUIEngine::getHighresDigitFont();
core::stringw timer_string;
@ -1868,7 +1871,6 @@ void IrrDriver::displayStoryModeTimer()
//The normal timer size ; to not write over it
core::dimension2du area = font->getDimension(L"99:99.99");
int regular_timer_width = area.Width;
int additional_height = 0;
if (UserConfigParams::m_speedrun_mode)
area = font->getDimension(L"99:99:99.999");
else
@ -1884,9 +1886,9 @@ void IrrDriver::displayStoryModeTimer()
font->setColoredBorder(irr::video::SColor(255, 0, 32, 80));
if ( (UserConfigParams::m_speedrun_mode && story_mode_timer->speedrunIsFinished()) ||
if ( (UserConfigParams::m_speedrun_mode && story_mode_timer->speedrunIsFinished()) ||
(!UserConfigParams::m_speedrun_mode && PlayerManager::getCurrentPlayer()->isFinished()) )
font->draw(timer_string.c_str(), position, video::SColor(255, 0, 255, 0), false, false, NULL, true);
font->draw(timer_string.c_str(), position, video::SColor(255, 0, 255, 0), false, false, NULL, true);
else
font->draw(timer_string.c_str(), position, video::SColor(255, 220, 255, 0), false, false, NULL, true);

View File

@ -249,6 +249,16 @@ void OptionsScreenUI::init()
story_timer->setState( UserConfigParams::m_display_story_mode_timer );
CheckBoxWidget* speedrun_timer = getWidget<CheckBoxWidget>("speedrun-timer");
assert( speedrun_timer != NULL );
if (story_mode_timer->getStoryModeTime() < 0)
{
story_timer->setActive(false);
speedrun_timer->setActive(false);
}
else
{
story_timer->setActive(true);
speedrun_timer->setActive(true);
}
if (UserConfigParams::m_speedrun_mode)
{
if (!story_mode_timer->playerCanRun())