(svn r13107) -Codechange: make NetworkCompanyPasswordWindow and SelectPlayerFaceWindow children of PlayerCompanyWindow.

This commit is contained in:
glx 2008-05-15 19:24:15 +00:00
parent eeb6381690
commit 6a50687bdc
3 changed files with 23 additions and 24 deletions

View File

@ -1932,8 +1932,9 @@ enum NetworkCompanyPasswordWindowWidgets {
}; };
struct NetworkCompanyPasswordWindow : public QueryStringBaseWindow { struct NetworkCompanyPasswordWindow : public QueryStringBaseWindow {
NetworkCompanyPasswordWindow(const WindowDesc *desc) : QueryStringBaseWindow(desc) NetworkCompanyPasswordWindow(const WindowDesc *desc, Window *parent) : QueryStringBaseWindow(desc)
{ {
this->parent = parent;
this->afilter = CS_ALPHANUMERAL; this->afilter = CS_ALPHANUMERAL;
InitializeTextBuffer(&this->text, this->edit_str_buf, min(lengthof(_network_default_company_pass), lengthof(this->edit_str_buf)), 0); InitializeTextBuffer(&this->text, this->edit_str_buf, min(lengthof(_network_default_company_pass), lengthof(this->edit_str_buf)), 0);
@ -2021,11 +2022,11 @@ static const WindowDesc _ncp_window_desc = {
NULL NULL
}; };
void ShowNetworkCompanyPasswordWindow() void ShowNetworkCompanyPasswordWindow(Window *parent)
{ {
DeleteWindowById(WC_COMPANY_PASSWORD_WINDOW, 0); DeleteWindowById(WC_COMPANY_PASSWORD_WINDOW, 0);
new NetworkCompanyPasswordWindow(&_ncp_window_desc); new NetworkCompanyPasswordWindow(&_ncp_window_desc, parent);
} }
#endif /* ENABLE_NETWORK */ #endif /* ENABLE_NETWORK */

View File

@ -5,6 +5,8 @@
#ifndef NETWORK_GUI_H #ifndef NETWORK_GUI_H
#define NETWORK_GUI_H #define NETWORK_GUI_H
#include "../window_type.h"
#ifdef ENABLE_NETWORK #ifdef ENABLE_NETWORK
#include "network_data.h" #include "network_data.h"
@ -15,7 +17,7 @@ void ShowNetworkChatQueryWindow(DestType type, int dest);
void ShowJoinStatusWindow(); void ShowJoinStatusWindow();
void ShowNetworkGameWindow(); void ShowNetworkGameWindow();
void ShowClientList(); void ShowClientList();
void ShowNetworkCompanyPasswordWindow(); void ShowNetworkCompanyPasswordWindow(Window *parent);
#else /* ENABLE_NETWORK */ #else /* ENABLE_NETWORK */
/* Network function stubs when networking is disabled */ /* Network function stubs when networking is disabled */
@ -23,7 +25,7 @@ void ShowNetworkCompanyPasswordWindow();
static inline void ShowNetworkChatQueryWindow(byte desttype, int dest) {} static inline void ShowNetworkChatQueryWindow(byte desttype, int dest) {}
static inline void ShowClientList() {} static inline void ShowClientList() {}
static inline void ShowNetworkGameWindow() {} static inline void ShowNetworkGameWindow() {}
static inline void ShowNetworkCompanyPasswordWindow() {} static inline void ShowNetworkCompanyPasswordWindow(Window *parent) {}
#endif /* ENABLE_NETWORK */ #endif /* ENABLE_NETWORK */

View File

@ -46,7 +46,7 @@ enum {
}; };
static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied, int top = FIRST_GUI_CALL, int left = FIRST_GUI_CALL); static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied, int top = FIRST_GUI_CALL, int left = FIRST_GUI_CALL);
static void DoSelectPlayerFace(PlayerID player, bool show_big, int top = FIRST_GUI_CALL, int left = FIRST_GUI_CALL); static void DoSelectPlayerFace(Window *parent, bool show_big, int top = FIRST_GUI_CALL, int left = FIRST_GUI_CALL);
static void DrawPlayerEconomyStats(const Player *p, byte mode) static void DrawPlayerEconomyStats(const Player *p, byte mode)
{ {
@ -759,11 +759,12 @@ class SelectPlayerFaceWindow : public Window
} }
public: public:
SelectPlayerFaceWindow(const WindowDesc *desc, PlayerID player, bool advanced) : Window(desc, player) SelectPlayerFaceWindow(const WindowDesc *desc, Window *parent, bool advanced) : Window(desc, parent->window_number)
{ {
this->parent = parent;
this->FindWindowPlacementAndResize(desc); this->FindWindowPlacementAndResize(desc);
this->caption_color = this->window_number; this->caption_color = this->window_number;
this->face = GetPlayer(player)->face; this->face = GetPlayer((PlayerID)this->window_number)->face;
this->advanced = advanced; this->advanced = advanced;
this->UpdateData(); this->UpdateData();
@ -876,17 +877,18 @@ public:
/* Toggle size, advanced/simple face selection */ /* Toggle size, advanced/simple face selection */
case PFW_WIDGET_TOGGLE_LARGE_SMALL: case PFW_WIDGET_TOGGLE_LARGE_SMALL:
case PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON: { case PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON: {
DoCommandP(0, 0, this->face, NULL, CMD_SET_PLAYER_FACE);
/* Backup some data before deletion */
int oldtop = this->top; ///< current top position of the window before closing it int oldtop = this->top; ///< current top position of the window before closing it
int oldleft = this->left; ///< current top position of the window before closing it int oldleft = this->left; ///< current top position of the window before closing it
PlayerID player = (PlayerID)this->window_number;
bool adv = !this->advanced; bool adv = !this->advanced;
Window *parent = this->parent;
DoCommandP(0, 0, this->face, NULL, CMD_SET_PLAYER_FACE);
delete this; delete this;
/* Open up the (toggled size) Face selection window at the same position as the previous */ /* Open up the (toggled size) Face selection window at the same position as the previous */
DoSelectPlayerFace(player, adv, oldtop, oldleft); DoSelectPlayerFace(parent, adv, oldtop, oldleft);
} break; } break;
@ -1031,12 +1033,12 @@ static const WindowDesc _select_player_face_adv_desc = {
* *
* @pre is player a valid player * @pre is player a valid player
*/ */
static void DoSelectPlayerFace(PlayerID player, bool adv, int top, int left) static void DoSelectPlayerFace(Window *parent, bool adv, int top, int left)
{ {
if (!IsValidPlayer(player)) return; if (!IsValidPlayer((PlayerID)parent->window_number)) return;
if (BringWindowToFrontById(WC_PLAYER_FACE, player)) return; if (BringWindowToFrontById(WC_PLAYER_FACE, parent->window_number)) return;
new SelectPlayerFaceWindow(adv ? &_select_player_face_adv_desc : &_select_player_face_desc, player, adv); // simple or advanced window new SelectPlayerFaceWindow(adv ? &_select_player_face_adv_desc : &_select_player_face_desc, parent, adv); // simple or advanced window
} }
@ -1173,12 +1175,6 @@ struct PlayerCompanyWindow : Window
this->caption_color = this->window_number; this->caption_color = this->window_number;
} }
~PlayerCompanyWindow()
{
DeleteWindowById(WC_PLAYER_FACE, this->window_number);
if (this->window_number == _local_player) DeleteWindowById(WC_COMPANY_PASSWORD_WINDOW, 0);
}
virtual void OnPaint() virtual void OnPaint()
{ {
const Player *p = GetPlayer((PlayerID)this->window_number); const Player *p = GetPlayer((PlayerID)this->window_number);
@ -1250,7 +1246,7 @@ struct PlayerCompanyWindow : Window
virtual void OnClick(Point pt, int widget) virtual void OnClick(Point pt, int widget)
{ {
switch (widget) { switch (widget) {
case PCW_WIDGET_NEW_FACE: DoSelectPlayerFace((PlayerID)this->window_number, false); break; case PCW_WIDGET_NEW_FACE: DoSelectPlayerFace(this, false); break;
case PCW_WIDGET_COLOR_SCHEME: case PCW_WIDGET_COLOR_SCHEME:
if (BringWindowToFrontById(WC_PLAYER_COLOR, this->window_number)) break; if (BringWindowToFrontById(WC_PLAYER_COLOR, this->window_number)) break;
@ -1304,7 +1300,7 @@ struct PlayerCompanyWindow : Window
#ifdef ENABLE_NETWORK #ifdef ENABLE_NETWORK
case PCW_WIDGET_COMPANY_PASSWORD: case PCW_WIDGET_COMPANY_PASSWORD:
if (this->window_number == _local_player) ShowNetworkCompanyPasswordWindow(); if (this->window_number == _local_player) ShowNetworkCompanyPasswordWindow(this);
break; break;
#endif /* ENABLE_NETWORK */ #endif /* ENABLE_NETWORK */
} }