| 285 | } |
| 286 | |
| 287 | void TitleScreen::initCharSelectionMenu() { |
| 288 | auto deleteDialog = make_shared<Pane>(); |
| 289 | |
| 290 | GuiReader reader; |
| 291 | |
| 292 | reader.registerCallback("delete", [=](Widget*) { deleteDialog->dismiss(); }); |
| 293 | reader.registerCallback("cancel", [=](Widget*) { deleteDialog->dismiss(); }); |
| 294 | |
| 295 | reader.construct(Root::singleton().assets()->json("/interface/windowconfig/deletedialog.config"), deleteDialog.get()); |
| 296 | |
| 297 | auto charSelectionMenu = make_shared<CharSelectionPane>(m_playerStorage, [=]() { |
| 298 | if (m_titleState == TitleState::SinglePlayerSelectCharacter) |
| 299 | switchState(TitleState::SinglePlayerCreateCharacter); |
| 300 | else if (m_titleState == TitleState::MultiPlayerSelectCharacter) |
| 301 | switchState(TitleState::MultiPlayerCreateCharacter); |
| 302 | }, [=](PlayerPtr mainPlayer) { |
| 303 | m_mainAppPlayer = mainPlayer; |
| 304 | m_playerStorage->moveToFront(m_mainAppPlayer->uuid()); |
| 305 | if (m_titleState == TitleState::SinglePlayerSelectCharacter) { |
| 306 | switchState(TitleState::StartSinglePlayer); |
| 307 | } else if (m_titleState == TitleState::MultiPlayerSelectCharacter) { |
| 308 | if (m_skipMultiPlayerConnection) |
| 309 | switchState(TitleState::StartMultiPlayer); |
| 310 | else |
| 311 | switchState(TitleState::MultiPlayerConnect); |
| 312 | } |
| 313 | }, [=](Uuid playerUuid) { |
| 314 | auto deleteDialog = m_paneManager.registeredPane("deleteDialog"); |
| 315 | deleteDialog->fetchChild<ButtonWidget>("delete")->setCallback([=](Widget*) { |
| 316 | m_playerStorage->deletePlayer(playerUuid); |
| 317 | deleteDialog->dismiss(); |
| 318 | }); |
| 319 | m_paneManager.displayRegisteredPane("deleteDialog"); |
| 320 | }); |
| 321 | charSelectionMenu->setAnchor(PaneAnchor::Center); |
| 322 | charSelectionMenu->lockPosition(); |
| 323 | |
| 324 | m_paneManager.registerPane("deleteDialog", PaneLayer::ModalWindow, deleteDialog, [=](PanePtr const&) { |
| 325 | charSelectionMenu->updateCharacterPlates(); |
| 326 | }); |
| 327 | m_paneManager.registerPane("charSelectionMenu", PaneLayer::Hud, charSelectionMenu); |
| 328 | } |
| 329 | |
| 330 | void TitleScreen::initCharCreationMenu() { |
| 331 | auto charCreationMenu = make_shared<CharCreationPane>([=](PlayerPtr newPlayer) { |
nothing calls this directly
no test coverage detected