mirror of
https://github.com/jmarshall23/Hellfire.git
synced 2026-08-11 23:40:51 +02:00
Added uisrc.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* bnetart.h
|
||||
*
|
||||
* This file should be included by an application that wants to provide
|
||||
* battle.net-specific artwork in its art callback.
|
||||
*
|
||||
***/
|
||||
|
||||
enum _BATTLENET_ART {
|
||||
SNET_ART_BATTLE_BTNS = 0x80000000,
|
||||
SNET_ART_BATTLE_CHAT_BKG,
|
||||
SNET_ART_BATTLE_GREENLAG,
|
||||
SNET_ART_BATTLE_YELLOWLAG,
|
||||
SNET_ART_BATTLE_REDLAG,
|
||||
SNET_ART_BATTLE_CONNECT_BKG,
|
||||
SNET_ART_BATTLE_SELECT_CHNL_BKG,
|
||||
SNET_ART_BATTLE_LOGIN_BKG,
|
||||
|
||||
SNET_ART_BATTLE_BADCONNECTION,
|
||||
SNET_ART_BATTLE_WELCOME_AD,
|
||||
|
||||
SNET_ART_BATTLE_LRG_EDIT_POPUP_BKG,
|
||||
};
|
||||
|
||||
|
||||
enum _BATTLENET_DATA {
|
||||
SNET_DATA_BATTLE_LOGODELAY = 0x80000000, // (DWORD) delay between frames
|
||||
};
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2751
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,120 @@
|
||||
# Microsoft Developer Studio Project File - Name="DiabloUI" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 5.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=DiabloUI - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "Diabloui.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "Diabloui.mak" CFG="DiabloUI - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "DiabloUI - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "DiabloUI - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "DiabloUI - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir ".\Release"
|
||||
# PROP BASE Intermediate_Dir ".\Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir ".\Release"
|
||||
# PROP Intermediate_Dir ".\Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
|
||||
# ADD CPP /nologo /G5 /MT /W3 /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\release\hellfrui.lib battle\release\battle.lib standard\release\standard.lib /nologo /subsystem:windows /map /machine:I386 /out:".\bin\DiabloUI.exe"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "DiabloUI - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir ".\Debug"
|
||||
# PROP BASE Intermediate_Dir ".\Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir ".\Debug"
|
||||
# PROP Intermediate_Dir ".\Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\debug\hellfrui.lib battle\debug\battle.lib standard\debug\standard.lib /nologo /subsystem:windows /incremental:no /map /debug /machine:I386 /out:".\bin\DiabloUI.exe"
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "DiabloUI - Win32 Release"
|
||||
# Name "DiabloUI - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\STORM.LIB
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Testui.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Sclass.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\storm.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,74 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 5.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "DiabloUI"=.\Diabloui.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name ui
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name battle
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name Standard
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "Standard"=.\Standard\Standard.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "battle"=.\battle\battle.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "ui"=.\ui\ui.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
+2751
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,31 @@
|
||||
--------------------Configuration: DiabloUI - Win32 Debug--------------------
|
||||
Begining build with project "C:\hellfire\diabloui\Diabloui.dsp", at root.
|
||||
Active configuration is Win32 (x86) Application (based on Win32 (x86) Application)
|
||||
|
||||
Project's tools are:
|
||||
"32-bit C/C++ Compiler for 80x86" with flags "/nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR".\Debug/" /Fp".\Debug/Diabloui.pch" /YX /Fo".\Debug/" /Fd".\Debug/" /FD /c "
|
||||
"OLE Type Library Maker" with flags "/nologo /D "_DEBUG" /mktyplib203 /win32 "
|
||||
"Win32 Resource Compiler" with flags "/l 0x409 /d "_DEBUG" "
|
||||
"Browser Database Maker" with flags "/nologo /o".\Debug/Diabloui.bsc" "
|
||||
"COFF Linker for 80x86" with flags "kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\debug\diabloui.lib battle\debug\battle.lib standard\debug\standard.lib /nologo /subsystem:windows /incremental:no /pdb:".\Debug/DiabloUI.pdb" /map:".\Debug/DiabloUI.map" /debug /machine:I386 /out:".\bin\DiabloUI.exe" "
|
||||
"Custom Build" with flags ""
|
||||
"<Component 0xa>" with flags ""
|
||||
|
||||
Creating temp file "C:\WINDOWS\TEMP\RSP40A3.TMP" with contents </nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR".\Debug/" /Fp".\Debug/Diabloui.pch" /YX /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
||||
"C:\hellfire\diabloui\Testui.cpp"
|
||||
>
|
||||
Creating command line "cl.exe @C:\WINDOWS\TEMP\RSP40A3.TMP"
|
||||
Compiling...
|
||||
Testui.cpp
|
||||
Creating temp file "C:\WINDOWS\TEMP\RSP41B4.TMP" with contents <kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib wsock32.lib storm.lib ui\debug\diabloui.lib battle\debug\battle.lib standard\debug\standard.lib /nologo /subsystem:windows /incremental:no /pdb:".\Debug/DiabloUI.pdb" /map:".\Debug/DiabloUI.map" /debug /machine:I386 /out:".\bin\DiabloUI.exe"
|
||||
.\Debug\Testui.obj
|
||||
.\STORM.LIB
|
||||
.\ui\Debug\diabloui.lib>
|
||||
Creating command line "link.exe @C:\WINDOWS\TEMP\RSP41B4.TMP"
|
||||
Linking...
|
||||
Creating command line "bscmake.exe /nologo /o".\Debug/Diabloui.bsc" .\Debug\Testui.sbr"
|
||||
Creating browse info file...
|
||||
|
||||
|
||||
|
||||
DiabloUI.exe - 0 error(s), 0 warning(s)
|
||||
@@ -0,0 +1,4 @@
|
||||
SCC = This is a Source Code Control file
|
||||
|
||||
[DIABLOUI.MAK]
|
||||
SCC_Project_Name = "$/UiSrc", RJAAAAAA
|
||||
File diff suppressed because it is too large
Load Diff
+1342
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,330 @@
|
||||
DiabloUI
|
||||
|
||||
Timestamp is 34c4c9fb (Tue Jan 20 15:59:55 1998)
|
||||
|
||||
Preferred load address is 00400000
|
||||
|
||||
Start Length Name Class
|
||||
0001:00000000 00002f56H .text CODE
|
||||
0002:00000000 00000337H .rdata DATA
|
||||
0002:00000337 00000000H .edata DATA
|
||||
0003:00000000 00000004H .CRT$XCA DATA
|
||||
0003:00000004 00000004H .CRT$XCZ DATA
|
||||
0003:00000008 00000004H .CRT$XIA DATA
|
||||
0003:0000000c 00000004H .CRT$XIC DATA
|
||||
0003:00000010 00000004H .CRT$XIZ DATA
|
||||
0003:00000014 00000004H .CRT$XPA DATA
|
||||
0003:00000018 00000004H .CRT$XPX DATA
|
||||
0003:0000001c 00000004H .CRT$XPZ DATA
|
||||
0003:00000020 00000004H .CRT$XTA DATA
|
||||
0003:00000024 00000004H .CRT$XTZ DATA
|
||||
0003:00000030 00002998H .data DATA
|
||||
0003:000029c8 0000146cH .bss DATA
|
||||
0004:00000000 00000050H .idata$2 DATA
|
||||
0004:00000050 00000014H .idata$3 DATA
|
||||
0004:00000064 00000120H .idata$4 DATA
|
||||
0004:00000184 00000120H .idata$5 DATA
|
||||
0004:000002a4 00000470H .idata$6 DATA
|
||||
|
||||
Address Publics by Value Rva+Base Lib:Object
|
||||
|
||||
0001:00000000 _WinMain@16 00401000 f Testui.obj
|
||||
0001:00000240 _SMsgRegisterMessage@12 00401240 f storm:storm.dll
|
||||
0001:00000246 _SDrawMessageBox@12 00401246 f storm:storm.dll
|
||||
0001:0000024c _SDrawAutoInitialize@32 0040124c f storm:storm.dll
|
||||
0001:00000252 _SFileEnableDirectAccess@4 00401252 f storm:storm.dll
|
||||
0001:00000258 _SFileSetBasePath@4 00401258 f storm:storm.dll
|
||||
0001:0000025e _SNetSelectGame@24 0040125e f storm:storm.dll
|
||||
0001:00000264 _SDrawGetFrameWindow@4 00401264 f storm:storm.dll
|
||||
0001:0000026a _StormDestroy@0 0040126a f storm:storm.dll
|
||||
0001:00000270 _UiOnPaint@4 00401270 f hellfrui:hellfrui.dll
|
||||
0001:00000276 _UiSelectProvider@24 00401276 f hellfrui:hellfrui.dll
|
||||
0001:0000027c _UiCategoryCallback@28 0040127c f hellfrui:hellfrui.dll
|
||||
0001:00000282 _UiGetDataCallback@20 00401282 f hellfrui:hellfrui.dll
|
||||
0001:00000288 _UiAuthCallback@28 00401288 f hellfrui:hellfrui.dll
|
||||
0001:0000028e _UiSoundCallback@12 0040128e f hellfrui:hellfrui.dll
|
||||
0001:00000294 _UiMessageBoxCallback@16 00401294 f hellfrui:hellfrui.dll
|
||||
0001:0000029a _UiDrawDescCallback@32 0040129a f hellfrui:hellfrui.dll
|
||||
0001:000002a0 _UiCreateGameCallback@24 004012a0 f hellfrui:hellfrui.dll
|
||||
0001:000002a6 _UiArtCallback@32 004012a6 f hellfrui:hellfrui.dll
|
||||
0001:000002ac _UiDestroy@0 004012ac f hellfrui:hellfrui.dll
|
||||
0001:000002b2 _UiCreatePlayerDescription@12 004012b2 f hellfrui:hellfrui.dll
|
||||
0001:000002b8 _UiInitialize@0 004012b8 f hellfrui:hellfrui.dll
|
||||
0001:000002c0 _WinMainCRTStartup 004012c0 f LIBCMT:wincrt0.obj
|
||||
0001:00000470 __amsg_exit 00401470 f LIBCMT:wincrt0.obj
|
||||
0001:000004a0 __cinit 004014a0 f LIBCMT:crt0dat.obj
|
||||
0001:000004d0 _exit 004014d0 f LIBCMT:crt0dat.obj
|
||||
0001:000004f0 __exit 004014f0 f LIBCMT:crt0dat.obj
|
||||
0001:000005d0 __lockexit 004015d0 f LIBCMT:crt0dat.obj
|
||||
0001:000005e0 __unlockexit 004015e0 f LIBCMT:crt0dat.obj
|
||||
0001:00000610 __XcptFilter 00401610 f LIBCMT:winxfltr.obj
|
||||
0001:00000860 __ismbblead 00401860 f LIBCMT:ismbbyte.obj
|
||||
0001:000008c0 __setenvp 004018c0 f LIBCMT:stdenvp.obj
|
||||
0001:000009b0 __setargv 004019b0 f LIBCMT:stdargv.obj
|
||||
0001:00000c60 ___crtGetEnvironmentStringsA 00401c60 f LIBCMT:aw_env.obj
|
||||
0001:00000dc0 __setmbcp 00401dc0 f LIBCMT:mbctype.obj
|
||||
0001:000010c0 ___initmbctable 004020c0 f LIBCMT:mbctype.obj
|
||||
0001:000010d0 __ioinit 004020d0 f LIBCMT:ioinit.obj
|
||||
0001:000012e0 __mtinit 004022e0 f LIBCMT:tidtable.obj
|
||||
0001:00001340 __initptd 00402340 f LIBCMT:tidtable.obj
|
||||
0001:00001360 __getptd 00402360 f LIBCMT:tidtable.obj
|
||||
0001:000013e0 __heap_init 004023e0 f LIBCMT:heapinit.obj
|
||||
0001:00001420 __global_unwind2 00402420 f LIBCMT:exsup.obj
|
||||
0001:00001462 __local_unwind2 00402462 f LIBCMT:exsup.obj
|
||||
0001:000014ba __NLG_Return2 004024ba LIBCMT:exsup.obj
|
||||
0001:000014ca __abnormal_termination 004024ca f LIBCMT:exsup.obj
|
||||
0001:000014ed __NLG_Notify1 004024ed f LIBCMT:exsup.obj
|
||||
0001:000014f6 __NLG_Notify 004024f6 f LIBCMT:exsup.obj
|
||||
0001:00001509 __NLG_Dispatch 00402509 LIBCMT:exsup.obj
|
||||
0001:00001518 __except_handler3 00402518 f LIBCMT:exsup3.obj
|
||||
0001:000015d5 __seh_longjmp_unwind@4 004025d5 f LIBCMT:exsup3.obj
|
||||
0001:000015f0 __FF_MSGBANNER 004025f0 f LIBCMT:crt0msg.obj
|
||||
0001:00001630 __NMSG_WRITE 00402630 f LIBCMT:crt0msg.obj
|
||||
0001:00001810 __mtinitlocks 00402810 f LIBCMT:mlock.obj
|
||||
0001:00001840 __lock 00402840 f LIBCMT:mlock.obj
|
||||
0001:000018c0 __unlock 004028c0 f LIBCMT:mlock.obj
|
||||
0001:000018e0 __lock_file 004028e0 f LIBCMT:mlock.obj
|
||||
0001:00001920 __lock_file2 00402920 f LIBCMT:mlock.obj
|
||||
0001:00001950 __unlock_file 00402950 f LIBCMT:mlock.obj
|
||||
0001:00001990 __unlock_file2 00402990 f LIBCMT:mlock.obj
|
||||
0001:000019c0 _free 004029c0 f LIBCMT:free.obj
|
||||
0001:00001a30 _malloc 00402a30 f LIBCMT:malloc.obj
|
||||
0001:00001a50 __nh_malloc 00402a50 f LIBCMT:malloc.obj
|
||||
0001:00001aa0 __heap_alloc 00402aa0 f LIBCMT:malloc.obj
|
||||
0001:00001b00 _calloc 00402b00 f LIBCMT:calloc.obj
|
||||
0001:00001bb0 ___sbh_new_region 00402bb0 f LIBCMT:sbheap.obj
|
||||
0001:00001d20 ___sbh_release_region 00402d20 f LIBCMT:sbheap.obj
|
||||
0001:00001d80 ___sbh_decommit_pages 00402d80 f LIBCMT:sbheap.obj
|
||||
0001:00001e50 ___sbh_find_block 00402e50 f LIBCMT:sbheap.obj
|
||||
0001:00001eb0 ___sbh_free_block 00402eb0 f LIBCMT:sbheap.obj
|
||||
0001:00001f10 ___sbh_alloc_block 00402f10 f LIBCMT:sbheap.obj
|
||||
0001:00002150 ___sbh_alloc_block_from_page 00403150 f LIBCMT:sbheap.obj
|
||||
0001:000022d0 ___crtMessageBoxA 004032d0 f LIBCMT:crtmbox.obj
|
||||
0001:00002360 _strncpy 00403360 f LIBCMT:strncpy.obj
|
||||
0001:00002460 ___initstdio 00403460 f LIBCMT:_file.obj
|
||||
0001:00002520 ___endstdio 00403520 f LIBCMT:_file.obj
|
||||
0001:00002540 __callnewh 00403540 f LIBCMT:handler.obj
|
||||
0001:00002560 __fcloseall 00403560 f LIBCMT:closeall.obj
|
||||
0001:00002600 __fflush_lk 00403600 f LIBCMT:fflush.obj
|
||||
0001:00002640 __flush 00403640 f LIBCMT:fflush.obj
|
||||
0001:000026b0 __flushall 004036b0 f LIBCMT:fflush.obj
|
||||
0001:00002780 _fclose 00403780 f LIBCMT:fclose.obj
|
||||
0001:000027c0 __fclose_lk 004037c0 f LIBCMT:fclose.obj
|
||||
0001:00002830 __commit 00403830 f LIBCMT:commit.obj
|
||||
0001:000028d0 __write 004038d0 f LIBCMT:write.obj
|
||||
0001:00002950 __write_lk 00403950 f LIBCMT:write.obj
|
||||
0001:00002b60 __close 00403b60 f LIBCMT:close.obj
|
||||
0001:00002bd0 __close_lk 00403bd0 f LIBCMT:close.obj
|
||||
0001:00002c60 __freebuf 00403c60 f LIBCMT:_freebuf.obj
|
||||
0001:00002ca0 __free_osfhnd 00403ca0 f LIBCMT:osfinfo.obj
|
||||
0001:00002d40 __get_osfhandle 00403d40 f LIBCMT:osfinfo.obj
|
||||
0001:00002d90 __lock_fhandle 00403d90 f LIBCMT:osfinfo.obj
|
||||
0001:00002e00 __unlock_fhandle 00403e00 f LIBCMT:osfinfo.obj
|
||||
0001:00002e30 __dosmaperr 00403e30 f LIBCMT:dosmap.obj
|
||||
0001:00002eb0 __errno 00403eb0 f LIBCMT:dosmap.obj
|
||||
0001:00002ec0 ___doserrno 00403ec0 f LIBCMT:dosmap.obj
|
||||
0001:00002ed0 __lseek_lk 00403ed0 f LIBCMT:lseek.obj
|
||||
0001:00002f50 _RtlUnwind@16 00403f50 f kernel32:KERNEL32.dll
|
||||
0002:0000000c ??_C@_0P@GGKG@runtime?5error?5?$AA@ 0040400c LIBCMT:crt0msg.obj
|
||||
0002:0000001c ??_C@_02PIMC@?$AN?6?$AA@ 0040401c LIBCMT:crt0msg.obj
|
||||
0002:00000020 ??_C@_0O@DELO@TLOSS?5error?$AN?6?$AA@ 00404020 LIBCMT:crt0msg.obj
|
||||
0002:00000030 ??_C@_0N@OMLL@SING?5error?$AN?6?$AA@ 00404030 LIBCMT:crt0msg.obj
|
||||
0002:00000040 ??_C@_0P@OJAK@DOMAIN?5error?$AN?6?$AA@ 00404040 LIBCMT:crt0msg.obj
|
||||
0002:00000050 ??_C@_0CF@EANP@R6028?$AN?6?9?5unable?5to?5initialize?5he@ 00404050 LIBCMT:crt0msg.obj
|
||||
0002:00000078 ??_C@_0DF@ECGN@R6027?$AN?6?9?5not?5enough?5space?5for?5lo@ 00404078 LIBCMT:crt0msg.obj
|
||||
0002:000000b0 ??_C@_0DF@FKAC@R6026?$AN?6?9?5not?5enough?5space?5for?5st@ 004040b0 LIBCMT:crt0msg.obj
|
||||
0002:000000e8 ??_C@_0CG@DPMN@R6025?$AN?6?9?5pure?5virtual?5function?5c@ 004040e8 LIBCMT:crt0msg.obj
|
||||
0002:00000110 ??_C@_0DF@CKIP@R6024?$AN?6?9?5not?5enough?5space?5for?5_o@ 00404110 LIBCMT:crt0msg.obj
|
||||
0002:00000148 ??_C@_0CJ@GGOE@R6019?$AN?6?9?5unable?5to?5open?5console?5@ 00404148 LIBCMT:crt0msg.obj
|
||||
0002:00000174 ??_C@_0CB@LBOB@R6018?$AN?6?9?5unexpected?5heap?5error?$AN?6@ 00404174 LIBCMT:crt0msg.obj
|
||||
0002:00000198 ??_C@_0CN@FPEG@R6017?$AN?6?9?5unexpected?5multithread?5@ 00404198 LIBCMT:crt0msg.obj
|
||||
0002:000001c8 ??_C@_0CM@OBIC@R6016?$AN?6?9?5not?5enough?5space?5for?5th@ 004041c8 LIBCMT:crt0msg.obj
|
||||
0002:000001f4 ??_C@_0CB@HPAL@?$AN?6abnormal?5program?5termination?$AN?6@ 004041f4 LIBCMT:crt0msg.obj
|
||||
0002:00000218 ??_C@_0CM@JOOB@R6009?$AN?6?9?5not?5enough?5space?5for?5en@ 00404218 LIBCMT:crt0msg.obj
|
||||
0002:00000244 ??_C@_0CK@OIBL@R6008?$AN?6?9?5not?5enough?5space?5for?5ar@ 00404244 LIBCMT:crt0msg.obj
|
||||
0002:00000270 ??_C@_0CF@LKPB@R6002?$AN?6?9?5floating?5point?5not?5load@ 00404270 LIBCMT:crt0msg.obj
|
||||
0002:00000298 ??_C@_0CF@JPDF@Microsoft?5Visual?5C?$CL?$CL?5Runtime?5Lib@ 00404298 LIBCMT:crt0msg.obj
|
||||
0002:000002c0 ??_C@_02JJJH@?6?6?$AA@ 004042c0 LIBCMT:crt0msg.obj
|
||||
0002:000002c4 ??_C@_0BK@DEOK@Runtime?5Error?$CB?6?6Program?3?5?$AA@ 004042c4 LIBCMT:crt0msg.obj
|
||||
0002:000002e0 ??_C@_03NAME@?4?4?4?$AA@ 004042e0 LIBCMT:crt0msg.obj
|
||||
0002:000002e4 ??_C@_0BH@NNCD@?$DMprogram?5name?5unknown?$DO?$AA@ 004042e4 LIBCMT:crt0msg.obj
|
||||
0002:000002fc ??_C@_0BD@NJFP@GetLastActivePopup?$AA@ 004042fc LIBCMT:crtmbox.obj
|
||||
0002:00000310 ??_C@_0BA@GILI@GetActiveWindow?$AA@ 00404310 LIBCMT:crtmbox.obj
|
||||
0002:00000320 ??_C@_0M@PKCK@MessageBoxA?$AA@ 00404320 LIBCMT:crtmbox.obj
|
||||
0002:0000032c ??_C@_0L@HKL@user32?4dll?$AA@ 0040432c LIBCMT:crtmbox.obj
|
||||
0003:00000000 ___xc_a 00405000 LIBCMT:crt0init.obj
|
||||
0003:00000004 ___xc_z 00405004 LIBCMT:crt0init.obj
|
||||
0003:00000008 ___xi_a 00405008 LIBCMT:crt0init.obj
|
||||
0003:00000010 ___xi_z 00405010 LIBCMT:crt0init.obj
|
||||
0003:00000014 ___xp_a 00405014 LIBCMT:crt0init.obj
|
||||
0003:0000001c ___xp_z 0040501c LIBCMT:crt0init.obj
|
||||
0003:00000020 ___xt_a 00405020 LIBCMT:crt0init.obj
|
||||
0003:00000024 ___xt_z 00405024 LIBCMT:crt0init.obj
|
||||
0003:00000030 ?szName@@3PADA 00405030 Testui.obj
|
||||
0003:00000040 ??_C@_0CB@HHFB@Unable?5to?5initialize?5DirectDraw?4@ 00405040 Testui.obj
|
||||
0003:00000064 ??_C@_0M@ONLE@TESTUICLASS?$AA@ 00405064 Testui.obj
|
||||
0003:00000070 ??_C@_0P@GBPA@Diablo?5UI?5Test?$AA@ 00405070 Testui.obj
|
||||
0003:00000080 ??_C@_04JDHC@Test?$AA@ 00405080 Testui.obj
|
||||
0003:00000088 __aexit_rtn 00405088 LIBCMT:wincrt0.obj
|
||||
0003:0000008c ___app_type 0040508c LIBCMT:wincrt0.obj
|
||||
0003:00000090 __XcptActTab 00405090 LIBCMT:winxfltr.obj
|
||||
0003:00000108 __First_FPE_Indx 00405108 LIBCMT:winxfltr.obj
|
||||
0003:0000010c __Num_FPE 0040510c LIBCMT:winxfltr.obj
|
||||
0003:00000110 __XcptActTabSize 00405110 LIBCMT:winxfltr.obj
|
||||
0003:00000114 __XcptActTabCount 00405114 LIBCMT:winxfltr.obj
|
||||
0003:00000210 ___badioinfo 00405210 LIBCMT:ioinit.obj
|
||||
0003:00000234 ___tlsindex 00405234 LIBCMT:tidtable.obj
|
||||
0003:00000238 __amblksiz 00405238 LIBCMT:heapinit.obj
|
||||
0003:0000023c __NLG_Destination 0040523c LIBCMT:exsup.obj
|
||||
0003:000002e0 __locktable 004052e0 LIBCMT:mlock.obj
|
||||
0003:000003a0 __pctype 004053a0 LIBCMT:ctype.obj
|
||||
0003:000003a4 __pwctype 004053a4 LIBCMT:ctype.obj
|
||||
0003:000003a8 __ctype 004053a8 LIBCMT:ctype.obj
|
||||
0003:000005b0 ___small_block_heap 004055b0 LIBCMT:sbheap.obj
|
||||
0003:000025d4 ___sbh_threshold 004075d4 LIBCMT:sbheap.obj
|
||||
0003:000025e0 __iob 004075e0 LIBCMT:_file.obj
|
||||
0003:000029c8 ??_C@_00A@?$AA@ 004079c8 Testui.obj
|
||||
0003:000029cc __aenvptr 004079cc LIBCMT:wincrt0.obj
|
||||
0003:000029d0 __wenvptr 004079d0 LIBCMT:wincrt0.obj
|
||||
0003:000029d4 ___error_mode 004079d4 LIBCMT:wincrt0.obj
|
||||
0003:000029d8 __umaskval 004079d8 LIBCMT:crt0dat.obj
|
||||
0003:000029dc __osver 004079dc LIBCMT:crt0dat.obj
|
||||
0003:000029e0 __winver 004079e0 LIBCMT:crt0dat.obj
|
||||
0003:000029e4 __winmajor 004079e4 LIBCMT:crt0dat.obj
|
||||
0003:000029e8 __winminor 004079e8 LIBCMT:crt0dat.obj
|
||||
0003:000029ec ___argc 004079ec LIBCMT:crt0dat.obj
|
||||
0003:000029f0 ___argv 004079f0 LIBCMT:crt0dat.obj
|
||||
0003:000029f4 ___wargv 004079f4 LIBCMT:crt0dat.obj
|
||||
0003:000029f8 __environ 004079f8 LIBCMT:crt0dat.obj
|
||||
0003:000029fc ___initenv 004079fc LIBCMT:crt0dat.obj
|
||||
0003:00002a00 __wenviron 00407a00 LIBCMT:crt0dat.obj
|
||||
0003:00002a04 ___winitenv 00407a04 LIBCMT:crt0dat.obj
|
||||
0003:00002a08 __pgmptr 00407a08 LIBCMT:crt0dat.obj
|
||||
0003:00002a0c __wpgmptr 00407a0c LIBCMT:crt0dat.obj
|
||||
0003:00002a10 __exitflag 00407a10 LIBCMT:crt0dat.obj
|
||||
0003:00002a14 __C_Termination_Done 00407a14 LIBCMT:crt0dat.obj
|
||||
0003:00002a18 __C_Exit_Done 00407a18 LIBCMT:crt0dat.obj
|
||||
0003:00002b30 __mbctype 00407b30 LIBCMT:mbctype.obj
|
||||
0003:00002c34 ___mbcodepage 00407c34 LIBCMT:mbctype.obj
|
||||
0003:00002c38 ___mblcid 00407c38 LIBCMT:mbctype.obj
|
||||
0003:00002c40 ___mbulinfo 00407c40 LIBCMT:mbctype.obj
|
||||
0003:00002c50 __adbgmsg 00407c50 LIBCMT:crt0msg.obj
|
||||
0003:00002cb8 ___lc_handle 00407cb8 LIBCMT:nlsdata2.obj
|
||||
0003:00002cd0 ___lc_codepage 00407cd0 LIBCMT:nlsdata2.obj
|
||||
0003:00002ce4 __cflush 00407ce4 LIBCMT:_file.obj
|
||||
0003:00002ce8 __newmode 00407ce8 LIBCMT:_newmode.obj
|
||||
0003:00002cec ?_pnhHeap@@3P6AHI@ZA 00407cec LIBCMT:handler.obj
|
||||
0003:00002cf0 ___piob 00407cf0 <common>
|
||||
0003:00002d00 __bufin 00407d00 <common>
|
||||
0003:00003d00 __nstream 00408d00 <common>
|
||||
0003:00003d04 __crtheap 00408d04 <common>
|
||||
0003:00003d20 ___pioinfo 00408d20 <common>
|
||||
0003:00003e20 __nhandle 00408e20 <common>
|
||||
0003:00003e24 ___onexitend 00408e24 <common>
|
||||
0003:00003e28 ___onexitbegin 00408e28 <common>
|
||||
0003:00003e2c __FPinit 00408e2c <common>
|
||||
0003:00003e30 __acmdln 00408e30 <common>
|
||||
0004:00000000 __IMPORT_DESCRIPTOR_KERNEL32 00409000 kernel32:KERNEL32.dll
|
||||
0004:00000014 __IMPORT_DESCRIPTOR_USER32 00409014 user32:USER32.dll
|
||||
0004:00000028 __IMPORT_DESCRIPTOR_storm 00409028 storm:storm.dll
|
||||
0004:0000003c __IMPORT_DESCRIPTOR_hellfrui 0040903c hellfrui:hellfrui.dll
|
||||
0004:00000050 __NULL_IMPORT_DESCRIPTOR 00409050 kernel32:KERNEL32.dll
|
||||
0004:00000184 __imp__FreeEnvironmentStringsW@4 00409184 kernel32:KERNEL32.dll
|
||||
0004:00000188 __imp__GetModuleHandleA@4 00409188 kernel32:KERNEL32.dll
|
||||
0004:0000018c __imp__SetFilePointer@16 0040918c kernel32:KERNEL32.dll
|
||||
0004:00000190 __imp__SetStdHandle@8 00409190 kernel32:KERNEL32.dll
|
||||
0004:00000194 __imp__CloseHandle@4 00409194 kernel32:KERNEL32.dll
|
||||
0004:00000198 __imp__FlushFileBuffers@4 00409198 kernel32:KERNEL32.dll
|
||||
0004:0000019c __imp__LoadLibraryA@4 0040919c kernel32:KERNEL32.dll
|
||||
0004:000001a0 __imp__GetProcAddress@8 004091a0 kernel32:KERNEL32.dll
|
||||
0004:000001a4 __imp__VirtualAlloc@16 004091a4 kernel32:KERNEL32.dll
|
||||
0004:000001a8 __imp__HeapAlloc@12 004091a8 kernel32:KERNEL32.dll
|
||||
0004:000001ac __imp__HeapFree@12 004091ac kernel32:KERNEL32.dll
|
||||
0004:000001b0 __imp__LeaveCriticalSection@4 004091b0 kernel32:KERNEL32.dll
|
||||
0004:000001b4 __imp__EnterCriticalSection@4 004091b4 kernel32:KERNEL32.dll
|
||||
0004:000001b8 __imp__InitializeCriticalSection@4 004091b8 kernel32:KERNEL32.dll
|
||||
0004:000001bc __imp__WriteFile@20 004091bc kernel32:KERNEL32.dll
|
||||
0004:000001c0 __imp__RtlUnwind@16 004091c0 kernel32:KERNEL32.dll
|
||||
0004:000001c4 __imp__VirtualFree@12 004091c4 kernel32:KERNEL32.dll
|
||||
0004:000001c8 __imp__HeapCreate@12 004091c8 kernel32:KERNEL32.dll
|
||||
0004:000001cc __imp__HeapDestroy@4 004091cc kernel32:KERNEL32.dll
|
||||
0004:000001d0 __imp__GetLastError@0 004091d0 kernel32:KERNEL32.dll
|
||||
0004:000001d4 __imp__TlsGetValue@4 004091d4 kernel32:KERNEL32.dll
|
||||
0004:000001d8 __imp__SetLastError@4 004091d8 kernel32:KERNEL32.dll
|
||||
0004:000001dc __imp__TlsAlloc@0 004091dc kernel32:KERNEL32.dll
|
||||
0004:000001e0 __imp__GetEnvironmentStrings@0 004091e0 kernel32:KERNEL32.dll
|
||||
0004:000001e4 __imp__GetStartupInfoA@4 004091e4 kernel32:KERNEL32.dll
|
||||
0004:000001e8 __imp__GetCommandLineA@0 004091e8 kernel32:KERNEL32.dll
|
||||
0004:000001ec __imp__GetVersion@0 004091ec kernel32:KERNEL32.dll
|
||||
0004:000001f0 __imp__ExitProcess@4 004091f0 kernel32:KERNEL32.dll
|
||||
0004:000001f4 __imp__TerminateProcess@8 004091f4 kernel32:KERNEL32.dll
|
||||
0004:000001f8 __imp__GetCurrentProcess@0 004091f8 kernel32:KERNEL32.dll
|
||||
0004:000001fc __imp__UnhandledExceptionFilter@4 004091fc kernel32:KERNEL32.dll
|
||||
0004:00000200 __imp__GetModuleFileNameA@12 00409200 kernel32:KERNEL32.dll
|
||||
0004:00000204 __imp__FreeEnvironmentStringsA@4 00409204 kernel32:KERNEL32.dll
|
||||
0004:00000208 __imp__GetCurrentDirectoryA@8 00409208 kernel32:KERNEL32.dll
|
||||
0004:0000020c __imp__GetOEMCP@0 0040920c kernel32:KERNEL32.dll
|
||||
0004:00000210 __imp__SetHandleCount@4 00409210 kernel32:KERNEL32.dll
|
||||
0004:00000214 __imp__GetEnvironmentStringsW@0 00409214 kernel32:KERNEL32.dll
|
||||
0004:00000218 __imp__WideCharToMultiByte@32 00409218 kernel32:KERNEL32.dll
|
||||
0004:0000021c __imp__GetCPInfo@8 0040921c kernel32:KERNEL32.dll
|
||||
0004:00000220 __imp__GetACP@0 00409220 kernel32:KERNEL32.dll
|
||||
0004:00000224 __imp__GetCurrentThreadId@0 00409224 kernel32:KERNEL32.dll
|
||||
0004:00000228 __imp__GetStdHandle@4 00409228 kernel32:KERNEL32.dll
|
||||
0004:0000022c __imp__GetFileType@4 0040922c kernel32:KERNEL32.dll
|
||||
0004:00000230 __imp__DeleteCriticalSection@4 00409230 kernel32:KERNEL32.dll
|
||||
0004:00000234 __imp__TlsSetValue@8 00409234 kernel32:KERNEL32.dll
|
||||
0004:00000238 \177KERNEL32_NULL_THUNK_DATA 00409238 kernel32:KERNEL32.dll
|
||||
0004:0000023c __imp__ShowCursor@4 0040923c user32:USER32.dll
|
||||
0004:00000240 __imp__MessageBoxA@16 00409240 user32:USER32.dll
|
||||
0004:00000244 \177USER32_NULL_THUNK_DATA 00409244 user32:USER32.dll
|
||||
0004:00000248 __imp__UiCategoryCallback@28 00409248 hellfrui:hellfrui.dll
|
||||
0004:0000024c __imp__UiInitialize@0 0040924c hellfrui:hellfrui.dll
|
||||
0004:00000250 __imp__UiCreatePlayerDescription@12 00409250 hellfrui:hellfrui.dll
|
||||
0004:00000254 __imp__UiDestroy@0 00409254 hellfrui:hellfrui.dll
|
||||
0004:00000258 __imp__UiArtCallback@32 00409258 hellfrui:hellfrui.dll
|
||||
0004:0000025c __imp__UiCreateGameCallback@24 0040925c hellfrui:hellfrui.dll
|
||||
0004:00000260 __imp__UiDrawDescCallback@32 00409260 hellfrui:hellfrui.dll
|
||||
0004:00000264 __imp__UiMessageBoxCallback@16 00409264 hellfrui:hellfrui.dll
|
||||
0004:00000268 __imp__UiSoundCallback@12 00409268 hellfrui:hellfrui.dll
|
||||
0004:0000026c __imp__UiAuthCallback@28 0040926c hellfrui:hellfrui.dll
|
||||
0004:00000270 __imp__UiGetDataCallback@20 00409270 hellfrui:hellfrui.dll
|
||||
0004:00000274 __imp__UiSelectProvider@24 00409274 hellfrui:hellfrui.dll
|
||||
0004:00000278 __imp__UiOnPaint@4 00409278 hellfrui:hellfrui.dll
|
||||
0004:0000027c \177hellfrui_NULL_THUNK_DATA 0040927c hellfrui:hellfrui.dll
|
||||
0004:00000280 __imp__SFileSetBasePath@4 00409280 storm:storm.dll
|
||||
0004:00000284 __imp__StormDestroy@0 00409284 storm:storm.dll
|
||||
0004:00000288 __imp__SDrawGetFrameWindow@4 00409288 storm:storm.dll
|
||||
0004:0000028c __imp__SNetSelectGame@24 0040928c storm:storm.dll
|
||||
0004:00000290 __imp__SFileEnableDirectAccess@4 00409290 storm:storm.dll
|
||||
0004:00000294 __imp__SDrawAutoInitialize@32 00409294 storm:storm.dll
|
||||
0004:00000298 __imp__SDrawMessageBox@12 00409298 storm:storm.dll
|
||||
0004:0000029c __imp__SMsgRegisterMessage@12 0040929c storm:storm.dll
|
||||
0004:000002a0 \177storm_NULL_THUNK_DATA 004092a0 storm:storm.dll
|
||||
|
||||
entry point at 0001:000002c0
|
||||
|
||||
Static symbols
|
||||
|
||||
0001:000026c0 _flsall 004036c0 f LIBCMT:fflush.obj
|
||||
0001:00001440 __unwind_handler 00402440 f LIBCMT:exsup.obj
|
||||
0001:00000fe0 _getSystemCP 00401fe0 f LIBCMT:mbctype.obj
|
||||
0001:00001030 _CPtoLCID 00402030 f LIBCMT:mbctype.obj
|
||||
0001:00001090 _setSBCS 00402090 f LIBCMT:mbctype.obj
|
||||
0001:00000a50 _parse_cmdline 00401a50 f LIBCMT:stdargv.obj
|
||||
0001:00000880 _x_ismbbtype 00401880 f LIBCMT:ismbbyte.obj
|
||||
0001:00000820 _xcptlookup 00401820 f LIBCMT:winxfltr.obj
|
||||
0001:00000510 _doexit 00401510 f LIBCMT:crt0dat.obj
|
||||
0001:000005f0 __initterm 004015f0 f LIBCMT:crt0dat.obj
|
||||
|
||||
FIXUPS: 14b6 12 12 20 1a 73 12 c 2e 10 fffffd35 b 8 b f 5 10 19 8 5 5 2b
|
||||
FIXUPS: 140e 9 13 10 40 a efd 21 25 fffffd16 12 9d fffffc3e d 19 c3 31
|
||||
FIXUPS: 1efe 7 14 7c 35 f9 fffffc35 25 55 fffffc7f 14 10 1c fffffec8 1a
|
||||
FIXUPS: 193d 10 44 fffffed9 fffffdac 10 145e 34 e c fffffefb 13 17 a d
|
||||
FIXUPS: 2856 10 a 23 a 64 2f 41 2f fffffc6d 18 d8 ae fffffdc8 d 11 2f 25
|
||||
FIXUPS: 2434 ffffffc6 fffffee8 19 20 14cd 23 fffffdfc 1d 4b 44 1d 2a 1e
|
||||
FIXUPS: 3735 1a 14 fffffe04 32 2b 23 fffffe9d 1f 13 6b e fffff8fe cd 60
|
||||
FIXUPS: 2f95 169 fffffa3d e c 3f fffffea8 33 1126 b d b 20 19 c d 20 24
|
||||
FIXUPS: 38fc 13 b d b 7e cb b 1a 36 b fffffd82 13 23 7 f e fffffee0 9 b
|
||||
FIXUPS: 37d1 b ffffd890 7 27 14 10 5 7d 1b 5e 21 1e 17 c 5 2cb8 d 3a ffffff13
|
||||
FIXUPS: 3e5d 1d d d 1d 10 fffffe56 b 4e b 44 1e fffffe98 ffffff17
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+158
@@ -0,0 +1,158 @@
|
||||
#ifndef _STORM_SCLASS_H_
|
||||
#define _STORM_SCLASS_H_
|
||||
|
||||
extern "C++" {
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* CCRITSECT -- Critical section class
|
||||
*
|
||||
***/
|
||||
|
||||
class CCritSect {
|
||||
private:
|
||||
CRITICAL_SECTION m_critsect;
|
||||
public:
|
||||
CCritSect () { InitializeCriticalSection(&m_critsect); }
|
||||
~CCritSect () { DeleteCriticalSection(&m_critsect); }
|
||||
void inline Enter () { EnterCriticalSection(&m_critsect); }
|
||||
void inline Leave () { LeaveCriticalSection(&m_critsect); }
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* CLOCK -- Lock class
|
||||
*
|
||||
***/
|
||||
|
||||
class CLock {
|
||||
private:
|
||||
SSYNCLOCK m_lock;
|
||||
public:
|
||||
CLock () { SSyncInitializeLock(&m_lock); }
|
||||
~CLock () { SSyncDeleteLock(&m_lock); }
|
||||
void inline Enter (BOOL forwriting) { SSyncEnterLock(&m_lock,forwriting); }
|
||||
void inline Leave (BOOL fromwriting) { SSyncLeaveLock(&m_lock,fromwriting); }
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* TLIST -- Linked list function templates
|
||||
*
|
||||
***/
|
||||
|
||||
//===========================================================================
|
||||
template <class T>
|
||||
BOOL inline TListAdd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) {
|
||||
if (!(head && rec))
|
||||
return 0;
|
||||
|
||||
T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber);
|
||||
if (!newptr)
|
||||
return 0;
|
||||
CopyMemory(newptr,rec,sizeof(T));
|
||||
newptr->next = *head;
|
||||
*head = newptr;
|
||||
return 1;
|
||||
}
|
||||
#define LISTADD(a,b) TListAdd(a,b,(LPCSTR)__FILE__,__LINE__)
|
||||
|
||||
//===========================================================================
|
||||
template <class T>
|
||||
BOOL inline TListAddEnd (T **head, T *rec, LPCSTR filename = NULL, int linenumber = 0) {
|
||||
if (!(head && rec))
|
||||
return 0;
|
||||
|
||||
T *newptr = (T *)SMemAlloc(sizeof(T),filename,linenumber);
|
||||
if (!newptr)
|
||||
return 0;
|
||||
CopyMemory(newptr,rec,sizeof(T));
|
||||
newptr->next = NULL;
|
||||
|
||||
T **next = head;
|
||||
while (*next)
|
||||
next = &(*next)->next;
|
||||
*next = newptr;
|
||||
|
||||
return 1;
|
||||
}
|
||||
#define LISTADDEND(a,b) TListAddEnd(a,b,(LPCSTR)__FILE__,__LINE__)
|
||||
|
||||
//===========================================================================
|
||||
template <class T>
|
||||
BOOL inline TListAddPtr (T **head, T *ptr) {
|
||||
if (!(head && ptr))
|
||||
return 0;
|
||||
|
||||
ptr->next = *head;
|
||||
*head = ptr;
|
||||
return 1;
|
||||
}
|
||||
#define LISTADDPTR(a,b) TListAddPtr(a,b)
|
||||
|
||||
//===========================================================================
|
||||
template <class T>
|
||||
BOOL inline TListAddPtrEnd (T **head, T *ptr) {
|
||||
if (!(head && ptr))
|
||||
return 0;
|
||||
|
||||
ptr->next = NULL;
|
||||
T **next = head;
|
||||
while (*next)
|
||||
next = &(*next)->next;
|
||||
*next = ptr;
|
||||
|
||||
return 1;
|
||||
}
|
||||
#define LISTADDPTREND(a,b) TListAddPtrEnd(a,b)
|
||||
|
||||
//===========================================================================
|
||||
template <class T>
|
||||
BOOL inline TListClear (T **head, LPCSTR filename = NULL, int linenumber = 0) {
|
||||
if (!head)
|
||||
return 0;
|
||||
|
||||
while (*head) {
|
||||
T *next = (*head)->next;
|
||||
SMemFree(*head,filename,linenumber);
|
||||
*head = next;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#define LISTCLEAR(a) TListClear(a,(LPCSTR)__FILE__,__LINE__)
|
||||
|
||||
//===========================================================================
|
||||
template <class T>
|
||||
BOOL inline TListFree (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) {
|
||||
if (!(head && ptr))
|
||||
return 0;
|
||||
|
||||
T **next = head;
|
||||
while (*next && (*next != ptr))
|
||||
next = &(*next)->next;
|
||||
if (*next)
|
||||
*next = (*next)->next;
|
||||
|
||||
SMemFree(ptr,filename,linenumber);
|
||||
return (*next != NULL);
|
||||
}
|
||||
#define LISTFREE(a,b) TListFree(a,b,(LPCSTR)__FILE__,__LINE__)
|
||||
|
||||
//===========================================================================
|
||||
template <class T>
|
||||
BOOL inline TListFreePtr (T **head, T *ptr, LPCSTR filename = NULL, int linenumber = 0) {
|
||||
if (!(head && ptr))
|
||||
return 0;
|
||||
|
||||
T **next = head;
|
||||
while (*next && (*next != ptr))
|
||||
next = &(*next)->next;
|
||||
if (*next)
|
||||
*next = (*next)->next;
|
||||
|
||||
return (*next != NULL);
|
||||
}
|
||||
#define LISTFREEPTR(a,b) TListFreePtr(a,b,(LPCSTR)__FILE__,__LINE__)
|
||||
|
||||
} // extern "C++"
|
||||
#endif // ifndef _STORM_SCLASS_H_
|
||||
Binary file not shown.
Binary file not shown.
+1342
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,151 @@
|
||||
//****************************************************************************
|
||||
//
|
||||
// TESTUI.CPP
|
||||
// Diablo UI test program
|
||||
//
|
||||
// By Michael O'Brien (9/12/96)
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
#include <windows.h>
|
||||
#include "storm.h"
|
||||
#include "ui\diabloui.h"
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
#define CLASS TEXT("TESTUICLASS")
|
||||
#define TITLE TEXT("Diablo UI Test")
|
||||
#define PROGRAMID 'DTST'
|
||||
#define VERSIONID 1
|
||||
#define MAXPLAYERS 4
|
||||
|
||||
char szName[MAX_COMPUTERNAME_LENGTH+1] = "TestUI";
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
BOOL Initialize (HINSTANCE instance) {
|
||||
|
||||
// FOR DEBUG VERSIONS OF THE PROGRAM, SETUP STORM'S MOPAQ ARCHIVE SUPPORT
|
||||
// SO THAT IT CAN READ FILES DIRECTLY FROM THE DISK (RATHER THAN ONLY FROM
|
||||
// MOPAQ FILES) AND SO THAT FILE ACCESS IS BASED IN THE CURRENT DIRECTORY
|
||||
// RATHER THAN THE EXECUTABLE DIRECTORY
|
||||
{
|
||||
TCHAR directory[MAX_PATH] = TEXT("");
|
||||
GetCurrentDirectory(MAX_PATH,directory);
|
||||
SFileSetBasePath(directory);
|
||||
SFileEnableDirectAccess(1);
|
||||
}
|
||||
|
||||
// INITIALIZE DIRECTDRAW
|
||||
if (!SDrawAutoInitialize(instance,CLASS,TITLE)) {
|
||||
SDrawMessageBox("Unable to initialize DirectDraw.",TITLE,0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// REGISTER MESSAGE HANDLERS FOR THOSE MESSAGES THAT WILL BE HANDLED
|
||||
// BY THE FRAME WINDOW
|
||||
SMsgRegisterMessage(NULL,WM_PAINT,UiOnPaint);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
BOOL APIENTRY Connect (SNETPROGRAMDATAPTR programdata, SNETPLAYERDATAPTR playerdata, DWORD *pdwLocalPlayer) {
|
||||
// BUILD AN INTERFACE DATA RECORD
|
||||
SNETUIDATA Interfacedata;
|
||||
|
||||
ZeroMemory(&Interfacedata,sizeof(SNETUIDATA));
|
||||
Interfacedata.size = sizeof(SNETUIDATA);
|
||||
Interfacedata.parentwindow = SDrawGetFrameWindow();
|
||||
Interfacedata.artcallback = UiArtCallback;
|
||||
Interfacedata.createcallback = UiCreateGameCallback;
|
||||
Interfacedata.drawdesccallback = UiDrawDescCallback;
|
||||
Interfacedata.messageboxcallback = UiMessageBoxCallback;
|
||||
Interfacedata.soundcallback = UiSoundCallback;
|
||||
Interfacedata.authcallback = UiAuthCallback;
|
||||
Interfacedata.getdatacallback = UiGetDataCallback;
|
||||
Interfacedata.categorycallback = UiCategoryCallback;
|
||||
|
||||
|
||||
// SELECT A NETWORK PROVIDER
|
||||
while (UiSelectProvider(NULL,
|
||||
programdata,
|
||||
playerdata,
|
||||
&Interfacedata,
|
||||
NULL,
|
||||
NULL)) {
|
||||
|
||||
// SELECT A GAME
|
||||
if (SNetSelectGame(SNET_SF_ALLOWCREATE,
|
||||
programdata,
|
||||
playerdata,
|
||||
&Interfacedata,
|
||||
NULL,
|
||||
pdwLocalPlayer)) {
|
||||
MessageBox(SDrawGetFrameWindow(), "Test", "Test", MB_OK);
|
||||
return 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
int APIENTRY WinMain (HINSTANCE instance, HINSTANCE, LPSTR, int) {
|
||||
|
||||
DWORD dwLocalPlayer;
|
||||
char szDesc[256];
|
||||
TUIHEROINFO HeroInfo;
|
||||
|
||||
|
||||
ShowCursor(FALSE);
|
||||
|
||||
ZeroMemory(&HeroInfo, sizeof(HeroInfo));
|
||||
HeroInfo.level = 5;
|
||||
HeroInfo.herorank = 3;
|
||||
|
||||
if (!Initialize(instance)) {
|
||||
ShowCursor(TRUE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// Must be called after storm is initialized
|
||||
UiInitialize();
|
||||
|
||||
// BUILD A PROGRAM DATA RECORD
|
||||
SNETPROGRAMDATA programdata;
|
||||
ZeroMemory(&programdata,sizeof(SNETPROGRAMDATA));
|
||||
programdata.size = sizeof(SNETPROGRAMDATA);
|
||||
programdata.programname = TITLE;
|
||||
programdata.programid = PROGRAMID;
|
||||
programdata.versionid = VERSIONID;
|
||||
programdata.maxplayers = MAXPLAYERS;
|
||||
programdata.initdata = NULL;
|
||||
programdata.initdatabytes = 0;
|
||||
|
||||
|
||||
// BUILD A PLAYER DATA RECORD
|
||||
SNETPLAYERDATA playerdata;
|
||||
ZeroMemory(&playerdata,sizeof(SNETPLAYERDATA));
|
||||
playerdata.size = sizeof(SNETPLAYERDATA);
|
||||
playerdata.playername = szName;
|
||||
playerdata.playerdescription = (LPSTR)szDesc;
|
||||
|
||||
// Create player description string
|
||||
UiCreatePlayerDescription(&HeroInfo, PROGRAMID, (LPSTR)szDesc);
|
||||
|
||||
Connect(&programdata, &playerdata, &dwLocalPlayer);
|
||||
|
||||
UiDestroy();
|
||||
StormDestroy();
|
||||
|
||||
ShowCursor(TRUE);
|
||||
return 0;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 766 B |
@@ -0,0 +1,343 @@
|
||||
//****************************************************************************
|
||||
// artfont.cpp
|
||||
// created 10.15.96
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
#include "pch.h"
|
||||
#include "artfont.h"
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
|
||||
static TARTFONT sgHugeFont;
|
||||
static TARTFONT sgHugeFontGray;
|
||||
static TARTFONT sgBigFont;
|
||||
static TARTFONT sgBigFontGray;
|
||||
static TARTFONT sgMedFont;
|
||||
static TARTFONT sgMedFontGray;
|
||||
static TARTFONT sgSmallFont;
|
||||
static TARTFONT sgSmallFontGray;
|
||||
static TPARTFONT sgpCurrFont;
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetHuge(void) {
|
||||
sgpCurrFont = &sgHugeFont;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetHugeGray(void) {
|
||||
sgpCurrFont = &sgHugeFontGray;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetBig(void) {
|
||||
sgpCurrFont = &sgBigFont;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetBigGray(void) {
|
||||
sgpCurrFont = &sgBigFontGray;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetMed(void) {
|
||||
sgpCurrFont = &sgMedFont;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetMedGray(void) {
|
||||
sgpCurrFont = &sgMedFontGray;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetSmall(void) {
|
||||
sgpCurrFont = &sgSmallFont;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSetSmallGray(void) {
|
||||
sgpCurrFont = &sgSmallFontGray;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontSet(int fontnum) {
|
||||
switch (fontnum) {
|
||||
case AF_HUGE:
|
||||
ArtFontSetHuge();
|
||||
break;
|
||||
case AF_HUGEGRAY:
|
||||
ArtFontSetHugeGray();
|
||||
break;
|
||||
case AF_BIG:
|
||||
ArtFontSetBig();
|
||||
break;
|
||||
case AF_BIGGRAY:
|
||||
ArtFontSetBigGray();
|
||||
break;
|
||||
case AF_MED:
|
||||
ArtFontSetMed();
|
||||
break;
|
||||
case AF_MEDGRAY:
|
||||
ArtFontSetMedGray();
|
||||
break;
|
||||
case AF_SMALL:
|
||||
ArtFontSetSmall();
|
||||
break;
|
||||
case AF_SMALLGRAY:
|
||||
default:
|
||||
ArtFontSetSmallGray();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontInit(void) {
|
||||
sgHugeFont.bValid = FALSE;
|
||||
sgHugeFontGray.bValid = FALSE;
|
||||
sgBigFont.bValid = FALSE;
|
||||
sgBigFontGray.bValid = FALSE;
|
||||
sgMedFont.bValid = FALSE;
|
||||
sgMedFontGray.bValid = FALSE;
|
||||
sgSmallFont.bValid = FALSE;
|
||||
sgSmallFontGray.bValid = FALSE;
|
||||
sgpCurrFont = NULL;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void ArtFontDestroyFont(TPARTFONT pFont) {
|
||||
if (! pFont->bValid) return;
|
||||
|
||||
for (int index = 0; index < MAX_CHARS; index++) {
|
||||
if (pFont->pCharData[index]) {
|
||||
STransDelete(pFont->pCharData[index]);
|
||||
pFont->pCharData[index] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
pFont->bValid = FALSE;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontDestroy(void) {
|
||||
ArtFontDestroyFont(&sgHugeFont);
|
||||
ArtFontDestroyFont(&sgHugeFontGray);
|
||||
ArtFontDestroyFont(&sgBigFont);
|
||||
ArtFontDestroyFont(&sgBigFontGray);
|
||||
ArtFontDestroyFont(&sgMedFont);
|
||||
ArtFontDestroyFont(&sgMedFontGray);
|
||||
ArtFontDestroyFont(&sgSmallFont);
|
||||
ArtFontDestroyFont(&sgSmallFontGray);
|
||||
|
||||
sgpCurrFont = NULL;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void ArtFontLoadFont(TPARTFONT pFont, LPCSTR datafile, LPCSTR artfile) {
|
||||
HSFILE file;
|
||||
LPBYTE pFontBmp;
|
||||
SIZE BmpSize;
|
||||
|
||||
if (pFont->bValid) return;
|
||||
|
||||
// load the font specs for the font
|
||||
if (! SFileOpenFile(datafile, &file))
|
||||
return;
|
||||
if (! SFileReadFile(file, &pFont->tFontSpecs, SFileGetFileSize(file))) {
|
||||
SFileCloseFile(file);
|
||||
return;
|
||||
}
|
||||
SFileCloseFile(file);
|
||||
|
||||
// load the artwork for the font
|
||||
UiLoadBmpFile(artfile, &pFontBmp, &BmpSize);
|
||||
|
||||
memset(pFont->pCharData, 0, sizeof(sgBigFont.pCharData));
|
||||
if (pFontBmp) {
|
||||
RECT rect;
|
||||
// create an HTRANS for each character in the font
|
||||
for (int index = 0; index <= MAX_CHARS; index++) {
|
||||
if (! pFont->tFontSpecs.bCharWidths[index]) continue;
|
||||
|
||||
rect.left = 0;
|
||||
rect.right = pFont->tFontSpecs.bCharWidths[index];
|
||||
rect.top = index * pFont->tFontSpecs.bCharHeight;
|
||||
rect.bottom = rect.top + pFont->tFontSpecs.bCharHeight - 1;
|
||||
|
||||
STransCreate(
|
||||
pFontBmp,
|
||||
BmpSize.cx,
|
||||
BmpSize.cy,
|
||||
8,
|
||||
&rect,
|
||||
PALETTEINDEX(32),
|
||||
&pFont->pCharData[index]
|
||||
);
|
||||
}
|
||||
|
||||
pFont->bValid = TRUE;
|
||||
FREE(pFontBmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
BOOL ArtFontLoad(void) {
|
||||
ArtFontLoadFont(&sgBigFont, "ui_art\\font30.bin", "ui_art\\font30g.pcx");
|
||||
ArtFontLoadFont(&sgBigFontGray, "ui_art\\font30.bin", "ui_art\\font30s.pcx");
|
||||
ArtFontLoadFont(&sgMedFont, "ui_art\\font24.bin", "ui_art\\font24g.pcx");
|
||||
ArtFontLoadFont(&sgMedFontGray, "ui_art\\font24.bin", "ui_art\\font24s.pcx");
|
||||
ArtFontLoadFont(&sgSmallFont, "ui_art\\font16.bin", "ui_art\\font16g.pcx");
|
||||
ArtFontLoadFont(&sgSmallFontGray, "ui_art\\font16.bin", "ui_art\\font16s.pcx");
|
||||
ArtFontLoadFont(&sgHugeFont, "ui_art\\font42.bin", "ui_art\\font42g.pcx");
|
||||
ArtFontLoadFont(&sgHugeFontGray, "ui_art\\font42.bin", "ui_art\\font42y.pcx");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// return the height of the current font
|
||||
//****************************************************************************
|
||||
int ArtFontHeight(void) {
|
||||
if (! sgpCurrFont) return 0;
|
||||
if (! sgpCurrFont->bValid) return 0;
|
||||
return sgpCurrFont->tFontSpecs.bCharHeight;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
int ArtFontGridWidth(void) {
|
||||
if (! sgpCurrFont) return 0;
|
||||
if (! sgpCurrFont->bValid) return 0;
|
||||
|
||||
return sgpCurrFont->tFontSpecs.bCharWidth;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// calculate the witdth of the given string
|
||||
//****************************************************************************
|
||||
int ArtFontPixelWidth(LPCTSTR text) {
|
||||
unsigned char c;
|
||||
int len = 0;
|
||||
|
||||
if (! sgpCurrFont) return 0;
|
||||
if (! sgpCurrFont->bValid) return 0;
|
||||
|
||||
while (0 != (c = *text)) {
|
||||
if (! sgpCurrFont->tFontSpecs.bCharWidths[c])
|
||||
len += sgpCurrFont->tFontSpecs.bCharWidth;
|
||||
else
|
||||
len += sgpCurrFont->tFontSpecs.bCharWidths[c];
|
||||
text++;
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
int ArtFontWordLen(LPCTSTR text) {
|
||||
unsigned char c;
|
||||
int len = 0;
|
||||
|
||||
if (! sgpCurrFont) return 0;
|
||||
if (! sgpCurrFont->bValid) return 0;
|
||||
|
||||
while (0 != (c = *text)) {
|
||||
switch (c) {
|
||||
case ' ':
|
||||
case '\n':
|
||||
return len;
|
||||
|
||||
default:
|
||||
if (! sgpCurrFont->tFontSpecs.bCharWidths[c])
|
||||
return len;
|
||||
else
|
||||
len += sgpCurrFont->tFontSpecs.bCharWidths[c];
|
||||
break;
|
||||
}
|
||||
text++;
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontDraw(LPCTSTR text, TPBMP dest, int x, int y) {
|
||||
unsigned char c;
|
||||
if (! dest) return;
|
||||
if (! dest->data) return;
|
||||
if (! sgpCurrFont) return;
|
||||
if (! sgpCurrFont->bValid) return;
|
||||
|
||||
if (x < 0) x = 0;
|
||||
if (y < 0) y = 0;
|
||||
|
||||
while (0 != (c = *text)) {
|
||||
|
||||
// check for vertical overflow
|
||||
if ((y + sgpCurrFont->tFontSpecs.bCharHeight) > dest->datasize.cy)
|
||||
break;
|
||||
|
||||
if (c == '\n') {
|
||||
x = 0;
|
||||
y += sgpCurrFont->tFontSpecs.bCharHeight;
|
||||
text++;
|
||||
}
|
||||
else if (! sgpCurrFont->tFontSpecs.bCharWidths[c]) { // word break
|
||||
if ((x + sgpCurrFont->tFontSpecs.bCharWidth + ArtFontWordLen(text+1)) >= dest->datasize.cx) { // line overrun
|
||||
x = 0;
|
||||
y += sgpCurrFont->tFontSpecs.bCharHeight;
|
||||
}
|
||||
else {
|
||||
x += sgpCurrFont->tFontSpecs.bCharWidth;
|
||||
}
|
||||
text++;
|
||||
}
|
||||
else if (sgpCurrFont->pCharData[c]) {
|
||||
if ((x + sgpCurrFont->tFontSpecs.bCharWidths[c]) > dest->datasize.cx) {
|
||||
x = 0;
|
||||
y += sgpCurrFont->tFontSpecs.bCharHeight;
|
||||
continue;
|
||||
}
|
||||
|
||||
STransBlt(dest->data, x, y, dest->datasize.cx, sgpCurrFont->pCharData[c]);
|
||||
x += sgpCurrFont->tFontSpecs.bCharWidths[c];
|
||||
// advance char
|
||||
text++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
//****************************************************************************
|
||||
// artfont.h
|
||||
// created 10.15.96
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
#define MAX_CHARS 256
|
||||
|
||||
enum _artfonts {
|
||||
AF_SMALL,
|
||||
AF_SMALLGRAY,
|
||||
AF_MED,
|
||||
AF_MEDGRAY,
|
||||
AF_BIG,
|
||||
AF_BIGGRAY,
|
||||
AF_HUGE,
|
||||
AF_HUGEGRAY
|
||||
};
|
||||
|
||||
typedef struct _fontspecs {
|
||||
BYTE bCharWidth; // max char width
|
||||
BYTE bCharHeight; // max char height
|
||||
BYTE bCharWidths[MAX_CHARS]; // actual char widths
|
||||
} TFONTSPECS, * TPFONTSPECS;
|
||||
|
||||
typedef struct _artfont {
|
||||
TFONTSPECS tFontSpecs;
|
||||
HTRANS pCharData[MAX_CHARS];
|
||||
BOOL bValid;
|
||||
} TARTFONT, * TPARTFONT;
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void ArtFontInit(void);
|
||||
void ArtFontDestroy(void);
|
||||
BOOL ArtFontLoad(void);
|
||||
|
||||
void ArtFontSetBig(void);
|
||||
void ArtFontSetBigGray(void);
|
||||
void ArtFontSetMed(void);
|
||||
void ArtFontSetMedGray(void);
|
||||
void ArtFontSetSmall(void);
|
||||
void ArtFontSetSmallGray(void);
|
||||
void ArtFontSet(int fontnum);
|
||||
|
||||
void ArtFontDraw(LPCSTR text, TPBMP dest, int x, int y);
|
||||
int ArtFontGridWidth(void);
|
||||
int ArtFontPixelWidth(LPCSTR text);
|
||||
int ArtFontHeight(void);
|
||||
@@ -0,0 +1,33 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* bnet.h
|
||||
* BattleNet Chat Room
|
||||
*
|
||||
* By Michael Morhaime
|
||||
*
|
||||
***/
|
||||
|
||||
|
||||
#define PROVIDERID 'BATL'
|
||||
#define BATTLENET_MAXPLAYERS 256
|
||||
typedef struct _UIPARAMS {
|
||||
DWORD flags;
|
||||
SNETPROGRAMDATAPTR programdata;
|
||||
SNETPLAYERDATAPTR playerdata;
|
||||
SNETUIDATAPTR interfacedata;
|
||||
SNETVERSIONDATAPTR versiondata;
|
||||
LPDWORD playeridptr;
|
||||
} UIPARAMS, *UIPARAMSPTR;
|
||||
|
||||
|
||||
|
||||
BOOL DoLoadArtwork (SNETGETARTPROC artcallback,
|
||||
HWND hWnd,
|
||||
HWND hWndParent,
|
||||
DWORD artid,
|
||||
LPCTSTR controltype,
|
||||
DWORD controlstyle,
|
||||
LONG usageflags,
|
||||
BOOL setpalette,
|
||||
LPBYTE *data,
|
||||
SIZE *size);
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,10 @@
|
||||
Press CREATE to create a new game.
|
||||
|
||||
Press JOIN to join a game currently in progress.
|
||||
|
||||
Press HELP to display this help screen.
|
||||
|
||||
Press QUIT to leave the chatroom without joining a game.
|
||||
|
||||
|
||||
For additional help, get Bill Roper or someone to write something.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,185 @@
|
||||
//****************************************************************************
|
||||
// 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;
|
||||
}
|
||||
@@ -0,0 +1,522 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* cr8game.CPP
|
||||
* BattleNet Chat Room
|
||||
*
|
||||
* By Michael Morhaime
|
||||
*
|
||||
***/
|
||||
|
||||
#include "pch.h"
|
||||
#include "stdio.h"
|
||||
#include "uisnd.h"
|
||||
|
||||
#define MAX_STRING_LEN 256
|
||||
#define NUM_DIFF_SETTINGS 3
|
||||
#define NUM_DIFF_BTN_POSITIONS 2
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
// Private Data
|
||||
//****************************************************************************
|
||||
static LPBYTE sgBackgroundBmp = NULL;
|
||||
static LPBYTE sgButtonBmp = NULL;
|
||||
static LPBYTE sgDiffBtnBmp = NULL;
|
||||
|
||||
static SIZE sgDiffBtnSize; // Holds size of individual button in pixels
|
||||
|
||||
static TGAMEDATA sgGameData; // Holds game initialization data
|
||||
static TGAMEINFO sgGameInfo; // Holds game name and password
|
||||
|
||||
static LONG sglPrivate;
|
||||
static LONG sglDifficulty;
|
||||
static LONG sglRestricted;
|
||||
|
||||
extern int UiOkDialog(HWND parent, LPCSTR oktext, BOOL bErrFlag);
|
||||
|
||||
extern BOOL IsNastyName(LPCTSTR name);
|
||||
extern BOOL InvalidChars(LPCTSTR name, LPCTSTR additionalbad);
|
||||
extern DWORD GetPlayerCategory(const char *szDesc); //### MM Diablo Patch #2 3/21/97
|
||||
|
||||
typedef struct _create_params {
|
||||
SNETCREATEDATAPTR createdata;
|
||||
SNETPROGRAMDATAPTR programdata;
|
||||
SNETPLAYERDATAPTR playerdata;
|
||||
SNETUIDATAPTR interfacedata;
|
||||
SNETVERSIONDATAPTR versiondata;
|
||||
DWORD *playerid;
|
||||
} TCREATEPARAMS, PTCREATEPARAMS;
|
||||
|
||||
static TCREATEPARAMS sgCreateParams;
|
||||
|
||||
//===========================================================================
|
||||
static void DestroyArtwork (HWND window) {
|
||||
if (sgBackgroundBmp) {
|
||||
FREE(sgBackgroundBmp);
|
||||
sgBackgroundBmp = NULL;
|
||||
}
|
||||
|
||||
if (sgButtonBmp) {
|
||||
FREE(sgButtonBmp);
|
||||
sgButtonBmp = NULL;
|
||||
}
|
||||
|
||||
if (sgDiffBtnBmp) {
|
||||
FREE(sgDiffBtnBmp);
|
||||
sgDiffBtnBmp = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static BOOL LoadArtwork (HWND window) {
|
||||
int btn_ids[] = {
|
||||
IDOK,
|
||||
IDCANCEL,
|
||||
0
|
||||
};
|
||||
|
||||
int diff_btn_ids[] = {
|
||||
IDC_RADIO_NORMAL,
|
||||
IDC_RADIO_NIGHTMARE,
|
||||
IDC_RADIO_HELL,
|
||||
0
|
||||
};
|
||||
|
||||
|
||||
SIZE btnbmpsize;
|
||||
SIZE bgSize;
|
||||
|
||||
// For the background bitmap, "Dialog" is specified as the controltype to prevent
|
||||
// LoadArtFile() from loading a palette, which would be done if we simply specified "".
|
||||
LoadArtFile(
|
||||
window,
|
||||
NULL,
|
||||
TEXT("Dialog"),
|
||||
SDLG_STYLE_ANY,
|
||||
SDLG_USAGE_BACKGROUND,
|
||||
TEXT("ui_art\\creat_bg.pcx"),
|
||||
&sgBackgroundBmp,
|
||||
&bgSize);
|
||||
|
||||
|
||||
UiLoadBmpFile(
|
||||
TEXT("ui_art\\but_xsm.pcx"),
|
||||
&sgButtonBmp,
|
||||
&btnbmpsize
|
||||
);
|
||||
SDlgSetControlBitmaps (window, btn_ids, NULL, sgButtonBmp, &btnbmpsize, SDLG_ADJUST_VERTICAL);
|
||||
|
||||
UiLoadBmpFile(
|
||||
TEXT("ui_art\\diffbtns.pcx"),
|
||||
&sgDiffBtnBmp,
|
||||
&sgDiffBtnSize
|
||||
);
|
||||
UiSetStaticBmp(window, IDC_STATIC_DIFF_DESC, sgBackgroundBmp, &bgSize);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void DrawDiffBtn(HWND hWndBtn, int nDiff, BOOL bPressed) {
|
||||
TPBMP tpbmp;
|
||||
int nBtnBytes;
|
||||
|
||||
tpbmp = (TPBMP) GetWindowLong(hWndBtn, GWL_USERDATA);
|
||||
if (tpbmp == NULL || sgDiffBtnBmp == NULL)
|
||||
return;
|
||||
|
||||
// Calculate byte offset of each button in source bitmap
|
||||
nBtnBytes = sgDiffBtnSize.cx * tpbmp->datasize.cy;
|
||||
|
||||
// now draw the appropriate button into
|
||||
SBltROP3 (
|
||||
tpbmp->data,
|
||||
sgDiffBtnBmp + ((nDiff*NUM_DIFF_BTN_POSITIONS)+bPressed)*nBtnBytes,
|
||||
tpbmp->datasize.cx,
|
||||
tpbmp->datasize.cy,
|
||||
tpbmp->datasize.cx,
|
||||
sgDiffBtnSize.cx,
|
||||
NULL,
|
||||
SRCCOPY
|
||||
);
|
||||
|
||||
// Make sure storm redraws this button
|
||||
InvalidateRect(hWndBtn, NULL, FALSE);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void DestroyDiffBtns(HWND window) {
|
||||
HWND hWndBtn;
|
||||
RECT r;
|
||||
TPBMP tpbmp;
|
||||
|
||||
for (int i=0; i<NUM_DIFF_SETTINGS; i++) {
|
||||
hWndBtn = GetDlgItem(window, i+IDC_RADIO_NORMAL);
|
||||
GetClientRect(hWndBtn, &r);
|
||||
|
||||
|
||||
tpbmp = (TPBMP) GetWindowLong(hWndBtn, GWL_USERDATA);
|
||||
SetWindowLong(window, GWL_USERDATA, (LONG) 0);
|
||||
if (tpbmp) {
|
||||
if (tpbmp->data) {
|
||||
FREE(tpbmp->data);
|
||||
tpbmp->data = 0;
|
||||
}
|
||||
|
||||
FREE(tpbmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void InitDiffBtns(HWND window) {
|
||||
HWND hWndBtn;
|
||||
RECT r;
|
||||
TPBMP tpbmp;
|
||||
|
||||
for (int i=0; i<NUM_DIFF_SETTINGS; i++) {
|
||||
hWndBtn = GetDlgItem(window, i+IDC_RADIO_NORMAL);
|
||||
GetClientRect(hWndBtn, &r);
|
||||
|
||||
tpbmp = (TPBMP) ALLOC(sizeof(TBMP));
|
||||
if (!tpbmp)
|
||||
break;
|
||||
|
||||
tpbmp->data = (LPBYTE) ALLOC(r.right*r.bottom);
|
||||
tpbmp->datasize.cx = r.right;
|
||||
tpbmp->datasize.cy = r.bottom;
|
||||
tpbmp->userdata = 0;
|
||||
|
||||
SetWindowLong(hWndBtn, GWL_USERDATA, (LONG) tpbmp);
|
||||
|
||||
// set it so the button uses the bmp just created
|
||||
SDlgSetBitmap(
|
||||
hWndBtn,
|
||||
NULL,
|
||||
TEXT(""),
|
||||
SDLG_STYLE_ANY,
|
||||
SDLG_USAGE_BACKGROUND | SDLG_USAGE_SELECTED | SDLG_USAGE_NORMAL,
|
||||
tpbmp->data,
|
||||
NULL,
|
||||
tpbmp->datasize.cx,
|
||||
tpbmp->datasize.cy
|
||||
);
|
||||
|
||||
// Init the button image
|
||||
DrawDiffBtn(hWndBtn, i, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void InitDefaultOptions(HWND hWnd) {
|
||||
// Init unused game flags to 0
|
||||
sglPrivate = 0;
|
||||
sglRestricted = 0;
|
||||
|
||||
// Set to impossible values, so that help text is updated.
|
||||
sglDifficulty = -1;
|
||||
|
||||
// Simulate button clicks, so that description text gets updated.
|
||||
SendDlgItemMessage(hWnd, IDC_RADIO_NORMAL, BM_CLICK, 0, 0);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void SetBtns(HWND window, int nSelected) {
|
||||
if (sglDifficulty != -1)
|
||||
DrawDiffBtn(GetDlgItem(window, IDC_RADIO_NORMAL+sglDifficulty), sglDifficulty, FALSE);
|
||||
|
||||
DrawDiffBtn(GetDlgItem(window, IDC_RADIO_NORMAL+nSelected), nSelected, TRUE);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static void SetDesc(HWND hWndDesc, LONG lFirstString, LONG lValue) {
|
||||
char szText[MAX_STRING_LEN];
|
||||
|
||||
LoadString(global_hinstance, lFirstString + lValue, szText, sizeof(szText));
|
||||
SetWindowText(hWndDesc, szText);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static int ProcessName(LPSTR szName) {
|
||||
char szTemp[MAX_GAME_LEN];
|
||||
int nStart, nEnd;
|
||||
|
||||
// Take the name and remove leading and trailing spaces
|
||||
strcpy(szTemp, szName);
|
||||
|
||||
// Proceed until we find a non-space or null termination
|
||||
for (nStart=0; ;nStart++) {
|
||||
if (szTemp[nStart] != ' ')
|
||||
break;
|
||||
if (szTemp[nStart] == 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Now start at the end and look for a non-space character. Proceed until
|
||||
// we reach the beginning
|
||||
for (nEnd=strlen(szTemp)-1; ;nEnd--) {
|
||||
|
||||
if (szTemp[nEnd] != ' ')
|
||||
break;
|
||||
|
||||
if (nEnd <= nStart)
|
||||
return 0;
|
||||
}
|
||||
szTemp[++nEnd] = 0; // NULL terminate string before trailing spaces
|
||||
|
||||
strcpy(szName, &szTemp[nStart]);
|
||||
return(nEnd - nStart); // Length of string not including NULL termination
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//===========================================================================
|
||||
BOOL TryCreateGame(HWND window) {
|
||||
char szString[256];
|
||||
char szGameDesc[SNETSPI_MAXSTRINGLENGTH];
|
||||
BOOL bReturn;
|
||||
|
||||
|
||||
// Create Game description for Storm (and for display of game later)
|
||||
GameData2Txt(
|
||||
&sgGameData,
|
||||
sgCreateParams.playerdata->playername,
|
||||
sgCreateParams.playerdata->playerdescription,
|
||||
szGameDesc,
|
||||
sizeof(szGameDesc));
|
||||
|
||||
if (!UiAuthCallback(
|
||||
SNET_AUTHTYPE_GAME,
|
||||
sgCreateParams.playerdata->playername,
|
||||
sgCreateParams.playerdata->playerdescription,
|
||||
0,
|
||||
szGameDesc,
|
||||
szString,
|
||||
sizeof(szString))) {
|
||||
UiMessageBoxCallback(window, szString, NULL, MB_ICONWARNING | MB_OK);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Make sure the application has allocated enough data for the structure
|
||||
// (could be version differences with the .exe)
|
||||
if (sgCreateParams.programdata->initdatabytes >= sizeof(sgGameData)) {
|
||||
TGAMEDATA *pInitData = (TGAMEDATA *)sgCreateParams.programdata->initdata;
|
||||
pInitData->bDiff = sgGameData.bDiff;
|
||||
}
|
||||
|
||||
bReturn = SNetCreateGame(sgGameInfo.szName,
|
||||
sgGameInfo.szPassword,
|
||||
szGameDesc,
|
||||
GetPlayerCategory(sgCreateParams.playerdata->playerdescription), //### MM Diablo Patch #2 3/21/97
|
||||
sgCreateParams.programdata->initdata, // Diablo is responsible for making this point to an sgGameData structure
|
||||
sgCreateParams.programdata->initdatabytes,
|
||||
sgCreateParams.createdata->maxplayers,
|
||||
sgCreateParams.playerdata->playername,
|
||||
NULL,
|
||||
sgCreateParams.playerid);
|
||||
|
||||
if (bReturn == FALSE) {
|
||||
char szFmt[128];
|
||||
if (GetLastError() == SNET_ERROR_ALREADY_EXISTS) {
|
||||
LoadString(global_hinstance, IDS_GAMEALREADYEXISTS, szFmt, sizeof(szFmt));
|
||||
sprintf(szString, szFmt, sgGameInfo.szName);
|
||||
}
|
||||
else
|
||||
LoadString(global_hinstance, IDS_CREATEGAMEERROR, szString, sizeof(szString));
|
||||
|
||||
UiMessageBoxCallback(window, szString, NULL, MB_ICONWARNING | MB_OK);
|
||||
}
|
||||
|
||||
return bReturn;
|
||||
}
|
||||
|
||||
|
||||
//===========================================================================
|
||||
static HFONT SetFonts (HWND window) {
|
||||
HFONT hFont = NULL;
|
||||
LOGFONT lFont;
|
||||
|
||||
if ((hFont = (HFONT) SendMessage(window, WM_GETFONT, 0, 0L))) {
|
||||
// Start with dialog font and modify size and weight
|
||||
if (GetObject(hFont, sizeof(LOGFONT), (LPSTR) &lFont)) {
|
||||
lFont.lfHeight = -MulDiv(12, 96, 72); // height of 12 pixels
|
||||
lFont.lfWidth = 0; // let Windows autosize width
|
||||
|
||||
if (hFont = CreateFontIndirect((LPLOGFONT) &lFont)) {
|
||||
SendDlgItemMessage(window, IDC_RADIO_NORMAL, WM_SETFONT, (WPARAM)hFont, 0);
|
||||
SendDlgItemMessage(window, IDC_RADIO_NIGHTMARE, WM_SETFONT, (WPARAM)hFont, 0);
|
||||
SendDlgItemMessage(window, IDC_RADIO_HELL, WM_SETFONT, (WPARAM)hFont, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
return hFont;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
static BOOL CALLBACK ChatCreateGameDialogProc (HWND window,
|
||||
UINT message,
|
||||
WPARAM wparam,
|
||||
LPARAM lparam) {
|
||||
|
||||
static HWND hWndName, hWndPassword;
|
||||
static HFONT shFont;
|
||||
|
||||
switch (message) {
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wparam)) {
|
||||
case IDOK: {
|
||||
char szText[MAX_STRING_LEN];
|
||||
|
||||
// First, verify user entered required information
|
||||
if (!SendMessage(hWndName, WM_GETTEXTLENGTH, 0, 0L)) {
|
||||
LoadString(global_hinstance,IDS_NAME_REQUIRED,szText,MAX_STRING_LEN);
|
||||
UiOkDialog(window, szText, TRUE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Fill create game structure
|
||||
SendMessage(hWndName, WM_GETTEXT, sizeof(sgGameInfo.szName), (LPARAM)((LPSTR)sgGameInfo.szName));
|
||||
if (IsNastyName(sgGameInfo.szName) || InvalidChars(sgGameInfo.szName, "") || !ProcessName(sgGameInfo.szName)) {
|
||||
LoadString(global_hinstance,IDS_GAME_NAME_INVALID,szText,MAX_STRING_LEN);
|
||||
UiOkDialog(window, szText, TRUE);
|
||||
sgGameInfo.szName[0] = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Check if password was entered
|
||||
sgGameInfo.szPassword[0] = 0;
|
||||
if (SendMessage(hWndPassword, WM_GETTEXTLENGTH, 0, 0)) {
|
||||
SendMessage(hWndPassword, WM_GETTEXT, sizeof(sgGameInfo.szPassword), (LPARAM)(LPSTR)(sgGameInfo.szPassword));
|
||||
}
|
||||
|
||||
// Now that we have verified that the create game is successful, we can start
|
||||
// modifying the global create game data.
|
||||
|
||||
// Set difficulty
|
||||
sgGameData.bDiff = (BYTE) sglDifficulty;
|
||||
|
||||
UiSndPlayEnter();
|
||||
|
||||
if (TryCreateGame(window))
|
||||
SDlgEndDialog(window, TRUE);
|
||||
return 0;
|
||||
|
||||
}
|
||||
case IDCANCEL:
|
||||
UiSndPlayEnter();
|
||||
SDlgEndDialog(window, FALSE);
|
||||
return 0;
|
||||
|
||||
|
||||
case IDC_RADIO_NORMAL:
|
||||
case IDC_RADIO_NIGHTMARE:
|
||||
case IDC_RADIO_HELL: {
|
||||
int nDiff = LOWORD(wparam) - IDC_RADIO_NORMAL;
|
||||
int nNotify = HIWORD(wparam);
|
||||
|
||||
// Don't allow these buttons to get the keyboard focus
|
||||
if (nNotify == BN_SETFOCUS)
|
||||
SetFocus(hWndName);
|
||||
|
||||
if (sglDifficulty != nDiff) {
|
||||
if (sglDifficulty != -1) {
|
||||
// Unhilite previous button
|
||||
SendMessage((HWND)GetDlgItem(window, sglDifficulty + IDC_RADIO_NORMAL), BM_SETSTATE, FALSE, 0);
|
||||
UiSndPlayClick();
|
||||
}
|
||||
|
||||
SetBtns(window, nDiff);
|
||||
SetDesc(GetDlgItem(window, IDC_STATIC_DIFF_DESC),
|
||||
IDS_NORMAL_DESC_XLONG,
|
||||
nDiff);
|
||||
|
||||
sglDifficulty = nDiff;
|
||||
}
|
||||
|
||||
// Make sure current selection is hilited (windows will want to unhilite it)
|
||||
SendMessage((HWND)lparam, BM_SETSTATE, TRUE, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case WM_CTLCOLORSTATIC:
|
||||
if (GetWindowLong((HWND)lparam, GWL_ID) == IDC_TITLE) {
|
||||
UiSetTextYellow((HDC)wparam);
|
||||
return (BOOL) GetStockObject(NULL_BRUSH);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case WM_SYSKEYUP:
|
||||
case WM_SYSKEYDOWN:
|
||||
SendMessage(SDrawGetFrameWindow(), message, wparam, lparam);
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
DestroyArtwork(window);
|
||||
DestroyDiffBtns(window);
|
||||
if (shFont)
|
||||
DeleteObject(shFont);
|
||||
|
||||
hWndName = hWndPassword = NULL;
|
||||
break;
|
||||
|
||||
case WM_INITDIALOG:
|
||||
hWndName = GetDlgItem(window, IDC_EDIT_NAME);
|
||||
hWndPassword = GetDlgItem(window, IDC_EDIT_PASSWORD);
|
||||
|
||||
LoadArtwork(window);
|
||||
InitDiffBtns(window);
|
||||
InitDefaultOptions(window);
|
||||
shFont = SetFonts(window);
|
||||
|
||||
SendMessage(hWndName, EM_LIMITTEXT, sizeof(sgGameInfo.szName)-1, 0);
|
||||
SendMessage(hWndPassword, EM_LIMITTEXT, sizeof(sgGameInfo.szPassword)-1, 0);
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
return SDlgDefDialogProc(window,message,wparam,lparam);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* EXPORTED FUNCTIONS
|
||||
*
|
||||
***/
|
||||
|
||||
|
||||
//===========================================================================
|
||||
BOOL CALLBACK UiCreateGameCallback (SNETCREATEDATAPTR createdata,
|
||||
SNETPROGRAMDATAPTR programdata,
|
||||
SNETPLAYERDATAPTR playerdata,
|
||||
SNETUIDATAPTR interfacedata,
|
||||
SNETVERSIONDATAPTR versiondata,
|
||||
DWORD *playerid) {
|
||||
|
||||
BOOL bResult;
|
||||
|
||||
|
||||
// Init global params data
|
||||
sgCreateParams.createdata = createdata;
|
||||
sgCreateParams.programdata = programdata;
|
||||
sgCreateParams.playerdata = playerdata;
|
||||
sgCreateParams.interfacedata = interfacedata;
|
||||
sgCreateParams.versiondata = versiondata;
|
||||
sgCreateParams.playerid = playerid;
|
||||
|
||||
|
||||
|
||||
// DISPLAY THE DIALOG BOX
|
||||
bResult = SDlgDialogBox(global_hinstance,TEXT("DIALOG_CREATE_GAME"),interfacedata->parentwindow,ChatCreateGameDialogProc);
|
||||
if (bResult == -1)
|
||||
return 0;
|
||||
return bResult;
|
||||
}
|
||||
@@ -0,0 +1,385 @@
|
||||
//****************************************************************************
|
||||
// CreaDung.cpp
|
||||
// Diablo UI create multi player dungeon "Doom style" popup dialog
|
||||
//
|
||||
// By Frank Pearce
|
||||
// created 11.7.96
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
#include "pch.h"
|
||||
#include "artfont.h"
|
||||
#include "uisnd.h"
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
extern int SelHeroGetMode(void);
|
||||
void SelHeroSetDiff(int difficulty);
|
||||
extern int SelOkDialog(HWND parent, LPCTSTR text, LPCTSTR title, BOOL loadfocus);
|
||||
extern BOOL Txt2HeroInfo(char *szDesc, TUIHEROINFO *pHeroInfo);
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
#define MILLISEC_PER_SEC 1000
|
||||
|
||||
#define FOCUS_TIMER_ID 1
|
||||
#define FOCUS_FPS 16 // frames per second
|
||||
#define FOCUS_TIMER_DELAY 55 //(MILLISEC_PER_SEC / FOCUS_FPS)
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static int sgTextIDs[] = {
|
||||
IDC_DLGTITLE,
|
||||
IDC_DLGTITLE2,
|
||||
0
|
||||
};
|
||||
static int sgDiffID[] = {
|
||||
IDC_DLGTITLE3,
|
||||
0
|
||||
};
|
||||
static int sgDiffDescID[] = {
|
||||
IDC_DIFFDESC,
|
||||
0
|
||||
};
|
||||
static int sgBtnIDs[] = {
|
||||
IDC_FAKEOK,
|
||||
IDC_FAKECANCEL,
|
||||
0
|
||||
};
|
||||
static int sgListIDs[] = {
|
||||
IDC_DIFFBTN1,
|
||||
IDC_DIFFBTN2,
|
||||
IDC_DIFFBTN3,
|
||||
0
|
||||
};
|
||||
|
||||
static SNETCREATEDATAPTR sgCreateData;
|
||||
static SNETPROGRAMDATAPTR sgCre8ProgramData;
|
||||
static SNETPLAYERDATAPTR sgCre8PlayerData;
|
||||
static DWORD *sgpCre8PlayerID;
|
||||
static int sgPlayersMode; // single or multi player
|
||||
static BOOL sgDiffLoadFocus;
|
||||
static LPCSTR sgGameName;
|
||||
static int sgLastError;
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
void SelDiffLoadFocus(BOOL loadfocus) {
|
||||
sgDiffLoadFocus = loadfocus;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffSetInfo(HWND window, int childid) {
|
||||
TCHAR desc[256];
|
||||
HWND child;
|
||||
|
||||
LoadString(
|
||||
global_hinstance,
|
||||
IDS_NORMAL + (childid - IDC_DIFFBTN1),
|
||||
desc,
|
||||
255
|
||||
);
|
||||
child = GetDlgItem(window, IDC_DLGTITLE3);
|
||||
UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), desc);
|
||||
UiDoomStaticReset(window, sgDiffID, AF_BIGGRAY);
|
||||
|
||||
LoadString(
|
||||
global_hinstance,
|
||||
IDS_NORMAL_DESC_XLONG + (childid - IDC_DIFFBTN1),
|
||||
desc,
|
||||
255
|
||||
);
|
||||
child = GetDlgItem(window, IDC_DIFFDESC);
|
||||
UiSetBmpText((TPBMP)GetWindowLong(child, GWL_USERDATA), desc);
|
||||
UiDoomStaticReset(window, sgDiffDescID, AF_SMALLGRAY);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffDestroy(HWND window) {
|
||||
UiDoomCtrlsDestroy(window, sgListIDs);
|
||||
UiDoomCtrlsDestroy(window, sgBtnIDs);
|
||||
UiDoomCtrlsDestroy(window, sgDiffDescID);
|
||||
UiDoomCtrlsDestroy(window, sgDiffID);
|
||||
UiDoomCtrlsDestroy(window, sgTextIDs);
|
||||
|
||||
// free the background of the dlg
|
||||
UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA));
|
||||
SetWindowLong(window, GWL_USERDATA, (LONG) 0);
|
||||
|
||||
if (sgDiffLoadFocus) {
|
||||
FocusAnimateDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffInit(HWND window) {
|
||||
TPBMP tpBmp;
|
||||
|
||||
if (sgDiffLoadFocus) {
|
||||
FocusAnimateInit("ui_art\\focus16.pcx");
|
||||
}
|
||||
else {
|
||||
FocusReInit();
|
||||
}
|
||||
SDlgSetTimer(window, FOCUS_TIMER_ID, FOCUS_TIMER_DELAY, NULL);
|
||||
|
||||
// load texture maps for this dialog
|
||||
tpBmp = UiAllocBmp();
|
||||
if (tpBmp) {
|
||||
SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp);
|
||||
LoadArtFile(
|
||||
window,
|
||||
NULL,
|
||||
TEXT("popup"),
|
||||
SDLG_STYLE_ANY,
|
||||
SDLG_USAGE_BACKGROUND,
|
||||
TEXT("ui_art\\seldiff.pcx"),
|
||||
&tpBmp->data,
|
||||
&tpBmp->datasize,
|
||||
FALSE
|
||||
);
|
||||
}
|
||||
|
||||
UiOnPaintBtns(window, sgListIDs);
|
||||
|
||||
// set up a doom-like interface
|
||||
UiDoomStaticInit(window, sgTextIDs, AF_BIGGRAY);
|
||||
UiDoomStaticInit(window, sgDiffID, AF_BIGGRAY);
|
||||
UiDoomStaticInit(window, sgDiffDescID, AF_SMALLGRAY);
|
||||
UiDoomButtonsInit(window, sgBtnIDs, AF_BIG, FALSE);
|
||||
UiDoomButtonsInit(window, sgListIDs, AF_MED);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffAbort(HWND window, int ReturnVal) {
|
||||
UiSndPlayEnter();
|
||||
SDlgKillTimer(window, FOCUS_TIMER_ID);
|
||||
SDlgEndDialog(window, ReturnVal);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffAttemptCreate(HWND window) {
|
||||
char szGameDesc[256];
|
||||
TGAMEDATA GameData;
|
||||
TGAMEDATA *pInitData;
|
||||
HWND child = GetFocus();
|
||||
|
||||
if (window != GetParent(child)) return;
|
||||
|
||||
// create a string describing the game
|
||||
GameData.bDiff = GetWindowLong(child, GWL_ID) - IDC_DIFFBTN1;
|
||||
GameData2Txt(
|
||||
&GameData,
|
||||
sgCre8PlayerData->playername,
|
||||
sgCre8PlayerData->playerdescription,
|
||||
szGameDesc,
|
||||
sizeof(szGameDesc)
|
||||
);
|
||||
|
||||
// get the diff setting and stuff it into initdata
|
||||
if (sgCre8ProgramData->initdatabytes >= sizeof(TGAMEDATA)) {
|
||||
pInitData = (TGAMEDATA *)sgCre8ProgramData->initdata;
|
||||
pInitData->bDiff = GetWindowLong(child, GWL_ID) - IDC_DIFFBTN1;
|
||||
}
|
||||
|
||||
// try to create the game
|
||||
if (SNetCreateGame(
|
||||
sgGameName, // game name
|
||||
NULL, // game password
|
||||
szGameDesc,
|
||||
0, //### MM Diablo Patch #2 3/21/97
|
||||
sgCre8ProgramData->initdata,
|
||||
sgCre8ProgramData->initdatabytes,
|
||||
sgCreateData->maxplayers,
|
||||
sgCre8PlayerData->playername, // player name
|
||||
NULL,
|
||||
sgpCre8PlayerID
|
||||
)
|
||||
) {
|
||||
SelDiffAbort(window, IDOK);
|
||||
}
|
||||
else {
|
||||
// display a creation error
|
||||
TCHAR errfmt[128], errstr[192];
|
||||
sgLastError = GetLastError();
|
||||
switch (sgLastError) {
|
||||
case SNET_ERROR_ALREADY_EXISTS:
|
||||
LoadString(global_hinstance, IDS_DUPGAMENAME_FMT, errfmt, 127);
|
||||
wsprintf(errstr, errfmt, sgGameName);
|
||||
break;
|
||||
default:
|
||||
LoadString(global_hinstance, IDS_CREATEGAME_ERR, errstr, 191);
|
||||
break;
|
||||
}
|
||||
SelOkDialog(window, errstr, NULL, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffMultiCreate(HWND window) {
|
||||
char szGameDesc[SNETSPI_MAXSTRINGLENGTH];
|
||||
char err[256];
|
||||
TGAMEDATA GameData;
|
||||
|
||||
// Create Game description for Storm (and for display of game later)
|
||||
GameData.bDiff = GetWindowLong(GetFocus(), GWL_ID) - IDC_DIFFBTN1;
|
||||
GameData2Txt(
|
||||
&GameData,
|
||||
sgCre8PlayerData->playername,
|
||||
sgCre8PlayerData->playerdescription,
|
||||
szGameDesc,
|
||||
sizeof(szGameDesc)
|
||||
);
|
||||
|
||||
if (!
|
||||
UiAuthCallback(
|
||||
SNET_AUTHTYPE_GAME,
|
||||
sgCre8PlayerData->playername,
|
||||
sgCre8PlayerData->playerdescription,
|
||||
0,
|
||||
szGameDesc,
|
||||
err,
|
||||
sizeof(err)
|
||||
)
|
||||
) {
|
||||
SelOkDialog(window, err, NULL, FALSE);
|
||||
}
|
||||
else {
|
||||
SelDiffAttemptCreate(window);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffModeCreate(HWND window) {
|
||||
if (sgPlayersMode == MULTIPLAYER) {
|
||||
SelDiffMultiCreate(window);
|
||||
}
|
||||
else {
|
||||
// let the select hero screen handle the create restrictions
|
||||
SelHeroSetDiff(GetWindowLong(GetFocus(), GWL_ID) - IDC_DIFFBTN1);
|
||||
SelDiffAbort(window, IDOK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void SelDiffInterpretClick(HWND window, int x, int y) {
|
||||
if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKEOK), x, y)) {
|
||||
SelDiffModeCreate(window);
|
||||
}
|
||||
else if (UiIsPtInWindow(window, GetDlgItem(window, IDC_FAKECANCEL), x, y)) {
|
||||
SelDiffAbort(window, IDCANCEL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
BOOL CALLBACK SelDiffDialogProc(HWND window,
|
||||
UINT message,
|
||||
WPARAM wparam,
|
||||
LPARAM lparam) {
|
||||
switch (message) {
|
||||
|
||||
case WM_COMMAND:
|
||||
if (HIWORD(wparam) == BN_KILLFOCUS) {
|
||||
FocusLost(window, (HWND) lparam);
|
||||
}
|
||||
else if (HIWORD(wparam) == BN_SETFOCUS) {
|
||||
FocusSnd((HWND) lparam);
|
||||
FocusAnimate(window, (HWND) lparam);
|
||||
SelDiffSetInfo(window, LOWORD(wparam));
|
||||
}
|
||||
else if (HIWORD(wparam) == BN_DOUBLECLICKED) {
|
||||
SelDiffModeCreate(window);
|
||||
}
|
||||
else if (LOWORD(wparam) == IDOK) {
|
||||
SelDiffModeCreate(window);
|
||||
}
|
||||
else if (LOWORD(wparam) == IDCANCEL) {
|
||||
SelDiffAbort(window, IDCANCEL);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
SelDiffInterpretClick(window, LOWORD(lparam), HIWORD(lparam));
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
SelDiffDestroy(window);
|
||||
break;
|
||||
|
||||
case WM_INITDIALOG:
|
||||
sgPlayersMode = lparam;
|
||||
SelDiffInit(window);
|
||||
return 0;
|
||||
|
||||
case WM_TIMER:
|
||||
if (wparam == FOCUS_TIMER_ID) {
|
||||
FocusAnimate(window, GetFocus());
|
||||
}
|
||||
return 0;
|
||||
|
||||
case WM_SYSKEYUP:
|
||||
case WM_SYSKEYDOWN:
|
||||
SendMessage(SDrawGetFrameWindow(), message, wparam, lparam);
|
||||
break;
|
||||
}
|
||||
return SDlgDefDialogProc(window,message,wparam,lparam);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
BOOL UiDoomCreateGame (SNETCREATEDATAPTR createdata,
|
||||
SNETPROGRAMDATAPTR programdata,
|
||||
SNETPLAYERDATAPTR playerdata,
|
||||
SNETUIDATAPTR interfacedata,
|
||||
SNETVERSIONDATAPTR versiondata,
|
||||
DWORD *playerid,
|
||||
BOOL loadfocus,
|
||||
LPCSTR gamename) {
|
||||
int result;
|
||||
|
||||
sgCreateData = createdata;
|
||||
sgCre8ProgramData = programdata;
|
||||
sgCre8PlayerData = playerdata;
|
||||
sgpCre8PlayerID = playerid;
|
||||
|
||||
sgDiffLoadFocus = loadfocus;
|
||||
|
||||
sgGameName = gamename;
|
||||
|
||||
// DISPLAY THE DIALOG BOX
|
||||
result = SDlgDialogBoxParam(
|
||||
global_hinstance,
|
||||
TEXT("SELDIFF_DIALOG"),
|
||||
interfacedata->parentwindow,
|
||||
SelDiffDialogProc,
|
||||
SelHeroGetMode()
|
||||
);
|
||||
|
||||
if (result == IDOK)
|
||||
return TRUE;
|
||||
SetLastError(sgLastError);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
//****************************************************************************
|
||||
// CreaHero.cpp
|
||||
// Diablo UI create new character popup dialog
|
||||
//
|
||||
// By Frank Pearce
|
||||
// created 9.20.96
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
// default starting values when this dll was created
|
||||
static TUIDEFSTATS sgStats[UI_NUM_CLASSES] = {
|
||||
{ 30, 10, 20, 25}, // starting stats for a warrior
|
||||
{ 25, 20, 30, 20}, // starting stats for a rogue
|
||||
{ 15, 35, 25, 20}, // starting stats for a sorcerer
|
||||
{ 25, 15, 25, 20}, // starting stats for a monk
|
||||
{ 20, 20, 25, 20}, // starting stats for a bard
|
||||
{ 40, 0, 20, 25}, // starting stats for a barbarian
|
||||
};
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//*
|
||||
//* EXPORTED FUNCTIONS
|
||||
//*
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
BOOL CALLBACK UiGetDefaultStats(int heroclass, TPUIDEFSTATS defaultstats) {
|
||||
if (defaultstats) {
|
||||
defaultstats->strength = sgStats[heroclass].strength;
|
||||
defaultstats->magic = sgStats[heroclass].magic;
|
||||
defaultstats->dexterity = sgStats[heroclass].dexterity;
|
||||
defaultstats->vitality = sgStats[heroclass].vitality;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,380 @@
|
||||
//****************************************************************************
|
||||
//
|
||||
// Credits.CPP
|
||||
// Diablo UI credits screen
|
||||
//
|
||||
// By Michael Morhaime (9/16/96)
|
||||
// Modified 10.3.96 by Frank Pearce
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
#define PIXELS_PER_SCROLL 1
|
||||
#define ID_CREDITS_TIMER 1
|
||||
#define MILLISEC_PER_SEC 1000
|
||||
#define PIXELS_PER_SEC 20
|
||||
#define DEFAULT_TIMER (MILLISEC_PER_SEC / (PIXELS_PER_SEC / PIXELS_PER_SCROLL))
|
||||
#define USER_TIMER (MILLISEC_PER_SEC / (pixelspersec / PIXELS_PER_SCROLL))
|
||||
|
||||
#define VERTICAL_PAD 30 // Padding above and below viewable part of offscreen rect
|
||||
#define TAB_PIXEL_SIZE 40
|
||||
#define LINE_HEIGHT 22
|
||||
|
||||
static LPBYTE sgTextBits = NULL; // bitmap for scrolling text ctrl
|
||||
static SIZE sgTextBitsSize;
|
||||
static HSGDIFONT sgTextFont = NULL;
|
||||
static int sgiTextLoc;
|
||||
|
||||
static HGLOBAL sghCredits; // handle for the credits string resource
|
||||
static int sgCreditsSize; // length of resource in bytes
|
||||
|
||||
static void ScrollCredits(HWND window);
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void CreditsDestroy (HWND window) {
|
||||
if (sgTextFont) {
|
||||
SGdiDeleteObject(sgTextFont);
|
||||
sgTextFont = NULL;
|
||||
}
|
||||
if (sgTextBits) {
|
||||
FREE(sgTextBits);
|
||||
sgTextBits = NULL;
|
||||
}
|
||||
|
||||
UiFreeBmp((TPBMP) GetWindowLong(window, GWL_USERDATA));
|
||||
SetWindowLong(window, GWL_USERDATA, (LONG) 0);
|
||||
|
||||
if (sghCredits) {
|
||||
// free the credits text
|
||||
FreeResource(sghCredits);
|
||||
sghCredits = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void CreditsAbort(HWND window) {
|
||||
UiFadeAbort(window);
|
||||
SDlgKillTimer(window,ID_CREDITS_TIMER);
|
||||
UiVidFadeOut(DEFAULT_STEPS*2);
|
||||
SDlgEndDialog(window, 1);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void CreditsInit (HWND window, LPARAM pixelspersec) {
|
||||
TPBMP tpBmp;
|
||||
HWND child;
|
||||
HFONT winfont;
|
||||
RECT rect;
|
||||
int nWidth, nHeight;
|
||||
|
||||
// set up the timer based on the specified pixel rate
|
||||
SDlgSetTimer(
|
||||
window,
|
||||
ID_CREDITS_TIMER,
|
||||
(pixelspersec ? USER_TIMER : DEFAULT_TIMER),
|
||||
NULL
|
||||
);
|
||||
|
||||
// load the credits into memory
|
||||
sghCredits = LoadResource(
|
||||
global_hinstance,
|
||||
FindResource(global_hinstance, TEXT("IDR_CREDITS"), TEXT("TEXT_FILES"))
|
||||
);
|
||||
sgCreditsSize = SizeofResource(
|
||||
global_hinstance,
|
||||
FindResource(global_hinstance, TEXT("IDR_CREDITS"), TEXT("TEXT_FILES"))
|
||||
);
|
||||
|
||||
// init a bmp for the window
|
||||
tpBmp = UiAllocBmp();
|
||||
if (tpBmp) {
|
||||
SetWindowLong(window, GWL_USERDATA, (LONG) tpBmp);
|
||||
LoadArtFile(
|
||||
window,
|
||||
NULL,
|
||||
TEXT(""),
|
||||
SDLG_STYLE_ANY,
|
||||
SDLG_USAGE_BACKGROUND,
|
||||
TEXT("ui_art\\credits.pcx"),
|
||||
&tpBmp->data,
|
||||
&tpBmp->datasize,
|
||||
FALSE
|
||||
);
|
||||
UiFadeInit(window, FALSE);
|
||||
}
|
||||
|
||||
// alloc/create a bitmap for the scrolling text ctrl
|
||||
child = GetDlgItem(window, ID_SCROLL_WINDOW);
|
||||
GetWindowRect(child, &rect);
|
||||
|
||||
nWidth = rect.right - rect.left;
|
||||
nHeight = rect.bottom - rect.top + (VERTICAL_PAD*2);
|
||||
|
||||
sgTextBits = (LPBYTE) ALLOC(nWidth * nHeight);
|
||||
if (!sgTextBits) {
|
||||
CreditsAbort(window);
|
||||
return;
|
||||
}
|
||||
sgTextBitsSize.cx = nWidth;
|
||||
sgTextBitsSize.cy = nHeight;
|
||||
|
||||
UiCalcNewRect(&rect, 0, VERTICAL_PAD);
|
||||
|
||||
SDlgSetBitmap(
|
||||
child,
|
||||
NULL,
|
||||
NULL,
|
||||
SDLG_STYLE_ANY,
|
||||
SDLG_USAGE_BACKGROUND,
|
||||
sgTextBits,
|
||||
&rect,
|
||||
nWidth,
|
||||
nHeight
|
||||
);
|
||||
|
||||
// init the starting text coordinate and begin drawing the credits
|
||||
sgiTextLoc = nHeight - VERTICAL_PAD;
|
||||
ScrollCredits(window);
|
||||
|
||||
// create the font for SGdiTextOut
|
||||
winfont = CreateFont(
|
||||
-17,0,0,0,FW_BOLD,0,0,0,ANSI_CHARSET,
|
||||
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
|
||||
VARIABLE_PITCH | FF_ROMAN,TEXT("Times New Roman")
|
||||
);
|
||||
if (winfont) {
|
||||
BOOL result = SGdiImportFont(winfont,&sgTextFont);
|
||||
DeleteObject(winfont);
|
||||
if (! result) {
|
||||
CreditsAbort(window);
|
||||
}
|
||||
}
|
||||
else {
|
||||
CreditsAbort(window);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static int sgCreditsLen;
|
||||
|
||||
static int credit_length(LPTSTR credit) {
|
||||
int len = 0;
|
||||
|
||||
// find the length (in characters) of a single line
|
||||
while ((*credit != '\r') && (*credit != '\n')) {
|
||||
len++;
|
||||
credit++;
|
||||
if (len > sgCreditsLen) {
|
||||
len = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static LPTSTR credit_next(LPTSTR lastcredit, int lastlen) {
|
||||
// skip over last credit and cr/lf
|
||||
lastcredit += (lastlen + 2);
|
||||
sgCreditsLen -= (lastlen + 2);
|
||||
|
||||
return lastcredit;
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void CreditsDraw(HWND window) {
|
||||
int x, y, stringlen;
|
||||
LPTSTR credits;
|
||||
|
||||
// lock the resource and get it's size
|
||||
credits = (LPTSTR)LockResource(sghCredits);
|
||||
sgCreditsLen = sgCreditsSize;
|
||||
|
||||
SGdiSelectObject(sgTextFont);
|
||||
SGdiSetPitch(sgTextBitsSize.cx);
|
||||
|
||||
for (
|
||||
y = sgiTextLoc;
|
||||
sgCreditsLen > 0;
|
||||
y += LINE_HEIGHT, credits = credit_next(credits, stringlen)
|
||||
) {
|
||||
// init left coord
|
||||
x = 0;
|
||||
// handle tabs at the begining of a line
|
||||
while (*credits == '\t') {
|
||||
x += TAB_PIXEL_SIZE;
|
||||
credits++;
|
||||
sgCreditsLen--;
|
||||
}
|
||||
stringlen = credit_length(credits);
|
||||
|
||||
// make sure the dest coords are in the buffer
|
||||
if (stringlen == -1) break;
|
||||
if (y < 0) continue;
|
||||
if (y > (sgTextBitsSize.cy - VERTICAL_PAD)) break;
|
||||
|
||||
if (stringlen) {
|
||||
#if 1
|
||||
// draw a drop shadow
|
||||
SGdiTextOut(
|
||||
sgTextBits,
|
||||
x + 2,
|
||||
y + 2,
|
||||
PALETTEINDEX(0),
|
||||
credits,
|
||||
stringlen
|
||||
);
|
||||
#endif
|
||||
|
||||
// draw the text
|
||||
SGdiTextOut(
|
||||
sgTextBits,
|
||||
x,
|
||||
y,
|
||||
PALETTEINDEX(224),
|
||||
credits,
|
||||
stringlen
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// has the bottom of the credits scrolled past the top?
|
||||
if (y < 0) {
|
||||
CreditsAbort(window);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static void ScrollCredits (HWND window) {
|
||||
RECT rect;
|
||||
HWND child = GetDlgItem(window, ID_SCROLL_WINDOW);
|
||||
TPBMP tpBmp = (TPBMP) GetWindowLong(window, GWL_USERDATA);
|
||||
|
||||
GetWindowRect(child, &rect);
|
||||
ScreenToClient(window, (LPPOINT)&rect.left);
|
||||
ScreenToClient(window, (LPPOINT)&rect.right);
|
||||
|
||||
// Copy from Background bitmap to buffer for scrolling text ctrl
|
||||
SBltROP3 (
|
||||
sgTextBits + (sgTextBitsSize.cx * VERTICAL_PAD),
|
||||
tpBmp->data + (rect.top * tpBmp->datasize.cx) + rect.left,
|
||||
sgTextBitsSize.cx,
|
||||
rect.bottom - rect.top,
|
||||
sgTextBitsSize.cx,
|
||||
tpBmp->datasize.cx,
|
||||
NULL,
|
||||
SRCCOPY
|
||||
);
|
||||
|
||||
sgiTextLoc -= PIXELS_PER_SCROLL;
|
||||
CreditsDraw(window);
|
||||
|
||||
InvalidateRect(child, NULL, FALSE);
|
||||
UpdateWindow(child);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
static BOOL CALLBACK CreditsDialogProc (HWND window,
|
||||
UINT message,
|
||||
WPARAM wparam,
|
||||
LPARAM lparam) {
|
||||
|
||||
switch (message) {
|
||||
|
||||
case WM_DESTROY:
|
||||
CreditsDestroy(window);
|
||||
break;
|
||||
|
||||
case WM_INITDIALOG:
|
||||
CreditsInit(window, lparam);
|
||||
PostMessage(window, WM_USER+1000, 0, 0);
|
||||
return 1;
|
||||
|
||||
case WM_TIMER:
|
||||
ScrollCredits(window);
|
||||
break;
|
||||
|
||||
case WM_USER+1000:
|
||||
if (! UiIsFading()) {
|
||||
UiFadeStart(window);
|
||||
}
|
||||
return 0;
|
||||
|
||||
case WM_PARENTNOTIFY:
|
||||
if (LOWORD(wparam) == WM_LBUTTONDOWN || LOWORD(wparam) == WM_RBUTTONDOWN) {
|
||||
CreditsAbort(window);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_GETDLGCODE:
|
||||
return DLGC_WANTALLKEYS;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_RBUTTONDOWN:
|
||||
CreditsAbort(window);
|
||||
return 0;
|
||||
|
||||
case WM_KEYDOWN:
|
||||
if (wparam == VK_SPACE) {
|
||||
CreditsAbort(window);
|
||||
}
|
||||
return 0;
|
||||
|
||||
case WM_COMMAND:
|
||||
CreditsAbort(window);
|
||||
break;
|
||||
|
||||
case WM_SYSKEYUP:
|
||||
case WM_SYSKEYDOWN:
|
||||
SendMessage(SDrawGetFrameWindow(), message, wparam, lparam);
|
||||
break;
|
||||
}
|
||||
|
||||
return SDlgDefDialogProc(window,message,wparam,lparam);
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* EXPORTED FUNCTIONS
|
||||
*
|
||||
***/
|
||||
|
||||
|
||||
//****************************************************************************
|
||||
//****************************************************************************
|
||||
BOOL APIENTRY UiCreditsDialog (UINT pixelspersec) {
|
||||
// fuck allowing customizable speed
|
||||
pixelspersec = 25;
|
||||
|
||||
// start the dialog
|
||||
SDlgDialogBoxParam(
|
||||
global_hinstance,
|
||||
TEXT("CREDITS_DIALOG"),
|
||||
SDrawGetFrameWindow(),
|
||||
CreditsDialogProc,
|
||||
pixelspersec
|
||||
);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
Synergistic Software
|
||||
|
||||
General Manager
|
||||
Bob Clardy
|
||||
|
||||
Lead Programmer
|
||||
Donald Tsang
|
||||
|
||||
Software Engineering
|
||||
Jim Edwards, Gary Powell, D'Andre Pritchett
|
||||
|
||||
Art Director
|
||||
Kirt Lemons
|
||||
|
||||
Artists
|
||||
Darren Lamb, Mike McMillen,
|
||||
Jason Robertson, Peter Watje
|
||||
|
||||
Design
|
||||
Kirt Lemons, Donald Tsang, Peter Watje
|
||||
Jim Edwards, Mike McMillen
|
||||
|
||||
Additional Design
|
||||
Michael Ormsby
|
||||
|
||||
Sound Design, SFX & Audio Engineering
|
||||
Craig Utterback
|
||||
|
||||
Quality Assurance Lead
|
||||
Mona Branham
|
||||
|
||||
Testers
|
||||
Chris Barker, Steve Chin, Derek Clardy, Conor Durdy,
|
||||
Amy Edwards, Greg Hightower, Tim Jensen, Jeremy Jones,
|
||||
John Lang, Daudi Pritchett, Doug Van Horne, Gordon Wilcox
|
||||
|
||||
Manual
|
||||
Suzanne David, Linda Westerfield,
|
||||
Ann Dickens Clardy, Kirt Lemons
|
||||
|
||||
Voices
|
||||
Jim Edwards, Paul Eiding, Eve Forward,
|
||||
Mackenzie Powell, Rodney Sherwood, Craig Utterback
|
||||
|
||||
|
||||
Additional Work
|
||||
|
||||
Quest Text Writing
|
||||
Eve Forward
|
||||
|
||||
Thanks to
|
||||
Trisha Durdy, Dustin Freeman, D'Andre Pritchett
|
||||
|
||||
|
||||
|
||||
Special Thanks to Blizzard Entertainment
|
||||
|
||||
|
||||
|
||||
|
||||
Sierra On-Line Inc. Northwest
|
||||
|
||||
Quality Assurance Manager
|
||||
Gary Stevens
|
||||
|
||||
Quality Assurance Lead Tester
|
||||
Bernadette Pryor
|
||||
|
||||
Main Testers
|
||||
Erik Johnson, David Lee, Kristofer Hall
|
||||
|
||||
Additional Testers
|
||||
Cade Myers, Jeff Ingham, Phil Kuhlmey,
|
||||
Eric Gelfand, Mark Wyman, Torsten Reinl,
|
||||
Erinn Hamilton
|
||||
|
||||
Product Marketing Manager
|
||||
Eddie Ranchigoda
|
||||
|
||||
Public Relations Manager
|
||||
Eric Twelker
|
||||
|
||||
Associate Product Manager
|
||||
Joe Roth
|
||||
|
||||
Thanks to
|
||||
Cindy Vanous, Joshua Bentley, Robert Zimmerman, Robert Jerauld,
|
||||
Dennis Ham, Andrea Stone, Beth Quintana, Jennifer Keenan, Gary Brown,
|
||||
Ken Eaton, Matt Eslick, Kate Powell, Bryon Mcpherson, David Beetlestone
|
||||
|
||||
@@ -0,0 +1,455 @@
|
||||
Game Design
|
||||
Blizzard North
|
||||
|
||||
Senior Designers
|
||||
Erich Schaefer, David Brevik
|
||||
|
||||
Additional Design
|
||||
Max Schaefer, Eric Sexton, Kenneth Williams
|
||||
|
||||
Lead Programmer
|
||||
David Brevik
|
||||
|
||||
Senior Programmers
|
||||
Richard Seis, Doron Gartner,
|
||||
Patrick Wyatt, Mike O'Brien
|
||||
|
||||
Programming
|
||||
Peter Brevik, Robin van der Wel, Jon Morin
|
||||
|
||||
Special Guest Programmers
|
||||
Collin Murray, Frank Pearce
|
||||
|
||||
Battle.net Programming
|
||||
Mike O'Brien, Mike Morhaime, Dan Liebgold
|
||||
|
||||
Serial Communications Programming
|
||||
Jeff Strain, Mike O'Brien
|
||||
|
||||
Installer Programming
|
||||
Bob Fitch, Patrick Wyatt
|
||||
|
||||
Art Directors
|
||||
Erich Schaefer, Samwise Didier
|
||||
|
||||
Artwork
|
||||
Michio Okamura, Eric Sexton, Ben Haas, Patrick Tougas,
|
||||
Kelly Johnson, Erich Schaefer, Max Schaefer, Hugh Tom
|
||||
Byrne, Roman Kenney, Samwise Didier, Dave Berggren,
|
||||
Micky Neilson, Eric Flannum, Justin Thavirat, Brian
|
||||
Sousa, Stu Rose, Nick Carpenter, Joeyray Hall
|
||||
|
||||
Technical Artwork
|
||||
Christopher Root, Mark Sutherland,
|
||||
Robert Djordjevich, Jeffrey Vaughn
|
||||
|
||||
Cinematic Art Directors
|
||||
Duane Stinnett, Matt Samia
|
||||
|
||||
3D Cinematic Artwork
|
||||
Duane Stinnett, Matt Samia, Rob McNaughton,
|
||||
Eric Flannum, Dave Pursley, Micky Neilson,
|
||||
Maxx Marshall, Trevor Jacobs, Brian Sousa,
|
||||
Samwise Didier, Ron Smorynski, Ben Haas, Patrick Tougas
|
||||
|
||||
Cinematic Technical Artwork
|
||||
Joeyray Hall
|
||||
|
||||
Executive Producer
|
||||
Allen Adham
|
||||
|
||||
Producer
|
||||
Bill Roper
|
||||
|
||||
Associate Producer
|
||||
James Phinney
|
||||
|
||||
Diablo Strike Team
|
||||
Allen Adham, Ron Millar, Mike O'Brien,
|
||||
James Phinney, Bill Roper, Patrick Wyatt
|
||||
|
||||
Music
|
||||
Matt Uelmen
|
||||
|
||||
Sound Design
|
||||
Matt Uelmen, Glenn Stafford
|
||||
|
||||
Cinematic Music & Sound
|
||||
Glenn Stafford, Matt Uelmen
|
||||
|
||||
Voice Production, Direction & Casting
|
||||
Mark Schwarz, Glenn Stafford, Bill Roper
|
||||
|
||||
Script & Story
|
||||
Erich Schaefer, Eric Sexton,
|
||||
Chris Metzen, Bill Roper
|
||||
|
||||
Voice Editing
|
||||
Glenn Stafford
|
||||
|
||||
Voices
|
||||
Michael Haley, Glynnis Talken, Michael Gough,
|
||||
Paul Eiding, Lani Minella, Steve Brodie, Bill Roper,
|
||||
Mark Schwarz, Glenn Stafford, Chris Metzen, Max Schaefer
|
||||
|
||||
Recording Engineer
|
||||
Robert Koenigsberg
|
||||
|
||||
Manual Design & Layout
|
||||
Peter Underwood, Jeffrey Vaughn,
|
||||
Chris Metzen, Bill Roper
|
||||
|
||||
Manual Artwork
|
||||
Samwise Didier, Chris Metzen,
|
||||
Roman Kenney, Maxx Marshall
|
||||
|
||||
Provisional Director of QA (Lead Tester)
|
||||
Shane Dabiri
|
||||
|
||||
QA Assault Team (Testers)
|
||||
Christopher Cross, Mike Givens, Dave Hale,
|
||||
Brian "Doc" Love, Hung Nguyen, Dean Shipley,
|
||||
Chris Sigaty, Ian Welke, Jamie Wiggs
|
||||
|
||||
QA Special Ops Team (Compatibility Testers)
|
||||
Adam Maxwell, Russell "Rug" Miller
|
||||
|
||||
QA Artillery Support (Additional Testers)
|
||||
Rich Alcazar, Mike Jones, Rev. Dan Moore, Matt Morris,
|
||||
Mark Pfeiffer, Harish "Pepe the Enforcer" Rao, Chris Millar
|
||||
|
||||
QA Counterintelligence
|
||||
Alan Dabiri, Jesse McReynolds, Walter Takata
|
||||
|
||||
Order of Network Information Services
|
||||
Robert Bridenbecker, Jason "Brother Shaggy" Schmit,
|
||||
Jamie "Brother Gug" Steigerwald, Richard Seis
|
||||
|
||||
Customer Support
|
||||
John Schwartz, Vic Larson, Chad Chaudry, Mick Yanko,
|
||||
Brandon Riseling, Kirk Mahony, Tony Hardy, Richard
|
||||
Amtower, Collin Smith, Andrew Edwards, Roger Eberhart
|
||||
|
||||
Sales
|
||||
Jorge Rivero, Rob Beatie
|
||||
|
||||
Dunsel
|
||||
Alan Dabiri
|
||||
|
||||
Mr. Dabiri's Background Vocalists
|
||||
Karin Colenzo, Christina Cade,
|
||||
Kim Farrington, Melissa Edwards
|
||||
|
||||
Public Relations
|
||||
Linda Duttenhaver, Susan Wooley
|
||||
|
||||
Marketing
|
||||
John Patrick, Steve Huot, Neal Hubbard, Kathy Carter
|
||||
|
||||
International Sales
|
||||
Ralph Becker, Chris Yoshimura
|
||||
|
||||
U.S. Sales
|
||||
Todd Coyle, Danny Kearns
|
||||
|
||||
Manufacturing
|
||||
John Goodman, Tom Bryan
|
||||
|
||||
Legal & Business
|
||||
Paula Duffy, Eric Roeder, Paul Sams, Kenneth Williams
|
||||
|
||||
Special Thanks To
|
||||
Primenet, Earthlink, AOL, Compuserve, ATI, Matrox, STB,
|
||||
Creative Labs, Logitech, U.S. Robotics, Gravis, Cyrix
|
||||
|
||||
Thanks To
|
||||
Ian Colquhoun, Rod Shean, Brian Fitzgerald, Sharon Schafer, Todd
|
||||
Schafer, Richard and Sandra Schaefer, Rick Bowles, Greg Bogden,
|
||||
Cindy Sievert, Brad Mason, Chuck Goldman, Karin Colenzo, Wendy
|
||||
Brevik, Jennie Brevik, Hanna Carroll, Katie Newell, Karen Weiss,
|
||||
Kurt Beaver, Stan McDonald, Brian Sexton, Michael Wan, Megan
|
||||
Williams, Jessica Gensley, Beth Ann Parks, Brian Piltin, Johnathan
|
||||
Root, Brett Supernaw, Sabeer Bhatia, Mark Rearick, Brad Mason,
|
||||
Diane Kodama, Bernadette Sexton, Barbara Uhlmann, Patricia
|
||||
McDonald, Kris Kelley, Alissa Vaage, Denise Hernandez, Paula
|
||||
White, Rachel Marie Hawley, Laura Gaber, Isaac Matarasso,
|
||||
Susan Stafford, Gretchen Witte, Jason Sailor, Eufemia Palomino,
|
||||
Nathalie Didier, Nicole Welke, Dawn Caddel, Anna-Marcelle
|
||||
Okamura, Amber Okamura, Megan Okamura Tracey McNaughton,
|
||||
Trisha Ann Ochoa, Annie Strain, Dr. Gregory T. Street, Ray the Soda
|
||||
Guy, Sam Raimi, A. Guinness Brewing Co., John Woo, Chow Yun Fat,
|
||||
Jackie Chan,Proposition 215, Rumiko Takahashi, Bunchy & Mason,
|
||||
The Friends of Stan, The Zoo Crew, Team Hamro, Brazil 2001, RUSH,
|
||||
Cornholio, THE BROS., Dar, Emeril Lagasse, Tom Waits, Ice-Cube,
|
||||
The Strike Team Deflectors, Tony Levin, Big Jim and the Twins,
|
||||
Jag`rmeister, The Megasphere, Condor, The Allower, The Sunday
|
||||
Night Group, Gravitar, Steinway Pianos, Round Table Pizza, The Poxy
|
||||
Boggards, Urban Mystic & Co., Caffeine, Hunter Rose, Marly
|
||||
mediums in the box, sweet Poteen, Dave Scarpitti, TheByter, Bim
|
||||
Man, Krissann for color, Patty at Avalon Tattoo, James, Whaleboy,
|
||||
Dunsel Training Institute, monkeys, Dob Bole, Rootes Group, Porshe,
|
||||
Bongo, Scarlett, Apollo, The House of Mediocrity, Amelias, The King,
|
||||
Saag and all the folks at Davidson
|
||||
|
||||
In memory of
|
||||
Lawrence and Barbara Williams
|
||||
David A. Hargrave
|
||||
Tony "Xatre" Collin
|
||||
Thomas H Sexton
|
||||
|
||||
Very Special Thanks to
|
||||
Bob and Jan Davidson
|
||||
Walter Forbes
|
||||
|
||||
The Ring of One Thousand
|
||||
Andrew Abernathy, Christopher Abramo, David Adams, David
|
||||
Adcox, Marko Agterberg, Cory Aiken, Judah Altaras, John
|
||||
Alvarez, Jose Alvarez, Richard Amable, Alexander Amaral,
|
||||
Scott Amis, Vincent Amoroso, Mark An, David Andersen, Jason
|
||||
Andrew Abernathy, Christopher Abramo, David Adams, David
|
||||
Adcox, Marko Agterberg, Cory Aiken, Judah Altaras, John
|
||||
Alvarez, Jose Alvarez, Richard Amable, Alexander Amaral,
|
||||
Scott Amis, Vincent Amoroso, Mark An, David Andersen, Jason
|
||||
Andersen, Aaron Anderson, George Anderson, Matthew
|
||||
Anderson, Michael Anderson, Sean Anderson, Robert Andrade,
|
||||
Cerny Andre, Michael Andreev, Devin Angle, Brian Apple,
|
||||
Brian Arbuthnot, Billy Arden, Dorian Arnold, Andre Arsenault,
|
||||
Erik Asplund, Mark Assam, John Athey, Jason Attard, Jeff
|
||||
Atwood, Ricky Au, Scott Avery, Rand Babcock, Steve Babel,
|
||||
Raymond Bacalso, Ed Bachta, Steven Back, Scott Baeder, Alex
|
||||
Baevski, Scott Bailey, Kenneth Baird, Thomas Baker, Todd
|
||||
Bala, Jan Ball, Greg Baltz, Blake Baltzley, Doug Bambrick, Wes
|
||||
Bangerter, Paul Barfuss, Chris Barghout, Dave Barnebey, Jon
|
||||
Barnhart, Terje Barth, Nicole Baskin, Bernard Baylen, Ryan
|
||||
Bear, Phil Bedard, Todd Belcher, Chip Bell, Erez Ben-Aharon,
|
||||
Jonathan Bender, Nick Bennett, Ireney Berezniak, Ted Berg,
|
||||
Gunnar Bergem, Russell Beuker, Ed Bickford, Stephen Biles,
|
||||
John Billdt, Gerald Binder, John Bird, Hannah Blackerby, Tom
|
||||
Blackerby, Clayton Blackwell, Thomas Blake, Shawn Blaszak,
|
||||
Daniel Bliss, Fred Bliss, Jeff Bliss, Jon Blum, Rune Boersjoe,
|
||||
Andrew Boggs, Dave Boisvenu, Joe Bolt, John Bonds, Jeff
|
||||
Borenstein, Dorian Borin, Ed Boris, Bartholomew Botta,
|
||||
Michael Boutin, Michael Boyd, Charles Boyer, Mike
|
||||
Boyersmith, Michael Boyko, Eric Bradberry, John Brandstetter,
|
||||
Ryan Breding, Paul Brinkmann, Patrick Briscoe, Scott Brisko,
|
||||
Jeremy Britton, Adrian Broadhead, Glenn Brouwer, Joe Brown,
|
||||
Sébastien Brulotte, Darrell Brunsch, William Bryan, Jason
|
||||
Bucher, Chris Buchinger, Clayton Buckingham, John Buckles,
|
||||
David Bugay, Ed Bujone, Erik Burgess, Gabriel Burkett, Chris
|
||||
Burnes, Richard Butler, Jeffrey Bye, Dougall Campbell, Donnie
|
||||
Cannon, Shane Cantrell, Connor Caple, Daniel Carey, James
|
||||
Carlton, Michael Carmel, Mike Carpenter, Ronald Carruthers,
|
||||
Phil Carter, Bryce Cartmill, Eric Cartwright, Anthony Caruso,
|
||||
Lon Casey, Tim Caster, Aaron Chan, Otto Chan, Gene Chang,
|
||||
Hsiao-Lung Chang, William Chang, George Chappel, Larry
|
||||
Charbonneau, Troy Chase, Bruce Chen, Chun Hsien Chen, Sam
|
||||
Chen, Tzu-Mainn Chen, Mike Cheng, Chris Chiapusio, Damien
|
||||
Chiesa, Nick Chin, Nim Ching, Jonathan Chinn, Michael Chinn,
|
||||
Philander Chiu, Thayne Christiansen, Philip Chui, Steve
|
||||
Cintamani, Richard Ciordia, Colin Clark, Steve Clark, Samuel
|
||||
Clements, Meredith Clifton, Jeff Cohen, Dale Colton, Dax
|
||||
Combe, Matt Compton, Jacob Conklin, Richard Conn, Zac
|
||||
Cook, Tim Coolong, Gregory Coomer, Dennis Cosgrove, Kelly
|
||||
Couch, Andrew Coulter, Eric Coutinho, David Coutts, James
|
||||
Craig, John Craig, Kazial Craig, John Crawford, Marcelo
|
||||
Crespo, Orville Crews, Tim Cristy, Elmer Crosby III, Russell
|
||||
Cullison, Ryan Cupples, Andrew Dagley, Steve Dallaire, Richard
|
||||
Dalton, David Dandar, Pro Daulo, Rob Dautermann, Mike
|
||||
Davies, Kalieb Davis, Marshall Davis, Ronald Davis, Danny De
|
||||
Bie, Marc De Filippis, Myles Deighton, Kent Dejarnett, Anthony
|
||||
Delarosa, Neil Dempster, Peter Denitto, Joaquim Dentz, Scott
|
||||
Dewar, Anish Dhingra, Philip Dhingra, David Diaz, Stewart
|
||||
Dicks, Brad Dietz, Josh Dietz, Colleen Diggins, Mike Ditchburn,
|
||||
Eric Dittman, Allen Do, Huy Doan, Matthew Dolman, Antoine
|
||||
Dongois, Eamonn Donohoe, Bill Dorell, Mark Dorison, Dan
|
||||
Dorsett, Chris Dorsey, Jim Dosé, Willis Doss, Chin Du, William
|
||||
Dubis, Timothy Duewell, Brandon Dunn, Andrew Durham, Don
|
||||
Duvall, Kevin Dvojack, Daniel Eaton, Paul Eberting, Eric
|
||||
Echelbarger, Lance Eddleman, Ben Eggers, David Eggum, John
|
||||
Ehde, Brian Eikenberry, Patrick Elven, Peter Engdahl, Philip
|
||||
Engdahl, Michael Ennis, Darren Eslinger, Eric Ezell, Darren
|
||||
Falslev, Stephen Feather, Tony Fenn, Ben Ferguson, Mike
|
||||
Fernandez, Gwendal Feuillet, Guy Fietz, Julian Figueroa, Dale
|
||||
Fillpot, Stan Finchem, Michael Finley, Nick Fisher, William
|
||||
Fisher, Mark Fitlin, Dave Flatt, Joel J. Flores, John Folkers,
|
||||
Steven Forgie, Tom Forsythe, Matthew Foster, Scott Francis,
|
||||
Jim Frank, Paulo Fraser, Glenn French, Kurt Frerichs, Chris
|
||||
Frey, Mark Friedman, Charles Friedmann, Dan Friend, Kirk
|
||||
Fry, Aaron Fu, Erik Gaalema, Brandon Gabbard, Phil Gagner,
|
||||
Tommy Gannon, David Gappmayer, Chris Garrison, Tony
|
||||
Garrison, David Gasca, Jeremy Gasser, Michael Geist, Michael
|
||||
Genereux, Daniel Genovese, Josh Gerwin, Paul Gibson, William
|
||||
Gilchrist, Gabriel Gils Carbo, Chad Glendenin, Ryan Glinski,
|
||||
Dean Gobrecht, Andrew Goldfinch, David Goodman, Mark
|
||||
Goodson, Matt Gordon, Frank Gorgenyi, Sean Gould, Perry
|
||||
Goutsos, Ed Govednik, Michael Grayson, Chris Green, Justin
|
||||
Grenier, Jeff Greulich, Don Grey, Rob Griesbeck, Don Griffes,
|
||||
Kimberly Griffeth, Jay Grizzard, Don Gronlund, Joe Gross,
|
||||
Troy Growden, Greg Guilford, David Gusovsky, Jeremy
|
||||
Guthrie, Adam Gutierrez, James Guzicki, Matthew Haas, Matt
|
||||
Hadley, Ryan Hagelstrom, Bobby Hagen, Ben Hall, Brian Hall,
|
||||
Kris Hall, Calvin Hamilton, Kris Hamilton, Bo Hammil, Dave
|
||||
Hans, Rick Hansen, Robert Harlan, Travis Harlan, Seth
|
||||
Harman, Jeff Harris, Shawn Hartford, Adam Hartsell, Neil
|
||||
Harvey, Ray Hayes, John Hein, Chris Heinonen, Christer
|
||||
Helsing, Chris Hempel, Dustin Hempel, Mathieu Henaire, Matt
|
||||
Henry, Chuck Herb, Michael Herron, Sage Herron, Thomas
|
||||
Herschbach, Cliff Hicks, Nelson Hicks, Paul Hierling, William
|
||||
Hiers, Mike Higdon, Tim Hildebrand, Casey Hinkle, Ryan
|
||||
Hitchings, Wes Hix, Alan Ho, Jenson Ho, Alan Hoffman, Jeff
|
||||
Hoffman, Eleanor Hoffmann, Steve Hogg, Richard Holler, Brian
|
||||
Homolya, Wade Hone, Joe Horvath, Jeff Howe, Eric Hudson,
|
||||
Glen Huey, Chris Hufnagel, Joshua Hughes, Melissa Hughes,
|
||||
Arief Hujaya, Thomas Hulen, Ryan Hupp, Justin Hurst, Rick
|
||||
Hutchins, Steve Iams, Mike Iarossi, Bjorn Idren, Johan Idrén,
|
||||
Micah Imparato, Joe Ingersoll, David Ingram, Greg Ipp, Rodney
|
||||
Irvin, Darin Isola, Justin Itoh, Mario Ivan, Fredrik Ivarsson,
|
||||
Dax Jacobson, Michael Jacques, Stevens Jacques, Duane Jahnke,
|
||||
William Jambrosek, Daniel Janick, Narciso Jaramillo, Neil
|
||||
Jariwala, Harvie Jarriell, Scott Javadi, Joe Jenkins, Bart
|
||||
Jennings, Paul Jennings, Julien Jenny, Jason Jensen, Martin
|
||||
Jeremy, Mark Jeschke, Andy Johnson, James Johnson, Leigh
|
||||
Johnson, Mark Johnson, Rupert Johnson, Clyde Jones, Michael
|
||||
Jones, Tim Jordan, Ben Judy, Michael Kaae, Steve Kaczkowski,
|
||||
Neville Kadwa, Brian Kaisner, Yoshihisa Kameyama, Michael
|
||||
Kanemura, Daniel Kao, Eric Karabin, Ben Katz, Christopher
|
||||
Kawamura, Erick Kayser, Craig Keddie, Kevin Kelley, Bryan
|
||||
Kemp, Michael Kendrigan, Dan Kerber, Timothy Kerber, Tomi
|
||||
Keski-Heikkilä, Greg Kettering, Nathan Kilber, Howard Kim,
|
||||
Orrin Kinion, Jon Kirst, David Kitch, John Klingbeil, Neil
|
||||
Klopfenstein, Kerry Knouse, David Knox, Said Kobeissi, Jeff
|
||||
Koches, Hades Kong, Jeff Kong, Kevin Konkle, Steve Koon,
|
||||
David Koontz, Dan Koopmann, Steve Koskela, Kuan Kou,
|
||||
Cameron Kracke, Jensen Krage, York Kramer, Cedar Kraus,
|
||||
Jason Kraus, Bobby Krimen, Melissa Krispli, Steven Krispli,
|
||||
James Kruger, Charles Kubasta, Kimmo Kulonen, Frank
|
||||
Lackaff, Michael Lacour, Matt Lake, Jason Landry, Hans Erik
|
||||
Lange, Michael Laramee, Brad Lascelle, Pat Laschinger, Alan
|
||||
Lau, Sean Laurence, Anthony Lavey, Jr., Gary Le, Huey Le,
|
||||
Stephane Le Roy Audy, Lim Leandro, Charles Lee, Conroy Lee,
|
||||
Mike Lee, Shih-Hang Lee, Jonathan Leipert, Jason Lemann,
|
||||
Ron Lenzi, Mitchell Leon, Stephanie Lesniewski, Brendan
|
||||
Lewis, Robert Lewis, Sam Liao, Tom Liem, Adam Ligas, Steven
|
||||
Liggett, Roger Lilley, Benjamin Lim, Jeff Lindholm, Johnson
|
||||
Linwood, David Litchman, Bruce Lithimane, William Liu,
|
||||
Wilson Liu, Robert Lobdell, Chris Logan, Razvan Loghin, Jack
|
||||
Loh, George Loo, Russell Love, Juan Loyola, Ricardo Lozano,
|
||||
Mike Luban, Tim Luc, Henry Luciano, Dianne Ludwig, Charles
|
||||
Lueras, Derek Lung, Phong Ly, Scott MacGillivray, Dave Mack,
|
||||
Alec Mak, Steve Mamayek, Michael Mancini, Daniel Mann,
|
||||
Michael Mann, Chris Manofsky, Abdullah Marafie, Nicholas
|
||||
Marcy, Piompino Mariano, Bob Marius, Trey Marshall, Dane
|
||||
Martin, Gregg Martin, Renard Martin, Rich Martin, Scott
|
||||
Martin, Thomas Martin, Jon Masters, Christopher Mathews,
|
||||
Jay Mathis, Marc Matthews, Chris Mazur, Doug McBride,
|
||||
Mackey McCandlish, Robin McCollum, Steven McCombie,
|
||||
Andy McConnell, Michael McCourt, Bill McCoy, Doug
|
||||
McCracken, Michael McDeed, Robert McDonald, Steve
|
||||
McEachron, Craig McGee, Ryan McKenzie, Michael McKeown,
|
||||
Daniel McMahon, Colin McMillan, Ian McWilliam, Mark
|
||||
McWilliams, Khann Mean, Bryan Meason, Kenneth Medley,
|
||||
Jeff Meek, John Mehr, Christopher Mende, Brian Mendenhall,
|
||||
Peter Mengel, Michael Mersic, Mike Messom, Don Metcalf,
|
||||
Gary Metzker, Scott Meyer, Joseph Michaud, Andrew Mielke,
|
||||
Travis Mikalson, Troy Milburn, Ike Miller, Ronnie Miller, Sean
|
||||
Miller, Steve Miller, Arthur Min, David Minniti, Brenda
|
||||
Mirsberger, Bill Misek, David Mitchell, Joseph Mobley, Robert
|
||||
Mollard, Will Mooar, Curtis Moore, Matthew Moore, Al
|
||||
Morales, Ryan Moran, Lance Mortensen, Karel Mrazek, Ward
|
||||
Mullee, William Munoz, Kirk Munro, Craig Murray, Shawn P.
|
||||
Murray, Travis Murray, Michael Mushrush, Tom Mustaine,
|
||||
David Myers, Joseph Myett, Morgan Najar, Kenta Nakamura,
|
||||
Damian Nastri, Joshua Naumann, Nick Navarro, Douglas
|
||||
Neitzel, Arnold Ng, Anthony Nguyen, Steve Nguyen, Joseph
|
||||
Nicholas, Charles Nickolaus, Jon Nisbet, Patrick Nomee, David
|
||||
Norling-Christensen, Bobby Norton, Joseph Nottingham, Frank
|
||||
O'Connor, Jon Oden, David Oester, Lavern Ogden, Zach
|
||||
Oglesby, Lucas Oldfield, Toby Olsson, Aaron Ondek, Sean
|
||||
O'Neill, John Orlando, Samuel Orlando, Donovan Orloski,
|
||||
David Pai, Nikolas Paldan, David Palek, John Palmieri, Anthony
|
||||
Palmisano, Sanjay Pandit, Jesse Park, Alex Parker, Jimmy
|
||||
Pasher, Lukasz Paszek, Andy Patterson, William Pelletier,
|
||||
Duane Pemberton, Ivan Pemic, Kelly Pendergast, Mike
|
||||
Penezich, Jon Penk, Willie Penley, Ron Penna, Matthew
|
||||
Pennington, Kevin Pereira, Ross Perez, Ken Perkins, Brian
|
||||
Peterik, Kelly Peterson, Chris Phillips, Rod Pickett, Cameron
|
||||
Pierce, Reuben Pierce, Tim Pilger, Billy Pippin, Brad Plank,
|
||||
Brian Plant, Craig Platt, David Plunkett, Michael Politi, Albert
|
||||
Portillo, Brian Powell, David Powell, Franklin Powers Jr., Alan
|
||||
Precourt, Michael Pronchick, Julian Quintana, Justin Radziej,
|
||||
Steven Rajewski, Shawn Rawles, Ian Reardon, Marc Reed, Ric
|
||||
Reichelt, Judd Reiffin, David Reilly, Garry Reisky, Drew
|
||||
Ressler, Robert Reynolds, Walter Reynolds, Michael Rice, Ian
|
||||
Richards, James Richards, Raymond Richmond, Dustin Riggs,
|
||||
Keith Riskey, Brian Ro, Scott Roberts, Jorge Rodriguez, Chad
|
||||
Rogers, Clint Rogers, Robert Rogers, Steve Rogers, Ethan Roots,
|
||||
Ron Roque, William Ross, Sebastian Rossi, Jeff Rostis, Ben
|
||||
Roth, Demar Roth, Rich Rouse, Oleg Rovner, Jonathan Roy,
|
||||
Drew Rozema, Mike Ruggles, Mathias Russ, James Russell, Jim
|
||||
Rutledge, James Rutter, Dave Ryder, Chris Salvadras, Anders
|
||||
Samnerud, Nick Sanders, Jakob Sandgren, Joe Sapinsky, Tyler
|
||||
Sargent, Jonas Saunders, Mark Savage, Scott Sawyer, Robert
|
||||
Scanlon, Trevor Schaben, Aaron Schmidt, Chris Schmidt, Greg
|
||||
Schultz, Nicholas Schumacher, Scott Schumacher, Kevin Scott,
|
||||
Rastislav Seffer, Robert Seidler, Corey Sellers, Justin Sellers,
|
||||
Marc Senecal, George Shannon, Ian Sheffield, Anoop Shekar,
|
||||
Sandeep Shekar, Kevin Shelton, Leon Shephard, Eric Shepperd,
|
||||
Jeffrey Shneidman, Samuel Shockey, Mark Shoemaker, Mike
|
||||
Shupe, Sean Sibbet, Brian Sidharta, Jimmy Sieben, Eric
|
||||
Siemens, William Silva, Jody Simpson, Jatinder Singh, Sonia
|
||||
Siu, Omar Skarsvaag, Tom Skiba, Carl Skow, David Skuse,
|
||||
Robert Slifka, Brent Smith, C. Eric Smith, Jared Smith, Jeffrey
|
||||
Smith, Owen Smith, Shannon Smith, Steven Smith, Edward Smola,
|
||||
Matthew Sneep, Eric Snow, Brad Sobel, Jean-Pierre Solignac, Rasmus
|
||||
Sørensen, Andrew Sorg, Poppy Southcott, Ross Specter, Erik Spencer,
|
||||
Keith Spencer, Chris Springer, Erikson Squier, Dean St. Onge, Stewart
|
||||
Stanfield, John Stanley, Terrence Staton, Benjamin Stein, James
|
||||
Steiner, David Steyer, William Stickney, Chris Stiff, James Stofer,
|
||||
Norm Storch, Patrick Stovall, Brandon Sturgeon, Sean Stutler, Anne
|
||||
Sukprasert, Jamal Sullivan, Bruce Sully, Jay Sung, Park Sung
|
||||
Joon, Stein Sunnarvik, Nathan Surginer, Robert Swaringen, Lee
|
||||
Sweeney, David Szabo, Scott Taft, Christian Takvam, Patrick
|
||||
Talaska, Tadashi Tamaki, Simon Tan, Mark Taraba, Khon-
|
||||
Whey Tay, John Taylor, Keith Taylor, Donald Temean, Phillip
|
||||
Tesar, Pete Thao, Brian Thomas, Keith Thomas, Speed Thomas,
|
||||
Miles Thorpe, Paul Thurrott, Mike Timbol, Nicholas Timmins,
|
||||
Tom Tobin, Robert Towster, Hien Tran, Timothy Traviss, Toby
|
||||
Traylor, Tony Treadwell, George Tremoulis, Paul Trinh, Thanh
|
||||
Trinh, Chris Tristan, Brad Truswell, Jason Tryon, Mike Tu,
|
||||
Gernel Tuazon, Eric Tuggle, Mike Turnbull, Lyle Ubben,
|
||||
Amilcar Ubiera, Robert Ulozas, Arie Upton, Mark Van Noy,
|
||||
Matthew Van Sickler, Jake Vantlin, Tony Vasquez, Brady
|
||||
Vauclin, Gianpiero Vecchi, Chad Verrall, Chris Vicente, Brett
|
||||
Vickers, David Vickery, Jonathan Vilante, Simon Vince, Ben
|
||||
Vinson, David Voelkert, Paul Vogt, Nicholas Voorhies, Robert
|
||||
Vreeland, Mike Vrooman, Rick Vuong, Brian Wachhaus, Todd
|
||||
Wachhaus, Caine Wade, Mathew Wadstein, Kenneth Wagenius,
|
||||
Trevor Wagner, John Wagstaff, Asad Wahid, Richard
|
||||
Wahlberg, Helio Wakasugui, Richard Walker, Wilkins Walker,
|
||||
Matthew Wallace, Daniel Walsh, Joel Walters, Andrew Waltz,
|
||||
Tom Wang, Tony Wang, Jay Ward, Jonathan Ward, John
|
||||
Warner, Mark Warren, Matt Washer, Mike Watson, Sean
|
||||
Wattles, Mike Wayne, Christian Wehba, Benjamin Wei, Richard
|
||||
Weight, Cary Wells, David Wenck, Bill Werring, Leonard
|
||||
Wesley, Marlon West, Mikael Westerbacka, Brian Wharry,
|
||||
Chris White, Chris White, Jeremy White, Greg Whitlock, Gary
|
||||
Widener, Marty Wilfried, Israel Wilkinson, Michael Willams,
|
||||
Derek Williams, Sean Willson, Nitzan Wilnai, Jim Wilson,
|
||||
Karsten Wilson, William Wilt, Tim Winn, Brian Winzeler, Matt
|
||||
Wise, Lee Wissmiller, Brendan Wolfe, Daniel Wolpert, Felix
|
||||
Wong, Power Wong, Tony Wong, Tim Wood, Timothy Wood,
|
||||
Jeremy Woods, Michael Woods, Bill Wright, Keith Wright,
|
||||
Patrick Wu, Gang Xie, Robert Yao, Sun Lim Yap, Stephen Yau,
|
||||
Erek Yedwabnick, Christopher Yee, Nick Yee, Juan Yip, David
|
||||
Young, Rob Young, Seth Young, Alex Yu, Terry Zahn, Jia-Ning
|
||||
Zhang, Eric Zieg, Jordan Zielin, Clint Zimmerman, Matt Zinke
|
||||
|
||||
|
||||
|
||||
|
||||
No souls were sold in the making of this game.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user