Descent3/netcon/includes/mdllinit.h
Azamat H. Hackimov 1ae023a13b Enumerate all DLL functions manually
Enumerate DLL functions to ease tying functions in main and DLL sides in code.
2024-07-09 02:08:25 +03:00

322 lines
12 KiB
C

/*
* Descent 3
* Copyright (C) 2024 Parallax Software
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
--- HISTORICAL COMMENTS FOLLOW ---
* $Logfile: /DescentIII/Main/lib/mdllinit.h $
* $Revision: 1.1.1.1 $
* $Date: 2003/08/26 03:58:12 $
* $Author: kevinb $
*
* Multiplayer DLL function pointer init
*
* $Log: mdllinit.h,v $
* Revision 1.1.1.1 2003/08/26 03:58:12 kevinb
* initial 1.5 import
*
*
* 40 10/03/01 1:06a Kevin
* pxo bandwidth reduction and nat fix
*
* 39 3/26/00 10:30p Kevin
* MOD Downloader for 1.4 patch.
*
* 38 7/12/99 4:15p Kevin
* Changed the way we determine if we should report stats or not in PXO
*
* 37 7/06/99 5:52p Kevin
* PXO & multiplayer fixes for the patch
*
* 36 4/25/99 12:11a Kevin
* game info dialog stuff
*
* 35 4/23/99 3:33p Kevin
* mission file/multiplayer mod keyword system
*
* 34 4/19/99 3:57a Jeff
* got compiling for Linux
*
* 33 4/18/99 3:13p Jeff
* got working with linux
*
* 32 4/16/99 3:17p Kevin
* More mouselook support
*
* 31 4/08/99 4:54p Kevin
* Display level warp dialog for multiplayer
*
* 30 4/08/99 3:42p Kevin
* Added some stuff for the scoring API. Not functional yet.
*
* 29 3/25/99 3:26p Kevin
* Made PXO games be based on your chat channel
*
* 28 3/17/99 4:08p Kevin
* Changed the way games appear and timeout in the game list.
*
* 27 2/15/99 7:48p Jeff
* new pilot file class and read/write system checked in...should be more
* robust than old
*
* 26 1/11/99 12:29p Jeff
* changes made not to call the module library directly
*
* 25 1/07/99 11:51a Kevin
* Added support for joining servers on alternate ports and hosting behind
* a proxy/firewall
*
* 24 12/30/98 3:49p Kevin
* Moved multiplayer options out of DLL and into main app
*
* 23 12/30/98 12:16p Kevin
* Auto Mission Download system
*
* 22 12/23/98 6:38p Kevin
* All UDP data (except gamespy) now uses one (registered) port number
*
* 21 10/01/98 11:37a Kevin
* UI fixes and stuff
*
* 20 9/23/98 2:55p Kevin
* Saved multi config and changed UI to conform
*
* 19 9/22/98 2:29p Kevin
* moved ships allowed code out of dll and into main app. Also added
* powerup exclusions
*
* 18 9/21/98 11:19a Kevin
* check protocol before entering multiplayer screens
*
* 17 9/16/98 8:06p Jason
* got mastertracker working with the dedicated server
*
* 16 9/04/98 1:51p Kevin
* implemented asyncronous gethostbyname
*
* 15 9/02/98 6:54p Kevin
* Fixed general directplay support up, and got modem-modem working
*
* 14 8/27/98 5:03p Kevin
* Prettied up multiplayer screens and fixed some bugs.
*
* 13 8/25/98 6:33p Kevin
* pxo
*
* 12 8/24/98 5:04p Kevin
* Made msn files have the option to not be playable in multiplayer
*
* 11 8/24/98 10:42a Kevin
* Updated DLL for directplay and PXO background
*
* 10 8/19/98 11:50a Kevin
* Got DirectPlay IPX working, and localized connection DLLs
*
* 9 8/07/98 12:39p Jeff
* added "allowed ships" to multiplayer options
*
* 8 7/21/98 1:49p Kevin
* IPX support and peer-peer option for multi
*
* 7 7/20/98 2:34p Kevin
* Re-wrote the DLL wrapper, to allow for better expandability
*
* 6 7/10/98 10:47a Kevin
* Added command line connecting to games
*
* 5 6/24/98 6:40p Kevin
* Added help to main dll menu
*
* 4 6/24/98 3:24p Kevin
* Updated PXO screens with chat, etc.
*
* 3 6/18/98 4:49p Kevin
* Updated multiplayer menus
*
* 2 6/01/98 10:10a Kevin
* Added DLL connection interface and auto update DLL
*
* 1 5/18/98 2:26p Kevin
*
* $NoKeywords: $
*/
// Do functions, variables
// Note, these must match the ordering on the D3 side (multi_dll_mgr.cpp)
DLLGetMultiAPI = (GetMultiAPI_fp)api_func;
DLLGetMultiAPI(&API);
DLLSetUITextItemText = (SetUITextItemText_fp)API.fp[0];
DLLNewUIWindowCreate = (NewUIWindowCreate_fp)API.fp[1];
DLLNewUIWindowDestroy = (NewUIWindowDestroy_fp)API.fp[2];
DLLNewUIWindowOpen = (NewUIWindowOpen_fp)API.fp[3];
DLLNewUIWindowClose = (NewUIWindowClose_fp)API.fp[4];
DLLTextCreate = (TextCreate_fp)API.fp[5];
DLLEditCreate = (EditCreate_fp)API.fp[6];
DLLButtonCreate = (ButtonCreate_fp)API.fp[7];
DLLListCreate = (ListCreate_fp)API.fp[8];
DLLListRemoveAll = (ListRemoveAll_fp)API.fp[9];
DLLListAddItem = (ListAddItem_fp)API.fp[10];
DLLListRemoveItem = (ListRemoveItem_fp)API.fp[11];
DLLListSelectItem = (ListSelectItem_fp)API.fp[12];
DLLListGetItem = (ListGetItem_fp)API.fp[13];
DLLListGetSelectedIndex = (ListGetSelectedIndex_fp)API.fp[14];
DLLEditSetText = (EditSetText_fp)API.fp[15];
DLLEditGetText = (EditGetText_fp)API.fp[16];
DLLDatabaseWrite = (DatabaseWrite_fp)API.fp[17];
DLLDatabaseRead = (DatabaseRead_fp)API.fp[18];
DLLDoUI = (DoUI_fp)API.fp[19];
DLLDoMessageBoxFP = (DoMessageBox_fp)API.fp[20];
DLLDescentDefer = (DescentDefer_fp)API.fp[21];
DLLDebug_ConsolePrintf = (Debug_ConsolePrintf_fp)API.fp[22];
DLLDestroyStringTable = (DestroyStringTable_fp)API.fp[23];
DLLCreateStringTable = (CreateStringTable_fp)API.fp[24];
DLLNewUIGameWindowCreate = (NewUIGameWindowCreate_fp)API.fp[25];
DLLNewUIGameWindowDestroy = (NewUIGameWindowDestroy_fp)API.fp[26];
DLLNewUIGameWindowOpen = (NewUIGameWindowOpen_fp)API.fp[27];
DLLNewUIGameWindowClose = (NewUIGameWindowClose_fp)API.fp[28];
DLLSetScreenMode = (SetScreenMode_fp)API.fp[29];
DLLtimer_GetTime = (timer_GetTime_fp)API.fp[30];
DLLTryToJoinServer = (TryToJoinServer_fp)API.fp[31];
DLLMultiStartClient = (MultiStartClient_fp)API.fp[32];
DLLrend_GetRenderState = (rend_GetRenderState_fp)API.fp[33];
DLLLoadMission = (LoadMission_fp)API.fp[34];
DLLddio_MakePath = (ddio_MakePath_fp)API.fp[35];
DLLddio_FindFileStart = (ddio_FindFileStart_fp)API.fp[36];
DLLddio_FindFileClose = (ddio_FindFileClose_fp)API.fp[37];
DLLddio_FindNextFile = (ddio_FindNextFile_fp)API.fp[38];
DLLMultiStartServerFP = (MultiStartServer_fp)API.fp[39];
DLLShowProgressScreen = (ShowProgressScreen_fp)API.fp[40];
DLLSearchForLocalGamesTCP = (SearchForLocalGamesTCP_fp)API.fp[41];
DLLnw_GetHostAddressFromNumbers = (nw_GetHostAddressFromNumbers_fp)API.fp[42];
DLLnw_GetProtocolType = (nw_GetProtocolType_fp)API.fp[43];
DLLHotSpotCreate = (HotSpotCreate_fp)API.fp[44];
DLLPollUI = (PollUI_fp)API.fp[45];
DLLGetMissionName = (GetMissionName_fp)API.fp[46];
DLLRemoveUITextItem = (RemoveUITextItem_fp)API.fp[47];
DLLCreateNewUITextItemFP = (CreateNewUITextItem_fp)API.fp[48];
DLLmem_malloc = (mem_malloc_fp)API.fp[49];
DLLmem_free = (mem_free_fp)API.fp[50];
DLLCreateSplashScreen = (CreateSplashScreen_fp)API.fp[51];
DLLCloseSplashScreen = (CloseSplashScreen_fp)API.fp[52];
DLLUIConsoleGadgetCreate = (UIConsoleGadgetCreate_fp)API.fp[53];
DLLUIConsoleGadgetputs = (UIConsoleGadgetputs_fp)API.fp[54];
DLLNewUIWindowSetFocusOnEditGadget = (NewUIWindowSetFocusOnEditGadget_fp)API.fp[55];
DLLOldEditCreate = (OldEditCreate_fp)API.fp[56];
DLLOldListCreate = (OldListCreate_fp)API.fp[57];
DLLOldListRemoveAll = (OldListRemoveAll_fp)API.fp[58];
DLLOldListAddItem = (OldListAddItem_fp)API.fp[59];
DLLOldListRemoveItem = (OldListRemoveItem_fp)API.fp[60];
DLLOldListSelectItem = (OldListSelectItem_fp)API.fp[61];
DLLOldListGetItem = (OldListGetItem_fp)API.fp[62];
DLLOldListGetSelectedIndex = (OldListGetSelectedIndex_fp)API.fp[63];
DLLOldEditSetText = (OldEditSetText_fp)API.fp[64];
DLLOldEditGetText = (OldEditGetText_fp)API.fp[65];
DLLToggleUICallback = (ToggleUICallback_fp)API.fp[66];
DLLSearchForGamesPXO = (SearchForGamesPXO_fp)API.fp[67];
DLLSetOldEditBufferLen = (SetOldEditBufferLen_fp)API.fp[68];
DLLNewUIWindowLoadBackgroundImage = (NewUIWindowLoadBackgroundImage_fp)API.fp[69];
DLLDeleteUIItem = (DeleteUIItem_fp)API.fp[70];
DLLSearchForLocalGamesIPX = (SearchForLocalGamesIPX_fp)API.fp[71];
DLLHotSpotSetStates = (HotSpotSetStates_fp)API.fp[72];
DLLPlayerSetShipPermission = (PlayerSetShipPermission_fp)API.fp[73];
DLLPlayerIsShipAllowed = (PlayerIsShipAllowed_fp)API.fp[74];
#ifdef WIN32
DLLdp_InitDirectPlay = (dp_InitDirectPlay_fp)API.fp[75];
DLLdp_ListDirectPlayGames = (dp_ListDirectPlayGames_fp)API.fp[76];
DLLdp_GetModemChoices = (dp_GetModemChoices_fp)API.fp[77];
#endif
DLLDatabaseReadInt = (DatabaseReadInt_fp)API.fp[78];
DLLDatabaseWriteInt = (DatabaseWriteInt_fp)API.fp[79];
DLLDoScreenshot = (DoScreenshot_fp)API.fp[80];
DLLIsMissionMultiPlayable = (IsMissionMultiPlayable_fp)API.fp[81];
DLLgrtext_GetTextLineWidth = (grtext_GetTextLineWidth_fp)API.fp[82];
DLLGadgetDestroy = (GadgetDestroy_fp)API.fp[83];
#ifdef WIN32
DLLdp_StartGame = (dp_StartGame_fp)API.fp[84];
DLLdp_EndGame = (dp_EndGame_fp)API.fp[85];
#endif
DLLnw_Asyncgethostbyname = (nw_Asyncgethostbyname_fp)API.fp[86];
DLLPrintDedicatedMessage = (DedicatedServerPrintf_fp)API.fp[87];
DLLnw_ReccomendPPS = (nw_ReccomendPPS_fp)API.fp[88];
DLLDoMultiAllowed = (DoMultiAllowed_fp)API.fp[89];
DLLMultiDoConfigSave = (MultiDoConfigSave_fp)API.fp[90];
DLLMultiDoConfigLoad = (MultiDoConfigLoad_fp)API.fp[91];
DLLMultiLoadSettings = (MultiLoadSettings_fp)API.fp[92];
DLLnw_DoReceiveCallbacks = (nw_DoReceiveCallbacks_fp)API.fp[93];
DLLnw_SendWithID = (nw_SendWithID_fp)API.fp[94];
DLLnw_UnRegisterCallback = (nw_UnRegisterCallback_fp)API.fp[95];
DLLnw_RegisterCallback = (nw_RegisterCallback_fp)API.fp[96];
DLLmsn_CheckGetMission = (msn_CheckGetMission_fp)API.fp[97];
DLLMultiGameOptionsMenu = (MultiGameOptionsMenu_fp)API.fp[98];
DLLmod_FreeModule = (mod_FreeModule_fp)API.fp[99];
DLLmod_GetLastError = (mod_GetLastError_fp)API.fp[100];
DLLmod_GetSymbol = (mod_GetSymbol_fp)API.fp[101];
DLLmod_LoadModule = (mod_LoadModule_fp)API.fp[102];
CurrentPilotName = (CurrentPilotName_fp)API.fp[103];
DLLUpdateAndPackGameList = (UpdateAndPackGameList_fp)API.fp[104];
DLLMultiLevelSelection = (MultiLevelSelection_fp)API.fp[105];
DLLDoPlayerMouselookCheck = (DoPlayerMouselookCheck_fp)API.fp[106];
DLLCheckMissionForScript = (CheckMissionForScript_fp)API.fp[107];
DLLShowNetgameInfo = (ShowNetgameInfo_fp)API.fp[108];
// API.fp[109]; // Not used
DLLCheckGetD3M = (CheckGetD3M_fp)API.fp[110];
DLLMPlayers = (player *)API.players;
DLLNetgame = (netgame_info *)API.netgame;
DLLMNetPlayers = (netplayer *)API.netplayers;
DLLShips = (ship *)API.ships;
DLLPlayer_num = *API.vp[0];
DLLTracker_id = (char *)API.vp[1];
DLLGame_is_master_tracker_game = API.vp[2];
DLLGame_mode = *API.vp[3];
// DLLCurrent_pilot = (pilot *)API.vp[4];
DLLLocalD3Dir = (char *)(pilot *)API.vp[5];
DLLMultiGameStarting = (int *)API.vp[6];
DLLMTPilotinfo = (vmt_descent3_struct *)API.vp[7];
DLLNum_network_games_known = API.vp[8];
DLLNetwork_games = (network_game *)API.vp[9];
DLLNewUIWindow_alpha = (uint8_t *)API.vp[10];
DLLHelpText1 = (char *)API.vp[11];
DLLHelpText2 = (char *)API.vp[12];
DLLHelpText3 = (char *)API.vp[13];
DLLHelpText4 = (char *)API.vp[14];
DLLAuto_login_name = (char *)API.vp[15];
DLLAuto_login_pass = (char *)API.vp[16];
DLLAuto_login_addr = (char *)API.vp[17];
DLLAuto_login_port = (char *)API.vp[18];
#ifdef WIN32
DLLNum_directplay_games = (int *)API.vp[19];
DLLDirectplay_sessions = (LPDPSESSIONDESC2)API.vp[20];
DLLDP_active = (bool *)API.vp[21];
DLLUse_DirectPlay = (bool *)API.vp[22];
DLLModems_found = (modem_list *)API.vp[23];
DLLNum_modems_found = (int *)API.vp[24];
#else
DLLUse_DirectPlay = (bool *)API.vp[22];
#endif
DLLDedicated_server = (bool *)API.vp[25];
DLLTCP_active = (BOOL)*API.vp[26];
DLLIPX_active = (BOOL)*API.vp[27];
DLLnw_ListenPort = (uint16_t)((size_t)API.vp[28] & 0xffff);
DLLMulti_Gamelist_changed = (bool *)API.vp[29];
DLLPXO_hosted_lobby_name = (char *)API.vp[30];
DLLSupports_score_api = (bool *)API.vp[31];
// DLLPXOPort = (bool *)API.vp[32]; // only defined for mtclient because I'm lazy...
*DLLSupports_score_api = false;