UICampaignWindow::UICampaignWindow (IFrontend *frontend, ServiceProvider& serviceProvider, CampaignManager& campaignManager, int cols, int rows) : UIWindow(UI_WINDOW_CAMPAIGN, frontend), _campaignManager(campaignManager) { UINodeBackground *background = new UINodeBackground(frontend, tr("Campaigns")); add(background); const float gap = 0.001f; _buttonLeft = new UINodeButtonImage(frontend, "icon-scroll-page-left"); _campaign = new UINodeCampaignSelector(frontend, _campaignManager, cols, rows); add(_campaign); _buttonLeft->setPos(_campaign->getLeft() - _buttonLeft->getWidth() - gap, _campaign->getTop()); _buttonLeft->addListener(UINodeListenerPtr(new SelectorPageListener<CampaignPtr>(_campaign, false))); add(_buttonLeft); _buttonRight = new UINodeButtonImage(frontend, "icon-scroll-page-right"); _buttonRight->setPos(_campaign->getRight() + gap, _campaign->getTop()); _buttonRight->addListener(UINodeListenerPtr(new SelectorPageListener<CampaignPtr>(_campaign, true))); add(_buttonRight); _continuePlay = new UINodeMainButton(_frontend, tr("Continue")); _continuePlay->addListener(UINodeListenerPtr(new ContinuePlayNodeListener(_campaignManager, serviceProvider))); _continuePlay->putUnderRight(_campaign); add(_continuePlay); if (!wantBackButton()) return; add(new UINodeBackButton(frontend, background)); }
void IUIMapWindow::initInputHudNodes() { UINodeSettingsButton *settings = new UINodeSettingsButton(_frontend, _mapControl); settings->setImage("icon-settings"); settings->setId("settings"); settings->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_OPTIONS))); settings->setAlignment(NODE_ALIGN_LEFT | NODE_ALIGN_TOP); add(settings); }
UICampaignMapWindow::UICampaignMapWindow (IFrontend *frontend, CampaignManager &campaignManager) : UIMapSelectorWindow(new UINodeMapSelector(frontend, campaignManager), tr("Maps"), UI_WINDOW_CAMPAIGN_MAPS, frontend, WINDOW_FLAG_FULLSCREEN | WINDOW_FLAG_MAIN) { #if 0 UINodeButton *resetButton = new UINodeButton(frontend); resetButton->setImage("icon-reset"); resetButton->putUnderRight(_mapSelector); resetButton->addListener(UINodeListenerPtr(new ResetCampaignListener(_mapSelector, campaignManager))); add(resetButton); #endif }
UIMapSelectorWindow::UIMapSelectorWindow (UINodeMapSelector* mapSelector, const std::string& title, const std::string& id, IFrontend *frontend, WindowFlags flags) : UIWindow(id, frontend, flags), _mapSelector(mapSelector) { UINodeBackground *background = new UINodeBackground(frontend, title); add(background); const float gap = 0.001f; const int spriteHeight = 60; _livesSprite = new UINodeSprite(frontend, spriteHeight, spriteHeight); _livesSprite->setSpriteOffset(spriteHeight); _liveSprite = UI::get().loadSprite("icon-heart"); for (uint8_t i = 0; i < INITIAL_LIVES; ++i) { _livesSprite->addSprite(_liveSprite); } _livesSprite->putAbove(_mapSelector); add(_livesSprite); _buttonLeft = new UINodeButtonImage(frontend, "icon-scroll-page-left"); _buttonLeft->addListener(UINodeListenerPtr(new SelectorPageListener<std::string>(_mapSelector, false))); add(_mapSelector); _buttonLeft->setPos(_mapSelector->getLeft() - _buttonLeft->getWidth() - gap, _mapSelector->getTop()); add(_buttonLeft); _buttonRight = new UINodeButtonImage(frontend, "icon-scroll-page-right"); _buttonRight->setPos(_mapSelector->getRight() + gap, _mapSelector->getTop()); _buttonRight->addListener(UINodeListenerPtr(new SelectorPageListener<std::string>(_mapSelector, true))); add(_buttonRight); _buttonRight->setVisible(false); _buttonLeft->setVisible(false); if (!wantBackButton()) return; add(new UINodeBackButton(frontend, background)); }
UIMapWindow::UIMapWindow (IFrontend *frontend, ServiceProvider& serviceProvider, CampaignManager& campaignManager, CavePackerClientMap& map) : IUIMapWindow(frontend, serviceProvider, campaignManager, map, new UINodeMap(frontend, serviceProvider, campaignManager, 0, 0, frontend->getWidth(), frontend->getHeight(), map)), _undo( nullptr), _points(nullptr), _campaignManager(campaignManager), _scrolling(false) { init(); const float height = 0.05f; const float sliderWidth = 0.3f; _autoSolveSlider = new UINodeSlider(frontend, 10.0f, 1000.0f, 10.0f); _autoSolveSlider->setAlignment(NODE_ALIGN_BOTTOM | NODE_ALIGN_CENTER); _autoSolveSlider->setSize(sliderWidth, height); _autoSolveSlider->addListener(UINodeListenerPtr(new SolveListener(_autoSolveSlider, "solvestepmillis"))); add(_autoSolveSlider); hideAutoSolveSlider(); }
UIMainWindow::UIMainWindow (IFrontend *frontend, ServiceProvider& serviceProvider) : UIWindow(UI_WINDOW_MAIN, frontend, WINDOW_FLAG_ROOT) { add(new UINodeMainBackground(frontend, false)); const SpritePtr& mammutSprite = UI::get().loadSprite("ui-npc-mammut"); _mammut = new UINodeSprite(frontend, mammutSprite->getMaxWidth(), mammutSprite->getMaxHeight()); _mammut->addSprite(mammutSprite); const SpritePtr& grandPaSprite = UI::get().loadSprite("ui-npc-grandpa"); _grandpa = new UINodeSprite(frontend, grandPaSprite->getMaxWidth(), grandPaSprite->getMaxHeight()); _grandpa->addSprite(grandPaSprite); const SpritePtr& playerSprite = UI::get().loadSprite("ui-player"); _player = new UINodeSprite(frontend, playerSprite->getMaxWidth(), playerSprite->getMaxHeight()); _player->addSprite(playerSprite); add(_mammut); add(_grandpa); add(_player); const float padding = 10.0f / static_cast<float>(_frontend->getHeight()); UINode *panel = new UINode(_frontend, "panelMain"); UIVBoxLayout *layout = new UIVBoxLayout(padding, true); panel->setLayout(layout); panel->setAlignment(NODE_ALIGN_MIDDLE | NODE_ALIGN_CENTER); panel->setPadding(padding); UINodeMainButton *campaign = new UINodeMainButton(_frontend, tr("Campaign")); campaign->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_CAMPAIGN))); panel->add(campaign); #ifndef NONETWORK if (Config.isNetwork()) { UINodeMainButton *multiplayer = new UINodeMainButton(_frontend, tr("Multiplayer")); multiplayer->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_MULTIPLAYER))); panel->add(multiplayer); } #endif UINodeMainButton *settings = new UINodeMainButton(_frontend, tr("Settings")); settings->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_SETTINGS))); panel->add(settings); if (System.supportPayment()) { UINodeMainButton *payment = new UINodeMainButton(_frontend, tr("Extras")); payment->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_PAYMENT))); panel->add(payment); } if (System.supportGooglePlay()) { UINodeButtonImage *googlePlay = new UINodeGooglePlayButton(_frontend); googlePlay->setPadding(padding); add(googlePlay); } #ifndef STEAMLINK if (System.supportsUserContent()) { UINodeMainButton *editor = new UINodeMainButton(_frontend, tr("Editor")); editor->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_EDITOR))); panel->add(editor); } UINodeMainButton *twitter = new UINodeMainButton(_frontend, tr("Twitter")); twitter->addListener(UINodeListenerPtr(new OpenURLListener(_frontend, "https://twitter.com/MartinGerhardy"))); panel->add(twitter); UINodeMainButton *homepage = new UINodeMainButton(_frontend, tr("Homepage")); homepage->addListener(UINodeListenerPtr(new OpenURLListener(_frontend, "http://caveproductions.org/"))); panel->add(homepage); #endif UINodeMainButton *help = new UINodeMainButton(_frontend, tr("Help")); help->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_HELP))); panel->add(help); #if 0 #ifdef __EMSCRIPTEN__ UINodeMainButton *fullscreen = new UINodeMainButton(_frontend, tr("Fullscreen")); fullscreen->addListener(UINodeListenerPtr(new EmscriptenFullscreenListener())); panel->add(fullscreen); #endif #endif UINodeMainButton *quit = new UINodeMainButton(_frontend, tr("Quit")); #ifdef __EMSCRIPTEN__ quit->addListener(UINodeListenerPtr(new OpenURLListener(_frontend, "http://caveproductions.org/", false))); #else quit->addListener(UINodeListenerPtr(new QuitListener())); #endif panel->add(quit); add(panel); Application& app = Singleton<Application>::getInstance(); UINodeLabel *versionLabel = new UINodeLabel(_frontend, app.getPackageName() + " " + app.getVersion()); versionLabel->setAlignment(NODE_ALIGN_BOTTOM|NODE_ALIGN_RIGHT); versionLabel->setColor(colorWhite); versionLabel->setPadding(getScreenPadding()); add(versionLabel); }
UIMainWindow::UIMainWindow (IFrontend *frontend) : UIWindow(UI_WINDOW_MAIN, frontend, WINDOW_FLAG_ROOT) { add(new UINodeMainBackground(frontend, false)); const float padding = 10.0f / static_cast<float>(_frontend->getHeight()); UINode *panel = new UINode(_frontend, "panelMain"); UIVBoxLayout *layout = new UIVBoxLayout(padding, true); panel->setLayout(layout); panel->setAlignment(NODE_ALIGN_MIDDLE | NODE_ALIGN_CENTER); panel->setPadding(padding); UINodeMainButton *campaign = new UINodeMainButton(_frontend, tr("Start")); campaign->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_CAMPAIGN))); panel->add(campaign); #ifndef NONETWORK if (Config.isNetwork()) { UINodeMainButton *multiplayer = new UINodeMainButton(_frontend, tr("Multiplayer")); multiplayer->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_MULTIPLAYER))); panel->add(multiplayer); } #endif UINodeMainButton *settings = new UINodeMainButton(_frontend, tr("Settings")); settings->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_SETTINGS))); panel->add(settings); #if 0 UINodeMainButton *gesture = new UINodeMainButton(_frontend, tr("Gesture")); gesture->addListener(UINodeListenerPtr(new OpenWindowListener("gesture"))); panel->add(gesture); #endif if (System.supportPayment()) { UINodeMainButton *payment = new UINodeMainButton(_frontend, tr("Extras")); payment->addListener(UINodeListenerPtr(new OpenWindowListener(UI_WINDOW_PAYMENT))); panel->add(payment); } if (System.supportGooglePlay()) { UINodeButtonImage *googlePlay = new UINodeGooglePlayButton(_frontend); googlePlay->setPadding(padding); add(googlePlay); } UINodeMainButton *twitter = new UINodeMainButton(_frontend, tr("Twitter")); twitter->addListener(UINodeListenerPtr(new OpenURLListener(_frontend, "https://twitter.com/MartinGerhardy"))); panel->add(twitter); UINodeMainButton *homepage = new UINodeMainButton(_frontend, tr("Homepage")); homepage->addListener(UINodeListenerPtr(new OpenURLListener(_frontend, "http://caveproductions.org/"))); panel->add(homepage); #if 0 #ifdef __EMSCRIPTEN__ UINodeMainButton *fullscreen = new UINodeMainButton(_frontend, tr("Fullscreen")); fullscreen->addListener(UINodeListenerPtr(new EmscriptenFullscreenListener())); panel->add(fullscreen); #endif #endif UINodeMainButton *quit = new UINodeMainButton(_frontend, tr("Quit")); #ifdef __EMSCRIPTEN__ quit->addListener(UINodeListenerPtr(new OpenURLListener(_frontend, "http://caveproductions.org/", false))); #else quit->addListener(UINodeListenerPtr(new QuitListener())); #endif panel->add(quit); add(panel); }