MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / play

Method play

source/game/StarSongbook.cpp:652–682  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

650}
651
652void Songbook::play(Json const& song, String const& timeSource) {
653 stop();
654
655 m_song = song;
656 m_timeSource = timeSource;
657 if (m_timeSource.empty())
658 m_timeSource = toString(Random::randu64());
659
660 {
661 m_epochUpdated = false;
662 m_timeSourceEpoch = Time::millisecondsSinceEpoch();
663 MutexLocker lock(s_timeSourcesMutex);
664 if (!s_timeSources.contains(m_timeSource)) {
665 m_timeSourceInstance = make_shared<TimeSource>();
666 s_timeSources[m_timeSource] = m_timeSourceInstance;
667 m_timeSourceInstance->epoch = m_timeSourceEpoch;
668 m_timeSourceInstance->keepalive = m_timeSourceEpoch;
669 } else {
670 m_timeSourceInstance = s_timeSources[m_timeSource];
671 if ((Time::millisecondsSinceEpoch() - m_timeSourceInstance->keepalive) > 5000) {
672 m_timeSourceInstance->epoch = m_timeSourceEpoch;
673 m_timeSourceInstance->keepalive = m_timeSourceEpoch;
674 }
675 }
676 m_timeSourceEpoch = m_timeSourceInstance->epoch;
677 }
678
679 m_dataUpdated = true;
680 m_dataChanged = true;
681 m_activeCooldown = 3;
682}
683
684bool Songbook::active() const {
685 return m_activeCooldown > 0;

Callers

nothing calls this directly

Calls 4

toStringFunction · 0.85
randu64Function · 0.85
emptyMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected