Bad fix for changing video depth resetting all settings to zero
This commit is contained in:
@@ -47,6 +47,7 @@ Point _right_button_down_pos; ///< Pos of right mouse button click, for drag and
|
|||||||
DrawPixelInfo _screen;
|
DrawPixelInfo _screen;
|
||||||
bool _screen_disable_anim = false; ///< Disable palette animation (important for 32bpp-anim blitter during giant screenshot)
|
bool _screen_disable_anim = false; ///< Disable palette animation (important for 32bpp-anim blitter during giant screenshot)
|
||||||
bool _exit_game;
|
bool _exit_game;
|
||||||
|
bool _restart_game;
|
||||||
GameMode _game_mode;
|
GameMode _game_mode;
|
||||||
SwitchMode _switch_mode; ///< The next mainloop command.
|
SwitchMode _switch_mode; ///< The next mainloop command.
|
||||||
PauseModeByte _pause_mode;
|
PauseModeByte _pause_mode;
|
||||||
|
|||||||
@@ -491,6 +491,20 @@ struct AfterNewGRFScan : NewGRFScanCallback {
|
|||||||
}
|
}
|
||||||
#endif /* ENABLE_NETWORK */
|
#endif /* ENABLE_NETWORK */
|
||||||
|
|
||||||
|
// TODO: remove this hack in one year
|
||||||
|
// Check if OpenTTD config is broken by blitter changing code
|
||||||
|
static bool checked = false;
|
||||||
|
DEBUG(misc, 0, "========= Limits for vehicles: %d %d %d %d", _settings_newgame.vehicle.max_trains, _settings_newgame.vehicle.max_roadveh, _settings_newgame.vehicle.max_aircraft, _settings_newgame.vehicle.max_ships);
|
||||||
|
if (!checked &&
|
||||||
|
_settings_newgame.vehicle.max_trains == 0 && _settings_newgame.vehicle.max_roadveh == 0 &&
|
||||||
|
_settings_newgame.vehicle.max_aircraft == 0 && _settings_newgame.vehicle.max_ships == 0) {
|
||||||
|
unlink("libsdl-DownloadFinished-1.flag");
|
||||||
|
//_exit_game = true;
|
||||||
|
//_restart_game = true;
|
||||||
|
abort(); // Kill myself with contempt, user will restart the app, because otherwise we enter infinite restart loop
|
||||||
|
}
|
||||||
|
checked = true;
|
||||||
|
|
||||||
/* After the scan we're not used anymore. */
|
/* After the scan we're not used anymore. */
|
||||||
delete this;
|
delete this;
|
||||||
}
|
}
|
||||||
@@ -925,6 +939,13 @@ exit_normal:
|
|||||||
}
|
}
|
||||||
#endif /* ENABLE_NETWORK */
|
#endif /* ENABLE_NETWORK */
|
||||||
|
|
||||||
|
if (_restart_game) {
|
||||||
|
#ifdef __ANDROID__
|
||||||
|
// This makes OpenTTD reset all it's settings for some reason. Just abort and pretend we crashed
|
||||||
|
//SDL_ANDROID_RestartMyself("restart-settings");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ enum DisplayOptions {
|
|||||||
extern GameMode _game_mode;
|
extern GameMode _game_mode;
|
||||||
extern SwitchMode _switch_mode;
|
extern SwitchMode _switch_mode;
|
||||||
extern bool _exit_game;
|
extern bool _exit_game;
|
||||||
|
extern bool _restart_game;
|
||||||
|
|
||||||
/** Modes of pausing we've got */
|
/** Modes of pausing we've got */
|
||||||
enum PauseMode {
|
enum PauseMode {
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ struct GameOptionsWindow : Window {
|
|||||||
{
|
{
|
||||||
DeleteWindowById(WC_CUSTOM_CURRENCY, 0);
|
DeleteWindowById(WC_CUSTOM_CURRENCY, 0);
|
||||||
if (this->reload) _switch_mode = SM_MENU;
|
if (this->reload) _switch_mode = SM_MENU;
|
||||||
SaveToConfig(); // save all settins immediately on Android, because users tend to kill the app instead of pressing 'Quit' button
|
if (!_exit_game) SaveToConfig(); // Save all settings immediately on Android, because users tend to kill the app instead of pressing 'Quit' button
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -494,10 +494,10 @@ struct GameOptionsWindow : Window {
|
|||||||
if (this->IsWidgetLowered(WID_GO_8BPP_BUTTON)) break;
|
if (this->IsWidgetLowered(WID_GO_8BPP_BUTTON)) break;
|
||||||
free(_ini_blitter);
|
free(_ini_blitter);
|
||||||
_ini_blitter = stredup("8bpp-optimized");
|
_ini_blitter = stredup("8bpp-optimized");
|
||||||
SaveToConfig();
|
_exit_game = true;
|
||||||
|
_restart_game = true;
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 16);
|
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 16);
|
||||||
SDL_ANDROID_RestartMyself("restart-settings"); // We terminate here, no need to update widget state
|
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -505,10 +505,10 @@ struct GameOptionsWindow : Window {
|
|||||||
if (this->IsWidgetLowered(WID_GO_16BPP_BUTTON)) break;
|
if (this->IsWidgetLowered(WID_GO_16BPP_BUTTON)) break;
|
||||||
free(_ini_blitter);
|
free(_ini_blitter);
|
||||||
_ini_blitter = stredup("16bpp-simple");
|
_ini_blitter = stredup("16bpp-simple");
|
||||||
SaveToConfig();
|
_exit_game = true;
|
||||||
|
_restart_game = true;
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 16);
|
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 16);
|
||||||
SDL_ANDROID_RestartMyself("restart-settings"); // We terminate here, no need to update widget state
|
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -516,10 +516,10 @@ struct GameOptionsWindow : Window {
|
|||||||
if (this->IsWidgetLowered(WID_GO_32BPP_BUTTON)) break;
|
if (this->IsWidgetLowered(WID_GO_32BPP_BUTTON)) break;
|
||||||
free(_ini_blitter);
|
free(_ini_blitter);
|
||||||
_ini_blitter = stredup("32bpp-anim");
|
_ini_blitter = stredup("32bpp-anim");
|
||||||
SaveToConfig();
|
_exit_game = true;
|
||||||
|
_restart_game = true;
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 24);
|
SDL_ANDROID_SetConfigOption(SDL_ANDROID_CONFIG_VIDEO_DEPTH_BPP, 24);
|
||||||
SDL_ANDROID_RestartMyself("restart-settings"); // We terminate here, no need to update widget state
|
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user