627 } |
627 } |
628 |
628 |
629 // functionality. |
629 // functionality. |
630 // 0 - make new player |
630 // 0 - make new player |
631 // 1 - make new AI player |
631 // 1 - make new AI player |
632 // 2 - delete player (p1 >> 8) & 0xFF |
632 // 2 - delete player (p2) |
633 // 3 - join player (p1 >> 8) & 0xFF with (p1 >> 16) & 0xFF |
633 // 3 - join player (p1 >> 8) & 0xFF with (p1 >> 16) & 0xFF |
634 int32 CmdPlayerCtrl(int x, int y, uint32 flags, uint32 p1, uint32 p2) |
634 int32 CmdPlayerCtrl(int x, int y, uint32 flags, uint32 p1, uint32 p2) |
635 { |
635 { |
636 int pi; |
636 int pi; |
637 Player *p; |
637 Player *p; |
684 break; |
684 break; |
685 case 1: // make new ai player |
685 case 1: // make new ai player |
686 DoStartupNewPlayer(true); |
686 DoStartupNewPlayer(true); |
687 break; |
687 break; |
688 case 2: // delete player |
688 case 2: // delete player |
689 pi = (byte)(p1 >> 8); |
689 p = DEREF_PLAYER(p2); |
690 ChangeOwnershipOfPlayerItems(pi, 255); |
690 |
691 DeletePlayerStuff(pi); |
691 /* Only allow removal of HUMAN companies */ |
|
692 if (IS_HUMAN_PLAYER(p2)) { |
|
693 /* Delete any open window of the company */ |
|
694 DeletePlayerWindows(p2); |
|
695 |
|
696 /* Show the bankrupt news */ |
|
697 SetDParam(0, p->name_1); |
|
698 SetDParam(1, p->name_2); |
|
699 AddNewsItem( (StringID)(p2 + 16*3), NEWS_FLAGS(NM_CALLBACK, 0, NT_COMPANY_INFO, DNC_BANKRUPCY),0,0); |
|
700 |
|
701 /* Remove the company */ |
|
702 ChangeOwnershipOfPlayerItems(p2, 255); |
|
703 p->money64 = p->player_money = 100000000; |
|
704 p->is_active = false; |
|
705 } |
692 break; |
706 break; |
693 |
707 |
694 case 3: // join player |
708 case 3: // join player |
695 pi = (byte)(p1 >> 8); |
709 pi = (byte)(p1 >> 8); |
696 ChangeOwnershipOfPlayerItems(pi, (byte)(p1 >> 16)); |
710 ChangeOwnershipOfPlayerItems(pi, (byte)(p1 >> 16)); |