mirror of
https://github.com/jmarshall23/Hellfire.git
synced 2026-08-11 23:40:51 +02:00
185 lines
4.4 KiB
C++
185 lines
4.4 KiB
C++
//****************************************************************************
|
|
// CopyProt.cpp
|
|
// Diablo UI copy protection dialog
|
|
//
|
|
// By Frank Pearce
|
|
// created 11.18.96
|
|
//****************************************************************************
|
|
|
|
#include "pch.h"
|
|
#include "uisnd.h"
|
|
|
|
|
|
//****************************************************************************
|
|
//****************************************************************************
|
|
static HGLOBAL sghBgRes;
|
|
static HGLOBAL sghBtnRes;
|
|
static HGLOBAL sghPalRes;
|
|
|
|
|
|
//****************************************************************************
|
|
//****************************************************************************
|
|
static void CopyProtDestroy(HWND window) {
|
|
|
|
// free the art resources
|
|
if (sghPalRes) {
|
|
FreeResource(sghPalRes);
|
|
sghPalRes = NULL;
|
|
}
|
|
if (sghBtnRes) {
|
|
FreeResource(sghBtnRes);
|
|
sghBtnRes = NULL;
|
|
}
|
|
if (sghBgRes) {
|
|
FreeResource(sghBgRes);
|
|
sghBgRes = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
//****************************************************************************
|
|
//****************************************************************************
|
|
static BOOL CopyProtInit(HWND window, LPCSTR copyprottext) {
|
|
LPBYTE BgBmp;
|
|
LPBYTE BtnBmp;
|
|
PALETTEENTRY * BgPal;
|
|
PALETTEENTRY LoadedPal[PALETTE_REGISTERS];
|
|
SIZE BgSize = { 284, 148 };
|
|
SIZE BtnSize = { 112, 140 };
|
|
|
|
int BtnIDs[] = { IDC_OK, IDCANCEL, 0 };
|
|
LPCTSTR srpopup = TEXT("ui_art\\srpopup.pcx");
|
|
HWND child;
|
|
|
|
// load the art resources
|
|
sghBgRes = LoadResource(
|
|
global_hinstance,
|
|
FindResource(global_hinstance, TEXT("IDR_POPUPART"), TEXT("ART_FILES"))
|
|
);
|
|
sghBtnRes = LoadResource(
|
|
global_hinstance,
|
|
FindResource(global_hinstance, TEXT("IDR_BTNART"), TEXT("ART_FILES"))
|
|
);
|
|
sghPalRes = LoadResource(
|
|
global_hinstance,
|
|
FindResource(global_hinstance, TEXT("IDR_ARTPAL"), TEXT("ART_FILES"))
|
|
);
|
|
|
|
// lock the loaded resources
|
|
BgBmp = (LPBYTE) LockResource(sghBgRes);
|
|
BtnBmp = (LPBYTE) LockResource(sghBtnRes);
|
|
BgPal = (PALETTEENTRY *) LockResource(sghPalRes);
|
|
|
|
// register the images
|
|
if (BgBmp) {
|
|
SDlgSetBitmap(
|
|
window,
|
|
NULL,
|
|
TEXT(""),
|
|
SDLG_STYLE_ANY,
|
|
SDLG_USAGE_BACKGROUND,
|
|
BgBmp,
|
|
NULL,
|
|
BgSize.cx,
|
|
BgSize.cy
|
|
);
|
|
}
|
|
|
|
ShowCursor(TRUE);
|
|
UiAltFadeInit(window);
|
|
|
|
if (BtnBmp)
|
|
UiSetButtonBitmaps(window, BtnIDs, BtnBmp, &BtnSize);
|
|
|
|
// load the palette
|
|
if (BgPal) {
|
|
memcpy(LoadedPal, BgPal, sizeof(PALETTEENTRY) * PALETTE_REGISTERS);
|
|
SDrawUpdatePalette(0, PALETTE_REGISTERS, LoadedPal, TRUE);
|
|
}
|
|
|
|
child = GetDlgItem(window, IDC_OKCANCEL_TEXT);
|
|
SetWindowText(child, copyprottext);
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
//****************************************************************************
|
|
//****************************************************************************
|
|
static void CopyProtAbort(HWND window, int retval) {
|
|
ShowCursor(FALSE);
|
|
SDlgEndDialog(window, retval);
|
|
}
|
|
|
|
|
|
//****************************************************************************
|
|
//****************************************************************************
|
|
static BOOL CALLBACK CopyProtDialogProc (HWND window,
|
|
UINT message,
|
|
WPARAM wparam,
|
|
LPARAM lparam) {
|
|
switch (message) {
|
|
|
|
case WM_DESTROY:
|
|
CopyProtDestroy(window);
|
|
UiVidFadeOut(DEFAULT_STEPS*2);
|
|
break;
|
|
|
|
case WM_INITDIALOG:
|
|
CopyProtInit(window, (LPCSTR)lparam);
|
|
return 1;
|
|
|
|
case WM_COMMAND:
|
|
switch (LOWORD(wparam)) {
|
|
case IDOK:
|
|
switch (GetWindowLong(GetFocus(), GWL_ID)) {
|
|
case IDC_OK:
|
|
CopyProtAbort(window, IDOK);
|
|
break;
|
|
default:
|
|
CopyProtAbort(window, IDCANCEL);
|
|
break;
|
|
}
|
|
break;
|
|
case IDC_OK:
|
|
CopyProtAbort(window, IDOK);
|
|
break;
|
|
case IDCANCEL:
|
|
CopyProtAbort(window, IDCANCEL);
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case WM_SYSKEYUP:
|
|
case WM_SYSKEYDOWN:
|
|
SendMessage(SDrawGetFrameWindow(), message, wparam, lparam);
|
|
break;
|
|
}
|
|
return SDlgDefDialogProc(window,message,wparam,lparam);
|
|
}
|
|
|
|
|
|
//****************************************************************************
|
|
//****************************************************************************
|
|
BOOL APIENTRY UiCopyProtError(DWORD *result) {
|
|
TCHAR copyproterror[128];
|
|
DWORD dwResult;
|
|
|
|
if (! UiIsSpawned())
|
|
LoadString(global_hinstance, IDS_COPYPROT_ERR, copyproterror, 127);
|
|
else
|
|
LoadString(global_hinstance, IDS_SPAWNDATA_ERR, copyproterror, 127);
|
|
|
|
dwResult = SDlgDialogBoxParam(
|
|
global_hinstance,
|
|
TEXT("OKCANCEL_DIALOG"),
|
|
SDrawGetFrameWindow(),
|
|
CopyProtDialogProc,
|
|
(LPARAM)copyproterror
|
|
);
|
|
|
|
if (result)
|
|
*result = dwResult;
|
|
|
|
return 1;
|
|
} |