File diff r24216:bee2183ce93e → r24217:df2f5854f1e3
src/openttd.cpp
Show inline comments
 
@@ -537,9 +537,9 @@ int openttd_main(int argc, char *argv[])
 
	char *sounddriver = nullptr;
 
	char *videodriver = nullptr;
 
	char *blitter = nullptr;
 
	char *graphics_set = nullptr;
 
	char *sounds_set = nullptr;
 
	char *music_set = nullptr;
 
	std::string graphics_set;
 
	std::string sounds_set;
 
	std::string music_set;
 
	Dimension resolution = {0, 0};
 
	/* AfterNewGRFScan sets save_config to true after scanning completed. */
 
	bool save_config = false;
 
@@ -563,9 +563,9 @@ int openttd_main(int argc, char *argv[])
 
	int i;
 
	while ((i = mgo.GetOpt()) != -1) {
 
		switch (i) {
 
		case 'I': free(graphics_set); graphics_set = stredup(mgo.opt); break;
 
		case 'S': free(sounds_set); sounds_set = stredup(mgo.opt); break;
 
		case 'M': free(music_set); music_set = stredup(mgo.opt); break;
 
		case 'I': graphics_set = mgo.opt; break;
 
		case 'S': sounds_set = mgo.opt; break;
 
		case 'M': music_set = mgo.opt; break;
 
		case 'm': free(musicdriver); musicdriver = stredup(mgo.opt); break;
 
		case 's': free(sounddriver); sounddriver = stredup(mgo.opt); break;
 
		case 'v': free(videodriver); videodriver = stredup(mgo.opt); break;
 
@@ -731,17 +731,16 @@ int openttd_main(int argc, char *argv[])
 
	InitWindowSystem();
 

	
 
	BaseGraphics::FindSets();
 
	if (graphics_set == nullptr && BaseGraphics::ini_set != nullptr) graphics_set = stredup(BaseGraphics::ini_set);
 
	if (graphics_set.empty() && !BaseGraphics::ini_set.empty()) graphics_set = BaseGraphics::ini_set;
 
	if (!BaseGraphics::SetSet(graphics_set)) {
 
		if (!StrEmpty(graphics_set)) {
 
			BaseGraphics::SetSet(nullptr);
 
		if (!graphics_set.empty()) {
 
			BaseGraphics::SetSet({});
 

	
 
			ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND);
 
			msg.SetDParamStr(0, graphics_set);
 
			msg.SetDParamStr(0, graphics_set.c_str());
 
			ScheduleErrorMessage(msg);
 
		}
 
	}
 
	free(graphics_set);
 

	
 
	/* Initialize game palette */
 
	GfxInitPalettes();
 
@@ -802,30 +801,28 @@ int openttd_main(int argc, char *argv[])
 
	InitializeScreenshotFormats();
 

	
 
	BaseSounds::FindSets();
 
	if (sounds_set == nullptr && BaseSounds::ini_set != nullptr) sounds_set = stredup(BaseSounds::ini_set);
 
	if (sounds_set.empty() && !BaseSounds::ini_set.empty()) sounds_set = BaseSounds::ini_set;
 
	if (!BaseSounds::SetSet(sounds_set)) {
 
		if (StrEmpty(sounds_set) || !BaseSounds::SetSet(nullptr)) {
 
		if (sounds_set.empty() || !BaseSounds::SetSet({})) {
 
			usererror("Failed to find a sounds set. Please acquire a sounds set for OpenTTD. See section 1.4 of README.md.");
 
		} else {
 
			ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND);
 
			msg.SetDParamStr(0, sounds_set);
 
			msg.SetDParamStr(0, sounds_set.c_str());
 
			ScheduleErrorMessage(msg);
 
		}
 
	}
 
	free(sounds_set);
 

	
 
	BaseMusic::FindSets();
 
	if (music_set == nullptr && BaseMusic::ini_set != nullptr) music_set = stredup(BaseMusic::ini_set);
 
	if (music_set.empty() && !BaseMusic::ini_set.empty()) music_set = BaseMusic::ini_set;
 
	if (!BaseMusic::SetSet(music_set)) {
 
		if (StrEmpty(music_set) || !BaseMusic::SetSet(nullptr)) {
 
		if (music_set.empty() || !BaseMusic::SetSet({})) {
 
			usererror("Failed to find a music set. Please acquire a music set for OpenTTD. See section 1.4 of README.md.");
 
		} else {
 
			ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND);
 
			msg.SetDParamStr(0, music_set);
 
			msg.SetDParamStr(0, music_set.c_str());
 
			ScheduleErrorMessage(msg);
 
		}
 
	}
 
	free(music_set);
 

	
 
	if (sounddriver == nullptr && _ini_sounddriver != nullptr) sounddriver = stredup(_ini_sounddriver);
 
	DriverFactoryBase::SelectDriver(sounddriver, Driver::DT_SOUND);
 
@@ -875,22 +872,15 @@ int openttd_main(int argc, char *argv[])
 

	
 
exit_noshutdown:
 
	/* These three are normally freed before bootstrap. */
 
	free(graphics_set);
 
	free(videodriver);
 
	free(blitter);
 

	
 
exit_bootstrap:
 
	/* These are normally freed before exit, but after bootstrap. */
 
	free(sounds_set);
 
	free(music_set);
 
	free(musicdriver);
 
	free(sounddriver);
 

	
 
exit_normal:
 
	free(BaseGraphics::ini_set);
 
	free(BaseSounds::ini_set);
 
	free(BaseMusic::ini_set);
 

	
 
	free(_ini_musicdriver);
 
	free(_ini_sounddriver);
 
	free(_ini_videodriver);
 
@@ -1142,9 +1132,9 @@ void SwitchToMode(SwitchMode new_mode)
 

	
 
		case SM_MENU: // Switch to game intro menu
 
			LoadIntroGame();
 
			if (BaseSounds::ini_set == nullptr && BaseSounds::GetUsedSet()->fallback) {
 
			if (BaseSounds::ini_set.empty() && BaseSounds::GetUsedSet()->fallback) {
 
				ShowErrorMessage(STR_WARNING_FALLBACK_SOUNDSET, INVALID_STRING_ID, WL_CRITICAL);
 
				BaseSounds::ini_set = stredup(BaseSounds::GetUsedSet()->name);
 
				BaseSounds::ini_set = BaseSounds::GetUsedSet()->name;
 
			}
 
			break;