summaryrefslogtreecommitdiff
path: root/src/player_gui.cpp
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2008-05-15 19:24:15 +0000
committerglx <glx@openttd.org>2008-05-15 19:24:15 +0000
commit6a50687bdcf4e3b68ce446335514dce02f020a9c (patch)
tree7fc1031afeebd3c14ab3b7801a4b5dfd03526df0 /src/player_gui.cpp
parenteeb6381690503c6122b464150c6b2ffdc855b251 (diff)
downloadopenttd-6a50687bdcf4e3b68ce446335514dce02f020a9c.tar.xz
(svn r13107) -Codechange: make NetworkCompanyPasswordWindow and SelectPlayerFaceWindow children of PlayerCompanyWindow.
Diffstat (limited to 'src/player_gui.cpp')
-rw-r--r--src/player_gui.cpp34
1 files changed, 15 insertions, 19 deletions
diff --git a/src/player_gui.cpp b/src/player_gui.cpp
index ae84535e5..9f03b5fb3 100644
--- a/src/player_gui.cpp
+++ b/src/player_gui.cpp
@@ -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 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)
{
@@ -759,11 +759,12 @@ class SelectPlayerFaceWindow : public Window
}
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->caption_color = this->window_number;
- this->face = GetPlayer(player)->face;
+ this->face = GetPlayer((PlayerID)this->window_number)->face;
this->advanced = advanced;
this->UpdateData();
@@ -876,17 +877,18 @@ public:
/* Toggle size, advanced/simple face selection */
case PFW_WIDGET_TOGGLE_LARGE_SMALL:
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 oldleft = this->left; ///< current top position of the window before closing it
- PlayerID player = (PlayerID)this->window_number;
bool adv = !this->advanced;
-
- DoCommandP(0, 0, this->face, NULL, CMD_SET_PLAYER_FACE);
+ Window *parent = this->parent;
delete this;
/* 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;
@@ -1031,12 +1033,12 @@ static const WindowDesc _select_player_face_adv_desc = {
*
* @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;
- new SelectPlayerFaceWindow(adv ? &_select_player_face_adv_desc : &_select_player_face_desc, player, adv); // simple or advanced window
+ if (BringWindowToFrontById(WC_PLAYER_FACE, parent->window_number)) return;
+ 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;
}
- ~PlayerCompanyWindow()
- {
- DeleteWindowById(WC_PLAYER_FACE, this->window_number);
- if (this->window_number == _local_player) DeleteWindowById(WC_COMPANY_PASSWORD_WINDOW, 0);
- }
-
virtual void OnPaint()
{
const Player *p = GetPlayer((PlayerID)this->window_number);
@@ -1250,7 +1246,7 @@ struct PlayerCompanyWindow : Window
virtual void OnClick(Point pt, int 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:
if (BringWindowToFrontById(WC_PLAYER_COLOR, this->window_number)) break;
@@ -1304,7 +1300,7 @@ struct PlayerCompanyWindow : Window
#ifdef ENABLE_NETWORK
case PCW_WIDGET_COMPANY_PASSWORD:
- if (this->window_number == _local_player) ShowNetworkCompanyPasswordWindow();
+ if (this->window_number == _local_player) ShowNetworkCompanyPasswordWindow(this);
break;
#endif /* ENABLE_NETWORK */
}