diff options
author | Darkvater <darkvater@openttd.org> | 2005-05-17 20:54:05 +0000 |
---|---|---|
committer | Darkvater <darkvater@openttd.org> | 2005-05-17 20:54:05 +0000 |
commit | d3ce687daf0e12de8af60ad301417f8cc1800e30 (patch) | |
tree | 6ee485f22aeddf6789ea6d5c0043399e4641b9f5 | |
parent | 1c22cea02d573f793126532090ba92ae4f1a4b63 (diff) | |
download | openttd-d3ce687daf0e12de8af60ad301417f8cc1800e30.tar.xz |
(svn r2344) - Fix (regression): [ 1197216 ] Error: !invalid string id 0 in GetString. Dedicated server also had the endgame window shown and because now it is properly no-player anymore it crashed.
-rw-r--r-- | player_gui.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/player_gui.c b/player_gui.c index a1d142471..03e5e77bc 100644 --- a/player_gui.c +++ b/player_gui.c @@ -800,14 +800,13 @@ static void EndGameWndProc(Window *w, WindowEvent *e) DrawStringMultiCenter(x + (640 / 2), y + 157, STR_021B_ACHIEVES_STATUS, 640); } } break; - case WE_CLICK: { /* OnClick show the highscore chart */ - int diff = w->window_number; // save values because deletewindow is called - int8 rank = WP(w, highscore_d).rank; - DoCommandP(0, 0, 0, NULL, CMD_PAUSE); + case WE_CLICK: /* Close the window (and show the highscore window) */ DeleteWindow(w); - - ShowHighscoreTable(diff, rank); - } break; + break; + case WE_DESTROY: /* Show the highscore window when this one is closed */ + if (!_networking) DoCommandP(0, 0, 0, NULL, CMD_PAUSE); // unpause + ShowHighscoreTable(w->window_number, WP(w, highscore_d).rank); + break; } } @@ -841,15 +840,17 @@ static void HighScoreWndProc(Window *w, WindowEvent *e) } } break; - case WE_CLICK: /* Onclick get back all hidden windows */ - if (_game_mode != GM_MENU && !_networking) - ShowVitalWindows(); - - DoCommandP(0, 0, 0, NULL, CMD_PAUSE); + case WE_CLICK: /* Onclick to close window, and in destroy event handle the rest */ DeleteWindow(w); break; + + case WE_DESTROY: /* Get back all the hidden windows */ + if (_game_mode != GM_MENU) ShowVitalWindows(); + + if (!_networking) DoCommandP(0, 0, 0, NULL, CMD_PAUSE); // unpause + break; + } } -} static const Widget _highscore_widgets[] = { { WWT_PANEL, RESIZE_NONE, 16, 0, 640, 0, 480, 0x0, STR_NULL}, @@ -879,12 +880,11 @@ void ShowHighscoreTable(int difficulty, int8 ranking) { Window *w; - if (!_networking) { // pause game to show chart - DoCommandP(0, 1, 0, NULL, CMD_PAUSE); - /* Close all always on-top windows to get a clean screen */ - if (_game_mode != GM_MENU) - HideVitalWindows(); - } + // pause game to show the chart + if (!_networking) DoCommandP(0, 1, 0, NULL, CMD_PAUSE); + + /* Close all always on-top windows to get a clean screen */ + if (_game_mode != GM_MENU) HideVitalWindows(); DeleteWindowById(WC_HIGHSCORE_ENDSCREEN, 0); w = AllocateWindowDesc(&_highscore_desc); @@ -903,11 +903,12 @@ void ShowEndGameChart(void) { Window *w; - if (!_networking) { // pause the game and hide all windows to show end-chart - DoCommandP(0, 1, 0, NULL, CMD_PAUSE); - HideVitalWindows(); - } + /* Dedicated server doesn't need the highscore window */ + if (_network_dedicated) return; + /* Pause in single-player to have a look at the highscore at your own leisure */ + if (!_networking) DoCommandP(0, 1, 0, NULL, CMD_PAUSE); + HideVitalWindows(); DeleteWindowById(WC_HIGHSCORE_ENDSCREEN, 0); w = AllocateWindowDesc(&_endgame_desc); |