diff options
author | rubidium <rubidium@openttd.org> | 2007-12-02 14:48:26 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-12-02 14:48:26 +0000 |
commit | d9081ad3f5eacf3f788c0246ff9c72eeaea9fd90 (patch) | |
tree | 5801e1ae4c02c7813e3235182983acbe0c8c799b /src/network | |
parent | 527b72749d5160eceb6e5999c0f329701b14ee47 (diff) | |
download | openttd-d9081ad3f5eacf3f788c0246ff9c72eeaea9fd90.tar.xz |
(svn r11556) -Feature: allow setting a default password for new companies in network games.
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/network.h | 1 | ||||
-rw-r--r-- | src/network/network_gui.cpp | 103 | ||||
-rw-r--r-- | src/network/network_gui.h | 2 |
3 files changed, 94 insertions, 12 deletions
diff --git a/src/network/network.h b/src/network/network.h index d582dbd68..2017d6b47 100644 --- a/src/network/network.h +++ b/src/network/network.h @@ -147,6 +147,7 @@ VARDEF bool _is_network_server; // Does this client wants to be a network-server VARDEF char _network_server_name[NETWORK_NAME_LENGTH]; VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH]; VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH]; +VARDEF char _network_default_company_pass[NETWORK_PASSWORD_LENGTH]; VARDEF uint16 _network_max_join_time; ///< Time a client can max take to join VARDEF bool _network_pause_on_join; ///< Pause the game when a client tries to join (more chance of succeeding join) diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 84227c531..5e5cdfb9c 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -1795,23 +1795,11 @@ static void ChatWindowWndProc(Window *w, WindowEvent *e) { switch (e->event) { case WE_CREATE: - SendWindowMessage(WC_NEWS_WINDOW, 0, WE_CREATE, w->height, 0); - SetBit(_no_scroll, SCROLL_CHAT); // do not scroll the game with the arrow-keys break; case WE_PAINT: { - static const StringID chat_captions[] = { - STR_NETWORK_CHAT_ALL_CAPTION, - STR_NETWORK_CHAT_COMPANY_CAPTION, - STR_NETWORK_CHAT_CLIENT_CAPTION - }; - StringID msg; - DrawWindowWidgets(w); - assert(WP(w, chatquerystr_d).caption < lengthof(chat_captions)); - msg = chat_captions[WP(w, chatquerystr_d).caption]; - DrawStringRightAligned(w->widget[2].left - 2, w->widget[2].top + 1, msg, TC_BLACK); DrawEditBox(w, &WP(w, chatquerystr_d), 2); } break; @@ -1887,4 +1875,95 @@ void ShowNetworkChatQueryWindow(DestType type, int dest) InitializeTextBuffer(&WP(w, chatquerystr_d).text, _edit_str_buf, lengthof(_edit_str_buf), 0); } +/** Enum for NetworkGameWindow, referring to _network_game_window_widgets */ +enum NetworkCompanyPasswordWindowWidgets { + NCPWW_CLOSE, ///< Close 'X' button + NCPWW_CAPTION, ///< Caption of the whole window + NCPWW_BACKGROUND, ///< The background of the interface + NCPWW_LABEL, ///< Label in front of the password field + NCPWW_PASSWORD, ///< Input field for the password + NCPWW_SAVE_AS_DEFAULT_PASSWORD, ///< Toggle 'button' for saving the current password as default password + NCPWW_CANCEL, ///< Close the window without changing anything + NCPWW_OK, ///< Safe the password etc. +}; + +static void NetworkCompanyPasswordWindowWndProc(Window *w, WindowEvent *e) +{ + switch (e->event) { + case WE_PAINT: + DrawWindowWidgets(w); + DrawEditBox(w, &WP(w, chatquerystr_d), 4); + break; + + case WE_CLICK: + switch (e->we.click.widget) { + case NCPWW_OK: { + if (w->IsWidgetLowered(NCPWW_SAVE_AS_DEFAULT_PASSWORD)) { + snprintf(_network_default_company_pass, lengthof(_network_default_company_pass), "%s", _edit_str_buf); + } + + /* empty password is a '*' because of console argument */ + if (StrEmpty(_edit_str_buf)) snprintf(_edit_str_buf, lengthof(_edit_str_buf), "*"); + char *password = _edit_str_buf; + NetworkChangeCompanyPassword(1, &password); + } + + /* FALL THROUGH */ + case NCPWW_CANCEL: + DeleteWindow(w); + break; + + case NCPWW_SAVE_AS_DEFAULT_PASSWORD: + w->ToggleWidgetLoweredState(NCPWW_SAVE_AS_DEFAULT_PASSWORD); + SetWindowDirty(w); + break; + } + break; + + case WE_MOUSELOOP: + HandleEditBox(w, &WP(w, chatquerystr_d), 4); + break; + + case WE_KEYPRESS: + switch (HandleEditBoxKey(w, &WP(w, chatquerystr_d), 4, e)) { + case 1: // Return + /* FALLTHROUGH */ + case 2: // Escape + DeleteWindow(w); + break; + } + break; + } +} + +static const Widget _ncp_window_widgets[] = { +{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, +{ WWT_CAPTION, RESIZE_NONE, 14, 11, 299, 0, 13, STR_COMPANY_PASSWORD_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, +{ WWT_PANEL, RESIZE_NONE, 14, 0, 299, 14, 50, 0x0, STR_NULL}, +{ WWT_TEXT, RESIZE_NONE, 14, 5, 100, 19, 30, STR_COMPANY_PASSWORD, STR_NULL}, +{ WWT_PANEL, RESIZE_NONE, 14, 101, 294, 19, 30, 0x0, STR_NULL}, +{ WWT_TEXTBTN, RESIZE_NONE, 14, 101, 294, 35, 46, STR_MAKE_DEFAULT_COMPANY_PASSWORD, STR_MAKE_DEFAULT_COMPANY_PASSWORD_TIP}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 149, 51, 62, STR_012E_CANCEL, STR_COMPANY_PASSWORD_CANCEL}, +{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 150, 299, 51, 62, STR_012F_OK, STR_COMPANY_PASSWORD_OK}, +{ WIDGETS_END}, +}; + +static const WindowDesc _ncp_window_desc = { + WDP_AUTO, WDP_AUTO, 300, 63, 300, 63, + WC_COMPANY_PASSWORD_WINDOW, WC_NONE, + WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, + _ncp_window_widgets, + NetworkCompanyPasswordWindowWndProc +}; + +void ShowNetworkCompanyPasswordWindow() +{ + DeleteWindowById(WC_COMPANY_PASSWORD_WINDOW, 0); + + _edit_str_buf[0] = '\0'; + Window *w = AllocateWindowDesc(&_ncp_window_desc); + WP(w, chatquerystr_d).afilter = CS_ALPHANUMERAL; + InitializeTextBuffer(&WP(w, chatquerystr_d).text, _edit_str_buf, min(lengthof(_network_default_company_pass), lengthof(_edit_str_buf)), 0); +} + #endif /* ENABLE_NETWORK */ diff --git a/src/network/network_gui.h b/src/network/network_gui.h index d71b0a339..34597b4bb 100644 --- a/src/network/network_gui.h +++ b/src/network/network_gui.h @@ -13,6 +13,7 @@ void ShowNetworkChatQueryWindow(DestType type, int dest); void ShowJoinStatusWindow(); void ShowNetworkGameWindow(); void ShowClientList(); +void ShowNetworkCompanyPasswordWindow(); #else /* ENABLE_NETWORK */ /* Network function stubs when networking is disabled */ @@ -20,6 +21,7 @@ void ShowClientList(); static inline void ShowNetworkChatQueryWindow(byte desttype, int dest) {} static inline void ShowClientList() {} static inline void ShowNetworkGameWindow() {} +static inline void ShowNetworkCompanyPasswordWindow() {} #endif /* ENABLE_NETWORK */ |