コード例 #1
0
ファイル: ttl_main_menu.cpp プロジェクト: jpmac26/PGE-Project
int TitleScene::findEpisodes(void *)
{
    m_filefind_found_files.clear();
    DirMan worlddir(m_filefind_folder);
    std::vector<std::string> files;
    std::vector<std::string> folders;
    worlddir.getListOfFolders(folders);

    for(std::string &folder : folders)
    {
        std::string path = m_filefind_folder + folder;
        DirMan episodedir(path);
        std::vector<std::string> worlds;
        episodedir.getListOfFiles(worlds, {".wld", ".wldx"});
        for(std::string &world : worlds)
            files.push_back(m_filefind_folder + folder + "/" + world);
    }

    bool has_files_added = false;
    if(!files.empty())
    {
        WorldData world;
        for(std::string &filename : files)
        {
            if(FileFormats::OpenWorldFileHeader(filename, world))
            {
                std::string title = world.EpisodeTitle;
                std::pair<std::string, std::string > file;
                file.first = filename;
                file.second = (title.empty() ? Files::basename(filename) : title);
                m_filefind_found_files.push_back(file);
                has_files_added = true;
            }
            else
            {
                pLogWarning("Failed to parse world map header %s while listing available levels with error [%s] at line %d with line data [%s]",
                            filename.c_str(),
                            world.meta.ERROR_info.c_str(),
                            world.meta.ERROR_linenum,
                            world.meta.ERROR_linedata.c_str());
            }
        }
    }
    if(!has_files_added)
    {
        std::pair<std::string, std::string > file;
        file.first = "noworlds";
        //% "<episodes not found>"
        file.second = qtTrId("MSG_EPISODES_NOT_FOUND");
        m_filefind_found_files.push_back(file);
    }

    m_filefind_finished = true;
    return 0;
}
コード例 #2
0
int TitleScene::findEpisodes( void* )
{
    filefind_found_files.clear();
    QDir worlddir(filefind_folder);
    QStringList filter;
    filter << "*.wld" << "*.wldx";
    QStringList files;
    QStringList folders = worlddir.entryList(QDir::Dirs);

    foreach(QString folder, folders)
    {
        QString path = filefind_folder+folder;
        QDir episodedir(path);
        QStringList worlds = episodedir.entryList(filter);
        foreach(QString world, worlds)
        {
            files << filefind_folder+folder+"/"+world;
        }
コード例 #3
0
ファイル: ttl_main_menu.cpp プロジェクト: tcvicio/PGE-Project
void TitleScene::setMenu(TitleScene::CurrentMenu _menu)
{
    if(_menu<menuFirst) return;
    if(_menu>menuLast) return;

    _currentMenu=_menu;
    menu.clear();
    menu.setTextLenLimit(22);
    switch(_menu)
    {
        case menu_main:
            menu.setPos(300, 350);
            menu.setItemsNumber(5);
            menu.addMenuItem("game1p", "1 Player Game");
            menu.addMenuItem("game2p", "2 Player Game");
            menu.addMenuItem("gamebt", "Battle Game");
            menu.addMenuItem("Options", "Options");
            menu.addMenuItem("Exit", "Exit");
        break;
            case menu_options:
                menu.setPos(260,284);
                menu.setItemsNumber(9);
                menu.addMenuItem("tests", "Test of screens");
                menu.addMenuItem("testboxes", "Test of message boxes");
                menu.addMenuItem("controls", "Player controlling");
                menu.addMenuItem("videosetup", "Video settings");
                menu.addIntMenuItem(&AppSettings.volume_music, 0, 128, "vlm_music", "Music volume", false,
                                    []()->void{ PGE_MusPlayer::MUS_changeVolume(AppSettings.volume_music); });
                menu.addIntMenuItem(&AppSettings.volume_sound, 0, 128, "vlm_sound", "Sound volume", false);
                menu.addBoolMenuItem(&AppSettings.fullScreen, "full_screen", "Full Screen mode",
                                     []()->void{ PGE_Window::setFullScreen(AppSettings.fullScreen); }
                                     );
            break;
                case menu_tests:
                    menu.setPos(300, 350);
                    menu.setItemsNumber(5);
                    menu.addMenuItem("credits", "Credits");
                    menu.addMenuItem("loading", "Loading screen");
                    menu.addMenuItem("gameover", "Game over screen");
                break;
                case menu_testboxes:
                    menu.setPos(300, 350);
                    menu.setItemsNumber(5);
                    menu.addMenuItem("messagebox", "Message box");
                    menu.addMenuItem("menubox", "Menu box");
                    menu.addMenuItem("inputbox", "Text Input box");
                    menu.addMenuItem("questionbox", "Question box");
                break;
                    case menu_videosettings:
                        menu.setPos(300, 350);
                        menu.setItemsNumber(5);
                        menu.addBoolMenuItem(&AppSettings.showDebugInfo, "dbg_flag", "Show debug info");
                        menu.addBoolMenuItem(&AppSettings.frameSkip, "frame_skip", "Enable frame-skip");
                        menu.addIntMenuItem(&AppSettings.MaxFPS, 65, 1000, "max_fps", "Max FPS");
                        menu.addIntMenuItem(&AppSettings.timeOfFrame, 2, 15, "phys_step", "Frame time (ms.)", false,
                                            [this]()->void{
                                                PGE_Window::TicksPerSecond=1000.0f/AppSettings.timeOfFrame;
                                                PGE_Window::TimeOfFrame=AppSettings.timeOfFrame;
                                                AppSettings.TicksPerSecond=1000.0f/AppSettings.timeOfFrame;
                                                //PGE_Window::TicksPerSecond =AppSettings.TicksPerSecond;
                                                this->updateTickValue();
                                            }
                                            );
                    break;
                    case menu_controls:
                        menu.setPos(300, 350);
                        menu.setItemsNumber(5);
                        menu.addMenuItem("control_plr1", "Player 1 controls");
                        menu.addMenuItem("control_plr2", "Player 2 controls");
                    break;
                        case menu_controls_plr1:
                        case menu_controls_plr2:
                        {

                        KeyMap *mp_p;
                        int *mct_p=0;
                        SDL_Joystick* jdev=NULL;
                        std::function<void()> ctrlSwitch;

                        if(_menu==menu_controls_plr1)
                        {
                            ctrlSwitch = [this]()->void{
                                setMenu(menu_controls_plr1);
                                };
                            mct_p = &AppSettings.player1_controller;
                            if((*mct_p>=0)&&(*mct_p<AppSettings.player1_joysticks.size()))
                            {
                                if(*mct_p<AppSettings.joysticks.size())
                                    jdev        = AppSettings.joysticks[*mct_p];
                                mp_p         = &AppSettings.player1_joysticks[*mct_p];
                            }
                            else
                                mp_p = &AppSettings.player1_keyboard;
                        }
                        else{
                            ctrlSwitch = [this]()->void{
                                setMenu(menu_controls_plr2);
                                };
                            mct_p  = &AppSettings.player2_controller;
                            if((*mct_p>=0)&&(*mct_p<AppSettings.player2_joysticks.size()))
                            {
                                if(*mct_p<AppSettings.joysticks.size())
                                    jdev        = AppSettings.joysticks[*mct_p];
                                mp_p = &AppSettings.player2_joysticks[*mct_p];
                            }
                            else
                                mp_p = &AppSettings.player2_keyboard;
                        }

                            menu.setPos(300, 216);
                            menu.setItemsNumber(11);
                            QList<NamedIntItem> ctrls;
                            NamedIntItem controller;
                            controller.value=-1;
                            controller.label="Keyboard";
                            ctrls.push_back(controller);
                            for(int i=0;i<AppSettings.joysticks.size();i++)
                            {
                                controller.value=i;
                                controller.label=QString("Joystick: %1").arg(SDL_JoystickName(AppSettings.joysticks[i]));
                                ctrls.push_back(controller);
                            }
                            menu.addNamedIntMenuItem(mct_p, ctrls, "ctrl_type", "Input:", true, ctrlSwitch);
                            menu.setItemWidth(300);
                            menu.setValueOffset(150);
                            menu.addKeyGrabMenuItem(&mp_p->left, "key1",        "Left.........", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->right, "key2",       "Right........", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->up, "key3",          "Up...........", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->down, "key4",        "Down.........", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->jump, "key5",        "Jump.........", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->jump_alt, "key6",    "Alt-Jump....", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->run, "key7",         "Run..........", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->run_alt, "key8",     "Alt-Run.....", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->drop, "key9",        "Drop.........", jdev);
                            menu.setValueOffset(210);
                            menu.addKeyGrabMenuItem(&mp_p->start, "key10",      "Start........", jdev);
                            menu.setValueOffset(210);
                        }
                        break;
        case menu_playepisode:
            {
                menu.setPos(300, 350);
                menu.setItemsNumber(5);
                //Build list of episodes
                QDir worlddir(ConfigManager::dirs.worlds);
                QStringList filter;
                filter << "*.wld" << "*.wldx";
                QStringList files;
                QStringList folders = worlddir.entryList(QDir::Dirs);

                foreach(QString folder, folders)
                {
                    QString path = ConfigManager::dirs.worlds+folder;
                    QDir episodedir(path);
                    QStringList worlds = episodedir.entryList(filter);
                    foreach(QString world, worlds)
                    {
                        files << ConfigManager::dirs.worlds+folder+"/"+world;
                    }
                }

                if(files.isEmpty())
                    menu.addMenuItem("noworlds", "<episodes not found>");
                else
                {
                    foreach(QString file, files)
                    {
                        WorldData world = FileFormats::OpenWorldFileHeader(file);
                        if(world.ReadFileValid)
                        {
                            QString title = world.EpisodeTitle;
                            menu.addMenuItem(file, (title.isEmpty()?QFileInfo(file).fileName():title));
                        }
                    }
                    menu.sort();
                }