| 23 | namespace Star { |
| 24 | |
| 25 | TitleScreen::TitleScreen(PlayerStoragePtr playerStorage, MixerPtr mixer, UniverseClientPtr client) |
| 26 | : m_playerStorage(playerStorage), m_skipMultiPlayerConnection(false), m_mixer(mixer) { |
| 27 | m_titleState = TitleState::Quit; |
| 28 | |
| 29 | auto assets = Root::singleton().assets(); |
| 30 | |
| 31 | m_guiContext = GuiContext::singletonPtr(); |
| 32 | |
| 33 | m_celestialDatabase = make_shared<CelestialMasterDatabase>(); |
| 34 | auto randomWorld = m_celestialDatabase->findRandomWorld(10, 50, [this](CelestialCoordinate const& coordinate) { |
| 35 | return is<TerrestrialWorldParameters>(m_celestialDatabase->parameters(coordinate)->visitableParameters()); |
| 36 | }).take(); |
| 37 | |
| 38 | if (auto name = m_celestialDatabase->name(randomWorld)) |
| 39 | Logger::info("Title world is {} @ CelestialWorld:{}", Text::stripEscapeCodes(*name), randomWorld); |
| 40 | |
| 41 | SkyParameters skyParameters(randomWorld, m_celestialDatabase); |
| 42 | m_skyBackdrop = make_shared<Sky>(skyParameters, true); |
| 43 | |
| 44 | m_musicTrack = make_shared<AmbientNoisesDescription>(assets->json("/interface/windowconfig/title.config:music").toObject(), "/"); |
| 45 | |
| 46 | initMainMenu(); |
| 47 | initCharSelectionMenu(); |
| 48 | initCharCreationMenu(); |
| 49 | initMultiPlayerMenu(); |
| 50 | initOptionsMenu(client); |
| 51 | initModsMenu(); |
| 52 | |
| 53 | resetState(); |
| 54 | } |
| 55 | |
| 56 | void TitleScreen::renderInit(RendererPtr renderer) { |
| 57 | m_renderer = std::move(renderer); |
nothing calls this directly
no test coverage detected