(svn r18486) -Fix: when switching language and you're getting a different font, recalculate the coordinates/sizes of the viewport signs. Otherwise it gets glitchy or abbreviated (in the smallmap)

This commit is contained in:
rubidium 2009-12-13 19:33:07 +00:00
parent 43abfbd426
commit 0e78fdb54c
4 changed files with 17 additions and 9 deletions

View File

@ -188,8 +188,6 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w)
}
}
extern void UpdateAllStationVirtCoords();
/** Widgets of the main window. */
enum MainWindowWidgets {
MW_VIEWPORT, ///< Main window viewport.
@ -293,7 +291,7 @@ struct MainWindow : Window
break;
case '2' | WKC_ALT: // Update the coordinates of all station signs
UpdateAllStationVirtCoords();
UpdateAllVirtCoords();
break;
#endif

View File

@ -209,6 +209,16 @@ static inline RailType UpdateRailType(RailType rt, RailType min)
return rt >= min ? (RailType)(rt + 1): rt;
}
/**
* Update the viewport coordinates of all signs.
*/
void UpdateAllVirtCoords()
{
UpdateAllStationVirtCoords();
UpdateAllSignVirtCoords();
UpdateAllTownVirtCoords();
}
/**
* Initialization of the windows and several kinds of caches.
* This is not done directly in AfterLoadGame because these
@ -224,12 +234,9 @@ static void InitializeWindowsAndCaches()
ResetWindowSystem();
SetupColoursAndInitialWindow();
ResetViewportAfterLoadGame();
/* Update coordinates of the signs. */
UpdateAllStationVirtCoords();
UpdateAllSignVirtCoords();
UpdateAllTownVirtCoords();
UpdateAllVirtCoords();
ResetViewportAfterLoadGame();
Company *c;
FOR_ALL_COMPANIES(c) {

View File

@ -32,6 +32,7 @@
#include "base_media_base.h"
#include "company_base.h"
#include "company_func.h"
#include "viewport_func.h"
#include <map>
#include "table/sprites.h"
@ -380,7 +381,7 @@ struct GameOptionsWindow : Window {
case GOW_LANG_DROPDOWN: // Change interface language
ReadLanguagePack(index);
CheckForMissingGlyphsInLoadedLanguagePack();
UpdateAllStationVirtCoords();
UpdateAllVirtCoords();
ReInitAllWindows();
break;

View File

@ -70,6 +70,8 @@ bool ScrollWindowTo(int x, int y, int z, Window *w, bool instant = false);
bool ScrollMainWindowToTile(TileIndex tile, bool instant = false);
bool ScrollMainWindowTo(int x, int y, int z = -1, bool instant = false);
void UpdateAllVirtCoords();
extern Point _tile_fract_coords;
#endif /* VIEWPORT_FUNC_H */