From 8c2c7c27ea6f7c9de041ffff9362f8a8d9d03a81 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 18 Apr 2008 15:13:45 +0000 Subject: (svn r12768) -Codechange: move the statusbar GUI to it's own file. --- src/main_gui.cpp | 157 ++----------------------------------------------------- 1 file changed, 4 insertions(+), 153 deletions(-) (limited to 'src/main_gui.cpp') diff --git a/src/main_gui.cpp b/src/main_gui.cpp index b50ab464b..2587bc912 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -12,7 +12,7 @@ #include "textbuf_gui.h" #include "viewport_func.h" #include "command_func.h" -#include "news_func.h" +#include "news_gui.h" #include "console.h" #include "waypoint.h" #include "genworld.h" @@ -214,153 +214,6 @@ void ZoomInOrOutToCursorWindow(bool in, Window *w) } } - -extern GetNewsStringCallbackProc * const _get_news_string_callback[]; - - -static bool DrawScrollingStatusText(const NewsItem *ni, int pos, int width) -{ - char buf[512]; - StringID str; - const char *s, *last; - char *d; - DrawPixelInfo tmp_dpi, *old_dpi; - int x; - char buffer[256]; - - if (ni->display_mode == NM_CALLBACK) { - str = _get_news_string_callback[ni->callback](ni); - } else { - CopyInDParam(0, ni->params, lengthof(ni->params)); - str = ni->string_id; - } - - GetString(buf, str, lastof(buf)); - - s = buf; - d = buffer; - last = lastof(buffer); - - for (;;) { - WChar c = Utf8Consume(&s); - if (c == 0) { - break; - } else if (c == 0x0D) { - if (d + 4 >= last) break; - d[0] = d[1] = d[2] = d[3] = ' '; - d += 4; - } else if (IsPrintable(c)) { - if (d + Utf8CharLen(c) >= last) break; - d += Utf8Encode(d, c); - } - } - *d = '\0'; - - if (!FillDrawPixelInfo(&tmp_dpi, 141, 1, width, 11)) return true; - - old_dpi = _cur_dpi; - _cur_dpi = &tmp_dpi; - - x = DoDrawString(buffer, pos, 0, TC_LIGHT_BLUE); - _cur_dpi = old_dpi; - - return x > 0; -} - -static void StatusBarWndProc(Window *w, WindowEvent *e) -{ - switch (e->event) { - case WE_PAINT: { - const Player *p = (_local_player == PLAYER_SPECTATOR) ? NULL : GetPlayer(_local_player); - - DrawWindowWidgets(w); - SetDParam(0, _date); - DrawStringCentered( - 70, 1, (_pause_game || _patches.status_long_date) ? STR_00AF : STR_00AE, TC_FROMSTRING - ); - - if (p != NULL) { - /* Draw player money */ - SetDParam(0, p->player_money); - DrawStringCentered(w->widget[2].left + 70, 1, STR_0004, TC_FROMSTRING); - } - - /* Draw status bar */ - if (w->message.msg) { // true when saving is active - DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_SAVING_GAME, TC_FROMSTRING); - } else if (_do_autosave) { - DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_032F_AUTOSAVE, TC_FROMSTRING); - } else if (_pause_game) { - DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_0319_PAUSED, TC_FROMSTRING); - } else if (WP(w, def_d).data_1 > -1280 && FindWindowById(WC_NEWS_WINDOW,0) == NULL && _statusbar_news_item.string_id != 0) { - /* Draw the scrolling news text */ - if (!DrawScrollingStatusText(&_statusbar_news_item, WP(w, def_d).data_1, w->widget[1].right - w->widget[1].left - 2)) { - WP(w, def_d).data_1 = -1280; - if (p != NULL) { - /* This is the default text */ - SetDParam(0, p->index); - DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_02BA, TC_FROMSTRING); - } - } - } else { - if (p != NULL) { - /* This is the default text */ - SetDParam(0, p->index); - DrawStringCenteredTruncated(w->widget[1].left + 1, w->widget[1].right - 1, 1, STR_02BA, TC_FROMSTRING); - } - } - - if (WP(w, def_d).data_2 > 0) DrawSprite(SPR_BLOT, PALETTE_TO_RED, w->widget[1].right - 11, 2); - } break; - - case WE_MESSAGE: - w->message.msg = e->we.message.msg; - SetWindowDirty(w); - break; - - case WE_CLICK: - switch (e->we.click.widget) { - case 1: ShowLastNewsMessage(); break; - case 2: if (_local_player != PLAYER_SPECTATOR) ShowPlayerFinances(_local_player); break; - default: ResetObjectToPlace(); - } - break; - - case WE_TICK: { - if (_pause_game) return; - - if (WP(w, def_d).data_1 > -1280) { // Scrolling text - WP(w, def_d).data_1 -= 2; - w->InvalidateWidget(1); - } - - if (WP(w, def_d).data_2 > 0) { // Red blot to show there are new unread newsmessages - WP(w, def_d).data_2 -= 2; - } else if (WP(w, def_d).data_2 < 0) { - WP(w, def_d).data_2 = 0; - w->InvalidateWidget(1); - } - - break; - } - } -} - -static const Widget _main_status_widgets[] = { -{ WWT_PANEL, RESIZE_NONE, 14, 0, 139, 0, 11, 0x0, STR_NULL}, -{ WWT_PUSHBTN, RESIZE_RIGHT, 14, 140, 179, 0, 11, 0x0, STR_02B7_SHOW_LAST_MESSAGE_OR_NEWS}, -{ WWT_PUSHBTN, RESIZE_LR, 14, 180, 319, 0, 11, 0x0, STR_NULL}, -{ WIDGETS_END}, -}; - -static WindowDesc _main_status_desc = { - WDP_CENTER, 0, 320, 12, 640, 12, - WC_STATUS_BAR, WC_NONE, - WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, - _main_status_widgets, - StatusBarWndProc -}; - extern void UpdateAllStationVirtCoord(); static void MainWindowWndProc(Window *w, WindowEvent *e) @@ -601,6 +454,8 @@ void SetupColorsAndInitialWindow() } } +extern void ShowStatusBar(); + void ShowVitalWindows() { Window *w = AllocateToolbar(); @@ -609,11 +464,7 @@ void ShowVitalWindows() /* Status bad only for normal games */ if (_game_mode == GM_EDITOR) return; - _main_status_desc.top = _screen.height - 12; - w = AllocateWindowDesc(&_main_status_desc); - CLRBITS(w->flags4, WF_WHITE_BORDER_MASK); - - WP(w, def_d).data_1 = -1280; + ShowStatusBar(); } /** -- cgit v1.2.3-70-g09d2