mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r6658) -CodeChange: cleaned up the PlayerCompanyWindow code
This commit is contained in:
parent
116bca1fc0
commit
0e8ddd233e
377
player_gui.c
377
player_gui.c
|
@ -559,50 +559,35 @@ static const WindowDesc _select_player_face_desc = {
|
||||||
SelectPlayerFaceWndProc
|
SelectPlayerFaceWndProc
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Widget _my_player_company_widgets[] = {
|
/* Names of the widgets. Keep them in the same order as in the widget array */
|
||||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
typedef enum PlayerCompanyWindowWidgets {
|
||||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 359, 0, 13, STR_7001, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
PCW_WIDGET_CLOSEBOX = 0,
|
||||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 359, 14, 157, 0x0, STR_NULL},
|
PCW_WIDGET_CAPTION,
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 89, 158, 169, STR_7004_NEW_FACE, STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT},
|
PCW_WIDGET_FACE,
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 90, 179, 158, 169, STR_7005_COLOR_SCHEME, STR_7031_CHANGE_THE_COMPANY_VEHICLE},
|
PCW_WIDGET_NEW_FACE,
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 269, 158, 169, STR_7009_PRESIDENT_NAME, STR_7032_CHANGE_THE_PRESIDENT_S},
|
PCW_WIDGET_COLOR_SCHEME,
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 270, 359, 158, 169, STR_7008_COMPANY_NAME, STR_7033_CHANGE_THE_COMPANY_NAME},
|
PCW_WIDGET_PRESIDENT_NAME,
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 18, 29, STR_706F_BUILD_HQ, STR_7070_BUILD_COMPANY_HEADQUARTERS},
|
PCW_WIDGET_COMPANY_NAME,
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL},
|
PCW_WIDGET_BUILD_VIEW_HQ,
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL},
|
PCW_WIDGET_RELOCATE_HQ,
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL},
|
PCW_WIDGET_BUY_SHARE,
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 138, 149, STR_COMPANY_PASSWORD, STR_COMPANY_PASSWORD_TOOLTIP},
|
PCW_WIDGET_SELL_SHARE,
|
||||||
{ WIDGETS_END},
|
PCW_WIDGET_COMPANY_PASSWORD,
|
||||||
};
|
} PlayerCompanyWindowWidget;
|
||||||
|
|
||||||
static const Widget _other_player_company_widgets[] = {
|
static const Widget _player_company_widgets[] = {
|
||||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 359, 0, 13, STR_7001, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 359, 0, 13, STR_7001, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 359, 14, 157, 0x0, STR_NULL},
|
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 359, 14, 157, 0x0, STR_NULL},
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 89, 158, 169, STR_7004_NEW_FACE, STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT},
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 90, 179, 158, 169, STR_7005_COLOR_SCHEME, STR_7031_CHANGE_THE_COMPANY_VEHICLE},
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 269, 158, 169, STR_7009_PRESIDENT_NAME, STR_7032_CHANGE_THE_PRESIDENT_S},
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 270, 359, 158, 169, STR_7008_COMPANY_NAME, STR_7033_CHANGE_THE_COMPANY_NAME},
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 18, 29, STR_7072_VIEW_HQ, STR_7070_BUILD_COMPANY_HEADQUARTERS},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 18, 29, STR_7072_VIEW_HQ, STR_7070_BUILD_COMPANY_HEADQUARTERS},
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 32, 43, STR_RELOCATE_HQ, STR_RELOCATE_COMPANY_HEADQUARTERS},
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 179, 158, 169, STR_7077_BUY_25_SHARE_IN_COMPANY, STR_7079_BUY_25_SHARE_IN_THIS_COMPANY},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 179, 158, 169, STR_7077_BUY_25_SHARE_IN_COMPANY, STR_7079_BUY_25_SHARE_IN_THIS_COMPANY},
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 359, 158, 169, STR_7078_SELL_25_SHARE_IN_COMPANY, STR_707A_SELL_25_SHARE_IN_THIS_COMPANY},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 359, 158, 169, STR_7078_SELL_25_SHARE_IN_COMPANY, STR_707A_SELL_25_SHARE_IN_THIS_COMPANY},
|
||||||
{ WIDGETS_END},
|
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 138, 149, STR_COMPANY_PASSWORD, STR_COMPANY_PASSWORD_TOOLTIP},
|
||||||
};
|
|
||||||
|
|
||||||
static const Widget _my_player_company_bh_widgets[] = {
|
|
||||||
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
|
||||||
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 359, 0, 13, STR_7001, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
|
||||||
{ WWT_IMGBTN, RESIZE_NONE, 14, 0, 359, 14, 157, 0x0, STR_NULL},
|
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 89, 158, 169, STR_7004_NEW_FACE, STR_7030_SELECT_NEW_FACE_FOR_PRESIDENT},
|
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 90, 179, 158, 169, STR_7005_COLOR_SCHEME, STR_7031_CHANGE_THE_COMPANY_VEHICLE},
|
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 180, 269, 158, 169, STR_7009_PRESIDENT_NAME, STR_7032_CHANGE_THE_PRESIDENT_S},
|
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 270, 359, 158, 169, STR_7008_COMPANY_NAME, STR_7033_CHANGE_THE_COMPANY_NAME},
|
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 18, 29, STR_7072_VIEW_HQ, STR_7070_BUILD_COMPANY_HEADQUARTERS},
|
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 32, 43, STR_RELOCATE_HQ, STR_RELOCATE_COMPANY_HEADQUARTERS},
|
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL},
|
|
||||||
{ WWT_EMPTY, RESIZE_NONE, 14, 0, 355, 32, 43, 0x0, STR_NULL},
|
|
||||||
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 266, 355, 138, 149, STR_COMPANY_PASSWORD, STR_COMPANY_PASSWORD_TOOLTIP},
|
|
||||||
{ WIDGETS_END},
|
{ WIDGETS_END},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -690,186 +675,192 @@ static void DrawCompanyOwnerText(const Player *p)
|
||||||
static void PlayerCompanyWndProc(Window *w, WindowEvent *e)
|
static void PlayerCompanyWndProc(Window *w, WindowEvent *e)
|
||||||
{
|
{
|
||||||
switch (e->event) {
|
switch (e->event) {
|
||||||
case WE_PAINT: {
|
case WE_PAINT: {
|
||||||
const Player *p = GetPlayer(w->window_number);
|
|
||||||
|
|
||||||
if (!IsWindowOfPrototype(w, _other_player_company_widgets)) {
|
|
||||||
AssignWidgetToWindow(w, (p->location_of_house != 0) ? _my_player_company_bh_widgets : _my_player_company_widgets);
|
|
||||||
|
|
||||||
SetWindowWidgetHiddenState(w, 11, !_networking); // Hide company-password widget
|
|
||||||
} else {
|
|
||||||
SetWindowWidgetDisabledState(w, 7, p->location_of_house == 0);
|
|
||||||
|
|
||||||
if (_patches.allow_shares) { // Shares are allowed
|
|
||||||
/* If all shares are owned by someone (none by nobody), disable buy button */
|
|
||||||
SetWindowWidgetDisabledState(w, 9, GetAmountOwnedBy(p, OWNER_SPECTATOR) == 0 ||
|
|
||||||
/* Only 25% left to buy. If the player is human, disable buying it up.. TODO issues! */
|
|
||||||
(GetAmountOwnedBy(p, OWNER_SPECTATOR) == 1 && !p->is_ai) ||
|
|
||||||
/* Spectators cannot do anything of course */
|
|
||||||
_local_player == OWNER_SPECTATOR);
|
|
||||||
|
|
||||||
/* If the player doesn't own any shares, disable sell button */
|
|
||||||
SetWindowWidgetDisabledState(w, 10, (GetAmountOwnedBy(p, _local_player) == 0) ||
|
|
||||||
/* Spectators cannot do anything of course */
|
|
||||||
_local_player == OWNER_SPECTATOR);
|
|
||||||
} else { // Shares are not allowed, disable buy/sell buttons
|
|
||||||
DisableWindowWidget(w, 9);
|
|
||||||
DisableWindowWidget(w, 10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SetDParam(0, p->name_1);
|
|
||||||
SetDParam(1, p->name_2);
|
|
||||||
SetDParam(2, GetPlayerNameString((byte)w->window_number, 3));
|
|
||||||
|
|
||||||
DrawWindowWidgets(w);
|
|
||||||
|
|
||||||
SetDParam(0, p->inaugurated_year);
|
|
||||||
DrawString(110, 25, STR_7038_INAUGURATED, 0);
|
|
||||||
|
|
||||||
DrawPlayerVehiclesAmount(w->window_number);
|
|
||||||
|
|
||||||
DrawString(110,48, STR_7006_COLOR_SCHEME, 0);
|
|
||||||
// Draw company-colour bus
|
|
||||||
DrawSprite(PLAYER_SPRITE_COLOR(p->index) + SPRITE_PALETTE(SPR_VEH_BUS_SW_VIEW), 215, 49);
|
|
||||||
|
|
||||||
DrawPlayerFace(p->face, p->player_color, 2, 16);
|
|
||||||
|
|
||||||
SetDParam(0, p->president_name_1);
|
|
||||||
SetDParam(1, p->president_name_2);
|
|
||||||
DrawStringMultiCenter(48, 141, STR_7037_PRESIDENT, 94);
|
|
||||||
|
|
||||||
SetDParam64(0, CalculateCompanyValue(p));
|
|
||||||
DrawString(110, 114, STR_7076_COMPANY_VALUE, 0);
|
|
||||||
|
|
||||||
DrawCompanyOwnerText(p);
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case WE_CLICK:
|
|
||||||
switch (e->we.click.widget) {
|
|
||||||
case 3: { /* select face */
|
|
||||||
Window *wf = AllocateWindowDescFront(&_select_player_face_desc, w->window_number);
|
|
||||||
if (wf != NULL) {
|
|
||||||
wf->caption_color = w->window_number;
|
|
||||||
WP(wf,facesel_d).face = GetPlayer(wf->window_number)->face;
|
|
||||||
WP(wf,facesel_d).gender = 0;
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 4: {/* change color */
|
|
||||||
Window *wf = AllocateWindowDescFront(_have_2cc ? &_select_player_livery_2cc_desc : &_select_player_livery_desc, w->window_number);
|
|
||||||
if (wf != NULL) {
|
|
||||||
wf->caption_color = wf->window_number;
|
|
||||||
WP(wf,livery_d).livery_class = LC_OTHER;
|
|
||||||
WP(wf,livery_d).sel = 1;
|
|
||||||
LowerWindowWidget(wf, 2);
|
|
||||||
}
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 5: {/* change president name */
|
|
||||||
const Player *p = GetPlayer(w->window_number);
|
const Player *p = GetPlayer(w->window_number);
|
||||||
WP(w, def_d).byte_1 = 0;
|
bool local = w->window_number == _local_player;
|
||||||
SetDParam(0, p->president_name_2);
|
|
||||||
ShowQueryString(p->president_name_1, STR_700B_PRESIDENT_S_NAME, 31, 94, w->window_class, w->window_number, CS_ALPHANUMERAL);
|
|
||||||
} break;
|
|
||||||
|
|
||||||
case 6: {/* change company name */
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_NEW_FACE, !local);
|
||||||
Player *p = GetPlayer(w->window_number);
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_COLOR_SCHEME, !local);
|
||||||
WP(w,def_d).byte_1 = 1;
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_PRESIDENT_NAME, !local);
|
||||||
SetDParam(0, p->name_2);
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_COMPANY_NAME, !local);
|
||||||
ShowQueryString(p->name_1, STR_700A_COMPANY_NAME, 31, 150, w->window_class, w->window_number, CS_ALPHANUMERAL);
|
w->widget[PCW_WIDGET_BUILD_VIEW_HQ].data = (local && p->location_of_house == 0) ? STR_706F_BUILD_HQ : STR_7072_VIEW_HQ;
|
||||||
} break;
|
SetWindowWidgetDisabledState(w, PCW_WIDGET_BUILD_VIEW_HQ, !local && p->location_of_house == 0);
|
||||||
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_RELOCATE_HQ, !local || p->location_of_house == 0);
|
||||||
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_BUY_SHARE, local);
|
||||||
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_SELL_SHARE, local);
|
||||||
|
SetWindowWidgetHiddenState(w, PCW_WIDGET_COMPANY_PASSWORD, !local || !_networking);
|
||||||
|
|
||||||
case 7: {/* build hq */
|
if (!local) {
|
||||||
TileIndex tile = GetPlayer(w->window_number)->location_of_house;
|
if (_patches.allow_shares) { // Shares are allowed
|
||||||
if (tile == 0) {
|
/* If all shares are owned by someone (none by nobody), disable buy button */
|
||||||
if ((byte)w->window_number != _local_player)
|
SetWindowWidgetDisabledState(w, PCW_WIDGET_BUY_SHARE, GetAmountOwnedBy(p, OWNER_SPECTATOR) == 0 ||
|
||||||
return;
|
/* Only 25% left to buy. If the player is human, disable buying it up.. TODO issues! */
|
||||||
SetObjectToPlaceWnd(SPR_CURSOR_HQ, 1, w);
|
(GetAmountOwnedBy(p, OWNER_SPECTATOR) == 1 && !p->is_ai) ||
|
||||||
SetTileSelectSize(2, 2);
|
/* Spectators cannot do anything of course */
|
||||||
} else {
|
_local_player == OWNER_SPECTATOR);
|
||||||
ScrollMainWindowToTile(tile);
|
|
||||||
|
/* If the player doesn't own any shares, disable sell button */
|
||||||
|
SetWindowWidgetDisabledState(w, PCW_WIDGET_SELL_SHARE, (GetAmountOwnedBy(p, _local_player) == 0) ||
|
||||||
|
/* Spectators cannot do anything of course */
|
||||||
|
_local_player == OWNER_SPECTATOR);
|
||||||
|
} else { // Shares are not allowed, disable buy/sell buttons
|
||||||
|
DisableWindowWidget(w, PCW_WIDGET_BUY_SHARE);
|
||||||
|
DisableWindowWidget(w, PCW_WIDGET_SELL_SHARE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
|
||||||
|
|
||||||
case 8: /* relocate HQ */
|
SetDParam(0, p->name_1);
|
||||||
SetObjectToPlaceWnd(SPR_CURSOR_HQ, 1, w);
|
SetDParam(1, p->name_2);
|
||||||
SetTileSelectSize(2, 2);
|
SetDParam(2, GetPlayerNameString((byte)w->window_number, 3));
|
||||||
break;
|
|
||||||
case 9: /* buy 25% */
|
DrawWindowWidgets(w);
|
||||||
DoCommandP(0, w->window_number, 0, NULL, CMD_BUY_SHARE_IN_COMPANY | CMD_MSG(STR_707B_CAN_T_BUY_25_SHARE_IN_THIS));
|
|
||||||
break;
|
SetDParam(0, p->inaugurated_year);
|
||||||
|
DrawString(110, 25, STR_7038_INAUGURATED, 0);
|
||||||
|
|
||||||
|
DrawPlayerVehiclesAmount(w->window_number);
|
||||||
|
|
||||||
|
DrawString(110,48, STR_7006_COLOR_SCHEME, 0);
|
||||||
|
// Draw company-colour bus
|
||||||
|
DrawSprite(PLAYER_SPRITE_COLOR(p->index) + SPRITE_PALETTE(SPR_VEH_BUS_SW_VIEW), 215, 49);
|
||||||
|
|
||||||
|
DrawPlayerFace(p->face, p->player_color, 2, 16);
|
||||||
|
|
||||||
|
SetDParam(0, p->president_name_1);
|
||||||
|
SetDParam(1, p->president_name_2);
|
||||||
|
DrawStringMultiCenter(48, 141, STR_7037_PRESIDENT, 94);
|
||||||
|
|
||||||
|
SetDParam64(0, CalculateCompanyValue(p));
|
||||||
|
DrawString(110, 114, STR_7076_COMPANY_VALUE, 0);
|
||||||
|
|
||||||
|
DrawCompanyOwnerText(p);
|
||||||
|
|
||||||
case 10: /* sell 25% */
|
|
||||||
DoCommandP(0, w->window_number, 0, NULL, CMD_SELL_SHARE_IN_COMPANY | CMD_MSG(STR_707C_CAN_T_SELL_25_SHARE_IN));
|
|
||||||
break;
|
break;
|
||||||
case 11: { /* Password protect company */
|
|
||||||
#ifdef ENABLE_NETWORK
|
|
||||||
if (!IsWindowOfPrototype(w, _other_player_company_widgets)) {
|
|
||||||
WP(w,def_d).byte_1 = 2;
|
|
||||||
ShowQueryString(BindCString(_network_player_info[_local_player].password),
|
|
||||||
STR_SET_COMPANY_PASSWORD, sizeof(_network_player_info[_local_player].password), 250, w->window_class, w->window_number, CS_ALPHANUMERAL);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
} break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case WE_MOUSELOOP:
|
case WE_CLICK:
|
||||||
/* redraw the window every now and then */
|
switch (e->we.click.widget) {
|
||||||
if ((++w->vscroll.pos & 0x1F) == 0)
|
case PCW_WIDGET_NEW_FACE: {
|
||||||
SetWindowDirty(w);
|
Window *wf = AllocateWindowDescFront(&_select_player_face_desc, w->window_number);
|
||||||
break;
|
if (wf != NULL) {
|
||||||
|
wf->caption_color = w->window_number;
|
||||||
|
WP(wf,facesel_d).face = GetPlayer(wf->window_number)->face;
|
||||||
|
WP(wf,facesel_d).gender = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WE_PLACE_OBJ: {
|
case PCW_WIDGET_COLOR_SCHEME: {
|
||||||
if (DoCommandP(e->we.place.tile, 0, 0, NULL, CMD_BUILD_COMPANY_HQ | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS)))
|
Window *wf = AllocateWindowDescFront(_have_2cc ? &_select_player_livery_2cc_desc : &_select_player_livery_desc, w->window_number);
|
||||||
ResetObjectToPlace();
|
if (wf != NULL) {
|
||||||
break;
|
wf->caption_color = wf->window_number;
|
||||||
}
|
WP(wf,livery_d).livery_class = LC_OTHER;
|
||||||
|
WP(wf,livery_d).sel = 1;
|
||||||
|
LowerWindowWidget(wf, 2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case PCW_WIDGET_PRESIDENT_NAME: {
|
||||||
|
const Player *p = GetPlayer(w->window_number);
|
||||||
|
WP(w, def_d).byte_1 = 0;
|
||||||
|
SetDParam(0, p->president_name_2);
|
||||||
|
ShowQueryString(p->president_name_1, STR_700B_PRESIDENT_S_NAME, 31, 94, w->window_class, w->window_number, CS_ALPHANUMERAL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WE_DESTROY:
|
case PCW_WIDGET_COMPANY_NAME: {
|
||||||
DeleteWindowById(WC_PLAYER_FACE, w->window_number);
|
Player *p = GetPlayer(w->window_number);
|
||||||
break;
|
WP(w,def_d).byte_1 = 1;
|
||||||
|
SetDParam(0, p->name_2);
|
||||||
|
ShowQueryString(p->name_1, STR_700A_COMPANY_NAME, 31, 150, w->window_class, w->window_number, CS_ALPHANUMERAL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WE_ON_EDIT_TEXT: {
|
case PCW_WIDGET_BUILD_VIEW_HQ: {
|
||||||
char *b = e->we.edittext.str;
|
TileIndex tile = GetPlayer(w->window_number)->location_of_house;
|
||||||
|
if (tile == 0) {
|
||||||
|
if ((byte)w->window_number != _local_player)
|
||||||
|
return;
|
||||||
|
SetObjectToPlaceWnd(SPR_CURSOR_HQ, 1, w);
|
||||||
|
SetTileSelectSize(2, 2);
|
||||||
|
} else {
|
||||||
|
ScrollMainWindowToTile(tile);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// empty string is allowed for password
|
case PCW_WIDGET_RELOCATE_HQ:
|
||||||
if (*b == '\0' && WP(w,def_d).byte_1 != 2) return;
|
SetObjectToPlaceWnd(SPR_CURSOR_HQ, 1, w);
|
||||||
|
SetTileSelectSize(2, 2);
|
||||||
|
break;
|
||||||
|
|
||||||
_cmd_text = b;
|
case PCW_WIDGET_BUY_SHARE:
|
||||||
switch (WP(w,def_d).byte_1) {
|
DoCommandP(0, w->window_number, 0, NULL, CMD_BUY_SHARE_IN_COMPANY | CMD_MSG(STR_707B_CAN_T_BUY_25_SHARE_IN_THIS));
|
||||||
case 0: /* Change president name */
|
break;
|
||||||
DoCommandP(0, 0, 0, NULL, CMD_CHANGE_PRESIDENT_NAME | CMD_MSG(STR_700D_CAN_T_CHANGE_PRESIDENT));
|
|
||||||
|
case PCW_WIDGET_SELL_SHARE:
|
||||||
|
DoCommandP(0, w->window_number, 0, NULL, CMD_SELL_SHARE_IN_COMPANY | CMD_MSG(STR_707C_CAN_T_SELL_25_SHARE_IN));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PCW_WIDGET_COMPANY_PASSWORD:
|
||||||
|
#ifdef ENABLE_NETWORK
|
||||||
|
if (w->window_number == _local_player) {
|
||||||
|
WP(w,def_d).byte_1 = 2;
|
||||||
|
ShowQueryString(BindCString(_network_player_info[_local_player].password),
|
||||||
|
STR_SET_COMPANY_PASSWORD, sizeof(_network_player_info[_local_player].password), 250, w->window_class, w->window_number, CS_ALPHANUMERAL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 1: /* Change company name */
|
|
||||||
DoCommandP(0, 0, 0, NULL, CMD_CHANGE_COMPANY_NAME | CMD_MSG(STR_700C_CAN_T_CHANGE_COMPANY_NAME));
|
case WE_MOUSELOOP:
|
||||||
|
/* redraw the window every now and then */
|
||||||
|
if ((++w->vscroll.pos & 0x1F) == 0) SetWindowDirty(w);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WE_PLACE_OBJ:
|
||||||
|
if (DoCommandP(e->we.place.tile, 0, 0, NULL, CMD_BUILD_COMPANY_HQ | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS)))
|
||||||
|
ResetObjectToPlace();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WE_DESTROY:
|
||||||
|
DeleteWindowById(WC_PLAYER_FACE, w->window_number);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WE_ON_EDIT_TEXT: {
|
||||||
|
char *b = e->we.edittext.str;
|
||||||
|
|
||||||
|
// empty string is allowed for password
|
||||||
|
if (*b == '\0' && WP(w,def_d).byte_1 != 2) return;
|
||||||
|
|
||||||
|
_cmd_text = b;
|
||||||
|
switch (WP(w,def_d).byte_1) {
|
||||||
|
case 0: /* Change president name */
|
||||||
|
DoCommandP(0, 0, 0, NULL, CMD_CHANGE_PRESIDENT_NAME | CMD_MSG(STR_700D_CAN_T_CHANGE_PRESIDENT));
|
||||||
|
break;
|
||||||
|
case 1: /* Change company name */
|
||||||
|
DoCommandP(0, 0, 0, NULL, CMD_CHANGE_COMPANY_NAME | CMD_MSG(STR_700C_CAN_T_CHANGE_COMPANY_NAME));
|
||||||
|
break;
|
||||||
|
case 2: /* Change company password */
|
||||||
|
#ifdef ENABLE_NETWORK
|
||||||
|
if (*b == '\0') *b = '*'; // empty password is a '*' because of console argument
|
||||||
|
NetworkChangeCompanyPassword(1, &b);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#ifdef ENABLE_NETWORK
|
|
||||||
case 2: /* Change company password */
|
|
||||||
if (*b == '\0') *b = '*'; // empty password is a '*' because of console argument
|
|
||||||
NetworkChangeCompanyPassword(1, &b);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
} break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const WindowDesc _my_player_company_desc = {
|
static const WindowDesc _player_company_desc = {
|
||||||
-1, -1, 360, 170,
|
-1, -1, 360, 170,
|
||||||
WC_COMPANY, 0,
|
WC_COMPANY, 0,
|
||||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
|
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
|
||||||
_my_player_company_widgets,
|
_player_company_widgets,
|
||||||
PlayerCompanyWndProc
|
|
||||||
};
|
|
||||||
|
|
||||||
static const WindowDesc _other_player_company_desc = {
|
|
||||||
-1,-1, 360, 170,
|
|
||||||
WC_COMPANY,0,
|
|
||||||
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
|
|
||||||
_other_player_company_widgets,
|
|
||||||
PlayerCompanyWndProc
|
PlayerCompanyWndProc
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -877,7 +868,7 @@ void ShowPlayerCompany(PlayerID player)
|
||||||
{
|
{
|
||||||
Window *w;
|
Window *w;
|
||||||
|
|
||||||
w = AllocateWindowDescFront(player == _local_player ? &_my_player_company_desc : &_other_player_company_desc, player);
|
w = AllocateWindowDescFront(&_player_company_desc, player);
|
||||||
if (w != NULL) w->caption_color = w->window_number;
|
if (w != NULL) w->caption_color = w->window_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue