Пример #1
0
int main(int argc, char *argv[])
{
    // Standard options
    opt::options_description action_options("Action Options");
    action_options.add_options()
        ("help", "display help")
        ("lj", "display list of active jobs")
        ("jb", opt::value<std::string>(), "PROJECT")
        ("lt", "display list of tasks")
        ("ln", "display list of nodes")
        ("kill", "kill specified job, layer, or tasks")
        ;

    // Query Options
    opt::options_description query_options("Query Options");
    query_options.add_options()
        ("job,j", opt::value<std::string>(), "JOB NAME")
        ("layer,l", opt::value<std::string>(), "LAYER NAME")
        ("task,t", opt::value<std::string>(), "TASK NAME")
        ;

    // Standard options
    opt::options_description all_options;
    all_options.add(action_options).add(query_options);

    try 
    {
        opt::variables_map vm;
        opt::store(
            opt::command_line_parser(argc, argv)
            .options(all_options)
            .style (opt::command_line_style::default_style |
                    opt::command_line_style::allow_long_disguise)
            .run(), vm);
        opt::notify(vm);    

        if (vm.count("help"))
        {
            std::cout << all_options << "\n";
            return 1;
        }

        if (vm.count("lj"))
        {
            Spade::display_job_list();
        }
        else if (vm.count("lt"))
        {
            if (vm.count("job"))
            {
                Spade::display_task_list(vm["job"].as<std::string>());
            }
            else
            {
                std::cerr << "ERROR: You must specify at least a job when listing tasks." << std::endl;
            }
        }
        else if (vm.count("jb"))
        {
            Spade::display_job_board(vm["jb"].as<std::string>());

        }
        else if (vm.count("ln"))
        {
            Spade::display_node_list();
        }
        else if (vm.count("kill"))
        {

            if (vm.count("job") && !vm.count("layer") && !vm.count("task"))
            {
                Spade::killJob(vm["job"].as<std::string>());
            }
        }

    }
    catch(const opt::error& e) 
    { 
        std::cerr << "ERROR: " << e.what() << std::endl << std::endl; 
        std::cerr << all_options << std::endl; 
        return COMMAND_LINE_ERROR; 
    }
    catch(const std::exception& ex)
    {
        std::cerr << "ERROR: " << ex.what() << std::endl << std::endl; 
        std::cerr << all_options << std::endl; 
        return COMMAND_LINE_ERROR;    
    }

    return COMMAND_LINE_SUCCESS;
}
Пример #2
0
void click_button(GUI *B)
{
	if(B->disabled)
		return;

	switch(B->action)
	{
		case ACTION_NEWGAME:
		{
			action_newgame();
			break;
		}
		case ACTION_EXIT:
		{
			action_exit();
			break;
		}
		case ACTION_RESUME:
		{
			action_resume();
			break;
		}
		case ACTION_OPTIONS:
		{
			action_options();
			break;
		}
		case ACTION_RETURNMENU:
		{
			action_returnmenu();
			break;
		}
		case ACTION_CREDITS:
		{
			action_credits();
			break;
		}
		case ACTION_SHIPSELECT_STORY:
		{
			game_mode = MODE_STORY;
			action_shipselect();
			break;
		}
		case ACTION_SHIPSELECT_SURVIVAL:
		{
			game_mode = MODE_SURVIVAL;
			action_shipselect();
			break;
		}
		case ACTION_RESTART:
		{
			action_restartlevel();
			break;
		}

		case OPTION_DIFFICULTY:
		{
			if(!strcmp(B->text, ">"))
			{
				config[CFG_DIFFICULTY]++;
				if(config[CFG_DIFFICULTY] > DIFF_IMPOSSIBLE)
					config[CFG_DIFFICULTY] = DIFF_EASY;
			}
			else
			{
				config[CFG_DIFFICULTY]--;
				if(config[CFG_DIFFICULTY] < DIFF_EASY)
					config[CFG_DIFFICULTY] = DIFF_IMPOSSIBLE;
			}
			break;
		}
		case OPTION_CONTROLSTYLE:
		{
			config[CFG_ABSOLUTE_CONTROL] = !config[CFG_ABSOLUTE_CONTROL];
			break;
		}
		case OPTION_MOUSEWHEEL:
		{
			config[CFG_MOUSE_WHEEL] = !config[CFG_MOUSE_WHEEL];
			break;
		}
		case OPTION_SOUNDVOLUME:
		{
			if(!strcmp(B->text, ">"))
			{
				if(config[CFG_SFX_VOLUME] < 250)
					config[CFG_SFX_VOLUME] += 25;
			}
			else
			{
				if(config[CFG_SFX_VOLUME] > 0)
					config[CFG_SFX_VOLUME] -= 25;
			}
			break;
		}
		case OPTION_MUSICVOLUME:
		{
			if(!strcmp(B->text, ">"))
			{
				if(config[CFG_MUSIC_VOLUME] < 250)
					config[CFG_MUSIC_VOLUME] += 25;
			}
			else
			{
				if(config[CFG_MUSIC_VOLUME] > 0)
					config[CFG_MUSIC_VOLUME] -= 25;
			}
			FSOUND_SetSFXMasterVolume( config[CFG_MUSIC_VOLUME]);
			break;
		}
		case OPTION_FULLSCREEN:
		{
			config[CFG_FULLSCREEN] = !config[CFG_FULLSCREEN];
			break;
		}
		case OPTION_BLENDING:
		{
			config[CFG_PARTICLE_BLENDING] = !config[CFG_PARTICLE_BLENDING];
			break;
		}
		case OPTION_MEMBRANES:
		{
			config[CFG_SHOW_MEMBRANES] = !config[CFG_SHOW_MEMBRANES];
			break;
		}
		case OPTION_LIGHTFLASHES:
		{
			config[CFG_LIGHT_FLASHES] = !config[CFG_LIGHT_FLASHES];
			break;
		}
		case OPTION_SHIPSELECT:
		{
			if(!strcmp(B->text, ">"))
			{
				player->playerdata.shiptype++;
				if(player->playerdata.shiptype > 5)
					player->playerdata.shiptype = 1;
				set_ship_type(player->playerdata.shiptype);
			}
			else
			{
				player->playerdata.shiptype--;
				if(player->playerdata.shiptype < 1)
					player->playerdata.shiptype = 5;
				set_ship_type(player->playerdata.shiptype);
			}
			break;
		}
		default:
			return;
	}
	play_sample(select_sound, config[CFG_SFX_VOLUME], 128, 1000, 0);
}