示例#1
0
void Package::archiveInstall()
{
    LOG(INFO) << "Extracting the package \"" << getConfigVar(PPKPath) << "\" named \"" << getConfigVar(Name) << "\" to \"" 
        << QDir::currentPath().toStdString() + "/Games/" + getConfigVar(Name) << "\".";
    JlCompress::extractDir(QString::fromStdString(getConfigVar(PPKPath)), QDir::currentPath() + "/Games/" + QString::fromStdString(getConfigVar(Name)));
    LOG(INFO) << "Successfully installed package named \"" << getConfigVar(Name) << "\" with version " << getVersion().asString() << ".";
}
示例#2
0
void Package::install()
{
    if(m_packageManager != nullptr)
    {
        //Check if the package already exists. 
        PackagePtr package = m_packageManager->getPackageFromName(getConfigVar(Name));
        
        //Compare the versions if older version exist.
        if(package)
        {
            LOG(INFO) << "The package named \"" << getConfigVar(Name) << "\" is already installed. (Version: " << package->getVersion().asString() << ").";
            packaging::Version oldVersion = package->getVersion();
            if(oldVersion < getVersion())
            {
                LOG(INFO) << "Replacing older version " << package->getVersion().asString() << " of package \"" << getConfigVar(Name) << "\" with newer version " << getVersion().asString() << ".";
            }
            else
            {
                LOG(INFO) << "Replacing newer version " << package->getVersion().asString() << " of package \"" << getConfigVar(Name) << "\" with older version " << getVersion().asString() << ".";
            }
        }
    }
    
    if(flagActive(IsLoadedFromPPK))
    {
        //Install from archive
        archiveInstall();
    }
    else
    {
        //Install from directory
        directoryInstall();
    }
}
示例#3
0
文件: load_save.cpp 项目: and3k5/helm
void LoadSave::saveLayoutConfig(mopo::StringLayout* layout) {
  if (layout == nullptr)
    return;

  var config_var = getConfigVar();
  if (!config_var.isObject())
    config_var = new DynamicObject();

  DynamicObject* config_object = config_var.getDynamicObject();
  DynamicObject* layout_object = new DynamicObject();
  String chromatic_layout;
  wchar_t up_key = L'\0';
  wchar_t down_key = L'\0';

  if (layout) {
    chromatic_layout = String(layout->getLayout().data());
    up_key = layout->getUpKey();
    down_key = layout->getDownKey();
  }
  else {
    chromatic_layout = String(getComputerKeyboardLayout().data());
    std::pair<wchar_t, wchar_t> octave_controls = getComputerKeyboardOctaveControls();
    down_key = octave_controls.first;
    up_key = octave_controls.second;
  }

  layout_object->setProperty("chromatic_layout", chromatic_layout);
  layout_object->setProperty("octave_up", String() + up_key);
  layout_object->setProperty("octave_down", String() + down_key);
  config_object->setProperty("keyboard_layout", layout_object);
  saveVarToConfig(config_object);
}
示例#4
0
文件: Config.cpp 项目: rikigst/POSSIM
// Return int value of charging algorithm
int Config::getChargingAlg() {
    std::string value = getConfigVar("chargingalgorithm");
    if(value.compare("uncontrolled") == 0)
        return 0;
    else if(value.compare("equalshare") == 0)
        return 1;
    else if(value.compare("distributed") == 0)
        return 2;
    else if(value.compare("ergon") == 0)
        return 3;
    else if(value.compare("TOU") == 0)
        return 4;
    else if(value.compare("optimal1") == 0)
        return 5;
    else if(value.compare("optimal2") == 0)
        return 6;
    else if(value.compare("optimal3") == 0)
        return 7;
    else if(value.compare("discrete") == 0)
        return 8;
    else if(value.compare("wplug") == 0)
        return 10;
    else if(value.compare("wplug2") == 0)
        return 11;
    
    return 0;
}
示例#5
0
文件: load_save.cpp 项目: and3k5/helm
void LoadSave::saveMidiMapConfig(MidiManager* midi_manager) {
  MidiManager::midi_map midi_learn_map = midi_manager->getMidiLearnMap();
  var config_var = getConfigVar();
  if (!config_var.isObject())
    config_var = new DynamicObject();

  DynamicObject* config_object = config_var.getDynamicObject();

  Array<var> midi_learn_object;
  for (auto midi_mapping : midi_learn_map) {
    DynamicObject* midi_map_object = new DynamicObject();
    Array<var> midi_destinations_object;

    midi_map_object->setProperty("source", midi_mapping.first);

    for (auto midi_destination : midi_mapping.second) {
      DynamicObject* midi_destination_object = new DynamicObject();

      midi_destination_object->setProperty("destination", String(midi_destination.first));
      midi_destination_object->setProperty("min_range", midi_destination.second.first);
      midi_destination_object->setProperty("max_range", midi_destination.second.second);
      midi_destinations_object.add(midi_destination_object);
    }

    midi_map_object->setProperty("destinations", midi_destinations_object);
    midi_learn_object.add(midi_map_object);
  }

  config_object->setProperty("midi_learn", midi_learn_object);
  saveVarToConfig(config_object);
}
示例#6
0
int ConfigManager::increaseCounter (const std::string& counterId)
{
	const ConfigVarPtr& var = getConfigVar(counterId, "0", true);
	int current = var->getIntValue();
	++current;
	var->setValue(current);
	return current;
}
示例#7
0
文件: Config.cpp 项目: kss-upb/POSSIM
// Some simple input error checking.  Allows config to have e.g. any of the 
// following with same result:  MATLAB, Matlab, matlab, 1.
void Config::correctValues() {
    std::string value = getConfigVar("loadflowsimulator");
    if(value.compare("Testing") == 0 ||
       value.compare("testing") == 0 ||
       value.compare("0") == 0)
        setConfigVar("loadflowsimulator", "testing");
    else if(value.compare("Matlab") == 0 ||
            value.compare("MATLAB") == 0 ||
            value.compare("matlab") == 0 ||
            value.compare("1") == 0)
               setConfigVar("loadflowsimulator", "matlab");
    else if(value.compare("DIGSILENT") == 0 ||
            value.compare("DigSilent") == 0 ||
            value.compare("digsilent") == 0 ||
            value.compare("2") == 0)
               setConfigVar("loadflowsimulator", "digsilent");
    
    value = getConfigVar("chargingalgorithm");
    if(value.compare("Uncontrolled") == 0 ||
       value.compare("uncontrolled") == 0 ||
       value.compare("0") == 0)
        setConfigVar("chargingalgorithm", "uncontrolled");
    else if(value.compare("EqualShare") == 0 ||
            value.compare("equalshare") == 0 ||
            value.compare("1") == 0)
               setConfigVar("chargingalgorithm", "equalshare");
    else if(value.compare("Distributed") == 0 ||
            value.compare("distributed") == 0 ||
            value.compare("2") == 0)
               setConfigVar("chargingalgorithm", "distributed");
    else if(value.compare("TOU") == 0 ||
            value.compare("tou") == 0 ||
            value.compare("4") == 0)
               setConfigVar("chargingalgorithm", "TOU");
    else if(value.compare("OPTIMAL1") == 0 ||
            value.compare("Optimal1") == 0 ||
            value.compare("optimal1") == 0 ||
            value.compare("5") == 0)
               setConfigVar("chargingalgorithm", "optimal1");
    else if(value.compare("OPTIMAL2") == 0 ||
            value.compare("Optimal2") == 0 ||
            value.compare("optimal2") == 0 ||
            value.compare("6") == 0)
               setConfigVar("chargingalgorithm", "optimal2");
}
示例#8
0
文件: load_save.cpp 项目: and3k5/helm
void LoadSave::saveVersionConfig() {
  var config_var = getConfigVar();
  if (!config_var.isObject())
    config_var = new DynamicObject();

  DynamicObject* config_object = config_var.getDynamicObject();
  config_object->setProperty("synth_version", ProjectInfo::versionString);
  saveVarToConfig(config_object);
}
示例#9
0
文件: load_save.cpp 项目: and3k5/helm
void LoadSave::saveAnimateWidgets(bool animate_widgets) {
  var config_var = getConfigVar();
  if (!config_var.isObject())
    config_var = new DynamicObject();

  DynamicObject* config_object = config_var.getDynamicObject();
  config_object->setProperty("animate_widgets", animate_widgets);
  saveVarToConfig(config_object);
}
示例#10
0
文件: Config.cpp 项目: kss-upb/POSSIM
// Return 4-tuple specifying probability distribution to add noise to a given
// parameter.  4-tuple is (mean, std_deviation, max_value, min_value).
double* Config::getRandomParams(std::string name) {
    std::string value = getConfigVar(name);
    std::vector<std::string> tokens;
    utility::tokenize(value, tokens, ",");
    double *vars = new double[4];
    for(int i=0; i<4; i++)
        vars[i] = utility::string2double(tokens.at(i));
    return vars;
}
示例#11
0
文件: load_save.cpp 项目: and3k5/helm
void LoadSave::saveUpdateCheckConfig(bool check_for_updates) {
  var config_var = getConfigVar();
  if (!config_var.isObject())
    config_var = new DynamicObject();

  DynamicObject* config_object = config_var.getDynamicObject();
  config_object->setProperty("check_for_updates", check_for_updates);
  saveVarToConfig(config_object);
}
示例#12
0
void Package::saveToPPK(const std::string &destination)
{
    if(!flagActive(HasName))
    {
        LOG(FATAL) << "Package cannot be created, the package has no name!";
        return;
    }
    if(!flagActive(HasDirectory))
    {
        LOG(FATAL) << "Package \"" << getConfigVar(Name) << "\" has no directory! No PPK/ZIP file can be created without a source.";
        return;
    }
    if(!flagActive(HasAuthor))
    {
        LOG(WARNING) << "The package \"" << getConfigVar(Name) << "\" has no author specified. The author field will be left blank.";
    }
    if(!flagActive(HasVersion))
    {
        LOG(WARNING) << "The package \"" << getConfigVar(Name) << "\" has no version specified! You will not be able to update this package automaticly.";
    }


    YAML::Emitter out;
    out << YAML::BeginMap;

    for(auto &configVar : m_configVars)
    {
        out << YAML::Key << getConfigVarName(configVar.first);
        out << YAML::Value << configVar.second;
    }

    out << YAML::EndMap;

    std::ofstream outConfigFile(getConfigVar(Directory) + "/PackageSpecs.yml");
    outConfigFile << out.c_str();
    outConfigFile.close();

    LOG(INFO) << "Compressing PPK with destination \"" << destination << "\" and source \"" << getConfigVar(Directory) << "\".";

    JlCompress::compressDir(QString::fromStdString(destination),
                            QString::fromStdString(getConfigVar(Directory)),
                            true);
}
示例#13
0
文件: Config.cpp 项目: kss-upb/POSSIM
// If config variable is boolean, get bool value directly
bool Config::getBool(std::string name) {
    std::string value = getConfigVar(name);
    if(value.compare("Yes") == 0  ||
       value.compare("True") == 0 ||
       value.compare("yes") == 0  ||
       value.compare("true") == 0 ||
       value.compare("1") == 0)
        return true;
    return false;
}
示例#14
0
文件: load_save.cpp 项目: and3k5/helm
bool LoadSave::shouldAnimateWidgets() {
  var config_state = getConfigVar();
  DynamicObject* config_object = config_state.getDynamicObject();
  if (!config_state.isObject())
    return true;

  if (!config_object->hasProperty("animate_widgets"))
    return true;

  return config_object->getProperty("animate_widgets");
}
示例#15
0
文件: load_save.cpp 项目: and3k5/helm
bool LoadSave::shouldCheckForUpdates() {
  var config_state = getConfigVar();
  DynamicObject* config_object = config_state.getDynamicObject();
  if (!config_state.isObject())
    return true;

  if (!config_object->hasProperty("check_for_updates"))
    return true;

  return config_object->getProperty("check_for_updates");
}
示例#16
0
文件: Config.cpp 项目: kss-upb/POSSIM
// Return int value of load flow simulation tool
int Config::getLoadFlowSim() {
    std::string value = getConfigVar("loadflowsimulator");
    if(value.compare("testing") == 0)
        return 0;
    else if(value.compare("matlab") == 0)
               return 1;
    else if(value.compare("digsilent") == 0)
               return 2;
    
    return 1;
}
void ConfigManager::setConfig (const ICommand::Args& args)
{
	if (args.size() != 2) {
		Log::error(LOG_CONFIG, "parameters: the config key");
		return;
	}

	Log::info(LOG_CONFIG, "set %s to %s", args[0].c_str(), args[1].c_str());

	ConfigVarPtr p = getConfigVar(args[0]);
	p->setValue(args[1]);
}
示例#18
0
void Package::directoryInstall()
{
    QString srcFilePath = QString::fromStdString(getConfigVar(Directory));
    QString tgtFilePath = QDir::currentPath() + "/Games/" + QString::fromStdString(getConfigVar(Name)); 
    
    LOG(INFO) << "Installing \"" << getConfigVar(Name) << "\" with version " << getVersion().asString() << " from \"" 
        << srcFilePath.toStdString() << "\" to \"" << tgtFilePath.toStdString() << "\".";
    
    QFileInfo srcFileInfo(srcFilePath);
    
    if (srcFileInfo.isDir()) {
        QDir targetDir(tgtFilePath);
        targetDir.cdUp();
        if (!targetDir.mkdir(QFileInfo(tgtFilePath).fileName()))
            LOG(FATAL) << "Install failure: Could not create target directory.";
        QDir sourceDir(srcFilePath);
        QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System);
        Q_FOREACH(const QString &fileName, fileNames) {
            const QString newSrcFilePath
                    = srcFilePath + QLatin1Char('/') + fileName;
            const QString newTgtFilePath
                    = tgtFilePath + QLatin1Char('/') + fileName;
        }
    } else {
示例#19
0
文件: load_save.cpp 项目: and3k5/helm
void LoadSave::loadConfig(MidiManager* midi_manager, mopo::StringLayout* layout) {
  var config_var = getConfigVar();
  if (!config_var.isObject())
    config_var = new DynamicObject();

  DynamicObject* config_object = config_var.getDynamicObject();
  NamedValueSet config_properties = config_object->getProperties();

  // Computer Keyboard Layout
  if (layout) {
    layout->setLayout(getComputerKeyboardLayout());
    std::pair<wchar_t, wchar_t> octave_controls = getComputerKeyboardOctaveControls();
    layout->setDownKey(octave_controls.first);
    layout->setUpKey(octave_controls.second);
  }

  // Midi Learn Map
  if (config_properties.contains("midi_learn")) {
    MidiManager::midi_map midi_learn_map = midi_manager->getMidiLearnMap();

    Array<var>* midi_learn = config_properties["midi_learn"].getArray();
    var* midi_source = midi_learn->begin();

    for (; midi_source != midi_learn->end(); ++midi_source) {
      DynamicObject* source_object = midi_source->getDynamicObject();
      int source = source_object->getProperty("source");

      if (source_object->hasProperty("destinations")) {
        Array<var>* destinations = source_object->getProperty("destinations").getArray();
        var* midi_destination = destinations->begin();

        for (; midi_destination != destinations->end(); ++midi_destination) {
          DynamicObject* destination_object = midi_destination->getDynamicObject();

          String destination_name = destination_object->getProperty("destination").toString();
          mopo::mopo_float min_range = destination_object->getProperty("min_range");
          mopo::mopo_float max_range = destination_object->getProperty("max_range");

          midi_learn_map[source][destination_name.toStdString()] =
              MidiManager::midi_range(min_range, max_range);
        }
      }
    }
    midi_manager->setMidiLearnMap(midi_learn_map);
  }
}
示例#20
0
文件: load_save.cpp 项目: and3k5/helm
std::pair<wchar_t, wchar_t> LoadSave::getComputerKeyboardOctaveControls() {
  std::pair<wchar_t, wchar_t> octave_controls(mopo::DEFAULT_KEYBOARD_OCTAVE_DOWN,
                                              mopo::DEFAULT_KEYBOARD_OCTAVE_UP);
  var config_state = getConfigVar();
  if (config_state.isVoid())
    return octave_controls;

  DynamicObject* config_object = config_state.getDynamicObject();
  NamedValueSet config_properties = config_object->getProperties();

  if (config_properties.contains("keyboard_layout")) {
    DynamicObject* layout = config_properties["keyboard_layout"].getDynamicObject();
    octave_controls.first = layout->getProperty("octave_down").toString()[0];
    octave_controls.second = layout->getProperty("octave_up").toString()[0];
  }

  return octave_controls;
}
示例#21
0
文件: load_save.cpp 项目: and3k5/helm
std::wstring LoadSave::getComputerKeyboardLayout() {
  var config_state = getConfigVar();

  if (config_state.isVoid())
    return mopo::DEFAULT_KEYBOARD;

  DynamicObject* config_object = config_state.getDynamicObject();
  NamedValueSet config_properties = config_object->getProperties();

  if (config_properties.contains("keyboard_layout")) {
    DynamicObject* layout = config_properties["keyboard_layout"].getDynamicObject();

    if (layout->hasProperty("chromatic_layout"))
      return layout->getProperty("chromatic_layout").toString().toWideCharPointer();
  }

  return mopo::DEFAULT_KEYBOARD;
}
示例#22
0
文件: load_save.cpp 项目: and3k5/helm
bool LoadSave::wasUpgraded() {
  var config_state = getConfigVar();
  DynamicObject* config_object = config_state.getDynamicObject();
  if (!config_state.isObject())
    return true;

  if (!config_object->hasProperty("synth_version"))
    return true;

  Array<File> patches;
  String extension = String("*.") + mopo::PATCH_EXTENSION;
  getBankDirectory().findChildFiles(patches, File::findFiles, true, extension);
  if (patches.size() == 0)
    return true;

  return compareVersionStrings(config_object->getProperty("synth_version"),
                               ProjectInfo::versionString) < 0;
}
ConfigVarPtr ConfigManager::getConfigValue (KeyValueMap &map, const std::string& name, const std::string& defaultValue, unsigned int flags)
{
	const std::string& savedValue = _persister->getValue(name);
	std::string val = savedValue;
	if (val.empty()) {
		KeyValueMap::iterator i = map.find(name);
		if (i != map.end()) {
			val = i->second;
			map.erase(i);
		}
	}
	if (val.empty())
		val = defaultValue;

	if (!savedValue.empty())
		Log::info(LOG_CONFIG, "use stored value '%s' for key '%s'", val.c_str(), name.c_str());
	else
		Log::info(LOG_CONFIG, "use value '%s' for key '%s'", val.c_str(), name.c_str());
	const ConfigVarPtr& p = getConfigVar(name, val, true, flags);
	return p;
}
示例#24
0
ConfigVarPtr ConfigManager::getConfigValue (KeyValueMap &map, const std::string& name, const std::string& defaultValue, unsigned int flags)
{
	// we need this no-persist check here, because this wasn't available in every version
	const std::string savedValue = (flags & CV_NOPERSIST) != 0 ? "" : _persister->getValue(name);
	std::string val = savedValue;
	if (val.empty()) {
		KeyValueMap::iterator i = map.find(name);
		if (i != map.end()) {
			val = i->second;
			map.erase(i);
		}
	}
	if (val.empty())
		val = defaultValue;

	if (!savedValue.empty())
		Log::info(LOG_COMMON, "use stored value '%s' for key '%s'", val.c_str(), name.c_str());
	else
		Log::info(LOG_COMMON, "use value '%s' for key '%s'", val.c_str(), name.c_str());
	const ConfigVarPtr& p = getConfigVar(name, val, true, flags);
	return p;
}
示例#25
0
void ConfigManager::init (IBindingSpaceListener *bindingSpaceListener, int argc, char **argv)
{
	_persister = new ConfigPersisterSQL(System.getDatabaseDirectory() + Singleton<Application>::getInstance().getName() + ".sqlite");
	Log::info(LOG_COMMON, "init configmanager");

	_persister->init();

	_bindingSpaceListener = bindingSpaceListener;

	LUA lua;

	Log::info(LOG_COMMON, "load config lua file");
	const bool success = lua.load("config.lua");
	if (!success) {
		Log::error(LOG_COMMON, "could not load config");
	}

	if (success) {
		Log::info(LOG_COMMON, "load config values");
		getKeyValueMap(lua, _configVarMap, "settings");
		Log::info(LOG_COMMON, "load keybindings");
		getBindingMap(lua, _keybindings, KEY_CONFIG_KEYBINDINGS, KEYBOARD);
		Log::info(LOG_COMMON, "load controller bindings");
		getBindingMap(lua, _controllerBindings, KEY_CONFIG_CONTROLLERBINDINGS, CONTROLLER);
	}
	_language = getConfigValue(_configVarMap, "language", System.getLanguage());
	_gameController = getConfigValue(_configVarMap, "gamecontroller");
	_gameControllerTriggerAxis = getConfigValue(_configVarMap, "gamecontrollertriggeraxis");
	_showFPS = getConfigValue(_configVarMap, "showfps");
	_width = getConfigValue(_configVarMap, "width", "-1");
	_height = getConfigValue(_configVarMap, "height", "-1");
	_fullscreen = getConfigValue(_configVarMap, "fullscreen", "true");
	_soundEnabled = getConfigValue(_configVarMap, "sound");
	_port = getConfigValue(_configVarMap, "port", "4567");
	_debug = getConfigValue(_configVarMap, "debug", "false");
#ifdef NONETWORK
	_network = getConfigValue(_configVarMap, "network", "false");
#else
	_network = getConfigValue(_configVarMap, "network", "true");
#endif
	_vsync = getConfigValue(_configVarMap, "vsync", "true");
	_textureSize = getConfigValue(_configVarMap, "texturesize", "auto");
	_grabMouse = getConfigValue(_configVarMap, "grabmouse", "true");
	_soundEngine = getConfigValue(_configVarMap, "soundengine", "sdl");
	_particles = getConfigValue(_configVarMap, "particles", "0");
	_renderToTexture = getConfigValue(_configVarMap, "rendertotexture", "1");
	getConfigValue(_configVarMap, "red", "8");
	getConfigValue(_configVarMap, "green", "8");
	getConfigValue(_configVarMap, "blue", "8");
	_serverName = getConfigVar("servername", System.getCurrentUser());
	_name = getConfigVar("name", System.getCurrentUser());
	_debugui = getConfigVar("debugui", "false");
	_debugEntity = getConfigVar("debugentity", "false", true);
	getConfigVar("alreadyrated", "false", true);
	_mode = getConfigValue(_configVarMap, "mode", "");

#if 0
	// disabled because the vars must be created on access - to set the flags properly
	for (KeyValueMap::iterator i = _configVarMap.begin(); i != _configVarMap.end(); ++i) {
		getConfigVar(i->first, i->second, true);
	}

	std::vector<std::string> vars;
	_persister->getVars(vars);
	for (std::vector<std::string>::const_iterator i = vars.begin(); i != vars.end(); ++i) {
		getConfigVar(*i);
	}
	for (auto entry : _configVars) {
		Log::info(LOG_COMMON, "'%s' with value '%s'", entry.first.c_str(), entry.second->getValue().c_str());
	}
#endif

	memset(&_debugRendererData, 0, sizeof(_debugRendererData));

	Log::info(LOG_COMMON, "mouse grab enabled: %s", _grabMouse->getValue().c_str());
	Log::info(LOG_COMMON, "controller enabled: %s", _gameController->getValue().c_str());
	Log::info(LOG_COMMON, "     sound enabled: %s", _soundEnabled->getValue().c_str());
	Log::info(LOG_COMMON, "     debug enabled: %s", _debug->getValue().c_str());

	Commands.registerCommand("loglevel", bindFunction(ConfigManager::setLogLevel));
	CommandPtr cmd = Commands.registerCommand(CMD_SETVAR, bindFunction(ConfigManager::setConfig));
	cmd->setCompleter([&] (const std::string& input, std::vector<std::string>& matches) {
		for (auto entry : _configVars) {
			if (!string::startsWith(entry.first, input))
				continue;
			matches.push_back(entry.first);
		}
	});

	Commands.registerCommand(CMD_LISTVARS, bindFunction(ConfigManager::listConfigVariables));

	for (int i = 0; i < argc; i++) {
		if (argv[i][0] != '-')
			continue;
		const std::string command = &argv[i][1];
		if (command == CMD_SETVAR) {
			if (i + 2 >= argc)
				continue;
			const std::string var = argv[i + 1];
			const std::string val = argv[i + 2];
			ConfigVarPtr p = getConfigVar(var);
			p->setValue(val);
			*argv[i] = *argv[i + 1] = *argv[i + 2] = '\0';
			i += 2;
		} else if (command == "loglevel") {
			if (i + 1 >= argc)
				continue;
			ICommand::Args a;
			a.push_back(argv[i + 1]);
			setLogLevel(a);
			*argv[i] = *argv[i + 1] = '\0';
			i += 1;
		}
	}
	increaseCounter("launchcount");
	_persister->save(_configVars);
}
示例#26
0
文件: Config.cpp 项目: kss-upb/POSSIM
// If config variable is int, get int value directly
int Config::getInt(std::string name) {
    std::string value = getConfigVar(name);
    return utility::string2int(value);
}
示例#27
0
文件: Config.cpp 项目: kss-upb/POSSIM
// If config variable is double, get double value directly
double Config::getDouble(std::string name) {
    std::string value = getConfigVar(name);
    return utility::string2double(value);
}
示例#28
0
文件: Config.cpp 项目: kss-upb/POSSIM
// If config variable is string, get string value directly
std::string Config::getString(std::string name) {
    return getConfigVar(name);
}
void ConfigManager::init (IBindingSpaceListener *bindingSpaceListener, int argc, char **argv)
{
	_persister = new ConfigPersisterSQL();
	Log::info(LOG_CONFIG, "init configmanager");

	_persister->init();

	_bindingSpaceListener = bindingSpaceListener;

	LUA lua;

	Log::info(LOG_CONFIG, "load config lua file");
	const bool success = lua.load("config.lua");
	if (!success) {
		Log::error(LOG_CONFIG, "could not load config");
	}

	if (success) {
		Log::info(LOG_CONFIG, "load config values");
		getKeyValueMap(lua, _configVarMap, "settings");
		Log::info(LOG_CONFIG, "load keybindings");
		getBindingMap(lua, _keybindings, KEY_CONFIG_KEYBINDINGS, KEYBOARD);
		Log::info(LOG_CONFIG, "load controller bindings");
		getBindingMap(lua, _controllerBindings, KEY_CONFIG_CONTROLLERBINDINGS, CONTROLLER);
		Log::info(LOG_CONFIG, "load joystick bindings");
		getBindingMap(lua, _joystickBindings, KEY_CONFIG_JOYSTICKBINDINGS, JOYSTICK);
	}
	_language = getConfigValue(_configVarMap, "language", System.getLanguage());
	_joystick = getConfigValue(_configVarMap, "joystick");
	_showFPS = getConfigValue(_configVarMap, "showfps");
	_width = getConfigValue(_configVarMap, "width", "-1");
	_height = getConfigValue(_configVarMap, "height", "-1");
	_fullscreen = getConfigValue(_configVarMap, "fullscreen", "true");
	_soundEnabled = getConfigValue(_configVarMap, "sound");
	_port = getConfigValue(_configVarMap, "port", "4567");
	_debug = getConfigValue(_configVarMap, "debug", "false");
#ifdef NONETWORK
	_network = getConfigValue(_configVarMap, "network", "false");
#else
	_network = getConfigValue(_configVarMap, "network", "true");
#endif
	_vsync = getConfigValue(_configVarMap, "vsync", "true");
	_textureSize = getConfigValue(_configVarMap, "texturesize", "auto");
	_maxHitpoints = getConfigValue(_configVarMap, "maxhitpoints", "100");
	_damageThreshold = getConfigValue(_configVarMap, "damagethreshold", "0.3");
	_referenceTimeFactor = getConfigValue(_configVarMap, "referencetimefactor", "1.0");
	_fruitCollectDelayForANewLife = getConfigValue(_configVarMap, "fruitcollectdelayforanewlife", "15000");
	_amountOfFruitsForANewLife = getConfigValue(_configVarMap, "amountoffruitsforanewlife", "4");
	_fruitHitpoints = getConfigValue(_configVarMap, "fruithitpoints", "10");
	_npcFlyingSpeed = getConfigValue(_configVarMap, "npcflyingspeed", "4.0");
	_mode = getConfigValue(_configVarMap, "mode", "");
	_waterParticle = getConfigValue(_configVarMap, "waterparticle", "false", CV_READONLY);
	_grabMouse = getConfigValue(_configVarMap, "grabmouse", "true");
	_soundEngine = getConfigValue(_configVarMap, "soundengine", "sdl");
	_particles = getConfigValue(_configVarMap, "particles", "0");
	_serverName = getConfigVar("servername", System.getCurrentUser());
	_name = getConfigVar("name", System.getCurrentUser());
	_amountOfFruitsForANewLife = getConfigValue(_configVarMap, "amountoffruitsforanewlife", "4");
	_debugui = getConfigVar("debugui", "false");
	getConfigVar("debugentity", "false", true);
	getConfigVar("debugui", "false", true);

	for (KeyValueMap::iterator i = _configVarMap.begin(); i != _configVarMap.end(); ++i) {
		getConfigVar(i->first, i->second, true);
	}

	std::vector<std::string> vars;
	_persister->getVars(vars);
	for (std::vector<std::string>::const_iterator i = vars.begin(); i != vars.end(); ++i) {
		getConfigVar(*i);
	}
	for (ConfigVarsMap::iterator i = _configVars.begin(); i != _configVars.end(); ++i) {
		Log::info(LOG_CONFIG, "'%s' with value '%s'", i->first.c_str(), i->second->getValue().c_str());
	}

	memset(&_debugRendererData, 0, sizeof(_debugRendererData));

	Log::info(LOG_CONFIG, "mouse grab enabled: %s", _grabMouse->getValue().c_str());
	Log::info(LOG_CONFIG, "  joystick enabled: %s", _joystick->getValue().c_str());
	Log::info(LOG_CONFIG, "     sound enabled: %s", _soundEnabled->getValue().c_str());
	Log::info(LOG_CONFIG, "     debug enabled: %s", _debug->getValue().c_str());

	CommandSystem::get().registerCommand("loglevel", bindFunction(ConfigManager, setLogLevel));
	CommandSystem::get().registerCommand(CMD_SETVAR, bindFunction(ConfigManager, setConfig));
	CommandSystem::get().registerCommand(CMD_LISTVARS, bindFunction(ConfigManager, listConfigVariables));

	for (int i = 0; i < argc; i++) {
		if (argv[i][0] != '-')
			continue;
		const std::string command = &argv[i][1];
		if (command != CMD_SETVAR)
			continue;
		if (i + 2 >= argc)
			continue;
		const std::string var = argv[i + 1];
		const std::string val = argv[i + 2];
		ConfigVarPtr p = getConfigVar(var);
		p->setValue(val);
		*argv[i] = *argv[i + 1] = *argv[i + 2] = '\0';
		i += 2;
	}
}