Четене на настройки от файл
Здравейте,
искам да направя настройките да се четат от файл.
Това което направих за сега:
MonitorConfig.txt
name of the display:Hardwear renderering
display height:800
display width:600
EngineConfigLoader.cpp (не е целия)
const char* MONITOR_CFG_FILE = "../sdl_utils/config/MonitorConfig.txt";
static std::string readConfigFromFile(const int32_t lineNum) {
std::fstream file(MONITOR_CFG_FILE );
if (!file.is_open()) {
std::cerr << "Unable to open config file: " << MONITOR_CFG_FILE << std::endl;
}
std::string configLine;
int32_t currLine = 0;
while (!file.eof()) { // eof -> end of file
std::string discard;
if (currLine == lineNum) {
getline(file, discard, ':'); //delete text before ':'
getline(file, configLine);
//std::cerr << "Line: " << configLine << std::endl;
break;
}
getline(file, discard);
//std::cerr << "Discard: " << discard << std::endl;
currLine++;
}
return configLine;
}
static void populateMonitorConfig(MonitorConfig &outConfig) {
outConfig.windowName = readConfigFromFile(0);
outConfig.windowHeight = stoi(readConfigFromFile(1));
outConfig.windowWidth = stoi(readConfigFromFile(2));
outConfig.windowFlags = WINDOW_SHOWN;
}
И няколко неща не ми харесват или се чудя как да станат:
1. Като станат 100 настройки, while цикъла ще има да си върти докато стигне до 87-мия ред (примерно) за да го вземе. :Х И т. н..
2. Реда на настройките във файла трябва напълно да отговаря на реда, в който съм ги написал в populateMonitorConfig() (или поне номера на реда да отговаря). Това ми се струва бомба със закъснител и отделно трудно за промени..
3. populateMonitorConfig() стана адски нечетима.. :/
Ще продължа да го мисля и преработвам, но ще се радвам да се получи някаква дискусия и да съберем добри идеи :)
Поздрави,
Илиян
Оправих се..
Не бях сменил на всички места където пише SDL_RenderCopy да взема сорс правоъгълник и го бях написал само тук:
if (FULL_OPACITY != drawParams.opacity) {
..
(facepalm)