| 621 | } |
| 622 | |
| 623 | BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram) |
| 624 | { |
| 625 | int i; |
| 626 | _SNETPROGRAMDATA ProgramData; |
| 627 | _SNETUIDATA UiData; |
| 628 | _SNETPLAYERDATA plrdata; |
| 629 | unsigned int len; |
| 630 | |
| 631 | while (1) { |
| 632 | *pfExitProgram = FALSE; |
| 633 | SetRndSeed(0); |
| 634 | sgGameInitInfo.dwSeed = time(NULL); |
| 635 | sgGameInitInfo.bDiff = gnDifficulty; |
| 636 | memset(&ProgramData, 0, sizeof(ProgramData)); |
| 637 | ProgramData.size = sizeof(ProgramData); |
| 638 | #ifdef SPAWN |
| 639 | ProgramData.programname = "Diablo Shareware"; |
| 640 | #else |
| 641 | ProgramData.programname = "Diablo Retail"; |
| 642 | #endif |
| 643 | ProgramData.programdescription = gszVersionNumber; |
| 644 | ProgramData.programid = 'DRTL'; |
| 645 | ProgramData.versionid = 42; |
| 646 | ProgramData.maxplayers = MAX_PLRS; |
| 647 | ProgramData.initdata = &sgGameInitInfo; |
| 648 | ProgramData.initdatabytes = sizeof(sgGameInitInfo); |
| 649 | ProgramData.optcategorybits = 15; |
| 650 | ProgramData.lcid = 1033; /* LANG_ENGLISH */ |
| 651 | memset(&plrdata, 0, sizeof(plrdata)); |
| 652 | plrdata.size = sizeof(plrdata); |
| 653 | memset(&UiData, 0, sizeof(UiData)); |
| 654 | UiData.size = sizeof(UiData); |
| 655 | UiData.artcallback = (void (*)())UiArtCallback; |
| 656 | UiData.createcallback = (void (*)())UiCreateGameCallback; |
| 657 | UiData.drawdesccallback = (void (*)())UiDrawDescCallback; |
| 658 | UiData.messageboxcallback = (void (*)())UiMessageBoxCallback; |
| 659 | UiData.soundcallback = (void (*)())UiSoundCallback; |
| 660 | UiData.authcallback = (void (*)())UiAuthCallback; |
| 661 | UiData.getdatacallback = (void (*)())UiGetDataCallback; |
| 662 | UiData.categorycallback = (void (*)())UiCategoryCallback; |
| 663 | UiData.selectnamecallback = mainmenu_select_hero_dialog; |
| 664 | UiData.changenamecallback = (void (*)())mainmenu_change_name; |
| 665 | UiData.profilebitmapcallback = (void (*)())UiProfileDraw; |
| 666 | UiData.profilecallback = (void (*)())UiProfileCallback; |
| 667 | UiData.profilefields = UiProfileGetString(); |
| 668 | memset(sgbPlayerTurnBitTbl, 0, sizeof(sgbPlayerTurnBitTbl)); |
| 669 | gbGameDestroyed = FALSE; |
| 670 | memset(sgbPlayerLeftGameTbl, 0, sizeof(sgbPlayerLeftGameTbl)); |
| 671 | memset(sgdwPlayerLeftReasonTbl, 0, sizeof(sgdwPlayerLeftReasonTbl)); |
| 672 | memset(sgbSendDeltaTbl, 0, sizeof(sgbSendDeltaTbl)); |
| 673 | memset(plr, 0, sizeof(plr)); |
| 674 | memset(sgwPackPlrOffsetTbl, 0, sizeof(sgwPackPlrOffsetTbl)); |
| 675 | SNetSetBasePlayer(0); |
| 676 | if (bSinglePlayer) { |
| 677 | if (!multi_init_single(&ProgramData, &plrdata, &UiData)) |
| 678 | return FALSE; |
| 679 | } else { |
| 680 | if (!multi_init_multi(&ProgramData, &plrdata, &UiData, pfExitProgram)) |
no test coverage detected