mirror of
https://github.com/galaxyhaxz/devilution
synced 2024-11-29 01:33:50 +00:00
1299 lines
41 KiB
C
1299 lines
41 KiB
C
|
#pragma once
|
||
|
|
||
|
#ifndef __BLIZZARD_STORM_HEADER
|
||
|
#define __BLIZZARD_STORM_HEADER
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <winuser.h>
|
||
|
#include <winsock.h>
|
||
|
#include <ddraw.h>
|
||
|
|
||
|
// Note to self: Linker error => forgot a return value in cpp
|
||
|
|
||
|
// Storm API definition
|
||
|
#ifndef STORMAPI
|
||
|
#define STORMAPI __stdcall
|
||
|
#endif
|
||
|
|
||
|
#ifndef __STORM_SMAX
|
||
|
#define __STORM_SMAX(x,y) (x < y ? y : x)
|
||
|
#endif
|
||
|
|
||
|
#ifndef __STORM_SSIZEMAX
|
||
|
#define __STORM_SSIZEMAX(x,y) (__STORM_SMAX(sizeof(x),sizeof(y)))
|
||
|
#endif
|
||
|
|
||
|
#ifndef __STORM_SMIN
|
||
|
#define __STORM_SMIN(x,y) (x < y ? x : y)
|
||
|
#endif
|
||
|
|
||
|
#ifndef __STORM_SSIZEMIN
|
||
|
#define __STORM_SSIZEMIN(x,y) (__STORM_SMIN(sizeof(x),sizeof(y)))
|
||
|
#endif
|
||
|
|
||
|
typedef struct _WRECT
|
||
|
{
|
||
|
WORD left;
|
||
|
WORD top;
|
||
|
WORD right;
|
||
|
WORD bottom;
|
||
|
} WRECT, *PWRECT;
|
||
|
|
||
|
typedef struct _WPOINT
|
||
|
{
|
||
|
WORD x;
|
||
|
WORD y;
|
||
|
} WPOINT, *PWPOINT;
|
||
|
|
||
|
typedef struct _WSIZE
|
||
|
{
|
||
|
WORD cx;
|
||
|
WORD cy;
|
||
|
} WSIZE, *PWSIZE;
|
||
|
|
||
|
|
||
|
|
||
|
// Game states
|
||
|
#define GAMESTATE_PRIVATE 0x01
|
||
|
#define GAMESTATE_FULL 0x02
|
||
|
#define GAMESTATE_ACTIVE 0x04
|
||
|
#define GAMESTATE_STARTED 0x08
|
||
|
#define GAMESTATE_REPLAY 0x80
|
||
|
|
||
|
|
||
|
BOOL STORMAPI SNetCreateGame(const char *pszGameName, const char *pszGamePassword, const char *pszGameStatString, DWORD dwGameType, char *GameTemplateData, int GameTemplateSize, int playerCount, char *creatorName, char *a11, int *playerID);
|
||
|
BOOL STORMAPI SNetDestroy();
|
||
|
BOOL STORMAPI SNetEnumProviders(int (STORMAPI *callback)(DWORD, DWORD, DWORD, DWORD), int mincaps);
|
||
|
|
||
|
BOOL STORMAPI SNetEnumGames(int (STORMAPI *callback)(DWORD, DWORD, DWORD), int *hintnextcall);
|
||
|
|
||
|
/* SNetDropPlayer @ 106
|
||
|
*
|
||
|
* Drops a player from the current game.
|
||
|
*
|
||
|
* playerid: The player ID for the player to be dropped.
|
||
|
* flags:
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetDropPlayer(
|
||
|
int playerid,
|
||
|
DWORD flags);
|
||
|
|
||
|
/* SNetGetGameInfo @ 107
|
||
|
*
|
||
|
* Retrieves specific game information from Storm, such as name, password,
|
||
|
* stats, mode, game template, and players.
|
||
|
*
|
||
|
* type: The type of data to retrieve. See GAMEINFO_ flags.
|
||
|
* dst: The destination buffer for the data.
|
||
|
* length: The maximum size of the destination buffer.
|
||
|
* byteswritten: The number of bytes written to the destination buffer.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetGetGameInfo(
|
||
|
int type,
|
||
|
void *dst,
|
||
|
size_t length,
|
||
|
size_t *byteswritten = NULL);
|
||
|
|
||
|
|
||
|
#define SNGetGameInfo(typ,dst) SNetGetGameInfo(typ, &dst, sizeof(dst))
|
||
|
|
||
|
|
||
|
|
||
|
// Game info fields
|
||
|
#define GAMEINFO_NAME 1
|
||
|
#define GAMEINFO_PASSWORD 2
|
||
|
#define GAMEINFO_STATS 3
|
||
|
#define GAMEINFO_MODEFLAG 4
|
||
|
#define GAMEINFO_GAMETEMPLATE 5
|
||
|
#define GAMEINFO_PLAYERS 6
|
||
|
|
||
|
|
||
|
BOOL STORMAPI SNetGetNumPlayers(int *firstplayerid, int *lastplayerid, int *activeplayers);
|
||
|
|
||
|
|
||
|
typedef struct _CAPS
|
||
|
{
|
||
|
DWORD dwSize; // Size of this structure // sizeof(CAPS)
|
||
|
DWORD dwUnk_0x04; // Some flags?
|
||
|
DWORD maxmessagesize; // Size of the packet buffer, must be beteen 128 and 512
|
||
|
DWORD dwUnk_0x0C; // Unknown
|
||
|
DWORD dwDisplayedPlayerCount; // Displayed player count in the mode selection list
|
||
|
DWORD dwUnk_0x14; // some kind of timeout or timer related
|
||
|
DWORD dwPlayerLatency; // ... latency?
|
||
|
DWORD dwPlayerCount; // the number of players that can participate, must be between 1 and 20
|
||
|
DWORD dwCallDelay; // the number of calls before data is sent over the network // between 2 and 8; single player is set to 1
|
||
|
} CAPS, *PCAPS;
|
||
|
|
||
|
|
||
|
BOOL STORMAPI SNetGetPlayerCaps(char playerid, PCAPS playerCaps);
|
||
|
|
||
|
/* SNetGetPlayerName @ 113
|
||
|
*
|
||
|
* Retrieves the name of a player given their player ID.
|
||
|
*
|
||
|
* playerid: The player's ID.
|
||
|
* buffer: The buffer that will receive the name.
|
||
|
* buffersize: The maximum size of buffer.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetGetPlayerName(
|
||
|
int playerid,
|
||
|
char *buffer,
|
||
|
size_t buffersize);
|
||
|
|
||
|
/* SNetGetProviderCaps @ 114
|
||
|
*
|
||
|
* Retrieves network provider capacity information.
|
||
|
*
|
||
|
* providerCaps: A pointer to a CAPS structure that will receive the information.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetGetProviderCaps(
|
||
|
_SNETCAPS *providerCaps);
|
||
|
|
||
|
/* SNetGetTurnsInTransit @ 115
|
||
|
*
|
||
|
* Retrieves the number of turns (buffers) that have been queued
|
||
|
* before sending them over the network.
|
||
|
*
|
||
|
* turns: A pointer to an integer that will receive the value.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetGetTurnsInTransit(
|
||
|
int *turns);
|
||
|
|
||
|
|
||
|
BOOL STORMAPI SNetInitializeDevice(int a1, int a2, int a3, int a4, int *a5);
|
||
|
|
||
|
// Network provider structures
|
||
|
typedef struct _client_info
|
||
|
{
|
||
|
DWORD dwSize; // 60
|
||
|
char *pszName;
|
||
|
char *pszVersion;
|
||
|
DWORD dwProduct;
|
||
|
DWORD dwVerbyte;
|
||
|
DWORD dwUnk5;
|
||
|
DWORD dwMaxPlayers;
|
||
|
DWORD dwUnk7;
|
||
|
DWORD dwUnk8;
|
||
|
DWORD dwUnk9;
|
||
|
DWORD dwUnk10; // 0xFF
|
||
|
char *pszCdKey;
|
||
|
char *pszCdOwner;
|
||
|
DWORD dwIsShareware;
|
||
|
DWORD dwLangId;
|
||
|
} client_info;
|
||
|
|
||
|
typedef struct _user_info
|
||
|
{
|
||
|
DWORD dwSize; // 16
|
||
|
char *pszPlayerName;
|
||
|
char *pszUnknown;
|
||
|
DWORD dwUnknown;
|
||
|
} user_info;
|
||
|
|
||
|
typedef struct _battle_info
|
||
|
{
|
||
|
DWORD dwSize; // 92
|
||
|
DWORD dwUnkType;
|
||
|
HWND hFrameWnd;
|
||
|
void *pfnBattleGetResource;
|
||
|
void *pfnBattleGetErrorString;
|
||
|
void *pfnBattleMakeCreateGameDialog;
|
||
|
void *pfnBattleUpdateIcons;
|
||
|
DWORD dwUnk_07;
|
||
|
void *pfnBattleErrorDialog;
|
||
|
void *pfnBattlePlaySound;
|
||
|
DWORD dwUnk_10;
|
||
|
void *pfnBattleGetCursorLink;
|
||
|
DWORD dwUnk_12;
|
||
|
void *pfnUnk_13;
|
||
|
DWORD dwUnk_14;
|
||
|
void *pfnBattleMakeProfileDialog;
|
||
|
char *pszProfileStrings;
|
||
|
void *pfnBattleDrawProfileInfo;
|
||
|
void *pfnUnk_18;
|
||
|
DWORD dwUnk_19;
|
||
|
void *pfnUnk_20;
|
||
|
void *pfnUnk_21;
|
||
|
void *pfnBattleSetLeagueName;
|
||
|
} battle_info;
|
||
|
|
||
|
typedef struct _module_info
|
||
|
{
|
||
|
DWORD dwSize; // 20
|
||
|
char *pszVersionString;
|
||
|
char *pszModuleName;
|
||
|
char *pszMainArchive;
|
||
|
char *pszPatchArchive;
|
||
|
} module_info;
|
||
|
|
||
|
typedef struct _game
|
||
|
{
|
||
|
DWORD dwIndex;
|
||
|
DWORD dwGameState;
|
||
|
DWORD dwUnk_08;
|
||
|
SOCKADDR saHost;
|
||
|
DWORD dwUnk_1C;
|
||
|
DWORD dwTimer;
|
||
|
DWORD dwUnk_24;
|
||
|
char szGameName[128];
|
||
|
char szGameStatString[128];
|
||
|
_game *pNext;
|
||
|
void *pExtra;
|
||
|
DWORD dwExtraBytes;
|
||
|
DWORD dwProduct;
|
||
|
DWORD dwVersion;
|
||
|
} game;
|
||
|
|
||
|
typedef struct _storm_head
|
||
|
{
|
||
|
WORD wChecksum;
|
||
|
WORD wLength;
|
||
|
WORD wSent;
|
||
|
WORD wReceived;
|
||
|
BYTE bCommandClass;
|
||
|
BYTE bCommandType;
|
||
|
BYTE bPlayerId;
|
||
|
BYTE bFlags;
|
||
|
} storm_head;
|
||
|
|
||
|
|
||
|
// Traffic flags
|
||
|
#define STRAFFIC_NORMAL 0
|
||
|
#define STRAFFIC_VERIFY 1
|
||
|
#define STRAFFIC_RESEND 2
|
||
|
#define STRAFFIC_REPLY 4
|
||
|
|
||
|
|
||
|
/* SNetInitializeProvider @ 117
|
||
|
*
|
||
|
* Initializes a provider by storing the provider callbacks, and calling
|
||
|
* spiInitialize() using the parameters passed to this function.
|
||
|
* Note: The use of the parameters is determined by the network
|
||
|
* module.
|
||
|
*
|
||
|
* providerName: The provider's identifier. Example: 'TENB' (BNET).
|
||
|
* gameClientInfo: A pointer to a clientInfo structure containing
|
||
|
* information about the game client.
|
||
|
* userData: A pointer to a userInfo structure containing information
|
||
|
* about the player.
|
||
|
* bnCallbacks: A pointer to a battleInfo structure containing callbacks
|
||
|
* and other information that is specific to Battle.net.
|
||
|
* moduleData: A pointer to a moduleInfo structure containing the
|
||
|
* executable information and paths to MPQ archives.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetInitializeProvider(
|
||
|
DWORD providerName,
|
||
|
_SNETPROGRAMDATA *gameClientInfo,
|
||
|
_SNETPLAYERDATA *userData,
|
||
|
_SNETUIDATA *bnCallbacks,
|
||
|
_SNETVERSIONDATA *moduleData);
|
||
|
|
||
|
|
||
|
BOOL STORMAPI SNetJoinGame(int id, char *gameName, char *gamePassword, char *playerName, char *userStats, int *playerid);
|
||
|
|
||
|
/* SNetLeaveGame @ 119
|
||
|
*
|
||
|
* Notifies Storm that the player has left the game. Storm will
|
||
|
* notify all connected peers through the network provider.
|
||
|
*
|
||
|
* type: The leave type. It doesn't appear to be important, no documentation available.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetLeaveGame(
|
||
|
int type);
|
||
|
|
||
|
BOOL STORMAPI SNetPerformUpgrade(DWORD *upgradestatus);
|
||
|
BOOL STORMAPI SNetReceiveMessage(int *senderplayerid, char **data, int *databytes);
|
||
|
BOOL STORMAPI SNetReceiveTurns(int a1, int arraysize, char **arraydata, unsigned int *arraydatabytes, DWORD *arrayplayerstatus);
|
||
|
|
||
|
// Values for arrayplayerstatus
|
||
|
#define SNET_PS_OK 0
|
||
|
#define SNET_PS_WAITING 2
|
||
|
#define SNET_PS_NOTRESPONDING 3
|
||
|
#define SNET_PS_UNKNOWN default
|
||
|
|
||
|
|
||
|
// Event structure
|
||
|
typedef struct _s_evt
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
int dwPlayerId;
|
||
|
void *pData;
|
||
|
DWORD dwSize;
|
||
|
} S_EVT, *PS_EVT;
|
||
|
|
||
|
|
||
|
// @TODO: "type" is unknown.
|
||
|
HANDLE STORMAPI SNetRegisterEventHandler(int type, void (STORMAPI *sEvent)(_SNETEVENT *));
|
||
|
HANDLE STORMAPI SNetUnregisterEventHandler(int type, void (STORMAPI *sEvent)(_SNETEVENT *));
|
||
|
|
||
|
int STORMAPI SNetSelectGame(int a1, int a2, int a3, int a4, int a5, int *playerid);
|
||
|
|
||
|
/* SNetSendMessage @ 127
|
||
|
*
|
||
|
* Sends a message to a player given their player ID. Network message
|
||
|
* is sent using class 01 and is retrieved by the other client using
|
||
|
* SNetReceiveMessage().
|
||
|
*
|
||
|
* playerID: The player index of the player to receive the data.
|
||
|
* Conversely, this field can be one of the following constants:
|
||
|
* SNPLAYER_ALL | Sends the message to all players, including oneself.
|
||
|
* SNPLAYER_OTHERS | Sends the message to all players, except for oneself.
|
||
|
* data: A pointer to the data.
|
||
|
* databytes: The amount of bytes that the data pointer contains.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetSendMessage(
|
||
|
int playerID,
|
||
|
void *data,
|
||
|
size_t databytes);
|
||
|
|
||
|
|
||
|
// Macro values to target specific players
|
||
|
#define SNPLAYER_ALL -1
|
||
|
#define SNPLAYER_OTHERS -2
|
||
|
|
||
|
|
||
|
/* SNetSendTurn @ 128
|
||
|
*
|
||
|
* Sends a turn (data packet) to all players in the game. Network data
|
||
|
* is sent using class 02 and is retrieved by the other client using
|
||
|
* SNetReceiveTurns().
|
||
|
*
|
||
|
* data: A pointer to the data.
|
||
|
* databytes: The amount of bytes that the data pointer contains.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetSendTurn(
|
||
|
char *data,
|
||
|
size_t databytes);
|
||
|
|
||
|
/* SNetSetGameMode @ 130
|
||
|
*
|
||
|
* Set's the game's mode flags, notifying the network
|
||
|
* provider that the state of the game has changed.
|
||
|
* For example: notifies Battle.net when the game is
|
||
|
* full.
|
||
|
*
|
||
|
* You should first call SNetGetGameInfo to retrieve
|
||
|
* the existing mode flags.
|
||
|
*
|
||
|
* modeFlags: The new flags for the game mode.
|
||
|
* GAMESTATE_PRIVATE | The game is passworded.
|
||
|
* GAMESTATE_FULL | The game is full.
|
||
|
* GAMESTATE_ACTIVE | The game is available.
|
||
|
* GAMESTATE_STARTED | The game is in progress.
|
||
|
* GAMESTATE_REPLAY | The game is a replay.
|
||
|
* makePublic: Used to make the game a public game, removing the GAMESTATE_PRIVATE flag.
|
||
|
*
|
||
|
* Returns TRUE if the function was called successfully and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SNetSetGameMode(
|
||
|
DWORD modeFlags,
|
||
|
bool makePublic = false);
|
||
|
|
||
|
#define SNMakeGamePublic() SNetSetGameMode( (DWORD mode, SNetGetGameInfo(GAMEINFO_MODEFLAGS, &mode, 4), mode), true)
|
||
|
|
||
|
BOOL STORMAPI SNetEnumGamesEx(int a1, int a2, int (__fastcall *callback)(DWORD, DWORD, DWORD), int *hintnextcall);
|
||
|
BOOL STORMAPI SNetSendServerChatCommand(const char *command);
|
||
|
|
||
|
BOOL STORMAPI SNetDisconnectAll(DWORD flags);
|
||
|
BOOL STORMAPI SNetCreateLadderGame(const char *pszGameName, const char *pszGamePassword, const char *pszGameStatString, DWORD dwGameType, DWORD dwGameLadderType, DWORD dwGameModeFlags, char *GameTemplateData, int GameTemplateSize, int playerCount, char *creatorName, char *a11, int *playerID);
|
||
|
|
||
|
#define SNET_GAME_RESULT_WIN 1
|
||
|
#define SNET_GAME_RESULT_LOSS 2
|
||
|
#define SNET_GAME_RESULT_DRAW 3
|
||
|
#define SNET_GAME_RESULT_DISCONNECT 4
|
||
|
|
||
|
BOOL STORMAPI SNetReportGameResult(unsigned a1, int size, int *results, const char* headerInfo, const char* detailInfo);
|
||
|
|
||
|
int STORMAPI SNetSendLeagueCommand(char *cmd, char *callback);
|
||
|
int STORMAPI SNetSendReplayPath(int a1, int a2, char *replayPath);
|
||
|
int STORMAPI SNetGetLeagueName(int leagueID);
|
||
|
BOOL STORMAPI SNetGetPlayerNames(char **names);
|
||
|
int STORMAPI SNetLeagueLogout(char *bnetName);
|
||
|
int STORMAPI SNetGetLeaguePlayerName(char *curPlayerLeageName, size_t nameSize);
|
||
|
|
||
|
HGDIOBJ STORMAPI SDlgDefDialogProc(HWND hDlg, signed int DlgType, HDC textLabel, HWND hWnd);
|
||
|
|
||
|
HANDLE STORMAPI SDlgDialogBoxIndirectParam(HMODULE hModule, LPCSTR lpName, HWND hWndParent, LPVOID lpParam, LPARAM lParam);
|
||
|
|
||
|
BOOL STORMAPI SDlgEndDialog(HWND hDlg, HANDLE nResult);
|
||
|
|
||
|
BOOL STORMAPI SDlgSetControlBitmaps(HWND parentwindow, int *id, int a3, char *buffer2, char *buffer, int flags, int mask);
|
||
|
|
||
|
/*
|
||
|
// lpCursorName can only be IDC_ARROW
|
||
|
BOOL STORMAPI SDlgSetSystemCursor(void *lpSrcBuffer, void *p_a2, LPSIZE lpSize, LPCSTR lpCursorName);
|
||
|
*/
|
||
|
|
||
|
BOOL STORMAPI SDlgBltToWindowE(HWND hWnd, HRGN a2, char *a3, int a4, void *buffer, RECT *rct, SIZE *size, int a8, int a9, DWORD rop);
|
||
|
BOOL STORMAPI SDlgSetBitmapE(HWND hWnd, int a2, char *src, int mask1, int flags, int a6, int a7, int width, int a9, int mask2);
|
||
|
|
||
|
int STORMAPI Ordinal224(int a1);
|
||
|
|
||
|
BOOL STORMAPI SFileCloseArchive(HANDLE hArchive);
|
||
|
BOOL STORMAPI SFileCloseFile(HANDLE hFile);
|
||
|
|
||
|
BOOL STORMAPI SFileDdaBeginEx(HANDLE directsound, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int a6, int a7);
|
||
|
BOOL STORMAPI SFileDdaDestroy();
|
||
|
BOOL STORMAPI SFileDdaEnd(HANDLE directsound);
|
||
|
BOOL STORMAPI SFileDdaGetPos(HANDLE directsound, int a2, int a3);
|
||
|
|
||
|
BOOL STORMAPI SFileDdaInitialize(HANDLE directsound);
|
||
|
BOOL STORMAPI SFileDdaSetVolume(HANDLE directsound, signed int bigvolume, signed int volume);
|
||
|
BOOL STORMAPI SFileDestroy();
|
||
|
|
||
|
BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE archive);
|
||
|
LONG STORMAPI SFileGetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh);
|
||
|
BOOL STORMAPI SFileOpenArchive(const char *szMpqName, DWORD dwPriority, DWORD dwFlags, HANDLE *phMpq);
|
||
|
|
||
|
// values for dwFlags
|
||
|
enum MPQFlags
|
||
|
{
|
||
|
MPQ_NO_LISTFILE = 0x0010,
|
||
|
MPQ_NO_ATTRIBUTES = 0x0020,
|
||
|
MPQ_FORCE_V1 = 0x0040,
|
||
|
MPQ_CHECK_SECTOR_CRC = 0x0080
|
||
|
};
|
||
|
|
||
|
|
||
|
BOOL STORMAPI SFileOpenFile(const char *filename, HANDLE *phFile);
|
||
|
BOOL STORMAPI SFileOpenFileEx(HANDLE hMpq, const char *szFileName, DWORD dwSearchScope, HANDLE *phFile);
|
||
|
|
||
|
// values for dwSearchScope
|
||
|
enum SFileFlags
|
||
|
{
|
||
|
SFILE_FROM_MPQ = 0x00000000,
|
||
|
SFILE_FROM_ABSOLUTE = 0x00000001,
|
||
|
SFILE_FROM_RELATIVE = 0x00000002,
|
||
|
SFILE_FROM_DISK = 0x00000004
|
||
|
};
|
||
|
|
||
|
BOOL STORMAPI SFileReadFile(HANDLE hFile, void *buffer, DWORD nNumberOfBytesToRead, DWORD *read, LONG lpDistanceToMoveHigh);
|
||
|
|
||
|
void STORMAPI SFileSetLocale(LCID lcLocale);
|
||
|
|
||
|
// mode: 0 - Silent (callback is NULL)
|
||
|
// 1 - Application Defined
|
||
|
// 2 - Handled by storm (callback is NULL)
|
||
|
// BOOL STORMAPI callback(const char *pszFilename, DWORD dwErrCode, DWORD dwErrCount)
|
||
|
BOOL STORMAPI SFileSetIoErrorMode(DWORD mode, BOOL (STORMAPI *callback)(const char*,DWORD,DWORD) );
|
||
|
|
||
|
BOOL STORMAPI SFileGetArchiveName(HANDLE hArchive, char *name, int length);
|
||
|
BOOL STORMAPI SFileGetFileName(HANDLE hFile, char *buffer, int length);
|
||
|
|
||
|
BOOL STORMAPI SFileLoadFile(char *filename, void *buffer, int buffersize, int a4, int a5);
|
||
|
BOOL STORMAPI SFileUnloadFile(HANDLE hFile);
|
||
|
BOOL STORMAPI SFileLoadFileEx(void *hArchive, char *filename, int a3, int a4, int a5, DWORD searchScope, struct _OVERLAPPED *lpOverlapped);
|
||
|
|
||
|
// Options are DWORD except for #6
|
||
|
// 1: [TRUE|FALSE] - If true, reports resource leaks (SErrReportResourceLeak/SErrReportNamedResourceLeak) to the attached debugger instead of a message box.
|
||
|
// 2: This option is unused.
|
||
|
// 3: [TRUE|FALSE] - If true, reports general memory leaks to the attached debugger instead of a message box.
|
||
|
// 4: This option is unused.
|
||
|
// 5: [TRUE|FALSE] - If true, reports log messages and log dumps to the attached debugger.
|
||
|
// 6: { DWORD blocks_allocated; DWORD blocks_freed; } Used to determine the amount of memory/heap blocks that have been allocated and freed by storm.
|
||
|
// Can also be used for custom allocations outside of storm.
|
||
|
//
|
||
|
//BOOL STORMAPI StormGetOption(int type, void *pValue, size_t *pSize);
|
||
|
//BOOL STORMAPI StormSetOption(int type, void *pValue, size_t size);
|
||
|
|
||
|
BOOL STORMAPI SBltROP3(void *lpDstBuffer, void *lpSrcBuffer, int srcDrawWidth, int srcDrawHeight, int dstWidth, int srcWidth, int a7, DWORD rop);
|
||
|
BOOL STORMAPI SBltROP3Clipped(void *lpDstBuffer, RECT *lpDstRect, POINT *lpDstPt, int a4, void *lpSrcBuffer, RECT *lpSrcRect, POINT *lpSrcPt, int a8, int a9, DWORD rop);
|
||
|
|
||
|
#define SBMP_DEFAULT 0
|
||
|
#define SBMP_BMP 1
|
||
|
#define SBMP_PCX 2
|
||
|
#define SBMP_TGA 3
|
||
|
|
||
|
|
||
|
/* SBmpDecodeImage @ 321
|
||
|
*
|
||
|
* Decodes an image that has already been loaded into a buffer.
|
||
|
*
|
||
|
* dwImgType: Optional, the image type. See SBMP_ macros.
|
||
|
* pSrcBuffer: A pointer to the source buffer.
|
||
|
* dwSrcBuffersize: The size of the data in the source buffer.
|
||
|
* pPalette: An optional buffer that receives the image palette.
|
||
|
* pDstBuffer: A buffer that receives the image data.
|
||
|
* dwDstBuffersize: The size of the specified image buffer. If the size of the
|
||
|
* destination buffer is 0, then the destination buffer is not used.
|
||
|
* pdwWidth: An optional variable that receives the image width.
|
||
|
* pdwHeight: An optional variable that receives the image height.
|
||
|
* pdwBpp: An optional variable that receives the image bits per pixel.
|
||
|
*
|
||
|
* Returns TRUE if the image was supported and decoded correctly, FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SBmpDecodeImage(
|
||
|
DWORD dwImgType,
|
||
|
void *pSrcBuffer,
|
||
|
DWORD dwSrcBuffersize,
|
||
|
PALETTEENTRY *pPalette = NULL,
|
||
|
void *pDstBuffer = NULL,
|
||
|
DWORD dwDstBuffersize = 0,
|
||
|
DWORD *pdwWidth = NULL,
|
||
|
DWORD *pdwHeight = NULL,
|
||
|
DWORD *pdwBpp = NULL);
|
||
|
|
||
|
|
||
|
/* SBmpLoadImage @ 323
|
||
|
*
|
||
|
* Load an image from an available archive into a buffer.
|
||
|
*
|
||
|
* pszFileName: The name of the graphic in an active archive.
|
||
|
* pPalette: An optional buffer that receives the image palette.
|
||
|
* pBuffer: A buffer that receives the image data.
|
||
|
* dwBuffersize: The size of the specified image buffer.
|
||
|
* pdwWidth: An optional variable that receives the image width.
|
||
|
* pdwHeight: An optional variable that receives the image height.
|
||
|
* pdwBpp: An optional variable that receives the image bits per pixel.
|
||
|
*
|
||
|
* Returns TRUE if the image was supported and loaded correctly, FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SBmpLoadImage(
|
||
|
const char *pszFileName,
|
||
|
PALETTEENTRY *pPalette = NULL,
|
||
|
void *pBuffer = NULL,
|
||
|
DWORD dwBuffersize = 0,
|
||
|
DWORD *pdwWidth = NULL,
|
||
|
DWORD *pdwHeight = NULL,
|
||
|
DWORD *pdwBpp = NULL);
|
||
|
|
||
|
/* SBmpSaveImage @ 324
|
||
|
*
|
||
|
* Save an image from a buffer to a file. The image format is determined
|
||
|
* from the filename and is either .gif, .pcx, .tga, or .bmp being the default.
|
||
|
*
|
||
|
* pszFileName: The name of the file to create.
|
||
|
* pPalette: A pointer to a palette array containing 256 entries.
|
||
|
* pBuffer: A buffer containing the image data.
|
||
|
* pdwWidth: The width of the image.
|
||
|
* pdwHeight: The height of the image.
|
||
|
* pdwBpp: The bits per pixel.
|
||
|
*
|
||
|
* Returns TRUE if the image was saved correctly, FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SBmpSaveImage(
|
||
|
const char *pszFileName,
|
||
|
PALETTEENTRY *pPalette,
|
||
|
void *pBuffer,
|
||
|
DWORD dwWidth,
|
||
|
DWORD dwHeight,
|
||
|
DWORD dwBpp = 8);
|
||
|
|
||
|
|
||
|
HANDLE STORMAPI SBmpAllocLoadImage(const char *fileName, PALETTEENTRY *palette, void **buffer, int *width, int *height, int unused6, int unused7, void *(STORMAPI *allocFunction)(DWORD));
|
||
|
|
||
|
BOOL STORMAPI SCodeCompile(char *directives1, char *directives2, char *loopstring, unsigned int maxiterations, unsigned int flags, HANDLE handle);
|
||
|
BOOL STORMAPI SCodeDelete(HANDLE handle);
|
||
|
|
||
|
int STORMAPI SCodeExecute(HANDLE handle, int a2);
|
||
|
|
||
|
BOOL STORMAPI SDrawAutoInitialize(HINSTANCE hInst, LPCSTR lpClassName, LPCSTR lpWindowName, WNDPROC pfnWndProc, int nMode, int nWidth, int nHeight, int nBits);
|
||
|
|
||
|
|
||
|
/* SDrawCaptureScreen @ 342
|
||
|
*
|
||
|
* Saves a screenshot from the primary surface being handled by Storm.
|
||
|
*
|
||
|
* pszOutput: The name of the output file. The save format is automatically set by the extension.
|
||
|
* The extensions supported are .gif, .pcx, .tga, and .bmp. It will write a bitmap by default.
|
||
|
*
|
||
|
* Returns TRUE if successful and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SDrawCaptureScreen(
|
||
|
const char *pszOutput);
|
||
|
|
||
|
|
||
|
/* SDrawGetFrameWindow @ 346
|
||
|
*
|
||
|
* Retrieves the window handle that was specified in
|
||
|
* SDrawManualInitialize or created in SDrawAutoInitialize.
|
||
|
*
|
||
|
* sdraw_framewindow: Optional variable that receives the returned handle.
|
||
|
*
|
||
|
* Returns the handle of the window.
|
||
|
*/
|
||
|
HWND
|
||
|
STORMAPI
|
||
|
SDrawGetFrameWindow(
|
||
|
HWND *sdraw_framewindow = NULL);
|
||
|
|
||
|
|
||
|
/* SDrawGetObjects @ 347
|
||
|
*
|
||
|
* Retrieves the object information that was initialized using
|
||
|
* SDrawManualInitialize or SDrawAutoInitialize.
|
||
|
*
|
||
|
* ddInterface: The DirectDraw interface.
|
||
|
* primarySurface: The primary DirectDraw surface.
|
||
|
* surface2: A second unknown surface.
|
||
|
* surface3: A third unknown surface.
|
||
|
* backSurface: The back DirectDraw surface.
|
||
|
* ddPalette: The DirectDraw palette.
|
||
|
* hPalette: The palette handle.
|
||
|
*
|
||
|
* Returns FALSE if the direct draw interface has not been initialized.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SDrawGetObjects(
|
||
|
LPDIRECTDRAW *ddInterface = NULL,
|
||
|
LPDIRECTDRAWSURFACE *primarySurface = NULL,
|
||
|
LPDIRECTDRAWSURFACE *surface2 = NULL,
|
||
|
LPDIRECTDRAWSURFACE *surface3 = NULL,
|
||
|
LPDIRECTDRAWSURFACE *backSurface = NULL,
|
||
|
LPDIRECTDRAWPALETTE *ddPalette = NULL,
|
||
|
HPALETTE *hPalette = NULL);
|
||
|
|
||
|
|
||
|
/* SDrawGetScreenSize @ 348
|
||
|
*
|
||
|
* Obtains information for the current screen resolution.
|
||
|
*
|
||
|
* pdwWidth: Optional variable that receives the screen width.
|
||
|
* pdwHeight: Optional variable that receives the screen height.
|
||
|
* pdwBpp: Optional variable that receives the bits per pixel.
|
||
|
*
|
||
|
* Returns FALSE if no variables were specified.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SDrawGetScreenSize(
|
||
|
DWORD *pdwWidth,
|
||
|
DWORD *pdwHeight,
|
||
|
DWORD *pdwBpp);
|
||
|
|
||
|
|
||
|
// undefined
|
||
|
BOOL STORMAPI SDrawLockSurface(int surfacenumber, RECT *lpDestRect, void **lplpSurface, int *lpPitch, int arg_unused);
|
||
|
|
||
|
|
||
|
/* SDrawManualInitialize @ 351
|
||
|
*
|
||
|
* Sets the DirectDraw variables to be referenced in Storm.
|
||
|
*
|
||
|
* hWnd: The handle of the DirectDraw window.
|
||
|
* ddInterface: The DirectDraw interface.
|
||
|
* primarySurface: The first and primary surface.
|
||
|
* surface2: A second surface. Behaviour not completely known.
|
||
|
* surface3: A third surface. Behaviour not completely known.
|
||
|
* backSurface: The fourth and final surface. The back surface.
|
||
|
* ddPalette: The DirectDraw palette if the application requires it.
|
||
|
* hPalette: The palette handle that belongs to the window.
|
||
|
* If this is NULL and ddPalette is specified, then it
|
||
|
* will be created automatically. A palette can be created
|
||
|
* using the CreatePalette WinAPI function.
|
||
|
*
|
||
|
* Returns FALSE if no variables were specified.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SDrawManualInitialize(
|
||
|
HWND hWnd = NULL,
|
||
|
LPDIRECTDRAW ddInterface = NULL,
|
||
|
LPDIRECTDRAWSURFACE primarySurface = NULL,
|
||
|
LPDIRECTDRAWSURFACE surface2 = NULL,
|
||
|
LPDIRECTDRAWSURFACE surface3 = NULL,
|
||
|
LPDIRECTDRAWSURFACE backSurface = NULL,
|
||
|
LPDIRECTDRAWPALETTE ddPalette = NULL,
|
||
|
HPALETTE hPalette = NULL);
|
||
|
|
||
|
|
||
|
/* SDrawPostClose @ 353
|
||
|
*
|
||
|
* Posts a WM_QUIT message to the active drawing window specified
|
||
|
* in SDrawManualInitialize or created in SDrawAutoInitialize.
|
||
|
*
|
||
|
* Returns TRUE if successful and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SDrawPostClose();
|
||
|
|
||
|
|
||
|
// undefined
|
||
|
//BOOL STORMAPI SDrawRealizePalette();
|
||
|
|
||
|
BOOL STORMAPI SDrawUnlockSurface(int surfacenumber, void *lpSurface, int a3, RECT *lpRect);
|
||
|
BOOL STORMAPI SDrawUpdatePalette(unsigned int firstentry, unsigned int numentries, PALETTEENTRY *pPalEntries, int a4);
|
||
|
|
||
|
BOOL STORMAPI SEvtDispatch(DWORD dwMessageID, DWORD dwFlags, int type, PS_EVT pEvent);
|
||
|
|
||
|
BOOL STORMAPI SGdiDeleteObject(HANDLE handle);
|
||
|
|
||
|
BOOL STORMAPI SGdiExtTextOut(int a1, int a2, int a3, int a4, unsigned int a8, signed int a6, signed int a7, const char *pszString, unsigned int arg20);
|
||
|
BOOL STORMAPI SGdiImportFont(HGDIOBJ handle, int windowsfont);
|
||
|
|
||
|
BOOL STORMAPI SGdiSelectObject(int handle);
|
||
|
BOOL STORMAPI SGdiSetPitch(int pitch);
|
||
|
|
||
|
BOOL STORMAPI Ordinal393(char *pszString, int, int);
|
||
|
|
||
|
|
||
|
/* SMemAlloc @ 401
|
||
|
*
|
||
|
* Allocates a block of memory. This block is different
|
||
|
* from the standard malloc by including a header containing
|
||
|
* information about the block.
|
||
|
*
|
||
|
* amount: The amount of memory to allocate, in bytes.
|
||
|
* logfilename: The name of the file or object that this call belongs to.
|
||
|
* logline: The line in the file or one of the SLOG_ macros.
|
||
|
* defaultValue: The default value of a byte in the allocated memory.
|
||
|
*
|
||
|
* Returns a pointer to the allocated memory. This pointer does NOT include
|
||
|
* the additional storm header.
|
||
|
*/
|
||
|
void*
|
||
|
STORMAPI
|
||
|
SMemAlloc(
|
||
|
size_t amount,
|
||
|
char *logfilename,
|
||
|
int logline,
|
||
|
char defaultValue = 0);
|
||
|
|
||
|
#define SMAlloc(amount) SMemAlloc((amount), __FILE__, __LINE__)
|
||
|
|
||
|
|
||
|
/* SMemFree @ 403
|
||
|
*
|
||
|
* Frees a block of memory that was created using SMemAlloc,
|
||
|
* includes the log file and line for debugging purposes.
|
||
|
*
|
||
|
* location: The memory location to be freed.
|
||
|
* logfilename: The name of the file or object that this call belongs to.
|
||
|
* logline: The line in the file or one of the SLOG_ macros.
|
||
|
* defaultValue:
|
||
|
*
|
||
|
* Returns TRUE if the call was successful and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SMemFree(
|
||
|
void *location,
|
||
|
char *logfilename,
|
||
|
int logline,
|
||
|
char defaultValue = 0);
|
||
|
|
||
|
#define SMFree(loc) SMemFree((loc), __FILE__, __LINE__)
|
||
|
|
||
|
|
||
|
/* SMemReAlloc @ 405
|
||
|
*
|
||
|
* Reallocates a block of memory that was created using SMemAlloc,
|
||
|
* includes the log file and line for debugging purposes.
|
||
|
*
|
||
|
* location: The memory location to be re-allocated. If this parameter
|
||
|
* is NULL, then SMemAlloc is called with the remaining parameters.
|
||
|
* amount: The amount of memory to re-allocate.
|
||
|
* logfilename: The name of the file or object that this call belongs to.
|
||
|
* logline: The line in the file or one of the SLOG_ macros.
|
||
|
* defaultValue:
|
||
|
*
|
||
|
* Returns a pointer to the re-allocated memory. This pointer does NOT include
|
||
|
* the additional storm header.
|
||
|
*/
|
||
|
void*
|
||
|
STORMAPI
|
||
|
SMemReAlloc(
|
||
|
void *location,
|
||
|
size_t amount,
|
||
|
char *logfilename,
|
||
|
int logline,
|
||
|
char defaultValue = 0);
|
||
|
|
||
|
#define SMReAlloc(loc,s) SMemReAlloc((loc),(s), __FILE__, __LINE__)
|
||
|
|
||
|
// Can be provided instead of logline/__LINE__ parameter to indicate different errors.
|
||
|
#define SLOG_EXPRESSION 0
|
||
|
#define SLOG_FUNCTION -1
|
||
|
#define SLOG_OBJECT -2
|
||
|
#define SLOG_HANDLE -3
|
||
|
#define SLOG_FILE -4
|
||
|
#define SLOG_EXCEPTION -5
|
||
|
|
||
|
|
||
|
BOOL STORMAPI SRegLoadData(const char *keyname, const char *valuename, int size, LPBYTE lpData, BYTE flags, LPDWORD lpcbData);
|
||
|
BOOL STORMAPI SRegLoadString(const char *keyname, const char *valuename, BYTE flags, char *buffer, size_t buffersize);
|
||
|
BOOL STORMAPI SRegLoadValue(const char *keyname, const char *valuename, BYTE flags, int *value);
|
||
|
BOOL STORMAPI SRegSaveData(const char *keyname, const char *valuename, int size, BYTE *lpData, DWORD cbData);
|
||
|
BOOL STORMAPI SRegSaveString(const char *keyname, const char *valuename, BYTE flags, char *string);
|
||
|
BOOL STORMAPI SRegSaveValue(const char *keyname, const char *valuename, BYTE flags, DWORD result);
|
||
|
|
||
|
BOOL STORMAPI SRegDeleteValue(const char *keyname, const char *valuename, BYTE flags);
|
||
|
|
||
|
// Flags for SReg functions
|
||
|
|
||
|
// Default behaviour checks both HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER
|
||
|
// relative to the "Software\\Blizzard Entertainment\\" key in both hives.
|
||
|
#define SREG_NONE 0x00000000
|
||
|
#define SREG_EXCLUDE_LOCAL_MACHINE 0x00000001 // excludes checking the HKEY_LOCAL_MACHINE hive
|
||
|
#define SREG_BATTLE_NET 0x00000002 // sets the relative key to "Software\\Battle.net\\" instead
|
||
|
#define SREG_EXCLUDE_CURRENT_USER 0x00000004 // excludes checking the HKEY_CURRENT_USER hive
|
||
|
#define SREG_ABSOLUTE 0x00000010 // specifies that the key is not a relative key
|
||
|
|
||
|
BOOL STORMAPI STransBlt(void *lpSurface, int x, int y, int width, HANDLE hTrans);
|
||
|
BOOL STORMAPI STransBltUsingMask(void *lpDest, void *lpSource, int pitch, int width, HANDLE hTrans);
|
||
|
|
||
|
BOOL STORMAPI STransDelete(HANDLE hTrans);
|
||
|
|
||
|
BOOL STORMAPI STransDuplicate(HANDLE hTransSource, HANDLE hTransDest);
|
||
|
BOOL STORMAPI STransIntersectDirtyArray(HANDLE hTrans, char * dirtyarraymask, unsigned flags, HANDLE * phTransResult);
|
||
|
BOOL STORMAPI STransInvertMask(HANDLE hTrans, HANDLE * phTransResult);
|
||
|
|
||
|
BOOL STORMAPI STransSetDirtyArrayInfo(int width, int height, int depth, int bits);
|
||
|
|
||
|
BOOL STORMAPI STransPointInMask(HANDLE hTrans, int x, int y); // Name is a pure guess
|
||
|
BOOL STORMAPI STransCombineMasks(HANDLE hTransA, HANDLE hTransB, int left, int top, int flags, HANDLE * phTransResult);
|
||
|
|
||
|
BOOL STORMAPI STransCreateE(void *pBuffer, int width, int height, int bpp, int a5, int bufferSize, HANDLE *phTransOut);
|
||
|
|
||
|
BOOL STORMAPI SVidDestroy();
|
||
|
BOOL STORMAPI SVidGetSize(HANDLE video, int width, int height, int zero);
|
||
|
BOOL STORMAPI SVidInitialize(HANDLE video);
|
||
|
BOOL STORMAPI SVidPlayBegin(char *filename, int arg4, int a3, int a4, int a5, int a6, HANDLE* video);
|
||
|
|
||
|
BOOL STORMAPI SVidPlayContinueSingle(HANDLE video, int a2, int a3);
|
||
|
BOOL STORMAPI SVidPlayEnd(HANDLE video);
|
||
|
|
||
|
/* SErrDisplayError @ 461
|
||
|
*
|
||
|
* Displays a formatted error message. The message is detailed and flexible for many applications.
|
||
|
* The message will be different if there is a debugger attached. Will typically terminate the application
|
||
|
* unless the option to continue is given.
|
||
|
*
|
||
|
* dwErrMessage: The error code. See SErrGetLastError and GetLastError.
|
||
|
* logfilename: The name of the file or object that this call belongs to.
|
||
|
* logline: The line in the file or one of the SLOG_ macros.
|
||
|
* message: A message or expression with additional information.
|
||
|
* allowOption: If TRUE, allows the user the option to continue execution, otherwise the program will terminate.
|
||
|
* exitCode: The exit code used for program termination.
|
||
|
*
|
||
|
* Returns TRUE if the user chose to continue execution, FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SErrDisplayError(
|
||
|
DWORD dwErrMsg,
|
||
|
const char *logfilename,
|
||
|
int logline,
|
||
|
const char *message = NULL,
|
||
|
BOOL allowOption = FALSE,
|
||
|
int exitCode = 1);
|
||
|
|
||
|
#define SAssert(x) { if ( !(x) ) SErrDisplayError(STORM_ERROR_ASSERTION, __FILE__, __LINE__, #x) }
|
||
|
|
||
|
#define SEDisplayError(err) SErrDisplayError(e, __FILE__, __LINE__)
|
||
|
|
||
|
/* SErrGetErrorStr @ 462
|
||
|
*
|
||
|
* Retrieves a string that describes the specified error code for
|
||
|
* the system, Storm, DirectDraw, or DirectSound.
|
||
|
*
|
||
|
* dwErrCode: The error code to look up.
|
||
|
* buffer: The destination buffer to receive the string.
|
||
|
* bufferchars: The size of the destination buffer.
|
||
|
*
|
||
|
* Returns TRUE if the call was successful and FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
STORMAPI
|
||
|
SErrGetErrorStr(
|
||
|
DWORD dwErrCode,
|
||
|
char *buffer,
|
||
|
size_t bufferchars);
|
||
|
|
||
|
#define SEGetErrorStr(e,b) SErrGetErrorStr(e,b,sizeof(b))
|
||
|
|
||
|
|
||
|
/* SErrGetLastError @ 463
|
||
|
*
|
||
|
* Retrieves the last error that was specifically
|
||
|
* set for the Storm library.
|
||
|
*
|
||
|
* Returns the last error set within the Storm library.
|
||
|
*/
|
||
|
DWORD
|
||
|
STORMAPI
|
||
|
SErrGetLastError();
|
||
|
|
||
|
|
||
|
// Registers a module as a message source for SErrGetErrorStr, always returns TRUE
|
||
|
// groupID is a group in a MessageTable entry for example in STORM_ERROR_BAD_ARGUMENT 0x85100065, 0x510 is the group.
|
||
|
// BOOL STORMAPI SErrRegisterMessageSource(WORD groupID, HMODULE hSourceModule, int a3)
|
||
|
|
||
|
|
||
|
/* SErrSetLastError @ 465
|
||
|
*
|
||
|
* Sets the last error for the Storm library and the Kernel32 library.
|
||
|
*
|
||
|
* dwErrCode: The error code that will be set.
|
||
|
*/
|
||
|
void
|
||
|
STORMAPI
|
||
|
SErrSetLastError(
|
||
|
DWORD dwErrCode = NO_ERROR);
|
||
|
|
||
|
//
|
||
|
// void STORMAPI SErrReportNamedResourceLeak(const char *pszMsg, const char *pszSubMsg = nullptr)
|
||
|
// void STORMAPI SErrReportResourceLeak(const char *pszMsg)
|
||
|
|
||
|
void STORMAPI SErrSuppressErrors(BOOL suppressErrors);
|
||
|
|
||
|
// Values for dwErrCode
|
||
|
#define STORM_ERROR_ASSERTION 0x85100000
|
||
|
#define STORM_ERROR_BAD_ARGUMENT 0x85100065
|
||
|
#define STORM_ERROR_GAME_ALREADY_STARTED 0x85100066
|
||
|
#define STORM_ERROR_GAME_FULL 0x85100067
|
||
|
#define STORM_ERROR_GAME_NOT_FOUND 0x85100068
|
||
|
#define STORM_ERROR_GAME_TERMINATED 0x85100069
|
||
|
#define STORM_ERROR_INVALID_PLAYER 0x8510006a
|
||
|
#define STORM_ERROR_NO_MESSAGES_WAITING 0x8510006b
|
||
|
#define STORM_ERROR_NOT_ARCHIVE 0x8510006c
|
||
|
#define STORM_ERROR_NOT_ENOUGH_ARGUMENTS 0x8510006d
|
||
|
#define STORM_ERROR_NOT_IMPLEMENTED 0x8510006e
|
||
|
#define STORM_ERROR_NOT_IN_ARCHIVE 0x8510006f
|
||
|
#define STORM_ERROR_NOT_IN_GAME 0x85100070
|
||
|
#define STORM_ERROR_NOT_INITIALIZED 0x85100071
|
||
|
#define STORM_ERROR_NOT_PLAYING 0x85100072
|
||
|
#define STORM_ERROR_NOT_REGISTERED 0x85100073
|
||
|
#define STORM_ERROR_REQUIRES_CODEC1 0x85100074
|
||
|
#define STORM_ERROR_REQUIRES_CODEC2 0x85100075
|
||
|
#define STORM_ERROR_REQUIRES_CODEC3 0x85100076
|
||
|
#define STORM_ERROR_REQUIRES_UPGRADE 0x85100077
|
||
|
#define STORM_ERROR_STILL_ACTIVE 0x85100078
|
||
|
#define STORM_ERROR_VERSION_MISMATCH 0x85100079
|
||
|
#define STORM_ERROR_MEM_NOT_ALLOCATED 0x8510007a
|
||
|
#define STORM_ERROR_MEM_CORRUPTED 0x8510007b
|
||
|
#define STORM_ERROR_MEM_INVALID 0x8510007c
|
||
|
#define STORM_ERROR_MEM_MANAGER_NOT_INITIALIZED 0x8510007d
|
||
|
#define STORM_ERROR_MEM_NOT_FREED 0x8510007e
|
||
|
#define STORM_ERROR_RESOURCES_NOT_RELEASED 0x8510007f
|
||
|
#define STORM_ERROR_OUT_OF_BOUNDS 0x85100080
|
||
|
#define STORM_ERROR_NULL_POINTER 0x85100081
|
||
|
#define STORM_ERROR_CDKEY_MISMATCH 0x85100082
|
||
|
#define STORM_ERROR_FILE_CORRUPTED 0x85100083
|
||
|
#define STORM_ERROR_FATAL 0x85100084
|
||
|
#define STORM_ERROR_GAMETYPE_UNAVAILABLE 0x85100085
|
||
|
|
||
|
|
||
|
/* SMemCopy @ 491
|
||
|
*
|
||
|
* Copies a block of memory from source to destination.
|
||
|
* This function immediately calls memcpy. See online documentation
|
||
|
* of memcpy for more details.
|
||
|
*
|
||
|
* dest: The destination buffer.
|
||
|
* source: The source buffer.
|
||
|
* size: The number of bytes to copy.
|
||
|
*/
|
||
|
void
|
||
|
STORMAPI
|
||
|
SMemCopy(
|
||
|
void *dest,
|
||
|
const void *source,
|
||
|
size_t size);
|
||
|
|
||
|
#define SMCopy(d,s) ( SMemCopy(d, s, __STORM_SSIZEMIN(s,d)) )
|
||
|
|
||
|
/* SMemFill @ 492
|
||
|
*
|
||
|
* Fills a block of memory with the specified character.
|
||
|
* This function immediately calls memset. See online documentation
|
||
|
* of memset for more details.
|
||
|
*
|
||
|
* dest: The destination buffer.
|
||
|
* source: The size of the destination buffer.
|
||
|
* size: The format to use.
|
||
|
*/
|
||
|
void
|
||
|
STORMAPI
|
||
|
SMemFill(
|
||
|
void *location,
|
||
|
size_t length,
|
||
|
char fillWith = 0);
|
||
|
|
||
|
#define SMFill(l,f) (SMemFill(l, sizeof(l), f))
|
||
|
|
||
|
/* SMemZero @ 494
|
||
|
*
|
||
|
* Fills a block of memory with the integer 0x00 (Zero).
|
||
|
*
|
||
|
* location: The location to write at.
|
||
|
* length: The amount of bytes to write.
|
||
|
*/
|
||
|
void
|
||
|
STORMAPI
|
||
|
SMemZero(
|
||
|
void *location,
|
||
|
size_t length);
|
||
|
|
||
|
#define SMZero(l) (SMemZero(l, sizeof(l)))
|
||
|
|
||
|
|
||
|
int STORMAPI SMemCmp(void *location1, void *location2, DWORD size);
|
||
|
|
||
|
#define SMCmp(l,x) ( SMemCmp(l, x, __STORM_SSIZEMIN(x,l)) )
|
||
|
|
||
|
/* SStrCopy @ 501
|
||
|
*
|
||
|
* Copies a string from src to dest (including NULL terminator)
|
||
|
* until the max_length is reached.
|
||
|
*
|
||
|
* dest: The destination array.
|
||
|
* src: The source array.
|
||
|
* max_length: The maximum length of dest.
|
||
|
*
|
||
|
* Returns the number of characters copied.
|
||
|
*/
|
||
|
int
|
||
|
STORMAPI
|
||
|
SStrCopy(
|
||
|
char *dest,
|
||
|
const char *src,
|
||
|
int max_length = 0x7FFFFFFF);
|
||
|
|
||
|
#define SSCopy(d,s) (SStrCopy(d, s, sizeof(d)))
|
||
|
|
||
|
#define STORM_HASH_ABSOLUTE 1
|
||
|
|
||
|
/* SStrHash @ 502
|
||
|
*
|
||
|
* Creates a simple hash for the string. This function
|
||
|
* should NOT be used for sensitive information.
|
||
|
*
|
||
|
* string: The input string.
|
||
|
* flags: If STORM_HASH_ABSOLUTE is set then this
|
||
|
function uses the absolute string, otherwise
|
||
|
it will convert backslashes to forward
|
||
|
slashes and some other processing.
|
||
|
* seed: The hash seed. If this value is 0 then the
|
||
|
* default value 0x7FED7FED will be used.
|
||
|
*
|
||
|
* Returns the 32-bit hash of the string.
|
||
|
*/
|
||
|
DWORD
|
||
|
STORMAPI
|
||
|
SStrHash(
|
||
|
const char *string,
|
||
|
DWORD flags = 0,
|
||
|
DWORD Seed = 0);
|
||
|
|
||
|
int STORMAPI SStrNCat(char *dest, const char *src, DWORD max_length);
|
||
|
|
||
|
/* SStrLen @ 506
|
||
|
*
|
||
|
* Retrieves the length of a string.
|
||
|
*
|
||
|
* string: The input string of which to obtain a
|
||
|
* length for.
|
||
|
*
|
||
|
* Returns the length of the string.
|
||
|
*/
|
||
|
int
|
||
|
STORMAPI
|
||
|
SStrLen(
|
||
|
const char *string);
|
||
|
|
||
|
/* SStrCmp @ 508
|
||
|
*
|
||
|
* Compares two strings case sensitive.
|
||
|
*
|
||
|
* string1: The first string.
|
||
|
* string2: The second string.
|
||
|
* size: The maximum amount of characters to compare.
|
||
|
*
|
||
|
* Returns 0 if strings are equal. See strcmp documentation for more details.
|
||
|
*/
|
||
|
int
|
||
|
STORMAPI
|
||
|
SStrCmp(
|
||
|
const char *string1,
|
||
|
const char *string2,
|
||
|
size_t size);
|
||
|
|
||
|
#define SSCmp(s,x) ( SStrCmp(s,x,__STORM_SSIZEMIN(s,x)) )
|
||
|
|
||
|
/* SStrCmpI @ 509
|
||
|
*
|
||
|
* Compares two strings case insensitive.
|
||
|
*
|
||
|
* string1: The first string.
|
||
|
* string2: The second string.
|
||
|
* size: The maximum amount of characters to compare.
|
||
|
*
|
||
|
* Returns 0 if strings are equal. See strcmpi documentation for more details.
|
||
|
*/
|
||
|
int
|
||
|
STORMAPI
|
||
|
SStrCmpI(
|
||
|
const char *string1,
|
||
|
const char *string2,
|
||
|
size_t size);
|
||
|
|
||
|
#define SSCmpI(s,x) ( SStrCmpI(s,x,__STORM_SSIZEMIN(s,x)) )
|
||
|
|
||
|
/* SStrUpper @ 510
|
||
|
*
|
||
|
* Converts all lower-case alpha characters of a string to upper-case.
|
||
|
*
|
||
|
* string: The string to convert.
|
||
|
*
|
||
|
* Returns the same pointer given in the input.
|
||
|
*/
|
||
|
char*
|
||
|
STORMAPI
|
||
|
SStrUpper(
|
||
|
char* string);
|
||
|
|
||
|
void STORMAPI SRgn523(HANDLE hRgn, RECT *pRect, int a3, int a4);
|
||
|
void STORMAPI SRgnCreateRegion(HANDLE *hRgn, int a2);
|
||
|
void STORMAPI SRgnDeleteRegion(HANDLE hRgn);
|
||
|
|
||
|
void STORMAPI SRgn529i(int handle, int a2, int a3);
|
||
|
|
||
|
|
||
|
/* SErrDisplayErrorFmt @ 562
|
||
|
*
|
||
|
* Displays a formatted error message. The message is detailed and flexible for many applications.
|
||
|
* The message will be different if there is a debugger attached. Will typically terminate the application
|
||
|
* unless the option to continue is given.
|
||
|
*
|
||
|
* dwErrMessage: The error code. See SErrGetLastError and GetLastError.
|
||
|
* logfilename: The name of the file or object that this call belongs to.
|
||
|
* logline: The line in the file or one of the SLOG_ macros.
|
||
|
* allowOption: If TRUE, allows the user the option to continue execution, otherwise the program will terminate.
|
||
|
* exitCode: The exit code used for program termination.
|
||
|
* format: Additional message formatting. See printf.
|
||
|
*
|
||
|
* Returns TRUE if the user chose to continue execution, FALSE otherwise.
|
||
|
*/
|
||
|
BOOL
|
||
|
SErrDisplayErrorFmt(
|
||
|
DWORD dwErrMsg,
|
||
|
const char *logfilename,
|
||
|
int logline,
|
||
|
BOOL allowOption,
|
||
|
int exitCode,
|
||
|
const char *format,
|
||
|
...);
|
||
|
|
||
|
//#define SEDisplayErrorFmt(err,...) SErrDisplayErrorFmt(err, __FILE__, __LINE__, FALSE, 1, __VA_ARGS__)
|
||
|
|
||
|
/* SErrCatchUnhandledExceptions @ 567
|
||
|
*
|
||
|
* Registers a top-level exception filter managed entirely by Storm.
|
||
|
* The registered filter will display formatted exception information by calling SErrDisplayError.
|
||
|
*/
|
||
|
void
|
||
|
STORMAPI
|
||
|
SErrCatchUnhandledExceptions();
|
||
|
|
||
|
|
||
|
/* SStrChr @ 571
|
||
|
*
|
||
|
* Searches a string for the given character. See
|
||
|
* strchr documentation for more details.
|
||
|
*
|
||
|
* string: The string to search.
|
||
|
* c: The character to search for.
|
||
|
*
|
||
|
* Returns a pointer to the first occurance of the character.
|
||
|
*/
|
||
|
char*
|
||
|
STORMAPI
|
||
|
SStrChr(
|
||
|
const char *string,
|
||
|
char c);
|
||
|
|
||
|
|
||
|
char *STORMAPI SStrChrR(const char *string, char c);
|
||
|
|
||
|
|
||
|
/* SStrVPrintf @ 578
|
||
|
*
|
||
|
* Prints a formatted string to a destination buffer.
|
||
|
* This function calls vsnprintf with some extra error handling.
|
||
|
* See online documentation of vsnprintf for more details.
|
||
|
*
|
||
|
* dest: The destination buffer.
|
||
|
* size: The size of the destination buffer.
|
||
|
* format: The format to use.
|
||
|
*
|
||
|
* Returns the number of characters written.
|
||
|
*/
|
||
|
size_t
|
||
|
SStrVPrintf(
|
||
|
char *dest,
|
||
|
size_t size,
|
||
|
const char *format, ...);
|
||
|
|
||
|
|
||
|
int STORMAPI SBigDel(void *buffer);
|
||
|
|
||
|
int STORMAPI SBigFromBinary(void *buffer, const void *str, size_t size);
|
||
|
|
||
|
int STORMAPI SBigNew(void **buffer);
|
||
|
|
||
|
int STORMAPI SBigPowMod(void *buffer1, void *buffer2, int a3, int a4);
|
||
|
|
||
|
int STORMAPI SBigToBinaryBuffer(void *buffer, int length, int a3, int a4);
|
||
|
|
||
|
|
||
|
bool StormDestroy();
|
||
|
void SDrawDestroy();
|
||
|
bool __stdcall SFileSetBasePath(char *base_dir);
|
||
|
void SDrawRealizePalette();
|
||
|
bool SVidPlayContinue();
|
||
|
bool __stdcall SNetGetOwnerTurnsWaiting(int *turns);
|
||
|
bool __stdcall SNetSetBasePlayer(int base_player_num);
|
||
|
int __stdcall SFileSetFilePointer(int file1, int offset, int file2, int whence);
|
||
|
|
||
|
void __stdcall SDrawMessageBox(char *text, char *caption, int type);
|
||
|
#endif
|