Skip to content
Snippets Groups Projects
Commit 158d5aa7 authored by Armin Co's avatar Armin Co
Browse files

Configuration for the game.

Initial commit.
parent d7427642
No related branches found
No related tags found
No related merge requests found
///
/// @file Config.cpp
/// @author Armin Co
///
#include "Config.hpp"
#include<iostream>
#include<fstream>
Config::Config(std::string filename)
: m_filename{ filename }
{
std::ifstream file(m_filename);
while (file)
{
std::string key;
std::getline(file, key, '\n');
std::string value;
std::getline(file, value, '\n');
Setting s = fromStr(key);
if (s != Setting::None)
{
m_configs[s] = value;
}
else
{
std::cout << "The setting \"" << key << "\" is unknown!" << std::endl;
}
}
}
\ No newline at end of file
///
/// @file Config.hpp
/// @author Armin Co
/// @brief Load configuration form a file and make it available.
///
#ifndef QPONG_CONFIG_HPP
#define QPONG_CONFIG_HPP
#include<string>
#include<map>
#include<vector>
enum class Setting
{
// Array configuration
ArrayWidth,
ArrayHeight,
// Initial particle settings
MomentumX,
MomentumY,
PosX,
PosY,
None
};
const char* toStr(Setting setting)
{
switch (setting)
{
case Setting::ArrayHeight : return "ArrayHeight"; break;
case Setting::ArrayWidth : return "ArrayWidth"; break;
case Setting::MomentumX : return "MomentumX"; break;
case Setting::MomentumY : return "MomentumY"; break;
case Setting::PosX : return "PosX"; break;
case Setting::PosY : return "PosY"; break;
case Setting::None : return "None"; break;
}
}
Setting fromStr(std::string s)
{
if (s == "ArrayWidth") return Setting::ArrayWidth;
if (s == "ArrayHeight") return Setting::ArrayHeight;
if (s == "MomentumX") return Setting::MomentumX;
if (s == "MomentumY") return Setting::MomentumY;
if (s == "PosX") return Setting::PosX;
if (s == "PosY") return Setting::PosY;
return Setting::None;
}
class Config
{
public:
Config(std::string filename);
void loadFrom(std::string filename);
void saveTo(std::string filename);
std::string& getFilename();
void changeSetting(Setting setting, std::string& value);
std::string& getSetting(Setting setting);
private:
std::string m_filename;
std::map<Setting, std::string> m_configs;
};
#endif
\ No newline at end of file
ArrayWidth=384
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment