Browse Source

🔥 Remove unused parts of game creation logic

pull/1013/merge
Anders Jenbo 5 years ago
parent
commit
bc3dc545da
  1. 2
      3rdParty/Storm/Source/storm.h
  2. 10
      DiabloUI/diabloui.h
  3. 6
      Source/diablo.cpp
  4. 2
      Source/diablo.h
  5. 6
      Source/init.cpp
  6. 1
      Source/init.h
  7. 33
      Source/mainmenu.cpp
  8. 13
      Source/mainmenu.h
  9. 31
      Source/multi.cpp
  10. 12
      Source/multi.h
  11. 83
      Source/pfile.cpp
  12. 4
      Source/pfile.h
  13. 30
      SourceX/DiabloUI/diabloui.cpp
  14. 20
      SourceX/DiabloUI/selconn.cpp
  15. 22
      SourceX/DiabloUI/selgame.cpp
  16. 11
      SourceX/DiabloUI/selhero.cpp
  17. 5
      SourceX/storm/storm.cpp
  18. 7
      SourceX/storm/storm_net.cpp
  19. 8
      enums.h
  20. 31
      structs.h

2
3rdParty/Storm/Source/storm.h vendored

@ -303,7 +303,7 @@ BOOL SNetGetOwnerTurnsWaiting(DWORD *);
bool SNetUnregisterEventHandler(event_type, SEVTHANDLER);
bool SNetRegisterEventHandler(event_type, SEVTHANDLER);
BOOLEAN SNetSetBasePlayer(int);
int SNetInitializeProvider(unsigned long, struct _SNETPROGRAMDATA *, struct _SNETPLAYERDATA *, struct _SNETUIDATA *, struct _SNETVERSIONDATA *);
int SNetInitializeProvider(Uint32 provider, struct GameData *gameData);
int SNetGetProviderCaps(struct _SNETCAPS *);
int SFileSetFilePointer(HANDLE, int, int*, int);
BOOL SFileEnableDirectAccess(BOOL enable);

10
DiabloUI/diabloui.h

@ -9,13 +9,12 @@ void UiTitleDialog();
void UiSetSpawned(BOOL bSpawned);
void UiInitialize();
BOOL UiValidPlayerName(const char *name); /* check */
void UiSelHeroMultDialog(BOOL (*fninfo)(BOOL (*fninfofunc)(_uiheroinfo *)), BOOL (*fncreate)(_uiheroinfo *), BOOL (*fnremove)(_uiheroinfo *), void (*fnstats)(unsigned int, _uidefaultstats *), int *dlgresult, BOOL *hero_is_created, char (*name)[16]);
void UiSelHeroSingDialog(BOOL (*fninfo)(BOOL (*fninfofunc)(_uiheroinfo *)), BOOL (*fncreate)(_uiheroinfo *), BOOL (*fnremove)(_uiheroinfo *), void (*fnstats)(unsigned int, _uidefaultstats *), int *dlgresult, char (*name)[16], int *difficulty);
void UiSelHeroMultDialog(BOOL (*fninfo)(BOOL (*fninfofunc)(_uiheroinfo *)), BOOL (*fncreate)(_uiheroinfo *), BOOL (*fnremove)(_uiheroinfo *), void (*fnstats)(unsigned int, _uidefaultstats *), _selhero_selections *dlgresult, char (*name)[16]);
void UiSelHeroSingDialog(BOOL (*fninfo)(BOOL (*fninfofunc)(_uiheroinfo *)), BOOL (*fncreate)(_uiheroinfo *), BOOL (*fnremove)(_uiheroinfo *), void (*fnstats)(unsigned int, _uidefaultstats *), _selhero_selections *dlgresult, char (*name)[16], int *difficulty);
BOOL UiCreditsDialog();
BOOL UiSupportDialog();
BOOL UiMainMenuDialog(const char *name, int *pdwResult, void (*fnSound)(const char *file), int attractTimeOut);
BOOL UiProgressDialog(const char *msg, int enable, int (*fnfunc)(), int rate);
const char **UiProfileGetString();
void UiProfileCallback();
void UiProfileDraw();
BOOL UiCategoryCallback(int a1, int a2, int a3, int a4, int a5, DWORD *a6, DWORD *a7);
@ -25,9 +24,8 @@ BOOL UiSoundCallback(int a1, int type, int a3);
BOOL UiDrawDescCallback(int game_type, DWORD color, const char *lpString, char *a4, int a5, UINT align, time_t a7, HDC *a8);
BOOL UiCreateGameCallback(int a1, int a2, int a3, int a4, int a5, int a6);
BOOL UiArtCallback(int game_type, unsigned int art_code, SDL_Color *pPalette, BYTE *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp);
int UiSelectGame(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *a6);
int UiSelectProvider(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *type);
BOOL UiCreatePlayerDescription(_uiheroinfo *info, Uint32 mode, char (*desc)[128]);
int UiSelectGame(GameData *gameData, int *playerId);
int UiSelectProvider(GameData *gameData);
void UiSetupPlayerInfo(char *infostr, _uiheroinfo *pInfo, Uint32 type);
} // namespace dvl

