| 755 | } |
| 756 | |
| 757 | bool NetInit(bool bSinglePlayer) |
| 758 | { |
| 759 | while (true) { |
| 760 | SetRndSeed(0); |
| 761 | InitGameInfo(); |
| 762 | memset(sgbPlayerTurnBitTbl, 0, sizeof(sgbPlayerTurnBitTbl)); |
| 763 | gbGameDestroyed = false; |
| 764 | memset(sgbPlayerLeftGameTbl, 0, sizeof(sgbPlayerLeftGameTbl)); |
| 765 | memset(sgdwPlayerLeftReasonTbl, 0, sizeof(sgdwPlayerLeftReasonTbl)); |
| 766 | memset(sgbSendDeltaTbl, 0, sizeof(sgbSendDeltaTbl)); |
| 767 | Players.clear(); |
| 768 | MyPlayer = nullptr; |
| 769 | memset(sgwPackPlrOffsetTbl, 0, sizeof(sgwPackPlrOffsetTbl)); |
| 770 | SNetSetBasePlayer(0); |
| 771 | if (bSinglePlayer) { |
| 772 | if (!InitSingle(&sgGameInitInfo)) |
| 773 | return false; |
| 774 | } else { |
| 775 | if (!InitMulti(&sgGameInitInfo)) |
| 776 | return false; |
| 777 | } |
| 778 | sgbNetInited = true; |
| 779 | sgbTimeout = false; |
| 780 | delta_init(); |
| 781 | InitPlrMsg(); |
| 782 | BufferInit(&highPriorityBuffer); |
| 783 | BufferInit(&lowPriorityBuffer); |
| 784 | shareNextHighPriorityMessage = true; |
| 785 | sync_init(); |
| 786 | nthread_start(sgbPlayerTurnBitTbl[MyPlayerId]); |
| 787 | tmsg_start(); |
| 788 | sgdwGameLoops = 0; |
| 789 | sgbSentThisCycle = 0; |
| 790 | gbDeltaSender = MyPlayerId; |
| 791 | gbSomebodyWonGameKludge = false; |
| 792 | nthread_send_and_recv_turn(0, 0); |
| 793 | SetupLocalPositions(); |
| 794 | SendPlayerInfo(SNPLAYER_OTHERS, CMD_SEND_PLRINFO); |
| 795 | |
| 796 | Player &myPlayer = *MyPlayer; |
| 797 | ResetPlayerGFX(myPlayer); |
| 798 | myPlayer.plractive = true; |
| 799 | gbActivePlayers = 1; |
| 800 | |
| 801 | if (!sgbPlayerTurnBitTbl[MyPlayerId] || msg_wait_resync()) |
| 802 | break; |
| 803 | NetClose(); |
| 804 | gbSelectProvider = false; |
| 805 | } |
| 806 | SetRndSeed(sgGameInitInfo.dwSeed); |
| 807 | gnTickDelay = 1000 / sgGameInitInfo.nTickRate; |
| 808 | |
| 809 | for (int i = 0; i < NUMLEVELS; i++) { |
| 810 | glSeedTbl[i] = AdvanceRndSeed(); |
| 811 | } |
| 812 | PublicGame = DvlNet_IsPublicGame(); |
| 813 | |
| 814 | Player &myPlayer = *MyPlayer; |
no test coverage detected