Added uisrc.

This commit is contained in:
Justin Marshall
2026-04-27 10:37:37 -07:00
parent 101266ab72
commit 7806bb8ef8
407 changed files with 40568 additions and 0 deletions
+30
View File
@@ -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.
View File
Binary file not shown.
Binary file not shown.
+2751
View File
File diff suppressed because it is too large Load Diff
+120
View File
@@ -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
+74
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
+31
View File
@@ -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)
+4
View File
@@ -0,0 +1,4 @@
SCC = This is a Source Code Control file
[DIABLOUI.MAK]
SCC_Project_Name = "$/UiSrc", RJAAAAAA
+3331
View File
File diff suppressed because it is too large Load Diff
+1342
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
+330
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+151
View File
@@ -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

+343
View File
@@ -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++;
}
}
}
+52
View File
@@ -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);
+33
View File
@@ -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
+10
View File
@@ -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.
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

+1096
View File
File diff suppressed because it is too large Load Diff
+185
View File
@@ -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;
}
+522
View File
@@ -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;
}
+385
View File
@@ -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;
}
+47
View File
@@ -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;
}
+380
View File
@@ -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;
}
+90
View File
@@ -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
+455
View File
@@ -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.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
View File
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.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
View File
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
View File
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More