6
Source/diablo.cpp

@ -28,7 +28,7 @@ BOOL gbRunGameResult;
BOOL zoomflag;
/** Enable updating of player character, set to false once Diablo dies */
BOOL gbProcessPlayers;
BOOL gbLoadGame;
bool gbLoadGame;
BOOLEAN cineflag;
int force_redraw;
BOOL light4flag;
@ -370,7 +370,7 @@ BOOL StartGame(BOOL bNewGame, BOOL bSinglePlayer)
do {
fExitProgram = FALSE;
gbLoadGame = FALSE;
gbLoadGame = false;
if (!NetInit(bSinglePlayer, &fExitProgram)) {
gbRunGameResult = !fExitProgram;
@ -395,7 +395,7 @@ BOOL StartGame(BOOL bNewGame, BOOL bSinglePlayer)
}
run_game_loop(uMsg);
NetClose();
pfile_create_player_description(NULL, 0);
pfile_create_player_description();
// If the player left the game into the main menu,
// initialize main menu resources.

2
Source/diablo.h

@ -33,7 +33,7 @@ extern BOOL gbRunGame;
extern BOOL gbRunGameResult;
extern BOOL zoomflag;
extern BOOL gbProcessPlayers;
extern BOOL gbLoadGame;
extern bool gbLoadGame;
extern BOOLEAN cineflag;
extern int force_redraw;
/* These are defined in fonts.h */

6
Source/init.cpp

@ -20,7 +20,6 @@ int _newlib_heap_size_user = 100 * 1024 * 1024;
DEVILUTION_BEGIN_NAMESPACE
_SNETVERSIONDATA fileinfo;
/** True if the game is the current active window */
int gbActive;
/** A handle to an hellfire.mpq archive. */
@ -143,10 +142,6 @@ static void init_get_file_info()
void init_archives()
{
HANDLE fh = NULL;
memset(&fileinfo, 0, sizeof(fileinfo));
fileinfo.size = sizeof(fileinfo);
fileinfo.versionstring = gszVersionNumber;
init_get_file_info();
std::vector<std::string> paths;
@ -174,6 +169,7 @@ void init_archives()
if (spawn_mpq != NULL)
gbIsSpawn = true;
}
HANDLE fh = NULL;
if (!SFileOpenFile("ui_art\\title.pcx", &fh))
InsertCDDlg();
SFileCloseFile(fh);

1
Source/init.h

@ -12,7 +12,6 @@ DEVILUTION_BEGIN_NAMESPACE
extern "C" {
#endif
extern _SNETVERSIONDATA fileinfo;
extern int gbActive;
extern HANDLE hellfire_mpq;
extern WNDPROC CurrentProc;

33
Source/mainmenu.cpp

@ -77,24 +77,10 @@ static void mainmenu_play_intro()
play_movie("gendata\\diablo1.smk", TRUE);
mainmenu_refresh_music();
}
void mainmenu_change_name(int arg1, int arg2, int arg3, int arg4, char *name_1, char *name_2)
{
if (UiValidPlayerName(name_2))
pfile_rename_hero(name_1, name_2);
}
bool mainmenu_select_hero_dialog(
const _SNETPROGRAMDATA *client_info,
const _SNETPLAYERDATA *user_info,
const _SNETUIDATA *ui_info,
const _SNETVERSIONDATA *fileinfo,
DWORD mode,
char *cname, DWORD clen,
char *cdesc, DWORD cdlen,
bool *multi)
bool mainmenu_select_hero_dialog(GameData *gameData)
{
BOOL hero_is_created = TRUE;
int dlgresult = 0;
_selhero_selections dlgresult = SELHERO_NEW_DUNGEON;
if (!gbIsMultiplayer) {
UiSelHeroSingDialog(
pfile_ui_set_hero_infos,
@ -104,12 +90,9 @@ bool mainmenu_select_hero_dialog(
&dlgresult,
&gszHero,
&gnDifficulty);
client_info->initdata->nDifficulty = gnDifficulty;
gameData->nDifficulty = gnDifficulty;
if (dlgresult == SELHERO_CONTINUE)
gbLoadGame = TRUE;
else
gbLoadGame = FALSE;
gbLoadGame = (dlgresult == SELHERO_CONTINUE);
} else {
UiSelHeroMultDialog(
pfile_ui_set_hero_infos,
@ -117,7 +100,6 @@ bool mainmenu_select_hero_dialog(
pfile_delete_save,
pfile_ui_set_class_stats,
&dlgresult,
&hero_is_created,
&gszHero);
}
if (dlgresult == SELHERO_PREVIOUS) {
@ -125,12 +107,7 @@ bool mainmenu_select_hero_dialog(
return FALSE;
}
pfile_create_player_description(cdesc, cdlen);
if (multi) {
*multi = hero_is_created;
}
if (cname && clen)
SStrCopy(cname, gszHero, clen);
pfile_create_player_description();
return TRUE;
}

13
Source/mainmenu.h

@ -6,6 +6,8 @@
#ifndef __MAINMENU_H__
#define __MAINMENU_H__
#include "multi.h"
DEVILUTION_BEGIN_NAMESPACE
#ifdef __cplusplus
@ -14,16 +16,7 @@ extern "C" {
extern char gszHero[16];
void mainmenu_change_name(int arg1, int arg2, int arg3, int arg4, char *name_1, char *name_2);
bool mainmenu_select_hero_dialog(
const _SNETPROGRAMDATA *client_info,
const _SNETPLAYERDATA *user_info,
const _SNETUIDATA *ui_info,
const _SNETVERSIONDATA *fileinfo,
DWORD mode, // 4 chars, e.g. 'IPXN', 'BNET' etc. */
char *cname, DWORD clen, // character name will be copied here
char *cdesc, DWORD cdlen, // character "description" will be copied here (used to advertise games)
bool *multi); // new character? - unsure about this
bool mainmenu_select_hero_dialog(GameData *gameData);
void mainmenu_loop();
#ifdef __cplusplus

31
Source/multi.cpp

@ -729,10 +729,6 @@ void NetClose()
BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram)
{
_SNETPROGRAMDATA ProgramData;
_SNETUIDATA UiData;
_SNETPLAYERDATA plrdata;
while (1) {
*pfExitProgram = FALSE;
SetRndSeed(0);
@ -748,17 +744,6 @@ BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram)
sgGameInitInfo.bTheoQuest = sgOptions.Gameplay.bTheoQuest;
sgGameInitInfo.bCowQuest = sgOptions.Gameplay.bCowQuest;
sgGameInitInfo.bFriendlyFire = sgOptions.Gameplay.bFriendlyFire;
memset(&ProgramData, 0, sizeof(ProgramData));
ProgramData.size = sizeof(ProgramData);
ProgramData.maxplayers = MAX_PLRS;
ProgramData.initdata = &sgGameInitInfo;
memset(&plrdata, 0, sizeof(plrdata));
plrdata.size = sizeof(plrdata);
memset(&UiData, 0, sizeof(UiData));
UiData.size = sizeof(UiData);
UiData.selectnamecallback = mainmenu_select_hero_dialog;
UiData.changenamecallback = (void (*)())mainmenu_change_name;
UiData.profilefields = UiProfileGetString();
memset(sgbPlayerTurnBitTbl, 0, sizeof(sgbPlayerTurnBitTbl));
gbGameDestroyed = FALSE;
memset(sgbPlayerLeftGameTbl, 0, sizeof(sgbPlayerLeftGameTbl));
@ -768,10 +753,10 @@ BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram)
memset(sgwPackPlrOffsetTbl, 0, sizeof(sgwPackPlrOffsetTbl));
SNetSetBasePlayer(0);
if (bSinglePlayer) {
if (!multi_init_single(&ProgramData, &plrdata, &UiData))
if (!multi_init_single(&sgGameInitInfo))
return FALSE;
} else {
if (!multi_init_multi(&ProgramData, &plrdata, &UiData, pfExitProgram))
if (!multi_init_multi(&sgGameInitInfo, pfExitProgram))
return FALSE;
}
sgbNetInited = TRUE;
@ -820,11 +805,11 @@ BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram)
return TRUE;
}
BOOL multi_init_single(_SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info)
BOOL multi_init_single(GameData *gameData)
{
int unused;
if (!SNetInitializeProvider(SELCONN_LOOPBACK, client_info, user_info, ui_info, &fileinfo)) {
if (!SNetInitializeProvider(SELCONN_LOOPBACK, gameData)) {
SErrGetLastError();
return FALSE;
}
@ -840,23 +825,21 @@ BOOL multi_init_single(_SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info
return TRUE;
}
BOOL multi_init_multi(_SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, BOOL *pfExitProgram)
BOOL multi_init_multi(GameData *gameData, BOOL *pfExitProgram)
{
BOOL first;
int playerId;
int type;
for (first = TRUE;; first = FALSE) {
type = 0x00;
if (gbSelectProvider) {
if (!UiSelectProvider(0, client_info, user_info, ui_info, &fileinfo, &type)
if (!UiSelectProvider(gameData)
&& (!first || SErrGetLastError() != STORM_ERROR_REQUIRES_UPGRADE || !multi_upgrade(pfExitProgram))) {
return FALSE;
}
}
multi_event_handler(TRUE);
if (UiSelectGame(1, client_info, user_info, ui_info, &fileinfo, &playerId))
if (UiSelectGame(gameData, &playerId))
break;
gbSelectProvider = TRUE;

12
Source/multi.h

@ -6,6 +6,8 @@
#ifndef __MULTI_H__
#define __MULTI_H__
#include "msg.h"
DEVILUTION_BEGIN_NAMESPACE
#ifdef __cplusplus
@ -27,12 +29,6 @@ typedef struct GameData {
Uint8 bFriendlyFire;
} GameData;
typedef struct _SNETPROGRAMDATA {
Sint32 size;
Uint8 maxplayers;
GameData *initdata;
} _SNETPROGRAMDATA;
extern BOOLEAN gbSomebodyWonGameKludge;
extern char szPlayerDescript[128];
extern WORD sgwPackPlrOffsetTbl[MAX_PLRS];
@ -56,8 +52,8 @@ void multi_process_network_packets();
void multi_send_zero_packet(int pnum, BYTE bCmd, BYTE *pbSrc, DWORD dwLen);
void NetClose();
BOOL NetInit(BOOL bSinglePlayer, BOOL *pfExitProgram);
BOOL multi_init_single(_SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info);
BOOL multi_init_multi(_SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, BOOL *pfExitProgram);
BOOL multi_init_single(GameData *gameData);
BOOL multi_init_multi(GameData *gameData, BOOL *pfExitProgram);
void recv_plrinfo(int pnum, TCmdPlrInfoHdr *p, BOOL recv);
#ifdef __cplusplus

83
Source/pfile.cpp

@ -192,62 +192,7 @@ void pfile_write_hero()
}
}
BOOL pfile_create_player_description(char *dst, DWORD len)
{
char desc[128];
_uiheroinfo uihero;
myplr = 0;
pfile_read_player_from_save();
game_2_ui_player(plr, &uihero, gbValidSaveFile);
UiSetupPlayerInfo(gszHero, &uihero, GAME_ID);
if (dst != NULL && len) {
if (UiCreatePlayerDescription(&uihero, GAME_ID, &desc) == 0)
return FALSE;
SStrCopy(dst, desc, len);
}
return TRUE;
}
BOOL pfile_rename_hero(const char *name_1, const char *name_2)
{
int i;
DWORD save_num;
_uiheroinfo uihero;
BOOL found = FALSE;
if (pfile_get_save_num_from_name(name_2) == MAX_CHARACTERS) {
for (i = 0; i != MAX_PLRS; i++) {
if (!strcasecmp(name_1, plr[i]._pName)) {
found = TRUE;
break;
}
}
}
if (!found)
return FALSE;
save_num = pfile_get_save_num_from_name(name_1);
if (save_num == MAX_CHARACTERS)
return FALSE;
SStrCopy(hero_names[save_num], name_2, PLR_NAME_LEN);
SStrCopy(plr[i]._pName, name_2, PLR_NAME_LEN);
if (!strcasecmp(gszHero, name_1))
SStrCopy(gszHero, name_2, sizeof(gszHero));
game_2_ui_player(plr, &uihero, gbValidSaveFile);
UiSetupPlayerInfo(gszHero, &uihero, GAME_ID);
pfile_write_hero();
return TRUE;
}
void pfile_flush_W()
{
pfile_flush(TRUE, pfile_get_save_num_from_name(plr[myplr]._pName));
}
void game_2_ui_player(const PlayerStruct *p, _uiheroinfo *heroinfo, BOOL bHasSaveFile)
static void game_2_ui_player(const PlayerStruct *p, _uiheroinfo *heroinfo, BOOL bHasSaveFile)
{
memset(heroinfo, 0, sizeof(*heroinfo));
strncpy(heroinfo->name, p->_pName, sizeof(heroinfo->name) - 1);
@ -264,16 +209,32 @@ void game_2_ui_player(const PlayerStruct *p, _uiheroinfo *heroinfo, BOOL bHasSav
heroinfo->spawned = gbIsSpawn;
}
BOOL pfile_ui_set_hero_infos(BOOL (*ui_add_hero_info)(_uiheroinfo *))
BOOL pfile_create_player_description()
{
DWORD i;
char desc[128];
_uiheroinfo uihero;
myplr = 0;
pfile_read_player_from_save();
game_2_ui_player(&plr[myplr], &uihero, gbValidSaveFile);
UiSetupPlayerInfo(gszHero, &uihero, GAME_ID);
return TRUE;
}
void pfile_flush_W()
{
pfile_flush(TRUE, pfile_get_save_num_from_name(plr[myplr]._pName));
}
BOOL pfile_ui_set_hero_infos(BOOL (*ui_add_hero_info)(_uiheroinfo *))
{
memset(hero_names, 0, sizeof(hero_names));
for (i = 0; i < MAX_CHARACTERS; i++) {
PkPlayerStruct pkplr;
for (DWORD i = 0; i < MAX_CHARACTERS; i++) {
HANDLE archive = pfile_open_save_archive(i);
if (archive) {
PkPlayerStruct pkplr;
if (pfile_read_hero(archive, &pkplr)) {
_uiheroinfo uihero;
strcpy(hero_names[i], pkplr.pName);
@ -287,7 +248,7 @@ BOOL pfile_ui_set_hero_infos(BOOL (*ui_add_hero_info)(_uiheroinfo *))
RemoveEmptyInventory(0);
CalcPlrInv(0, FALSE);
game_2_ui_player(plr, &uihero, hasSaveGame);
game_2_ui_player(&plr[0], &uihero, hasSaveGame);
ui_add_hero_info(&uihero);
}
pfile_SFileCloseArchive(archive);

4
Source/pfile.h

@ -17,10 +17,8 @@ extern "C" {
extern BOOL gbValidSaveFile;
void pfile_write_hero();
BOOL pfile_create_player_description(char *dst, DWORD len);
BOOL pfile_rename_hero(const char *name_1, const char *name_2);
BOOL pfile_create_player_description();
void pfile_flush_W();
void game_2_ui_player(const PlayerStruct *p, _uiheroinfo *heroinfo, BOOL bHasSaveFile);
BOOL pfile_ui_set_hero_infos(BOOL (*ui_add_hero_info)(_uiheroinfo *));
BOOL pfile_archive_contains_game(HANDLE hsArchive, DWORD save_num);
void pfile_ui_set_class_stats(unsigned int player_class_nr, _uidefaultstats *class_stats);

30
SourceX/DiabloUI/diabloui.cpp

@ -500,16 +500,11 @@ void UiInitialize()
}
}
const char **UiProfileGetString()
{
return NULL;
}
char connect_plrinfostr[128];
char connect_categorystr[128];
void UiSetupPlayerInfo(char *infostr, _uiheroinfo *pInfo, Uint32 type)
{
SStrCopy(connect_plrinfostr, infostr, sizeof(connect_plrinfostr));
strncpy(connect_plrinfostr, infostr, sizeof(connect_plrinfostr));
char format[32] = "";
memcpy(format, &type, 4);
strcpy(&format[4], " %d %d %d %d %d %d %d %d %d");
@ -565,29 +560,6 @@ BOOL UiValidPlayerName(const char *name)
return true;
}
BOOL UiCreatePlayerDescription(_uiheroinfo *info, Uint32 mode, char (*desc)[128])
{
char format[32] = "";
memcpy(format, &mode, 4);
strcpy(&format[4], " %d %d %d %d %d %d %d %d %d");
snprintf(
*desc,
sizeof(*desc),
format,
info->level,
info->heroclass,
info->herorank,
info->strength,
info->magic,
info->dexterity,
info->vitality,
info->gold,
info->spawned);
return true;
}
Sint16 GetCenterOffset(Sint16 w, Sint16 bw)
{
if (bw == 0) {

20
SourceX/DiabloUI/selconn.cpp

@ -12,10 +12,7 @@ char selconn_Description[64];
char selconn_Gateway[129];
bool selconn_ReturnValue = false;
bool selconn_EndMenu = false;
_SNETPROGRAMDATA *selconn_ClientInfo;
_SNETPLAYERDATA *selconn_UserInfo;
_SNETUIDATA *selconn_UiInfo;
_SNETVERSIONDATA *selconn_FileInfo;
GameData *selconn_GameData;
int provider;
@ -125,22 +122,13 @@ void selconn_Select(int value)
provider = vecConnItems[value]->m_value;
selconn_Free();
selconn_EndMenu = SNetInitializeProvider(provider, selconn_ClientInfo, selconn_UserInfo, selconn_UiInfo, selconn_FileInfo);
selconn_EndMenu = SNetInitializeProvider(provider, selconn_GameData);
selconn_Load();
}
int UiSelectProvider(
int a1,
_SNETPROGRAMDATA *client_info,
_SNETPLAYERDATA *user_info,
_SNETUIDATA *ui_info,
_SNETVERSIONDATA *file_info,
int *type)
int UiSelectProvider(GameData *gameData)
{
selconn_ClientInfo = client_info;
selconn_UserInfo = user_info;
selconn_UiInfo = ui_info;
selconn_FileInfo = file_info;
selconn_GameData = gameData;
selconn_Load();
selconn_ReturnValue = true;

22
SourceX/DiabloUI/selgame.cpp

@ -24,7 +24,7 @@ int nDifficulty;
int nTickRate;
int heroLevel;
static _SNETPROGRAMDATA *m_client_info;
static GameData *m_game_data;
extern int provider;
#define DESCRIPTION_WIDTH 205
@ -427,7 +427,7 @@ void selgame_Password_Select(int value)
if (selgame_selectedGame) {
strcpy(sgOptions.Network.szPreviousHost, selgame_Ip);
if (SNetJoinGame(selgame_selectedGame, selgame_Ip, selgame_Password, NULL, NULL, gdwPlayerId)) {
if (!IsGameCompatible(m_client_info->initdata)) {
if (!IsGameCompatible(m_game_data)) {
selgame_GameSelection_Select(1);
return;
}
@ -443,14 +443,13 @@ void selgame_Password_Select(int value)
return;
}
GameData *data = m_client_info->initdata;
data->nDifficulty = nDifficulty;
data->nTickRate = nTickRate;
data->bRunInTown = sgOptions.Gameplay.bRunInTown;
data->bTheoQuest = sgOptions.Gameplay.bTheoQuest;
data->bCowQuest = sgOptions.Gameplay.bCowQuest;
m_game_data->nDifficulty = nDifficulty;
m_game_data->nTickRate = nTickRate;
m_game_data->bRunInTown = sgOptions.Gameplay.bRunInTown;
m_game_data->bTheoQuest = sgOptions.Gameplay.bTheoQuest;
m_game_data->bCowQuest = sgOptions.Gameplay.bCowQuest;
if (SNetCreateGame(NULL, selgame_Password, NULL, 0, (char *)data, sizeof(GameData), MAX_PLRS, NULL, NULL, gdwPlayerId)) {
if (SNetCreateGame(NULL, selgame_Password, NULL, 0, (char *)m_game_data, sizeof(GameData), MAX_PLRS, NULL, NULL, gdwPlayerId)) {
UiInitList_clear();
selgame_endMenu = true;
} else {
@ -469,11 +468,10 @@ void selgame_Password_Esc()
selgame_GameSpeedSelection();
}
int UiSelectGame(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info,
_SNETVERSIONDATA *file_info, int *playerId)
int UiSelectGame(GameData *gameData, int *playerId)
{
gdwPlayerId = playerId;
m_client_info = client_info;
m_game_data = gameData;
LoadBackgroundArt("ui_art\\selgame.pcx");
selgame_GameSelection_Init();

11
SourceX/DiabloUI/selhero.cpp

@ -30,7 +30,7 @@ char textStats[5][4];
char title[32];
char selhero_Lable[32];
char selhero_Description[256];
int selhero_result;
_selhero_selections selhero_result;
bool selhero_endMenu;
bool selhero_isMultiPlayer;
bool selhero_navigateYesNo;
@ -484,7 +484,7 @@ void selhero_Load_Select(int value)
selgame_GameSelection_Select(0);
}
selhero_result = 0;
selhero_result = SELHERO_NEW_DUNGEON;
}
static void UiSelHeroDialog(
@ -492,7 +492,7 @@ static void UiSelHeroDialog(
BOOL (*fncreate)(_uiheroinfo *),
void (*fnstats)(unsigned int, _uidefaultstats *),
BOOL (*fnremove)(_uiheroinfo *),
int *dlgresult,
_selhero_selections *dlgresult,
char (*name)[16])
{
bUIElementsLoaded = true;
@ -545,7 +545,7 @@ void UiSelHeroSingDialog(
BOOL (*fncreate)(_uiheroinfo *),
BOOL (*fnremove)(_uiheroinfo *),
void (*fnstats)(unsigned int, _uidefaultstats *),
int *dlgresult,
_selhero_selections *dlgresult,
char (*name)[16],
int *difficulty)
{
@ -559,8 +559,7 @@ void UiSelHeroMultDialog(
BOOL (*fncreate)(_uiheroinfo *),
BOOL (*fnremove)(_uiheroinfo *),
void (*fnstats)(unsigned int, _uidefaultstats *),
int *dlgresult,
BOOL *hero_is_created,
_selhero_selections *dlgresult,
char (*name)[16])
{
selhero_isMultiPlayer = true;

5
SourceX/storm/storm.cpp

@ -787,11 +787,6 @@ void SErrSetLastError(DWORD dwErrCode)
nLastError = dwErrCode;
}
void SStrCopy(char *dest, const char *src, int max_length)
{
strncpy(dest, src, max_length);
}
BOOL SFileSetBasePath(const char *path)
{
if (SBasePath == NULL)

7
SourceX/storm/storm_net.cpp

@ -93,14 +93,11 @@ BOOL SNetLeaveGame(int type)
/**
* @brief Called by engine for single, called by ui for multi
* @param provider BNET, IPXN, MODM, SCBL or UDPN
* @param fileinfo Ignore
*/
int SNetInitializeProvider(unsigned long provider, struct _SNETPROGRAMDATA *client_info,
struct _SNETPLAYERDATA *user_info, struct _SNETUIDATA *ui_info,
struct _SNETVERSIONDATA *fileinfo)
int SNetInitializeProvider(Uint32 provider, struct GameData *gameData)
{
dvlnet_inst = net::abstract_net::make_net(provider);
return ui_info->selectnamecallback(client_info, user_info, ui_info, fileinfo, provider, NULL, 0, NULL, 0, NULL);
return mainmenu_select_hero_dialog(gameData);
}
/**

8
enums.h

@ -2179,10 +2179,10 @@ typedef enum _mainmenu_selections {
} _mainmenu_selections;
typedef enum _selhero_selections {
SELHERO_NEW_DUNGEON = 1,
SELHERO_CONTINUE = 2,
SELHERO_CONNECT = 3,
SELHERO_PREVIOUS = 4
SELHERO_NEW_DUNGEON,
SELHERO_CONTINUE,
SELHERO_CONNECT,
SELHERO_PREVIOUS,
} _selhero_selections;
typedef enum panel_button_id {

31
structs.h

@ -268,37 +268,6 @@ typedef struct _SNETEVENT {
// TPDEF PTR FCN UCHAR SNETSELECTEDPROC
// TPDEF PTR FCN UCHAR SNETSTATUSPROC
typedef struct _SNETPLAYERDATA {
int size;
char *playername;
char *playerdescription;
} _SNETPLAYERDATA;
typedef struct _SNETVERSIONDATA {
int size;
const char *versionstring;
} _SNETVERSIONDATA;
typedef struct _SNETUIDATA {
int size;
void (*selectedcallback)();
void (*statuscallback)();
void (*categorylistcallback)();
void (*newaccountcallback)();
const char **profilefields;
bool (*selectnamecallback)(
const struct _SNETPROGRAMDATA *,
const struct _SNETPLAYERDATA *,
const struct _SNETUIDATA *,
const struct _SNETVERSIONDATA *,
DWORD provider, /* e.g. 'BNET', 'IPXN', 'MODM', 'SCBL' */
char *, DWORD, /* character name will be copied here */
char *, DWORD, /* character "description" will be copied here (used to advertise games) */
bool * /* new character? - unsure about this */
);
void (*changenamecallback)();
} _SNETUIDATA;
// TPDEF PTR FCN UCHAR SNETSPIBIND
// TPDEF PTR FCN UCHAR SNETSPIQUERY

Loading…
Cancel
Save