146 |
146 |
147 static void PlayerFinancesWndProc(Window *w, WindowEvent *e) |
147 static void PlayerFinancesWndProc(Window *w, WindowEvent *e) |
148 { |
148 { |
149 switch (e->event) { |
149 switch (e->event) { |
150 case WE_PAINT: { |
150 case WE_PAINT: { |
151 PlayerID player = w->window_number; |
151 PlayerID player = (PlayerID)w->window_number; |
152 const Player *p = GetPlayer(player); |
152 const Player *p = GetPlayer(player); |
153 |
153 |
154 if (player == _local_player) { |
154 if (player == _local_player) { |
155 /* borrow/repay buttons only exist for local player */ |
155 /* borrow/repay buttons only exist for local player */ |
156 SetWindowWidgetDisabledState(w, 7, p->current_loan == 0); |
156 SetWindowWidgetDisabledState(w, 7, p->current_loan == 0); |
168 case WE_CLICK: |
168 case WE_CLICK: |
169 switch (e->we.click.widget) { |
169 switch (e->we.click.widget) { |
170 case 2: {/* toggle size */ |
170 case 2: {/* toggle size */ |
171 byte mode = (byte)WP(w,def_d).data_1; |
171 byte mode = (byte)WP(w,def_d).data_1; |
172 bool stickied = !!(w->flags4 & WF_STICKY); |
172 bool stickied = !!(w->flags4 & WF_STICKY); |
173 PlayerID player = w->window_number; |
173 PlayerID player = (PlayerID)w->window_number; |
174 DeleteWindow(w); |
174 DeleteWindow(w); |
175 DoShowPlayerFinances(player, !HASBIT(mode, 0), stickied); |
175 DoShowPlayerFinances(player, !HASBIT(mode, 0), stickied); |
176 } break; |
176 } break; |
177 |
177 |
178 case 6: /* increase loan */ |
178 case 6: /* increase loan */ |
303 if (p->is_active && p->index != _local_player) SETBIT(used_colours, p->player_color); |
303 if (p->is_active && p->index != _local_player) SETBIT(used_colours, p->player_color); |
304 } |
304 } |
305 } |
305 } |
306 |
306 |
307 /* Get the first selected livery to use as the default dropdown item */ |
307 /* Get the first selected livery to use as the default dropdown item */ |
308 for (scheme = 0; scheme < LS_END; scheme++) { |
308 for (scheme = LS_BEGIN; scheme < LS_END; scheme++) { |
309 if (HASBIT(WP(w, livery_d).sel, scheme)) break; |
309 if (HASBIT(WP(w, livery_d).sel, scheme)) break; |
310 } |
310 } |
311 if (scheme == LS_END) scheme = LS_DEFAULT; |
311 if (scheme == LS_END) scheme = LS_DEFAULT; |
312 livery = &GetPlayer(w->window_number)->livery[scheme]; |
312 livery = &GetPlayer((PlayerID)w->window_number)->livery[scheme]; |
313 |
313 |
314 ShowDropDownMenu(w, _colour_dropdown, widget == 10 ? livery->colour1 : livery->colour2, widget, used_colours, 0); |
314 ShowDropDownMenu(w, _colour_dropdown, widget == 10 ? livery->colour1 : livery->colour2, widget, used_colours, 0); |
315 } |
315 } |
316 |
316 |
317 static void SelectPlayerLiveryWndProc(Window *w, WindowEvent *e) |
317 static void SelectPlayerLiveryWndProc(Window *w, WindowEvent *e) |
324 HideWindowWidget(w, 12); |
324 HideWindowWidget(w, 12); |
325 } |
325 } |
326 break; |
326 break; |
327 |
327 |
328 case WE_PAINT: { |
328 case WE_PAINT: { |
329 const Player *p = GetPlayer(w->window_number); |
329 const Player *p = GetPlayer((PlayerID)w->window_number); |
330 LiveryScheme scheme = LS_DEFAULT; |
330 LiveryScheme scheme = LS_DEFAULT; |
331 int y = 51; |
331 int y = 51; |
332 |
332 |
333 /* Disable dropdown controls if no scheme is selected */ |
333 /* Disable dropdown controls if no scheme is selected */ |
334 SetWindowWidgetDisabledState(w, 9, (WP(w, livery_d).sel == 0)); |
334 SetWindowWidgetDisabledState(w, 9, (WP(w, livery_d).sel == 0)); |
335 SetWindowWidgetDisabledState(w, 10, (WP(w, livery_d).sel == 0)); |
335 SetWindowWidgetDisabledState(w, 10, (WP(w, livery_d).sel == 0)); |
336 SetWindowWidgetDisabledState(w, 11, (WP(w, livery_d).sel == 0)); |
336 SetWindowWidgetDisabledState(w, 11, (WP(w, livery_d).sel == 0)); |
337 SetWindowWidgetDisabledState(w, 12, (WP(w, livery_d).sel == 0)); |
337 SetWindowWidgetDisabledState(w, 12, (WP(w, livery_d).sel == 0)); |
338 |
338 |
339 if (!(WP(w, livery_d).sel == 0)) { |
339 if (!(WP(w, livery_d).sel == 0)) { |
340 for (scheme = 0; scheme < LS_END; scheme++) { |
340 for (scheme = LS_BEGIN; scheme < LS_END; scheme++) { |
341 if (HASBIT(WP(w, livery_d).sel, scheme)) break; |
341 if (HASBIT(WP(w, livery_d).sel, scheme)) break; |
342 } |
342 } |
343 if (scheme == LS_END) scheme = LS_DEFAULT; |
343 if (scheme == LS_END) scheme = LS_DEFAULT; |
344 } |
344 } |
345 |
345 |
381 case 5: |
381 case 5: |
382 case 6: { |
382 case 6: { |
383 LiveryScheme scheme; |
383 LiveryScheme scheme; |
384 |
384 |
385 RaiseWindowWidget(w, WP(w, livery_d).livery_class + 2); |
385 RaiseWindowWidget(w, WP(w, livery_d).livery_class + 2); |
386 WP(w, livery_d).livery_class = e->we.click.widget - 2; |
386 WP(w, livery_d).livery_class = (LiveryClass)(e->we.click.widget - 2); |
387 WP(w, livery_d).sel = 0; |
387 WP(w, livery_d).sel = 0; |
388 LowerWindowWidget(w, WP(w, livery_d).livery_class + 2); |
388 LowerWindowWidget(w, WP(w, livery_d).livery_class + 2); |
389 |
389 |
390 /* Select the first item in the list */ |
390 /* Select the first item in the list */ |
391 for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) { |
391 for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) { |
411 ShowColourDropDownMenu(w, 12); |
411 ShowColourDropDownMenu(w, 12); |
412 break; |
412 break; |
413 |
413 |
414 case 13: { |
414 case 13: { |
415 LiveryScheme scheme; |
415 LiveryScheme scheme; |
416 LiveryScheme j = (e->we.click.pt.y - 48) / 14; |
416 LiveryScheme j = (LiveryScheme)((e->we.click.pt.y - 48) / 14); |
417 |
417 |
418 for (scheme = 0; scheme <= j; scheme++) { |
418 for (scheme = LS_BEGIN; scheme <= j; scheme++) { |
419 if (livery_class[scheme] != WP(w, livery_d).livery_class) j++; |
419 if (livery_class[scheme] != WP(w, livery_d).livery_class) j++; |
420 if (scheme >= LS_END) return; |
420 if (scheme >= LS_END) return; |
421 } |
421 } |
422 if (j >= LS_END) return; |
422 if (j >= LS_END) return; |
423 |
423 |
424 /* If clicking on the left edge, toggle using the livery */ |
424 /* If clicking on the left edge, toggle using the livery */ |
425 if (e->we.click.pt.x < 10) { |
425 if (e->we.click.pt.x < 10) { |
426 DoCommandP(0, j | (2 << 8), !GetPlayer(w->window_number)->livery[j].in_use, NULL, CMD_SET_PLAYER_COLOR); |
426 DoCommandP(0, j | (2 << 8), !GetPlayer((PlayerID)w->window_number)->livery[j].in_use, NULL, CMD_SET_PLAYER_COLOR); |
427 } |
427 } |
428 |
428 |
429 if (_ctrl_pressed) { |
429 if (_ctrl_pressed) { |
430 TOGGLEBIT(WP(w, livery_d).sel, j); |
430 TOGGLEBIT(WP(w, livery_d).sel, j); |
431 } else { |
431 } else { |
509 switch (e->event) { |
509 switch (e->event) { |
510 case WE_PAINT: { |
510 case WE_PAINT: { |
511 Player *p; |
511 Player *p; |
512 LowerWindowWidget(w, WP(w, facesel_d).gender + 5); |
512 LowerWindowWidget(w, WP(w, facesel_d).gender + 5); |
513 DrawWindowWidgets(w); |
513 DrawWindowWidgets(w); |
514 p = GetPlayer(w->window_number); |
514 p = GetPlayer((PlayerID)w->window_number); |
515 DrawPlayerFace(WP(w,facesel_d).face, p->player_color, 2, 16); |
515 DrawPlayerFace(WP(w,facesel_d).face, p->player_color, 2, 16); |
516 } break; |
516 } break; |
517 |
517 |
518 case WE_CLICK: |
518 case WE_CLICK: |
519 switch (e->we.click.widget) { |
519 switch (e->we.click.widget) { |
673 |
673 |
674 static void PlayerCompanyWndProc(Window *w, WindowEvent *e) |
674 static void PlayerCompanyWndProc(Window *w, WindowEvent *e) |
675 { |
675 { |
676 switch (e->event) { |
676 switch (e->event) { |
677 case WE_PAINT: { |
677 case WE_PAINT: { |
678 const Player *p = GetPlayer(w->window_number); |
678 const Player *p = GetPlayer((PlayerID)w->window_number); |
679 bool local = w->window_number == _local_player; |
679 bool local = w->window_number == _local_player; |
680 |
680 |
681 SetWindowWidgetHiddenState(w, PCW_WIDGET_NEW_FACE, !local); |
681 SetWindowWidgetHiddenState(w, PCW_WIDGET_NEW_FACE, !local); |
682 SetWindowWidgetHiddenState(w, PCW_WIDGET_COLOR_SCHEME, !local); |
682 SetWindowWidgetHiddenState(w, PCW_WIDGET_COLOR_SCHEME, !local); |
683 SetWindowWidgetHiddenState(w, PCW_WIDGET_PRESIDENT_NAME, !local); |
683 SetWindowWidgetHiddenState(w, PCW_WIDGET_PRESIDENT_NAME, !local); |
709 } |
709 } |
710 } |
710 } |
711 |
711 |
712 SetDParam(0, p->name_1); |
712 SetDParam(0, p->name_1); |
713 SetDParam(1, p->name_2); |
713 SetDParam(1, p->name_2); |
714 SetDParam(2, GetPlayerNameString((byte)w->window_number, 3)); |
714 SetDParam(2, GetPlayerNameString((PlayerID)w->window_number, 3)); |
715 |
715 |
716 DrawWindowWidgets(w); |
716 DrawWindowWidgets(w); |
717 |
717 |
718 SetDParam(0, p->inaugurated_year); |
718 SetDParam(0, p->inaugurated_year); |
719 DrawString(110, 25, STR_7038_INAUGURATED, 0); |
719 DrawString(110, 25, STR_7038_INAUGURATED, 0); |
720 |
720 |
721 DrawPlayerVehiclesAmount(w->window_number); |
721 DrawPlayerVehiclesAmount((PlayerID)w->window_number); |
722 |
722 |
723 DrawString(110,48, STR_7006_COLOR_SCHEME, 0); |
723 DrawString(110,48, STR_7006_COLOR_SCHEME, 0); |
724 // Draw company-colour bus |
724 // Draw company-colour bus |
725 DrawSprite(PLAYER_SPRITE_COLOR(p->index) + SPRITE_PALETTE(SPR_VEH_BUS_SW_VIEW), 215, 49); |
725 DrawSprite(PLAYER_SPRITE_COLOR(p->index) + SPRITE_PALETTE(SPR_VEH_BUS_SW_VIEW), 215, 49); |
726 |
726 |
742 switch (e->we.click.widget) { |
742 switch (e->we.click.widget) { |
743 case PCW_WIDGET_NEW_FACE: { |
743 case PCW_WIDGET_NEW_FACE: { |
744 Window *wf = AllocateWindowDescFront(&_select_player_face_desc, w->window_number); |
744 Window *wf = AllocateWindowDescFront(&_select_player_face_desc, w->window_number); |
745 if (wf != NULL) { |
745 if (wf != NULL) { |
746 wf->caption_color = w->window_number; |
746 wf->caption_color = w->window_number; |
747 WP(wf,facesel_d).face = GetPlayer(wf->window_number)->face; |
747 WP(wf,facesel_d).face = GetPlayer((PlayerID)wf->window_number)->face; |
748 WP(wf,facesel_d).gender = 0; |
748 WP(wf,facesel_d).gender = 0; |
749 } |
749 } |
750 break; |
750 break; |
751 } |
751 } |
752 |
752 |
760 } |
760 } |
761 break; |
761 break; |
762 } |
762 } |
763 |
763 |
764 case PCW_WIDGET_PRESIDENT_NAME: { |
764 case PCW_WIDGET_PRESIDENT_NAME: { |
765 const Player *p = GetPlayer(w->window_number); |
765 const Player *p = GetPlayer((PlayerID)w->window_number); |
766 WP(w, def_d).byte_1 = 0; |
766 WP(w, def_d).byte_1 = 0; |
767 SetDParam(0, p->president_name_2); |
767 SetDParam(0, p->president_name_2); |
768 ShowQueryString(p->president_name_1, STR_700B_PRESIDENT_S_NAME, 31, 94, w, CS_ALPHANUMERAL); |
768 ShowQueryString(p->president_name_1, STR_700B_PRESIDENT_S_NAME, 31, 94, w, CS_ALPHANUMERAL); |
769 break; |
769 break; |
770 } |
770 } |
771 |
771 |
772 case PCW_WIDGET_COMPANY_NAME: { |
772 case PCW_WIDGET_COMPANY_NAME: { |
773 Player *p = GetPlayer(w->window_number); |
773 Player *p = GetPlayer((PlayerID)w->window_number); |
774 WP(w,def_d).byte_1 = 1; |
774 WP(w,def_d).byte_1 = 1; |
775 SetDParam(0, p->name_2); |
775 SetDParam(0, p->name_2); |
776 ShowQueryString(p->name_1, STR_700A_COMPANY_NAME, 31, 150, w, CS_ALPHANUMERAL); |
776 ShowQueryString(p->name_1, STR_700A_COMPANY_NAME, 31, 150, w, CS_ALPHANUMERAL); |
777 break; |
777 break; |
778 } |
778 } |
779 |
779 |
780 case PCW_WIDGET_BUILD_VIEW_HQ: { |
780 case PCW_WIDGET_BUILD_VIEW_HQ: { |
781 TileIndex tile = GetPlayer(w->window_number)->location_of_house; |
781 TileIndex tile = GetPlayer((PlayerID)w->window_number)->location_of_house; |
782 if (tile == 0) { |
782 if (tile == 0) { |
783 if ((byte)w->window_number != _local_player) |
783 if ((byte)w->window_number != _local_player) |
784 return; |
784 return; |
785 SetObjectToPlaceWnd(SPR_CURSOR_HQ, 1, w); |
785 SetObjectToPlaceWnd(SPR_CURSOR_HQ, 1, w); |
786 SetTileSelectSize(2, 2); |
786 SetTileSelectSize(2, 2); |
888 |
888 |
889 static void BuyCompanyWndProc(Window *w, WindowEvent *e) |
889 static void BuyCompanyWndProc(Window *w, WindowEvent *e) |
890 { |
890 { |
891 switch (e->event) { |
891 switch (e->event) { |
892 case WE_PAINT: { |
892 case WE_PAINT: { |
893 Player *p = GetPlayer(w->window_number); |
893 Player *p = GetPlayer((PlayerID)w->window_number); |
894 SetDParam(0, p->name_1); |
894 SetDParam(0, p->name_1); |
895 SetDParam(1, p->name_2); |
895 SetDParam(1, p->name_2); |
896 DrawWindowWidgets(w); |
896 DrawWindowWidgets(w); |
897 |
897 |
898 DrawPlayerFace(p->face, p->player_color, 2, 16); |
898 DrawPlayerFace(p->face, p->player_color, 2, 16); |