mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-12 22:02:12 +00:00
Fix signpost camera for S_SKIN camerascale, exitmove, opposite gravity, and analog mode
This commit is contained in:
commit
8ddfdf2d0f
78 changed files with 1615 additions and 18647 deletions
|
@ -3,6 +3,7 @@
|
|||
For Sonic Robo Blast 2 Version 2.2
|
||||
Contributors (alphabetical):
|
||||
* Foxboy
|
||||
* FuriousFox
|
||||
* JJames19119
|
||||
* Kalaron
|
||||
* Kristos
|
||||
|
@ -44,27 +45,32 @@ formatinterface = "SRB2MapSetIO";
|
|||
//Sky textures for vanilla maps
|
||||
defaultskytextures
|
||||
{
|
||||
SKY1 = "MAP01,MAP02,MAP03,MAP50,MAPA1,MAPA2,MAPA5,MAPA6,MAPA9,MAPAA,MAPAB,MAPAC,MAPAD,MAPAE,MAPAG,MAPAJ,MAPAK,MAPF0,MAPF1,MAPFA,MAPM0,MAPM8,MAPMA,MAPMB,MAPMC";
|
||||
SKY4 = "MAP04,MAP06,MAP51,MAPF8,MAPM1";
|
||||
SKY6 = "MAP05";
|
||||
SKY7 = "MAP07,MAP08,MAP09,MAP52,MAPM2,MAPM5";
|
||||
SKY10 = "MAP12,MAP53,MAPM3";
|
||||
SKY11 = "MAP10,MAP11,MAP16,MAP55,MAPF2,MAPF5,MAPF6,MAPF9,MAPM7";
|
||||
SKY13 = "MAP13,MAP54,MAPAS";
|
||||
SKY21 = "MAPAF,MAPF7,MAPM4";
|
||||
SKY22 = "MAP22,MAP23,MAP24,MAP25,MAP56,MAPAN,MAPAO,MAPF4,MAPM6";
|
||||
SKY29 = "MAP58,MAPAV";
|
||||
SKY1 = "MAP01,MAP02,MAP03,MAP33,MAP50,MAP60,MAPF0,MAPM0";
|
||||
SKY2 = "MAPM7,MAPMB";
|
||||
SKY4 = "MAP04,MAP06,MAP61,MAPF6,MAPM1";
|
||||
SKY6 = "MAP05,MAP51,MAPMA";
|
||||
SKY7 = "MAPM2,MAPM5";
|
||||
SKY8 = "MAP07,MAP08,MAP09,MAP52,MAP62,MAPF1";
|
||||
SKY10 = "MAP10,MAP12,MAP53,MAP63,MAPM3";
|
||||
SKY11 = "MAP11,MAPF7";
|
||||
SKY13 = "MAP13,MAP64";
|
||||
SKY14 = "MAP14";
|
||||
SKY15 = "MAP15,MAP54";
|
||||
SKY17 = "MAP70";
|
||||
SKY20 = "MAP32,MAP55,MAP65,MAPF2,MAPF5";
|
||||
SKY21 = "MAPM4";
|
||||
SKY22 = "MAP22,MAP23,MAP25,MAP26,MAP27,MAP56,MAP66,MAPF4,MAPM6";
|
||||
SKY30 = "MAP30";
|
||||
SKY35 = "MAP41";
|
||||
SKY40 = "MAP40";
|
||||
SKY55 = "MAPF3,MAPM9";
|
||||
SKY66 = "MAPAT";
|
||||
SKY99 = "MAP57";
|
||||
SKY103 = "MAPA3,MAPA4,MAPAU";
|
||||
SKY107 = "MAPA7,MAPA8";
|
||||
SKY117 = "MAPAH,MAPAI";
|
||||
SKY127 = "MAPAR";
|
||||
SKY132 = "MAPAW";
|
||||
SKY31 = "MAP31";
|
||||
SKY35 = "MAP42";
|
||||
SKY40 = "MAP41,MAP71,MAPM9";
|
||||
SKY55 = "MAPF3,MAPM8";
|
||||
SKY68 = "MAPF8";
|
||||
SKY99 = "MAP57,MAPZ0";
|
||||
SKY159 = "MAP16";
|
||||
SKY172 = "MAP40";
|
||||
SKY300 = "MAP72";
|
||||
SKY301 = "MAP73";
|
||||
}
|
||||
|
||||
// Default lump name for new map
|
||||
|
@ -90,9 +96,9 @@ skins
|
|||
Sonic;
|
||||
Tails;
|
||||
Knuckles;
|
||||
Metalsonic;
|
||||
Fang;
|
||||
Amy;
|
||||
Fang;
|
||||
Metalsonic;
|
||||
}
|
||||
|
||||
// Gametypes
|
||||
|
@ -3422,7 +3428,7 @@ thingtypes
|
|||
121
|
||||
{
|
||||
title = "Minus";
|
||||
sprite = "MNUSA1";
|
||||
sprite = "MNUSA0";
|
||||
width = 24;
|
||||
height = 32;
|
||||
}
|
||||
|
@ -3457,6 +3463,13 @@ thingtypes
|
|||
height = 34;
|
||||
flags8text = "[8] Start on fire";
|
||||
}
|
||||
137
|
||||
{
|
||||
title = "Dragonbomber";
|
||||
sprite = "DRABA1";
|
||||
width = 28;
|
||||
height = 48;
|
||||
}
|
||||
105
|
||||
{
|
||||
title = "Jetty-Syn Bomber";
|
||||
|
@ -3642,6 +3655,7 @@ thingtypes
|
|||
sprite = "BRAK01";
|
||||
width = 48;
|
||||
height = 160;
|
||||
flags1text = "[1] No origin-fling death";
|
||||
flags4text = "[4] End level on death";
|
||||
flags8text = "[8] Electric barrier";
|
||||
}
|
||||
|
@ -4899,6 +4913,7 @@ thingtypes
|
|||
sprite = "ESTAA1";
|
||||
width = 32;
|
||||
height = 240;
|
||||
flags1text = "[1] Solid gold";
|
||||
flags4text = "[4] Slides when pushed";
|
||||
flags8text = "[8] Not pushable";
|
||||
}
|
||||
|
@ -5726,6 +5741,24 @@ thingtypes
|
|||
width = 24;
|
||||
height = 32;
|
||||
}
|
||||
1505
|
||||
{
|
||||
title = "Green Flame";
|
||||
sprite = "CFLMA0E0";
|
||||
width = 8;
|
||||
height = 32;
|
||||
}
|
||||
1506
|
||||
{
|
||||
arrow = 1;
|
||||
blocking = 2;
|
||||
title = "Blue Gargoyle";
|
||||
sprite = "BGARD1";
|
||||
width = 16;
|
||||
height = 40;
|
||||
flags4text = "[4] Slides when pushed";
|
||||
flags8text = "[8] Not pushable";
|
||||
}
|
||||
}
|
||||
|
||||
dreamhill
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,127 +0,0 @@
|
|||
/* config.h. Generated from config.h.in by configure. */
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
/* #undef HAVE_DLFCN_H */
|
||||
|
||||
/* Define to 1 if you have the `feenableexcept' function. */
|
||||
/* #undef HAVE_FEENABLEEXCEPT */
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
/* #undef HAVE_LIBM */
|
||||
|
||||
/* Define to 1 if you have the `z' library (-lz). */
|
||||
#define HAVE_LIBZ 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the `pow' function. */
|
||||
#define HAVE_POW 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to the sub-directory where libtool stores uninstalled libraries. */
|
||||
#define LT_OBJDIR ".libs/"
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "libpng"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT "png-mng-implement@lists.sourceforge.net"
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "libpng"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "libpng 1.6.37"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "libpng"
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "1.6.37"
|
||||
|
||||
/* Turn on ARM Neon optimizations at run-time */
|
||||
/* #undef PNG_ARM_NEON_API_SUPPORTED */
|
||||
|
||||
/* Check for ARM Neon support at run-time */
|
||||
/* #undef PNG_ARM_NEON_CHECK_SUPPORTED */
|
||||
|
||||
/* Enable ARM Neon optimizations */
|
||||
/* #undef PNG_ARM_NEON_OPT */
|
||||
|
||||
/* Enable Intel SSE optimizations */
|
||||
/* #undef PNG_INTEL_SSE_OPT */
|
||||
|
||||
/* Turn on MIPS MSA optimizations at run-time */
|
||||
/* #undef PNG_MIPS_MSA_API_SUPPORTED */
|
||||
|
||||
/* Check for MIPS MSA support at run-time */
|
||||
/* #undef PNG_MIPS_MSA_CHECK_SUPPORTED */
|
||||
|
||||
/* Enable MIPS MSA optimizations */
|
||||
/* #undef PNG_MIPS_MSA_OPT */
|
||||
|
||||
/* Turn on POWERPC VSX optimizations at run-time */
|
||||
/* #undef PNG_POWERPC_VSX_API_SUPPORTED */
|
||||
|
||||
/* Check for POWERPC VSX support at run-time */
|
||||
/* #undef PNG_POWERPC_VSX_CHECK_SUPPORTED */
|
||||
|
||||
/* Enable POWERPC VSX optimizations */
|
||||
/* #undef PNG_POWERPC_VSX_OPT */
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
/* #undef TM_IN_SYS_TIME */
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "1.6.37"
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
/* Define to the equivalent of the C99 'restrict' keyword, or to
|
||||
nothing if this is not supported. Do not define if restrict is
|
||||
supported directly. */
|
||||
#define restrict __restrict
|
||||
/* Work around a bug in Sun C++: it does not support _Restrict or
|
||||
__restrict__, even though the corresponding Sun C compiler ends up with
|
||||
"#define restrict _Restrict" or "#define restrict __restrict__" in the
|
||||
previous line. Perhaps some future version of Sun C++ will work with
|
||||
restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
|
||||
#if defined __SUNPRO_CC && !defined __RESTRICT
|
||||
# define _Restrict
|
||||
# define __restrict__
|
||||
#endif
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
/* #undef size_t */
|
File diff suppressed because it is too large
Load diff
|
@ -1,112 +0,0 @@
|
|||
contrib/libtests/pngimage.o: contrib/libtests/pngimage.c \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/assert.h config.h \
|
||||
F:/lpng1637/png.h F:/lpng1637/pnglibconf.h F:/lpng1637/pngconf.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/assert.h:
|
||||
|
||||
config.h:
|
||||
|
||||
F:/lpng1637/png.h:
|
||||
|
||||
F:/lpng1637/pnglibconf.h:
|
||||
|
||||
F:/lpng1637/pngconf.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h:
|
|
@ -1,111 +0,0 @@
|
|||
contrib/libtests/pngstest.o: contrib/libtests/pngstest.c \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/ctype.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/math.h config.h \
|
||||
F:/lpng1637/png.h F:/lpng1637/pnglibconf.h F:/lpng1637/pngconf.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h \
|
||||
contrib/libtests/../tools/sRGB.h contrib/libtests/pngstest-errors.h
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/ctype.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/math.h:
|
||||
|
||||
config.h:
|
||||
|
||||
F:/lpng1637/png.h:
|
||||
|
||||
F:/lpng1637/pnglibconf.h:
|
||||
|
||||
F:/lpng1637/pngconf.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h:
|
||||
|
||||
contrib/libtests/../tools/sRGB.h:
|
||||
|
||||
contrib/libtests/pngstest-errors.h:
|
|
@ -1,95 +0,0 @@
|
|||
contrib/libtests/pngunknown.o: contrib/libtests/pngunknown.c \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h F:/lpng1637/png.h \
|
||||
F:/lpng1637/pnglibconf.h F:/lpng1637/pngconf.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h:
|
||||
|
||||
F:/lpng1637/png.h:
|
||||
|
||||
F:/lpng1637/pnglibconf.h:
|
||||
|
||||
F:/lpng1637/pngconf.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h:
|
|
@ -1,150 +0,0 @@
|
|||
contrib/libtests/pngvalid.o: contrib/libtests/pngvalid.c \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/signal.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_signal.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h config.h \
|
||||
F:/lpng1637/png.h F:/lpng1637/pnglibconf.h F:/lpng1637/pngconf.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h \
|
||||
C:/msys64/mingw64/include/zlib.h C:/msys64/mingw64/include/zconf.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/float.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/float.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/math.h \
|
||||
contrib/libtests/../visupng/cexcept.h
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/signal.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_signal.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
config.h:
|
||||
|
||||
F:/lpng1637/png.h:
|
||||
|
||||
F:/lpng1637/pnglibconf.h:
|
||||
|
||||
F:/lpng1637/pngconf.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h:
|
||||
|
||||
C:/msys64/mingw64/include/zlib.h:
|
||||
|
||||
C:/msys64/mingw64/include/zconf.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/float.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/float.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/math.h:
|
||||
|
||||
contrib/libtests/../visupng/cexcept.h:
|
|
@ -1,100 +0,0 @@
|
|||
contrib/libtests/timepng.o: contrib/libtests/timepng.c \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h config.h \
|
||||
F:/lpng1637/png.h F:/lpng1637/pnglibconf.h F:/lpng1637/pngconf.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h:
|
||||
|
||||
config.h:
|
||||
|
||||
F:/lpng1637/png.h:
|
||||
|
||||
F:/lpng1637/pnglibconf.h:
|
||||
|
||||
F:/lpng1637/pngconf.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h:
|
|
@ -1,93 +0,0 @@
|
|||
contrib/tools/png-fix-itxt.o: contrib/tools/png-fix-itxt.c \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
|
||||
C:/msys64/mingw64/include/zlib.h C:/msys64/mingw64/include/zconf.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
C:/msys64/mingw64/include/zlib.h:
|
||||
|
||||
C:/msys64/mingw64/include/zconf.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h:
|
|
@ -1,144 +0,0 @@
|
|||
contrib/tools/pngcp.o: contrib/tools/pngcp.c pnglibconf.h config.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
|
||||
F:/lpng1637/png.h F:/lpng1637/pngconf.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/assert.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/stat.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h \
|
||||
C:/msys64/mingw64/include/zlib.h C:/msys64/mingw64/include/zconf.h
|
||||
|
||||
pnglibconf.h:
|
||||
|
||||
config.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
F:/lpng1637/png.h:
|
||||
|
||||
F:/lpng1637/pngconf.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/assert.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/stat.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stat64.h:
|
||||
|
||||
C:/msys64/mingw64/include/zlib.h:
|
||||
|
||||
C:/msys64/mingw64/include/zconf.h:
|
|
@ -1,139 +0,0 @@
|
|||
contrib/tools/pngfix.o: contrib/tools/pngfix.c \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/ctype.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/assert.h F:/lpng1637/png.h \
|
||||
F:/lpng1637/pnglibconf.h F:/lpng1637/pngconf.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h \
|
||||
C:/msys64/mingw64/include/zlib.h C:/msys64/mingw64/include/zconf.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h \
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h \
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdlib.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_mac.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_secapi.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/vadefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_directx.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sdks/_mingw_ddk.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_wstdlib.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/limits.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include-fixed/syslimits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/limits.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdlib_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/malloc.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdio.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_off_t.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/swprintf.inl:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/stdio_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/string.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/string_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/ctype.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/errno.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/assert.h:
|
||||
|
||||
F:/lpng1637/png.h:
|
||||
|
||||
F:/lpng1637/pnglibconf.h:
|
||||
|
||||
F:/lpng1637/pngconf.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/setjmp.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/time.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_timeval.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/timeb.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sec_api/sys/timeb_s.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_time.h:
|
||||
|
||||
C:/msys64/mingw64/include/zlib.h:
|
||||
|
||||
C:/msys64/mingw64/include/zconf.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/sys/types.h:
|
||||
|
||||
C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/9.1.0/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/_mingw_stdarg.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/unistd.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/io.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/process.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/corecrt_startup.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/getopt.h:
|
||||
|
||||
C:/msys64/mingw64/x86_64-w64-mingw32/include/pthread_unistd.h:
|
127
libs/libpng-src/libpng-config.in
Normal file
127
libs/libpng-src/libpng-config.in
Normal file
|
@ -0,0 +1,127 @@
|
|||
#! /bin/sh
|
||||
|
||||
# libpng-config
|
||||
# provides configuration info for libpng.
|
||||
|
||||
# Copyright (C) 2002, 2004, 2006, 2007 Glenn Randers-Pehrson
|
||||
|
||||
# This code is released under the libpng license.
|
||||
# For conditions of distribution and use, see the disclaimer
|
||||
# and license in png.h
|
||||
|
||||
# Modeled after libxml-config.
|
||||
|
||||
version="@PNGLIB_VERSION@"
|
||||
prefix="@prefix@"
|
||||
exec_prefix="@exec_prefix@"
|
||||
libdir="@libdir@"
|
||||
includedir="@includedir@/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@"
|
||||
libs="-lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@"
|
||||
all_libs="-lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ @LIBS@"
|
||||
I_opts="-I${includedir}"
|
||||
L_opts="-L${libdir}"
|
||||
R_opts=""
|
||||
cppflags=""
|
||||
ccopts=""
|
||||
ldopts=""
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<EOF
|
||||
Usage: $0 [OPTION] ...
|
||||
|
||||
Known values for OPTION are:
|
||||
|
||||
--prefix print libpng prefix
|
||||
--libdir print path to directory containing library
|
||||
--libs print library linking information
|
||||
--ccopts print compiler options
|
||||
--cppflags print pre-processor flags
|
||||
--cflags print preprocessor flags, I_opts, and compiler options
|
||||
--I_opts print "-I" include options
|
||||
--L_opts print linker "-L" flags for dynamic linking
|
||||
--R_opts print dynamic linker "-R" or "-rpath" flags
|
||||
--ldopts print linker options
|
||||
--ldflags print linker flags (ldopts, L_opts, R_opts, and libs)
|
||||
--static revise subsequent outputs for static linking
|
||||
--help print this help and exit
|
||||
--version print version information
|
||||
EOF
|
||||
|
||||
exit $1
|
||||
}
|
||||
|
||||
if test $# -eq 0; then
|
||||
usage 1
|
||||
fi
|
||||
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
|
||||
--prefix)
|
||||
echo ${prefix}
|
||||
;;
|
||||
|
||||
--version)
|
||||
echo ${version}
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--help)
|
||||
usage 0
|
||||
;;
|
||||
|
||||
--ccopts)
|
||||
echo ${ccopts}
|
||||
;;
|
||||
|
||||
--cppflags)
|
||||
echo ${cppflags}
|
||||
;;
|
||||
|
||||
--cflags)
|
||||
echo ${I_opts} ${cppflags} ${ccopts}
|
||||
;;
|
||||
|
||||
--libdir)
|
||||
echo ${libdir}
|
||||
;;
|
||||
|
||||
--libs)
|
||||
echo ${libs}
|
||||
;;
|
||||
|
||||
--I_opts)
|
||||
echo ${I_opts}
|
||||
;;
|
||||
|
||||
--L_opts)
|
||||
echo ${L_opts}
|
||||
;;
|
||||
|
||||
--R_opts)
|
||||
echo ${R_opts}
|
||||
;;
|
||||
|
||||
--ldopts)
|
||||
echo ${ldopts}
|
||||
;;
|
||||
|
||||
--ldflags)
|
||||
echo ${ldopts} ${L_opts} ${R_opts} ${libs}
|
||||
;;
|
||||
|
||||
--static)
|
||||
R_opts=""
|
||||
libs=${all_libs}
|
||||
;;
|
||||
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
exit 0
|
|
@ -1,12 +0,0 @@
|
|||
prefix=/mingw32
|
||||
exec_prefix=${prefix}
|
||||
libdir=${exec_prefix}/lib
|
||||
includedir=${prefix}/include/libpng16
|
||||
|
||||
Name: libpng
|
||||
Description: Loads and saves PNG files
|
||||
Version: 1.6.37
|
||||
Requires: zlib
|
||||
Libs: -L${libdir} -lpng16
|
||||
Libs.private: -lz
|
||||
Cflags: -I${includedir}
|
12
libs/libpng-src/libpng.pc.in
Normal file
12
libs/libpng-src/libpng.pc.in
Normal file
|
@ -0,0 +1,12 @@
|
|||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
|
||||
|
||||
Name: libpng
|
||||
Description: Loads and saves PNG files
|
||||
Version: @PNGLIB_VERSION@
|
||||
Requires: zlib
|
||||
Libs: -L${libdir} -lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@
|
||||
Libs.private: @LIBS@
|
||||
Cflags: -I${includedir}
|
11661
libs/libpng-src/libtool
11661
libs/libpng-src/libtool
File diff suppressed because it is too large
Load diff
|
@ -1,220 +0,0 @@
|
|||
/* pnglibconf.h - library build configuration */
|
||||
|
||||
/* libpng version 1.6.37 */
|
||||
|
||||
/* Copyright (c) 2018-2019 Cosmin Truta */
|
||||
/* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */
|
||||
|
||||
/* This code is released under the libpng license. */
|
||||
/* For conditions of distribution and use, see the disclaimer */
|
||||
/* and license in png.h */
|
||||
|
||||
/* pnglibconf.h */
|
||||
/* Machine generated file: DO NOT EDIT */
|
||||
/* Derived from: scripts/pnglibconf.dfa */
|
||||
#ifndef PNGLCONF_H
|
||||
#define PNGLCONF_H
|
||||
/* options */
|
||||
#define PNG_16BIT_SUPPORTED
|
||||
#define PNG_ALIGNED_MEMORY_SUPPORTED
|
||||
/*#undef PNG_ARM_NEON_API_SUPPORTED*/
|
||||
/*#undef PNG_ARM_NEON_CHECK_SUPPORTED*/
|
||||
#define PNG_BENIGN_ERRORS_SUPPORTED
|
||||
#define PNG_BENIGN_READ_ERRORS_SUPPORTED
|
||||
/*#undef PNG_BENIGN_WRITE_ERRORS_SUPPORTED*/
|
||||
#define PNG_BUILD_GRAYSCALE_PALETTE_SUPPORTED
|
||||
#define PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED
|
||||
#define PNG_COLORSPACE_SUPPORTED
|
||||
#define PNG_CONSOLE_IO_SUPPORTED
|
||||
#define PNG_CONVERT_tIME_SUPPORTED
|
||||
#define PNG_EASY_ACCESS_SUPPORTED
|
||||
/*#undef PNG_ERROR_NUMBERS_SUPPORTED*/
|
||||
#define PNG_ERROR_TEXT_SUPPORTED
|
||||
#define PNG_FIXED_POINT_SUPPORTED
|
||||
#define PNG_FLOATING_ARITHMETIC_SUPPORTED
|
||||
#define PNG_FLOATING_POINT_SUPPORTED
|
||||
#define PNG_FORMAT_AFIRST_SUPPORTED
|
||||
#define PNG_FORMAT_BGR_SUPPORTED
|
||||
#define PNG_GAMMA_SUPPORTED
|
||||
#define PNG_GET_PALETTE_MAX_SUPPORTED
|
||||
#define PNG_HANDLE_AS_UNKNOWN_SUPPORTED
|
||||
#define PNG_INCH_CONVERSIONS_SUPPORTED
|
||||
#define PNG_INFO_IMAGE_SUPPORTED
|
||||
#define PNG_IO_STATE_SUPPORTED
|
||||
#define PNG_MNG_FEATURES_SUPPORTED
|
||||
#define PNG_POINTER_INDEXING_SUPPORTED
|
||||
/*#undef PNG_POWERPC_VSX_API_SUPPORTED*/
|
||||
/*#undef PNG_POWERPC_VSX_CHECK_SUPPORTED*/
|
||||
#define PNG_PROGRESSIVE_READ_SUPPORTED
|
||||
#define PNG_READ_16BIT_SUPPORTED
|
||||
#define PNG_READ_ALPHA_MODE_SUPPORTED
|
||||
#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED
|
||||
#define PNG_READ_BACKGROUND_SUPPORTED
|
||||
#define PNG_READ_BGR_SUPPORTED
|
||||
#define PNG_READ_CHECK_FOR_INVALID_INDEX_SUPPORTED
|
||||
#define PNG_READ_COMPOSITE_NODIV_SUPPORTED
|
||||
#define PNG_READ_COMPRESSED_TEXT_SUPPORTED
|
||||
#define PNG_READ_EXPAND_16_SUPPORTED
|
||||
#define PNG_READ_EXPAND_SUPPORTED
|
||||
#define PNG_READ_FILLER_SUPPORTED
|
||||
#define PNG_READ_GAMMA_SUPPORTED
|
||||
#define PNG_READ_GET_PALETTE_MAX_SUPPORTED
|
||||
#define PNG_READ_GRAY_TO_RGB_SUPPORTED
|
||||
#define PNG_READ_INTERLACING_SUPPORTED
|
||||
#define PNG_READ_INT_FUNCTIONS_SUPPORTED
|
||||
#define PNG_READ_INVERT_ALPHA_SUPPORTED
|
||||
#define PNG_READ_INVERT_SUPPORTED
|
||||
#define PNG_READ_OPT_PLTE_SUPPORTED
|
||||
#define PNG_READ_PACKSWAP_SUPPORTED
|
||||
#define PNG_READ_PACK_SUPPORTED
|
||||
#define PNG_READ_QUANTIZE_SUPPORTED
|
||||
#define PNG_READ_RGB_TO_GRAY_SUPPORTED
|
||||
#define PNG_READ_SCALE_16_TO_8_SUPPORTED
|
||||
#define PNG_READ_SHIFT_SUPPORTED
|
||||
#define PNG_READ_STRIP_16_TO_8_SUPPORTED
|
||||
#define PNG_READ_STRIP_ALPHA_SUPPORTED
|
||||
#define PNG_READ_SUPPORTED
|
||||
#define PNG_READ_SWAP_ALPHA_SUPPORTED
|
||||
#define PNG_READ_SWAP_SUPPORTED
|
||||
#define PNG_READ_TEXT_SUPPORTED
|
||||
#define PNG_READ_TRANSFORMS_SUPPORTED
|
||||
#define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#define PNG_READ_USER_CHUNKS_SUPPORTED
|
||||
#define PNG_READ_USER_TRANSFORM_SUPPORTED
|
||||
#define PNG_READ_bKGD_SUPPORTED
|
||||
#define PNG_READ_cHRM_SUPPORTED
|
||||
#define PNG_READ_eXIf_SUPPORTED
|
||||
#define PNG_READ_gAMA_SUPPORTED
|
||||
#define PNG_READ_hIST_SUPPORTED
|
||||
#define PNG_READ_iCCP_SUPPORTED
|
||||
#define PNG_READ_iTXt_SUPPORTED
|
||||
#define PNG_READ_oFFs_SUPPORTED
|
||||
#define PNG_READ_pCAL_SUPPORTED
|
||||
#define PNG_READ_pHYs_SUPPORTED
|
||||
#define PNG_READ_sBIT_SUPPORTED
|
||||
#define PNG_READ_sCAL_SUPPORTED
|
||||
#define PNG_READ_sPLT_SUPPORTED
|
||||
#define PNG_READ_sRGB_SUPPORTED
|
||||
#define PNG_READ_tEXt_SUPPORTED
|
||||
#define PNG_READ_tIME_SUPPORTED
|
||||
#define PNG_READ_tRNS_SUPPORTED
|
||||
#define PNG_READ_zTXt_SUPPORTED
|
||||
#define PNG_SAVE_INT_32_SUPPORTED
|
||||
#define PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#define PNG_SEQUENTIAL_READ_SUPPORTED
|
||||
#define PNG_SETJMP_SUPPORTED
|
||||
#define PNG_SET_OPTION_SUPPORTED
|
||||
#define PNG_SET_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#define PNG_SET_USER_LIMITS_SUPPORTED
|
||||
#define PNG_SIMPLIFIED_READ_AFIRST_SUPPORTED
|
||||
#define PNG_SIMPLIFIED_READ_BGR_SUPPORTED
|
||||
#define PNG_SIMPLIFIED_READ_SUPPORTED
|
||||
#define PNG_SIMPLIFIED_WRITE_AFIRST_SUPPORTED
|
||||
#define PNG_SIMPLIFIED_WRITE_BGR_SUPPORTED
|
||||
#define PNG_SIMPLIFIED_WRITE_STDIO_SUPPORTED
|
||||
#define PNG_SIMPLIFIED_WRITE_SUPPORTED
|
||||
#define PNG_STDIO_SUPPORTED
|
||||
#define PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#define PNG_TEXT_SUPPORTED
|
||||
#define PNG_TIME_RFC1123_SUPPORTED
|
||||
#define PNG_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#define PNG_USER_CHUNKS_SUPPORTED
|
||||
#define PNG_USER_LIMITS_SUPPORTED
|
||||
#define PNG_USER_MEM_SUPPORTED
|
||||
#define PNG_USER_TRANSFORM_INFO_SUPPORTED
|
||||
#define PNG_USER_TRANSFORM_PTR_SUPPORTED
|
||||
#define PNG_WARNINGS_SUPPORTED
|
||||
#define PNG_WRITE_16BIT_SUPPORTED
|
||||
#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED
|
||||
#define PNG_WRITE_BGR_SUPPORTED
|
||||
#define PNG_WRITE_CHECK_FOR_INVALID_INDEX_SUPPORTED
|
||||
#define PNG_WRITE_COMPRESSED_TEXT_SUPPORTED
|
||||
#define PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED
|
||||
#define PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED
|
||||
#define PNG_WRITE_FILLER_SUPPORTED
|
||||
#define PNG_WRITE_FILTER_SUPPORTED
|
||||
#define PNG_WRITE_FLUSH_SUPPORTED
|
||||
#define PNG_WRITE_GET_PALETTE_MAX_SUPPORTED
|
||||
#define PNG_WRITE_INTERLACING_SUPPORTED
|
||||
#define PNG_WRITE_INT_FUNCTIONS_SUPPORTED
|
||||
#define PNG_WRITE_INVERT_ALPHA_SUPPORTED
|
||||
#define PNG_WRITE_INVERT_SUPPORTED
|
||||
#define PNG_WRITE_OPTIMIZE_CMF_SUPPORTED
|
||||
#define PNG_WRITE_PACKSWAP_SUPPORTED
|
||||
#define PNG_WRITE_PACK_SUPPORTED
|
||||
#define PNG_WRITE_SHIFT_SUPPORTED
|
||||
#define PNG_WRITE_SUPPORTED
|
||||
#define PNG_WRITE_SWAP_ALPHA_SUPPORTED
|
||||
#define PNG_WRITE_SWAP_SUPPORTED
|
||||
#define PNG_WRITE_TEXT_SUPPORTED
|
||||
#define PNG_WRITE_TRANSFORMS_SUPPORTED
|
||||
#define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED
|
||||
#define PNG_WRITE_USER_TRANSFORM_SUPPORTED
|
||||
#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED
|
||||
#define PNG_WRITE_bKGD_SUPPORTED
|
||||
#define PNG_WRITE_cHRM_SUPPORTED
|
||||
#define PNG_WRITE_eXIf_SUPPORTED
|
||||
#define PNG_WRITE_gAMA_SUPPORTED
|
||||
#define PNG_WRITE_hIST_SUPPORTED
|
||||
#define PNG_WRITE_iCCP_SUPPORTED
|
||||
#define PNG_WRITE_iTXt_SUPPORTED
|
||||
#define PNG_WRITE_oFFs_SUPPORTED
|
||||
#define PNG_WRITE_pCAL_SUPPORTED
|
||||
#define PNG_WRITE_pHYs_SUPPORTED
|
||||
#define PNG_WRITE_sBIT_SUPPORTED
|
||||
#define PNG_WRITE_sCAL_SUPPORTED
|
||||
#define PNG_WRITE_sPLT_SUPPORTED
|
||||
#define PNG_WRITE_sRGB_SUPPORTED
|
||||
#define PNG_WRITE_tEXt_SUPPORTED
|
||||
#define PNG_WRITE_tIME_SUPPORTED
|
||||
#define PNG_WRITE_tRNS_SUPPORTED
|
||||
#define PNG_WRITE_zTXt_SUPPORTED
|
||||
#define PNG_bKGD_SUPPORTED
|
||||
#define PNG_cHRM_SUPPORTED
|
||||
#define PNG_eXIf_SUPPORTED
|
||||
#define PNG_gAMA_SUPPORTED
|
||||
#define PNG_hIST_SUPPORTED
|
||||
#define PNG_iCCP_SUPPORTED
|
||||
#define PNG_iTXt_SUPPORTED
|
||||
#define PNG_oFFs_SUPPORTED
|
||||
#define PNG_pCAL_SUPPORTED
|
||||
#define PNG_pHYs_SUPPORTED
|
||||
#define PNG_sBIT_SUPPORTED
|
||||
#define PNG_sCAL_SUPPORTED
|
||||
#define PNG_sPLT_SUPPORTED
|
||||
#define PNG_sRGB_SUPPORTED
|
||||
#define PNG_tEXt_SUPPORTED
|
||||
#define PNG_tIME_SUPPORTED
|
||||
#define PNG_tRNS_SUPPORTED
|
||||
#define PNG_zTXt_SUPPORTED
|
||||
#define PNG_STATIC
|
||||
/* end of options */
|
||||
/* settings */
|
||||
#define PNG_API_RULE 0
|
||||
#define PNG_DEFAULT_READ_MACROS 1
|
||||
#define PNG_GAMMA_THRESHOLD_FIXED 5000
|
||||
#define PNG_IDAT_READ_SIZE PNG_ZBUF_SIZE
|
||||
#define PNG_INFLATE_BUF_SIZE 1024
|
||||
#define PNG_LINKAGE_API extern
|
||||
#define PNG_LINKAGE_CALLBACK extern
|
||||
#define PNG_LINKAGE_DATA extern
|
||||
#define PNG_LINKAGE_FUNCTION extern
|
||||
#define PNG_MAX_GAMMA_8 11
|
||||
#define PNG_QUANTIZE_BLUE_BITS 5
|
||||
#define PNG_QUANTIZE_GREEN_BITS 5
|
||||
#define PNG_QUANTIZE_RED_BITS 5
|
||||
#define PNG_TEXT_Z_DEFAULT_COMPRESSION (-1)
|
||||
#define PNG_TEXT_Z_DEFAULT_STRATEGY 0
|
||||
#define PNG_USER_CHUNK_CACHE_MAX 1000
|
||||
#define PNG_USER_CHUNK_MALLOC_MAX 8000000
|
||||
#define PNG_USER_HEIGHT_MAX 1000000
|
||||
#define PNG_USER_WIDTH_MAX 1000000
|
||||
#define PNG_ZBUF_SIZE 8192
|
||||
#define PNG_ZLIB_VERNUM 0 /* unknown */
|
||||
#define PNG_Z_DEFAULT_COMPRESSION (-1)
|
||||
#define PNG_Z_DEFAULT_NOFILTER_STRATEGY 0
|
||||
#define PNG_Z_DEFAULT_STRATEGY 1
|
||||
#define PNG_sCAL_PRECISION 5
|
||||
#define PNG_sRGB_PROFILE_CHECKS 2
|
||||
/* end of settings */
|
||||
#endif /* PNGLCONF_H */
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
timestamp for config.h
|
42
src/b_bot.c
42
src/b_bot.c
|
@ -31,7 +31,6 @@ static boolean panic = false;
|
|||
static UINT8 flymode = 0;
|
||||
static boolean spinmode = false;
|
||||
static boolean thinkfly = false;
|
||||
static mobj_t *overlay;
|
||||
|
||||
static inline void B_ResetAI(void)
|
||||
{
|
||||
|
@ -44,7 +43,7 @@ static inline void B_ResetAI(void)
|
|||
thinkfly = false;
|
||||
}
|
||||
|
||||
static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cmd)
|
||||
static void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cmd)
|
||||
{
|
||||
boolean forward=false, backward=false, left=false, right=false, jump=false, spin=false;
|
||||
|
||||
|
@ -57,7 +56,7 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
|
|||
|
||||
fixed_t dist = P_AproxDistance(sonic->x - tails->x, sonic->y - tails->y);
|
||||
fixed_t zdist = flip * (sonic->z - tails->z);
|
||||
angle_t ang = R_PointToAngle2(tails->x, tails->y, sonic->x, sonic->y);
|
||||
angle_t ang = sonic->angle;
|
||||
fixed_t pmom = P_AproxDistance(sonic->momx, sonic->momy);
|
||||
fixed_t bmom = P_AproxDistance(tails->momx, tails->momy);
|
||||
fixed_t followmax = 128 * 8 * scale; // Max follow distance before AI begins to enter "panic" state
|
||||
|
@ -66,6 +65,10 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
|
|||
fixed_t comfortheight = 96 * scale;
|
||||
fixed_t touchdist = 24 * scale;
|
||||
boolean stalled = (bmom < scale >> 1) && dist > followthres; // Helps to see if the AI is having trouble catching up
|
||||
boolean samepos = (sonic->x == tails->x && sonic->y == tails->y);
|
||||
|
||||
if (!samepos)
|
||||
ang = R_PointToAngle2(tails->x, tails->y, sonic->x, sonic->y);
|
||||
|
||||
// We can't follow Sonic if he's not around!
|
||||
if (!sonic || sonic->health <= 0)
|
||||
|
@ -136,7 +139,7 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
|
|||
// ********
|
||||
// FLY MODE
|
||||
// spinmode check
|
||||
if (spinmode)
|
||||
if (spinmode || player->exiting)
|
||||
thinkfly = false;
|
||||
else
|
||||
{
|
||||
|
@ -155,7 +158,7 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
|
|||
// Check positioning
|
||||
// Thinker for co-op flight
|
||||
if (!(water || pmom || bmom)
|
||||
&& (dist < touchdist)
|
||||
&& (dist < touchdist && !samepos)
|
||||
&& !(pcmd->forwardmove || pcmd->sidemove || player->dashspeed)
|
||||
&& P_IsObjectOnGround(sonic) && P_IsObjectOnGround(tails)
|
||||
&& !(player->pflags & PF_STASIS)
|
||||
|
@ -164,6 +167,12 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
|
|||
else
|
||||
thinkfly = false;
|
||||
|
||||
// Set carried state
|
||||
if (player->powers[pw_carry] == CR_PLAYER && sonic->tracer == tails)
|
||||
{
|
||||
flymode = 2;
|
||||
}
|
||||
|
||||
// Ready for takeoff
|
||||
if (flymode == 1)
|
||||
{
|
||||
|
@ -176,12 +185,6 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
|
|||
// Abort if the player moves away or spins
|
||||
if (dist > followthres || player->dashspeed)
|
||||
flymode = 0;
|
||||
|
||||
// Set carried state
|
||||
if (player->powers[pw_carry] == CR_PLAYER && sonic->tracer == tails)
|
||||
{
|
||||
flymode = 2;
|
||||
}
|
||||
}
|
||||
// Read player inputs while carrying
|
||||
else if (flymode == 2)
|
||||
|
@ -336,17 +339,20 @@ static inline void B_BuildTailsTiccmd(mobj_t *sonic, mobj_t *tails, ticcmd_t *cm
|
|||
// Thinkfly overlay
|
||||
if (thinkfly)
|
||||
{
|
||||
if (overlay == NULL)
|
||||
if (!tails->target)
|
||||
{
|
||||
overlay = P_SpawnMobjFromMobj(tails, 0, 0, 0, MT_OVERLAY);
|
||||
P_SetTarget(&overlay->target, tails);
|
||||
P_SetMobjState(overlay, S_FLIGHTINDICATOR);
|
||||
P_SetTarget(&tails->target, P_SpawnMobjFromMobj(tails, 0, 0, 0, MT_OVERLAY));
|
||||
if (tails->target)
|
||||
{
|
||||
P_SetTarget(&tails->target->target, tails);
|
||||
P_SetMobjState(tails->target, S_FLIGHTINDICATOR);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (overlay != NULL)
|
||||
else if (tails->target && tails->target->type == MT_OVERLAY && tails->target->state == states+S_FLIGHTINDICATOR)
|
||||
{
|
||||
P_RemoveMobj(overlay);
|
||||
overlay = NULL;
|
||||
P_RemoveMobj(tails->target);
|
||||
P_SetTarget(&tails->target, NULL);
|
||||
}
|
||||
|
||||
// Turn the virtual keypresses into ticcmd_t.
|
||||
|
|
|
@ -1301,10 +1301,23 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
|
|||
|
||||
M_Memcpy(netbuffer->u.serverinfo.mapmd5, mapmd5, 16);
|
||||
|
||||
if (strcmp(mapheaderinfo[gamemap-1]->lvlttl, ""))
|
||||
strncpy(netbuffer->u.serverinfo.maptitle, (char *)mapheaderinfo[gamemap-1]->lvlttl, 33);
|
||||
if (*mapheaderinfo[gamemap-1]->lvlttl)
|
||||
{
|
||||
char *read = mapheaderinfo[gamemap-1]->lvlttl, *writ = netbuffer->u.serverinfo.maptitle;
|
||||
while (writ < (netbuffer->u.serverinfo.maptitle+32) && *read != '\0')
|
||||
{
|
||||
if (!(*read & 0x80))
|
||||
{
|
||||
*writ = toupper(*read);
|
||||
writ++;
|
||||
}
|
||||
read++;
|
||||
}
|
||||
*writ = '\0';
|
||||
//strncpy(netbuffer->u.serverinfo.maptitle, (char *)mapheaderinfo[gamemap-1]->lvlttl, 33);
|
||||
}
|
||||
else
|
||||
strncpy(netbuffer->u.serverinfo.maptitle, "UNKNOWN", 33);
|
||||
strncpy(netbuffer->u.serverinfo.maptitle, "UNKNOWN", 32);
|
||||
|
||||
netbuffer->u.serverinfo.maptitle[32] = '\0';
|
||||
|
||||
|
@ -1358,7 +1371,11 @@ static void SV_SendPlayerInfo(INT32 node)
|
|||
|
||||
netbuffer->u.playerinfo[i].score = LONG(players[i].score);
|
||||
netbuffer->u.playerinfo[i].timeinserver = SHORT((UINT16)(players[i].jointime / TICRATE));
|
||||
netbuffer->u.playerinfo[i].skin = (UINT8)players[i].skin;
|
||||
netbuffer->u.playerinfo[i].skin = (UINT8)(players[i].skin
|
||||
#ifdef DEVELOP // it's safe to do this only because PLAYERINFO isn't read by the game itself
|
||||
% 3
|
||||
#endif
|
||||
);
|
||||
|
||||
// Extra data
|
||||
netbuffer->u.playerinfo[i].data = 0; //players[i].skincolor;
|
||||
|
@ -1616,7 +1633,7 @@ static void CL_LoadReceivedSavegame(void)
|
|||
{
|
||||
CONS_Printf(": %s", mapheaderinfo[gamemap-1]->lvlttl);
|
||||
if (!(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE))
|
||||
CONS_Printf(M_GetText(" ZONE"));
|
||||
CONS_Printf(M_GetText(" Zone"));
|
||||
if (actnum > 0)
|
||||
CONS_Printf(" %2d", actnum);
|
||||
}
|
||||
|
@ -4602,7 +4619,7 @@ static void Local_Maketic(INT32 realtics)
|
|||
{
|
||||
I_OsPolling(); // I_Getevent
|
||||
D_ProcessEvents(); // menu responder, cons responder,
|
||||
// game responder calls HU_Responder, AM_Responder, F_Responder,
|
||||
// game responder calls HU_Responder, AM_Responder,
|
||||
// and G_MapEventsToControls
|
||||
if (!dedicated) rendergametic = gametic;
|
||||
// translate inputs (keyboard/mouse/joystick) into game controls
|
||||
|
|
131
src/d_main.c
131
src/d_main.c
|
@ -180,9 +180,6 @@ void D_ProcessEvents(void)
|
|||
if (M_ScreenshotResponder(ev))
|
||||
continue; // ate the event
|
||||
|
||||
if (WipeStageTitle)
|
||||
continue;
|
||||
|
||||
if (gameaction == ga_nothing && gamestate == GS_TITLESCREEN)
|
||||
{
|
||||
if (cht_Responder(ev))
|
||||
|
@ -294,8 +291,11 @@ static void D_Display(void)
|
|||
switch (gamestate)
|
||||
{
|
||||
case GS_TITLESCREEN:
|
||||
F_TitleScreenDrawer();
|
||||
break;
|
||||
if (!titlemapinaction || !curbghide) {
|
||||
F_TitleScreenDrawer();
|
||||
break;
|
||||
}
|
||||
/* FALLTHRU */
|
||||
case GS_LEVEL:
|
||||
if (!gametic)
|
||||
break;
|
||||
|
@ -366,11 +366,56 @@ static void D_Display(void)
|
|||
|
||||
// clean up border stuff
|
||||
// see if the border needs to be initially drawn
|
||||
if (gamestate == GS_LEVEL)
|
||||
if (gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction && curbghide && (!hidetitlemap)))
|
||||
{
|
||||
// draw the view directly
|
||||
|
||||
D_Render();
|
||||
if (!automapactive && !dedicated && cv_renderview.value)
|
||||
{
|
||||
if (players[displayplayer].mo || players[displayplayer].playerstate == PST_DEAD)
|
||||
{
|
||||
topleft = screens[0] + viewwindowy*vid.width + viewwindowx;
|
||||
objectsdrawn = 0;
|
||||
#ifdef HWRENDER
|
||||
if (rendermode != render_soft)
|
||||
HWR_RenderPlayerView(0, &players[displayplayer]);
|
||||
else
|
||||
#endif
|
||||
if (rendermode != render_none)
|
||||
R_RenderPlayerView(&players[displayplayer]);
|
||||
}
|
||||
|
||||
// render the second screen
|
||||
if (splitscreen && players[secondarydisplayplayer].mo)
|
||||
{
|
||||
#ifdef HWRENDER
|
||||
if (rendermode != render_soft)
|
||||
HWR_RenderPlayerView(1, &players[secondarydisplayplayer]);
|
||||
else
|
||||
#endif
|
||||
if (rendermode != render_none)
|
||||
{
|
||||
viewwindowy = vid.height / 2;
|
||||
M_Memcpy(ylookup, ylookup2, viewheight*sizeof (ylookup[0]));
|
||||
|
||||
topleft = screens[0] + viewwindowy*vid.width + viewwindowx;
|
||||
|
||||
R_RenderPlayerView(&players[secondarydisplayplayer]);
|
||||
|
||||
viewwindowy = 0;
|
||||
M_Memcpy(ylookup, ylookup1, viewheight*sizeof (ylookup[0]));
|
||||
}
|
||||
}
|
||||
|
||||
// Image postprocessing effect
|
||||
if (rendermode == render_soft)
|
||||
{
|
||||
if (postimgtype)
|
||||
V_DoPostProcessor(0, postimgtype, postimgparam);
|
||||
if (postimgtype2)
|
||||
V_DoPostProcessor(1, postimgtype2, postimgparam2);
|
||||
}
|
||||
}
|
||||
|
||||
if (lastdraw)
|
||||
{
|
||||
|
@ -383,9 +428,14 @@ static void D_Display(void)
|
|||
lastdraw = false;
|
||||
}
|
||||
|
||||
ST_Drawer();
|
||||
F_TextPromptDrawer();
|
||||
HU_Drawer();
|
||||
if (gamestate == GS_LEVEL)
|
||||
{
|
||||
ST_Drawer();
|
||||
F_TextPromptDrawer();
|
||||
HU_Drawer();
|
||||
}
|
||||
else
|
||||
F_TitleScreenDrawer();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -420,12 +470,6 @@ static void D_Display(void)
|
|||
if (gamestate != GS_TIMEATTACK)
|
||||
CON_Drawer();
|
||||
|
||||
#ifdef LEVELWIPES
|
||||
// Running a level wipe
|
||||
if (WipeInAction && WipeInLevel)
|
||||
F_WipeTicker();
|
||||
#endif
|
||||
|
||||
M_Drawer(); // menu is drawn even on top of everything
|
||||
// focus lost moved to M_Drawer
|
||||
|
||||
|
@ -445,7 +489,6 @@ static void D_Display(void)
|
|||
{
|
||||
F_WipeEndScreen();
|
||||
// Funny.
|
||||
#ifndef LEVELWIPES
|
||||
if (WipeStageTitle && st_overlay)
|
||||
{
|
||||
lt_ticker--;
|
||||
|
@ -454,7 +497,6 @@ static void D_Display(void)
|
|||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol);
|
||||
F_WipeStartScreen();
|
||||
}
|
||||
#endif
|
||||
F_RunWipe(wipetypepost, gamestate != GS_TIMEATTACK && gamestate != GS_TITLESCREEN);
|
||||
}
|
||||
|
||||
|
@ -505,56 +547,6 @@ static void D_Display(void)
|
|||
}
|
||||
}
|
||||
|
||||
void D_Render(void)
|
||||
{
|
||||
if (!automapactive && !dedicated && cv_renderview.value)
|
||||
{
|
||||
if (players[displayplayer].mo || players[displayplayer].playerstate == PST_DEAD)
|
||||
{
|
||||
topleft = screens[0] + viewwindowy*vid.width + viewwindowx;
|
||||
objectsdrawn = 0;
|
||||
#ifdef HWRENDER
|
||||
if (rendermode != render_soft)
|
||||
HWR_RenderPlayerView(0, &players[displayplayer]);
|
||||
else
|
||||
#endif
|
||||
if (rendermode != render_none)
|
||||
R_RenderPlayerView(&players[displayplayer]);
|
||||
}
|
||||
|
||||
// render the second screen
|
||||
if (splitscreen && players[secondarydisplayplayer].mo)
|
||||
{
|
||||
#ifdef HWRENDER
|
||||
if (rendermode != render_soft)
|
||||
HWR_RenderPlayerView(1, &players[secondarydisplayplayer]);
|
||||
else
|
||||
#endif
|
||||
if (rendermode != render_none)
|
||||
{
|
||||
viewwindowy = vid.height / 2;
|
||||
M_Memcpy(ylookup, ylookup2, viewheight*sizeof (ylookup[0]));
|
||||
|
||||
topleft = screens[0] + viewwindowy*vid.width + viewwindowx;
|
||||
|
||||
R_RenderPlayerView(&players[secondarydisplayplayer]);
|
||||
|
||||
viewwindowy = 0;
|
||||
M_Memcpy(ylookup, ylookup1, viewheight*sizeof (ylookup[0]));
|
||||
}
|
||||
}
|
||||
|
||||
// Image postprocessing effect
|
||||
if (rendermode == render_soft)
|
||||
{
|
||||
if (postimgtype)
|
||||
V_DoPostProcessor(0, postimgtype, postimgparam);
|
||||
if (postimgtype2)
|
||||
V_DoPostProcessor(1, postimgtype2, postimgparam2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// D_SRB2Loop
|
||||
// =========================================================================
|
||||
|
@ -675,6 +667,7 @@ void D_SRB2Loop(void)
|
|||
|
||||
// consoleplayer -> displayplayer (hear sounds from viewpoint)
|
||||
S_UpdateSounds(); // move positional sounds
|
||||
S_UpdateClosedCaptions();
|
||||
|
||||
// check for media change, loop music..
|
||||
I_UpdateCD();
|
||||
|
@ -740,6 +733,8 @@ void D_StartTitle(void)
|
|||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
CL_ClearPlayer(i);
|
||||
|
||||
players[consoleplayer].availabilities = players[1].availabilities = R_GetSkinAvailabilities(); // players[1] is supposed to be for 2p
|
||||
|
||||
splitscreen = false;
|
||||
SplitScreen_OnChange();
|
||||
botingame = false;
|
||||
|
|
|
@ -54,7 +54,4 @@ const char *D_Home(void);
|
|||
void D_AdvanceDemo(void);
|
||||
void D_StartTitle(void);
|
||||
|
||||
/* Here for title maps */
|
||||
void D_Render(void);
|
||||
|
||||
#endif //__D_MAIN__
|
||||
|
|
|
@ -497,9 +497,9 @@ void Net_AckTicker(void)
|
|||
node_t *node = &nodes[nodei];
|
||||
if (ackpak[i].acknum && ackpak[i].senttime + NODETIMEOUT < I_GetTime())
|
||||
{
|
||||
if (ackpak[i].resentnum > 10 && (node->flags & NF_CLOSE))
|
||||
if (ackpak[i].resentnum > 20 && (node->flags & NF_CLOSE))
|
||||
{
|
||||
DEBFILE(va("ack %d sent 10 times so connection is supposed lost: node %d\n",
|
||||
DEBFILE(va("ack %d sent 20 times so connection is supposed lost: node %d\n",
|
||||
i, nodei));
|
||||
Net_CloseConnection(nodei | FORCECLOSE);
|
||||
|
||||
|
|
|
@ -355,7 +355,7 @@ static CV_PossibleValue_t inttime_cons_t[] = {{0, "MIN"}, {3600, "MAX"}, {0, NUL
|
|||
consvar_t cv_inttime = {"inttime", "10", CV_NETVAR, inttime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
static CV_PossibleValue_t coopstarposts_cons_t[] = {{0, "Per-player"}, {1, "Shared"}, {2, "Teamwork"}, {0, NULL}};
|
||||
consvar_t cv_coopstarposts = {"coopstarposts", "Teamwork", CV_NETVAR|CV_CALL|CV_CHEAT, coopstarposts_cons_t, CoopStarposts_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||
consvar_t cv_coopstarposts = {"coopstarposts", "Per-player", CV_NETVAR|CV_CALL, coopstarposts_cons_t, CoopStarposts_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
||||
static CV_PossibleValue_t cooplives_cons_t[] = {{0, "Infinite"}, {1, "Per-player"}, {2, "Avoid Game Over"}, {3, "Single pool"}, {0, NULL}};
|
||||
consvar_t cv_cooplives = {"cooplives", "Avoid Game Over", CV_NETVAR|CV_CALL|CV_CHEAT, cooplives_cons_t, CoopLives_OnChange, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
@ -1228,16 +1228,16 @@ static void SendNameAndColor(void)
|
|||
}
|
||||
else if ((foundskin = R_SkinAvailable(cv_skin.string)) != -1 && R_SkinUsable(consoleplayer, foundskin))
|
||||
{
|
||||
boolean notsame;
|
||||
//boolean notsame;
|
||||
|
||||
cv_skin.value = foundskin;
|
||||
|
||||
notsame = (cv_skin.value != players[consoleplayer].skin);
|
||||
//notsame = (cv_skin.value != players[consoleplayer].skin);
|
||||
|
||||
SetPlayerSkin(consoleplayer, cv_skin.string);
|
||||
CV_StealthSet(&cv_skin, skins[cv_skin.value].name);
|
||||
|
||||
if (notsame)
|
||||
/*if (notsame)
|
||||
{
|
||||
CV_StealthSetValue(&cv_playercolor, skins[cv_skin.value].prefcolor);
|
||||
|
||||
|
@ -1245,7 +1245,7 @@ static void SendNameAndColor(void)
|
|||
|
||||
if (players[consoleplayer].mo)
|
||||
players[consoleplayer].mo->color = (UINT8)players[consoleplayer].skincolor;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1356,15 +1356,16 @@ static void SendNameAndColor2(void)
|
|||
}
|
||||
else if ((foundskin = R_SkinAvailable(cv_skin2.string)) != -1 && R_SkinUsable(secondplaya, foundskin))
|
||||
{
|
||||
boolean notsame;
|
||||
//boolean notsame;
|
||||
|
||||
cv_skin2.value = foundskin;
|
||||
|
||||
notsame = (cv_skin2.value != players[secondplaya].skin);
|
||||
//notsame = (cv_skin2.value != players[secondplaya].skin);
|
||||
|
||||
SetPlayerSkin(secondplaya, cv_skin2.string);
|
||||
CV_StealthSet(&cv_skin2, skins[cv_skin2.value].name);
|
||||
|
||||
if (notsame)
|
||||
/*if (notsame)
|
||||
{
|
||||
CV_StealthSetValue(&cv_playercolor2, skins[players[secondplaya].skin].prefcolor);
|
||||
|
||||
|
@ -1372,7 +1373,7 @@ static void SendNameAndColor2(void)
|
|||
|
||||
if (players[secondplaya].mo)
|
||||
players[secondplaya].mo->color = players[secondplaya].skincolor;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3808,11 +3809,19 @@ static void CoopLives_OnChange(void)
|
|||
|
||||
static void ExitMove_OnChange(void)
|
||||
{
|
||||
UINT8 i;
|
||||
|
||||
if (!(netgame || multiplayer) || gametype != GT_COOP)
|
||||
return;
|
||||
|
||||
if (cv_exitmove.value)
|
||||
{
|
||||
for (i = 0; i < MAXPLAYERS; ++i)
|
||||
if (playeringame[i] && players[i].mo
|
||||
&& players[i].mo->target && players[i].mo->target->type == MT_SIGN)
|
||||
P_SetTarget(&players[i].mo->target, NULL);
|
||||
CONS_Printf(M_GetText("Players can now move after completing the level.\n"));
|
||||
}
|
||||
else
|
||||
CONS_Printf(M_GetText("Players can no longer move after completing the level.\n"));
|
||||
}
|
||||
|
@ -4289,6 +4298,8 @@ void Command_ExitGame_f(void)
|
|||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
CL_ClearPlayer(i);
|
||||
|
||||
players[consoleplayer].availabilities = players[1].availabilities = R_GetSkinAvailabilities(); // players[1] is supposed to be for 2p
|
||||
|
||||
splitscreen = false;
|
||||
SplitScreen_OnChange();
|
||||
botingame = false;
|
||||
|
@ -4349,9 +4360,9 @@ static void Command_Isgamemodified_f(void)
|
|||
if (savemoddata)
|
||||
CONS_Printf(M_GetText("modifiedgame is true, but you can save emblem and time data in this mod.\n"));
|
||||
else if (modifiedgame)
|
||||
CONS_Printf(M_GetText("modifiedgame is true, secrets will not be unlocked\n"));
|
||||
CONS_Printf(M_GetText("modifiedgame is true, extras will not be unlocked\n"));
|
||||
else
|
||||
CONS_Printf(M_GetText("modifiedgame is false, you can unlock secrets\n"));
|
||||
CONS_Printf(M_GetText("modifiedgame is false, you can unlock extras\n"));
|
||||
}
|
||||
|
||||
static void Command_Cheats_f(void)
|
||||
|
|
163
src/dehacked.c
163
src/dehacked.c
|
@ -3184,7 +3184,6 @@ static void readextraemblemdata(MYFILE *f, INT32 num)
|
|||
|
||||
// Now get the part after
|
||||
word2 = tmp += 2;
|
||||
strupr(word2);
|
||||
|
||||
value = atoi(word2); // used for numerical settings
|
||||
|
||||
|
@ -3196,22 +3195,26 @@ static void readextraemblemdata(MYFILE *f, INT32 num)
|
|||
sizeof (extraemblems[num-1].description), va("Extra emblem %d: objective", num));
|
||||
else if (fastcmp(word, "CONDITIONSET"))
|
||||
extraemblems[num-1].conditionset = (UINT8)value;
|
||||
else if (fastcmp(word, "SPRITE"))
|
||||
{
|
||||
if (word2[0] >= 'A' && word2[0] <= 'Z')
|
||||
value = word2[0];
|
||||
else
|
||||
value += 'A'-1;
|
||||
|
||||
if (value < 'A' || value > 'Z')
|
||||
deh_warning("Emblem %d: sprite must be from A - Z (1 - 26)", num);
|
||||
else
|
||||
extraemblems[num-1].sprite = (UINT8)value;
|
||||
}
|
||||
else if (fastcmp(word, "COLOR"))
|
||||
extraemblems[num-1].color = get_number(word2);
|
||||
else
|
||||
deh_warning("Extra emblem %d: unknown word '%s'", num, word);
|
||||
{
|
||||
strupr(word2);
|
||||
if (fastcmp(word, "SPRITE"))
|
||||
{
|
||||
if (word2[0] >= 'A' && word2[0] <= 'Z')
|
||||
value = word2[0];
|
||||
else
|
||||
value += 'A'-1;
|
||||
|
||||
if (value < 'A' || value > 'Z')
|
||||
deh_warning("Emblem %d: sprite must be from A - Z (1 - 26)", num);
|
||||
else
|
||||
extraemblems[num-1].sprite = (UINT8)value;
|
||||
}
|
||||
else if (fastcmp(word, "COLOR"))
|
||||
extraemblems[num-1].color = get_number(word2);
|
||||
else
|
||||
deh_warning("Extra emblem %d: unknown word '%s'", num, word);
|
||||
}
|
||||
}
|
||||
} while (!myfeof(f));
|
||||
|
||||
|
@ -3262,7 +3265,6 @@ static void readunlockable(MYFILE *f, INT32 num)
|
|||
|
||||
// Now get the part after
|
||||
word2 = tmp += 2;
|
||||
strupr(word2);
|
||||
|
||||
i = atoi(word2); // used for numerical settings
|
||||
|
||||
|
@ -3272,54 +3274,58 @@ static void readunlockable(MYFILE *f, INT32 num)
|
|||
else if (fastcmp(word, "OBJECTIVE"))
|
||||
deh_strlcpy(unlockables[num].objective, word2,
|
||||
sizeof (unlockables[num].objective), va("Unlockable %d: objective", num));
|
||||
else if (fastcmp(word, "HEIGHT"))
|
||||
unlockables[num].height = (UINT16)i;
|
||||
else if (fastcmp(word, "CONDITIONSET"))
|
||||
unlockables[num].conditionset = (UINT8)i;
|
||||
else if (fastcmp(word, "NOCECHO"))
|
||||
unlockables[num].nocecho = (UINT8)(i || word2[0] == 'T' || word2[0] == 'Y');
|
||||
else if (fastcmp(word, "NOCHECKLIST"))
|
||||
unlockables[num].nochecklist = (UINT8)(i || word2[0] == 'T' || word2[0] == 'Y');
|
||||
else if (fastcmp(word, "TYPE"))
|
||||
{
|
||||
if (fastcmp(word2, "NONE"))
|
||||
unlockables[num].type = SECRET_NONE;
|
||||
else if (fastcmp(word2, "ITEMFINDER"))
|
||||
unlockables[num].type = SECRET_ITEMFINDER;
|
||||
else if (fastcmp(word2, "EMBLEMHINTS"))
|
||||
unlockables[num].type = SECRET_EMBLEMHINTS;
|
||||
else if (fastcmp(word2, "PANDORA"))
|
||||
unlockables[num].type = SECRET_PANDORA;
|
||||
else if (fastcmp(word2, "CREDITS"))
|
||||
unlockables[num].type = SECRET_CREDITS;
|
||||
else if (fastcmp(word2, "RECORDATTACK"))
|
||||
unlockables[num].type = SECRET_RECORDATTACK;
|
||||
else if (fastcmp(word2, "NIGHTSMODE"))
|
||||
unlockables[num].type = SECRET_NIGHTSMODE;
|
||||
else if (fastcmp(word2, "HEADER"))
|
||||
unlockables[num].type = SECRET_HEADER;
|
||||
else if (fastcmp(word2, "LEVELSELECT"))
|
||||
unlockables[num].type = SECRET_LEVELSELECT;
|
||||
else if (fastcmp(word2, "WARP"))
|
||||
unlockables[num].type = SECRET_WARP;
|
||||
else if (fastcmp(word2, "SOUNDTEST"))
|
||||
unlockables[num].type = SECRET_SOUNDTEST;
|
||||
else
|
||||
unlockables[num].type = (INT16)i;
|
||||
}
|
||||
else if (fastcmp(word, "VAR"))
|
||||
{
|
||||
// Support using the actual map name,
|
||||
// i.e., Level AB, Level FZ, etc.
|
||||
|
||||
// Convert to map number
|
||||
if (word2[0] >= 'A' && word2[0] <= 'Z')
|
||||
i = M_MapNumber(word2[0], word2[1]);
|
||||
|
||||
unlockables[num].variable = (INT16)i;
|
||||
}
|
||||
else
|
||||
deh_warning("Unlockable %d: unknown word '%s'", num+1, word);
|
||||
{
|
||||
strupr(word2);
|
||||
if (fastcmp(word, "HEIGHT"))
|
||||
unlockables[num].height = (UINT16)i;
|
||||
else if (fastcmp(word, "CONDITIONSET"))
|
||||
unlockables[num].conditionset = (UINT8)i;
|
||||
else if (fastcmp(word, "NOCECHO"))
|
||||
unlockables[num].nocecho = (UINT8)(i || word2[0] == 'T' || word2[0] == 'Y');
|
||||
else if (fastcmp(word, "NOCHECKLIST"))
|
||||
unlockables[num].nochecklist = (UINT8)(i || word2[0] == 'T' || word2[0] == 'Y');
|
||||
else if (fastcmp(word, "TYPE"))
|
||||
{
|
||||
if (fastcmp(word2, "NONE"))
|
||||
unlockables[num].type = SECRET_NONE;
|
||||
else if (fastcmp(word2, "ITEMFINDER"))
|
||||
unlockables[num].type = SECRET_ITEMFINDER;
|
||||
else if (fastcmp(word2, "EMBLEMHINTS"))
|
||||
unlockables[num].type = SECRET_EMBLEMHINTS;
|
||||
else if (fastcmp(word2, "PANDORA"))
|
||||
unlockables[num].type = SECRET_PANDORA;
|
||||
else if (fastcmp(word2, "CREDITS"))
|
||||
unlockables[num].type = SECRET_CREDITS;
|
||||
else if (fastcmp(word2, "RECORDATTACK"))
|
||||
unlockables[num].type = SECRET_RECORDATTACK;
|
||||
else if (fastcmp(word2, "NIGHTSMODE"))
|
||||
unlockables[num].type = SECRET_NIGHTSMODE;
|
||||
else if (fastcmp(word2, "HEADER"))
|
||||
unlockables[num].type = SECRET_HEADER;
|
||||
else if (fastcmp(word2, "LEVELSELECT"))
|
||||
unlockables[num].type = SECRET_LEVELSELECT;
|
||||
else if (fastcmp(word2, "WARP"))
|
||||
unlockables[num].type = SECRET_WARP;
|
||||
else if (fastcmp(word2, "SOUNDTEST"))
|
||||
unlockables[num].type = SECRET_SOUNDTEST;
|
||||
else
|
||||
unlockables[num].type = (INT16)i;
|
||||
}
|
||||
else if (fastcmp(word, "VAR"))
|
||||
{
|
||||
// Support using the actual map name,
|
||||
// i.e., Level AB, Level FZ, etc.
|
||||
|
||||
// Convert to map number
|
||||
if (word2[0] >= 'A' && word2[0] <= 'Z')
|
||||
i = M_MapNumber(word2[0], word2[1]);
|
||||
|
||||
unlockables[num].variable = (INT16)i;
|
||||
}
|
||||
else
|
||||
deh_warning("Unlockable %d: unknown word '%s'", num+1, word);
|
||||
}
|
||||
}
|
||||
} while (!myfeof(f)); // finish when the line is empty
|
||||
|
||||
|
@ -4969,22 +4975,10 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_MINUS_BURST4",
|
||||
"S_MINUS_BURST5",
|
||||
"S_MINUS_POPUP",
|
||||
"S_MINUS_UPWARD1",
|
||||
"S_MINUS_UPWARD2",
|
||||
"S_MINUS_UPWARD3",
|
||||
"S_MINUS_UPWARD4",
|
||||
"S_MINUS_UPWARD5",
|
||||
"S_MINUS_UPWARD6",
|
||||
"S_MINUS_UPWARD7",
|
||||
"S_MINUS_UPWARD8",
|
||||
"S_MINUS_DOWNWARD1",
|
||||
"S_MINUS_DOWNWARD2",
|
||||
"S_MINUS_DOWNWARD3",
|
||||
"S_MINUS_DOWNWARD4",
|
||||
"S_MINUS_DOWNWARD5",
|
||||
"S_MINUS_DOWNWARD6",
|
||||
"S_MINUS_DOWNWARD7",
|
||||
"S_MINUS_DOWNWARD8",
|
||||
"S_MINUS_AERIAL1",
|
||||
"S_MINUS_AERIAL2",
|
||||
"S_MINUS_AERIAL3",
|
||||
"S_MINUS_AERIAL4",
|
||||
|
||||
// Minus dirt
|
||||
"S_MINUSDIRT1",
|
||||
|
@ -7669,8 +7663,6 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_DUST3",
|
||||
"S_DUST4",
|
||||
|
||||
"S_WOODDEBRIS",
|
||||
|
||||
"S_ROCKSPAWN",
|
||||
|
||||
"S_ROCKCRUMBLEA",
|
||||
|
@ -7689,7 +7681,9 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_ROCKCRUMBLEN",
|
||||
"S_ROCKCRUMBLEO",
|
||||
"S_ROCKCRUMBLEP",
|
||||
"S_GFZDEBRIS",
|
||||
"S_BRICKDEBRIS",
|
||||
"S_WOODDEBRIS",
|
||||
|
||||
#ifdef SEENAMES
|
||||
"S_NAMECHECK",
|
||||
|
@ -8445,7 +8439,6 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_EXPLODE", // Robot Explosion
|
||||
"MT_UWEXPLODE", // Underwater Explosion
|
||||
"MT_DUST",
|
||||
"MT_WOODDEBRIS",
|
||||
"MT_ROCKSPAWNER",
|
||||
"MT_FALLINGROCK",
|
||||
"MT_ROCKCRUMBLE1",
|
||||
|
@ -8464,7 +8457,9 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_ROCKCRUMBLE14",
|
||||
"MT_ROCKCRUMBLE15",
|
||||
"MT_ROCKCRUMBLE16",
|
||||
"MT_GFZDEBRIS",
|
||||
"MT_BRICKDEBRIS",
|
||||
"MT_WOODDEBRIS",
|
||||
|
||||
#ifdef SEENAMES
|
||||
"MT_NAMECHECK",
|
||||
|
@ -8904,7 +8899,7 @@ static const char *const MENUTYPES_LIST[] = {
|
|||
"OP_SCREENSHOTS",
|
||||
"OP_ERASEDATA",
|
||||
|
||||
// Secrets
|
||||
// Extras
|
||||
"SR_MAIN",
|
||||
"SR_PANDORA",
|
||||
"SR_LEVELSELECT",
|
||||
|
|
|
@ -628,9 +628,6 @@ extern const char *compdate, *comptime, *comprevision, *compbranch;
|
|||
#define ROTANGLES 24 // Needs to be a divisor of 360 (45, 60, 90, 120...)
|
||||
#define ROTANGDIFF (360 / ROTANGLES)
|
||||
|
||||
/// Level wipes
|
||||
//#define LEVELWIPES
|
||||
|
||||
#ifndef HAVE_PNG
|
||||
#define NO_PNG_LUMPS
|
||||
#endif
|
||||
|
|
|
@ -435,7 +435,6 @@ typedef struct
|
|||
tic_t time; ///< Time in which the level was finished.
|
||||
UINT32 score; ///< Score when the level was finished.
|
||||
UINT16 rings; ///< Rings when the level was finished.
|
||||
boolean gotperfect; ///< Got perfect bonus?
|
||||
} recorddata_t;
|
||||
|
||||
/** Setup for one NiGHTS map.
|
||||
|
|
445
src/f_finale.c
445
src/f_finale.c
|
@ -305,7 +305,7 @@ static void F_NewCutscene(const char *basetext)
|
|||
// =============
|
||||
// INTRO SCENE
|
||||
// =============
|
||||
#define NUMINTROSCENES 16
|
||||
#define NUMINTROSCENES 17
|
||||
INT32 intro_scenenum = 0;
|
||||
INT32 intro_curtime = 0;
|
||||
|
||||
|
@ -325,7 +325,8 @@ static tic_t introscenetime[NUMINTROSCENES] =
|
|||
16*TICRATE, // Meanwhile, Sonic was tearing across the zones...
|
||||
16*TICRATE + (TICRATE/2), // Sonic knew he was getting closer to the city...
|
||||
17*TICRATE, // Greenflower City was gone...
|
||||
16*TICRATE + (TICRATE/2), // You're not quite as dead as we thought, huh?...
|
||||
7*TICRATE, // You're not quite as dead as we thought, huh?...
|
||||
8*TICRATE, // We'll see... let's give you a quick warm up...
|
||||
18*TICRATE + (TICRATE/2), // Eggman took this as his cue and blasted off...
|
||||
16*TICRATE, // Easy! We go find Eggman and stop his...
|
||||
25*TICRATE, // I'm just finding what mission obje...
|
||||
|
@ -436,14 +437,22 @@ void F_StartIntro(void)
|
|||
"had been obliterated.\n#");
|
||||
|
||||
introtext[12] = M_GetText(
|
||||
"\xA7\"You're not quite as gone as we thought,\n"
|
||||
"huh?\xBF Are you going to tell us your plan as\n"
|
||||
"usual or will I \xA8\xB4'have to work it out'\xA7 or\n"
|
||||
"something?\"\xD2\xD2\n"
|
||||
"\xA7\"You're not\n"
|
||||
"quite as gone\n"
|
||||
"as we thought,\n"
|
||||
"huh?\xBF Are you\n"
|
||||
"going to tell\n"
|
||||
"us your plan as\n"
|
||||
"usual or will I\n"
|
||||
"\xA8\xB4'have to work\n"
|
||||
"it out'\xA7 or\n"
|
||||
"something?\"\xD2\xD2\n#");
|
||||
|
||||
introtext[13] = M_GetText(
|
||||
"\"We'll see\xAA...\xA7\xBF let's give you a quick warm\n"
|
||||
"up, Sonic!\xA6\xC4 JETTYSYNS!\xA7\xBD Open fire!\"\n#");
|
||||
|
||||
introtext[13] = M_GetText(
|
||||
introtext[14] = M_GetText(
|
||||
"Eggman took this\n"
|
||||
"as his cue and\n"
|
||||
"blasted off,\n"
|
||||
|
@ -457,7 +466,7 @@ void F_StartIntro(void)
|
|||
"\xA7\"Now\xB6 what do we\n"
|
||||
"do?\",\xA9 he asked.\n#");
|
||||
|
||||
introtext[14] = M_GetText(
|
||||
introtext[15] = M_GetText(
|
||||
"\xA7\"Easy!\xBF We go\n"
|
||||
"find Eggman\n"
|
||||
"and stop his\n"
|
||||
|
@ -471,7 +480,7 @@ void F_StartIntro(void)
|
|||
"\xAA*ARE*\xA9 you\n"
|
||||
"doing?\"\n#");
|
||||
|
||||
introtext[15] = M_GetText(
|
||||
introtext[16] = M_GetText(
|
||||
"\xA8\"I'm just finding what mission obje\xAC\xB1...\xBF\n"
|
||||
"\xA6""a-\xB8""ha!\xBF Here it is!\xA8\xBF This will only give us\n"
|
||||
"the robot's primary objective.\xBF It says\xAC\xB1...\"\n"
|
||||
|
@ -509,91 +518,93 @@ void F_StartIntro(void)
|
|||
//
|
||||
static void F_IntroDrawScene(void)
|
||||
{
|
||||
boolean highres = false;
|
||||
boolean highres = true;
|
||||
INT32 cx = 8, cy = 128;
|
||||
patch_t *background = NULL;
|
||||
INT32 bgxoffs = 0;
|
||||
void *patch;
|
||||
|
||||
// DRAW A FULL PIC INSTEAD OF FLAT!
|
||||
if (intro_scenenum == 0);
|
||||
else if (intro_scenenum == 1)
|
||||
background = W_CachePatchName("INTRO1", PU_CACHE);
|
||||
else if (intro_scenenum == 2)
|
||||
switch (intro_scenenum)
|
||||
{
|
||||
background = W_CachePatchName("INTRO2", PU_CACHE);
|
||||
highres = true;
|
||||
}
|
||||
else if (intro_scenenum == 3)
|
||||
background = W_CachePatchName("INTRO3", PU_CACHE);
|
||||
else if (intro_scenenum == 4)
|
||||
background = W_CachePatchName("INTRO4", PU_CACHE);
|
||||
else if (intro_scenenum == 5)
|
||||
{
|
||||
if (intro_curtime >= 5*TICRATE)
|
||||
background = W_CachePatchName("RADAR", PU_CACHE);
|
||||
else
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
background = W_CachePatchName("INTRO1", PU_CACHE);
|
||||
break;
|
||||
case 2:
|
||||
background = W_CachePatchName("INTRO2", PU_CACHE);
|
||||
break;
|
||||
case 3:
|
||||
background = W_CachePatchName("INTRO3", PU_CACHE);
|
||||
break;
|
||||
case 4:
|
||||
background = W_CachePatchName("INTRO4", PU_CACHE);
|
||||
break;
|
||||
case 5:
|
||||
if (intro_curtime >= 5*TICRATE)
|
||||
background = W_CachePatchName("RADAR", PU_CACHE);
|
||||
else
|
||||
background = W_CachePatchName("DRAT", PU_CACHE);
|
||||
break;
|
||||
case 6:
|
||||
background = W_CachePatchName("INTRO6", PU_CACHE);
|
||||
cx = 180;
|
||||
cy = 8;
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
background = W_CachePatchName("DRAT", PU_CACHE);
|
||||
highres = true;
|
||||
if (intro_curtime >= 7*TICRATE + ((TICRATE/7)*2))
|
||||
background = W_CachePatchName("SGRASS5", PU_CACHE);
|
||||
else if (intro_curtime >= 7*TICRATE + (TICRATE/7))
|
||||
background = W_CachePatchName("SGRASS4", PU_CACHE);
|
||||
else if (intro_curtime >= 7*TICRATE)
|
||||
background = W_CachePatchName("SGRASS3", PU_CACHE);
|
||||
else if (intro_curtime >= 6*TICRATE)
|
||||
background = W_CachePatchName("SGRASS2", PU_CACHE);
|
||||
else
|
||||
background = W_CachePatchName("SGRASS1", PU_CACHE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (intro_scenenum == 6)
|
||||
{
|
||||
background = W_CachePatchName("INTRO6", PU_CACHE);
|
||||
cx = 180;
|
||||
cy = 8;
|
||||
}
|
||||
else if (intro_scenenum == 7)
|
||||
{
|
||||
if (intro_curtime >= 6*TICRATE)
|
||||
background = W_CachePatchName("SGRASS5", PU_CACHE);
|
||||
else
|
||||
background = W_CachePatchName("SGRASS1", PU_CACHE);
|
||||
}
|
||||
else if (intro_scenenum == 8)
|
||||
{
|
||||
background = W_CachePatchName("WATCHING", PU_CACHE);
|
||||
highres = true;
|
||||
}
|
||||
else if (intro_scenenum == 9)
|
||||
{
|
||||
background = W_CachePatchName("ZOOMING", PU_CACHE);
|
||||
highres = true;
|
||||
}
|
||||
else if (intro_scenenum == 10);
|
||||
else if (intro_scenenum == 11)
|
||||
background = W_CachePatchName("INTRO5", PU_CACHE);
|
||||
else if (intro_scenenum == 12)
|
||||
{
|
||||
if (intro_curtime >= 7*TICRATE)
|
||||
background = W_CachePatchName("CONFRONT", PU_CACHE);
|
||||
else
|
||||
case 8:
|
||||
background = W_CachePatchName("WATCHING", PU_CACHE);
|
||||
break;
|
||||
case 9:
|
||||
background = W_CachePatchName("ZOOMING", PU_CACHE);
|
||||
break;
|
||||
case 10:
|
||||
break;
|
||||
case 11:
|
||||
background = W_CachePatchName("INTRO5", PU_CACHE);
|
||||
break;
|
||||
case 12:
|
||||
background = W_CachePatchName("REVENGE", PU_CACHE);
|
||||
highres = true;
|
||||
}
|
||||
else if (intro_scenenum == 13)
|
||||
{
|
||||
background = W_CachePatchName("TAILSSAD", PU_CACHE);
|
||||
highres = true;
|
||||
bgxoffs = 144;
|
||||
cx = 8;
|
||||
cy = 8;
|
||||
}
|
||||
else if (intro_scenenum == 14)
|
||||
{
|
||||
if (intro_curtime >= 7*TICRATE)
|
||||
background = W_CachePatchName("SONICDO2", PU_CACHE);
|
||||
else
|
||||
background = W_CachePatchName("SONICDO1", PU_CACHE);
|
||||
highres = true;
|
||||
cx = 224;
|
||||
cy = 8;
|
||||
}
|
||||
else if (intro_scenenum == 15)
|
||||
{
|
||||
background = W_CachePatchName("INTRO7", PU_CACHE);
|
||||
highres = true;
|
||||
cx = 208;
|
||||
cy = 8;
|
||||
break;
|
||||
case 13:
|
||||
background = W_CachePatchName("CONFRONT", PU_CACHE);
|
||||
cy += 48;
|
||||
break;
|
||||
case 14:
|
||||
background = W_CachePatchName("TAILSSAD", PU_CACHE);
|
||||
bgxoffs = 144;
|
||||
cx = 8;
|
||||
cy = 8;
|
||||
break;
|
||||
case 15:
|
||||
if (intro_curtime >= 7*TICRATE)
|
||||
background = W_CachePatchName("SONICDO2", PU_CACHE);
|
||||
else
|
||||
background = W_CachePatchName("SONICDO1", PU_CACHE);
|
||||
cx = 224;
|
||||
cy = 8;
|
||||
break;
|
||||
case 16:
|
||||
background = W_CachePatchName("INTRO7", PU_CACHE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31);
|
||||
|
@ -709,7 +720,7 @@ static void F_IntroDrawScene(void)
|
|||
else
|
||||
background = W_CachePatchName("DARKEGG1", PU_CACHE);
|
||||
|
||||
V_DrawScaledPatch(0, 0, 0, background);
|
||||
V_DrawSmallScaledPatch(0, 0, 0, background);
|
||||
}
|
||||
else if (timetonext > 3*TICRATE && timetonext < 4*TICRATE)
|
||||
{
|
||||
|
@ -718,7 +729,7 @@ static void F_IntroDrawScene(void)
|
|||
else
|
||||
background = W_CachePatchName("DARKEGG2", PU_CACHE);
|
||||
|
||||
V_DrawScaledPatch(0, 0, 0, background);
|
||||
V_DrawSmallScaledPatch(0, 0, 0, background);
|
||||
}
|
||||
else if (timetonext > 1*TICRATE && timetonext < 2*TICRATE)
|
||||
{
|
||||
|
@ -727,56 +738,115 @@ static void F_IntroDrawScene(void)
|
|||
else
|
||||
background = W_CachePatchName("DARKEGG3", PU_CACHE);
|
||||
|
||||
V_DrawScaledPatch(0, 0, 0, background);
|
||||
V_DrawSmallScaledPatch(0, 0, 0, background);
|
||||
}
|
||||
else
|
||||
{
|
||||
menuanimtimer = animtimer; // Reusing this variable for the intro to fix the scrolling sky, better than changing the function around.
|
||||
F_SkyScroll(80*4, 0, "TITLESKY");
|
||||
if (timetonext == 6)
|
||||
tic_t sonicdelay = max(0, timetonext - 16*TICRATE);
|
||||
tic_t tailsdelay = max(0, timetonext - (9*TICRATE >> 1));
|
||||
tic_t knucklesdelay = max(0, timetonext - (5*TICRATE >> 1));
|
||||
INT32 sonicx = (timetonext >> 2) + min(sonicdelay, TICRATE >> 1) * sonicdelay;
|
||||
INT32 tailsx = 32 + min(tailsdelay, TICRATE >> 1) * tailsdelay;
|
||||
INT32 knucklesx = 96 + min(knucklesdelay, TICRATE >> 1) * knucklesdelay;
|
||||
INT32 tailsy = 12 + P_ReturnThrustX(NULL, finalecount * ANGLE_22h, 2);
|
||||
INT32 knucklesy = 48 - (timetonext >> 3);
|
||||
INT32 skyx, grassx;
|
||||
|
||||
if (timetonext >= 0 && timetonext < 18)
|
||||
{
|
||||
stoptimer = finalecount;
|
||||
animtimer = finalecount % 16;
|
||||
}
|
||||
else if (timetonext >= 0 && timetonext < 6)
|
||||
{
|
||||
animtimer = stoptimer;
|
||||
deplete -= 32;
|
||||
deplete -= 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
animtimer = finalecount % 16;
|
||||
deplete = 160;
|
||||
stoptimer = finalecount;
|
||||
deplete = 96;
|
||||
}
|
||||
skyx = 2 * stoptimer % 320;
|
||||
grassx = 16 * stoptimer % 320;
|
||||
sonicx += deplete;
|
||||
tailsx += sonicx;
|
||||
knucklesx += sonicx;
|
||||
sonicx += P_ReturnThrustX(NULL, finalecount * ANG10, 3);
|
||||
|
||||
V_DrawSmallScaledPatch(skyx, 0, 0, (patch = W_CachePatchName("INTROSKY", PU_CACHE)));
|
||||
V_DrawSmallScaledPatch(skyx - 320, 0, 0, patch);
|
||||
W_UnlockCachedPatch(patch);
|
||||
V_DrawSmallScaledPatch(grassx, 0, 0, (patch = W_CachePatchName("INTROGRS", PU_CACHE)));
|
||||
V_DrawSmallScaledPatch(grassx - 320, 0, 0, patch);
|
||||
W_UnlockCachedPatch(patch);
|
||||
|
||||
if (finalecount & 1)
|
||||
{
|
||||
V_DrawScaledPatch(deplete, 8, 0, (patch = W_CachePatchName("RUN2", PU_CACHE)));
|
||||
// Sonic
|
||||
V_DrawSmallScaledPatch(sonicx, 54, 0, (patch = W_CachePatchName("RUN2", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
V_DrawScaledPatch(deplete, 72, 0, (patch = W_CachePatchName("PEELOUT2", PU_CACHE)));
|
||||
|
||||
// Appendages
|
||||
if (finalecount & 2)
|
||||
{
|
||||
// Sonic's feet
|
||||
V_DrawSmallScaledPatch(sonicx - 8, 92, 0, (patch = W_CachePatchName("PEELOUT4", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
// Tails' tails
|
||||
V_DrawSmallScaledPatch(tailsx, tailsy, 0, (patch = W_CachePatchName("HELICOP2", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sonic's feet
|
||||
V_DrawSmallScaledPatch(sonicx - 8, 92, 0, (patch = W_CachePatchName("PEELOUT2", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
// Tails' tails
|
||||
V_DrawSmallScaledPatch(tailsx, tailsy, 0, (patch = W_CachePatchName("HELICOP1", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
|
||||
// Tails
|
||||
V_DrawSmallScaledPatch(tailsx, tailsy, 0, (patch = W_CachePatchName("FLY2", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
|
||||
// Knuckles
|
||||
V_DrawSmallScaledPatch(knucklesx, knucklesy, 0, (patch = W_CachePatchName("GLIDE2", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawScaledPatch(deplete, 8, 0, (patch = W_CachePatchName("RUN1", PU_CACHE)));
|
||||
// Sonic
|
||||
V_DrawSmallScaledPatch(sonicx, 54, 0, (patch = W_CachePatchName("RUN1", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
V_DrawScaledPatch(deplete, 72, 0, (patch = W_CachePatchName("PEELOUT1", PU_CACHE)));
|
||||
|
||||
// Appendages
|
||||
if (finalecount & 2)
|
||||
{
|
||||
// Sonic's feet
|
||||
V_DrawSmallScaledPatch(sonicx - 8, 92, 0, (patch = W_CachePatchName("PEELOUT3", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
// Tails' tails
|
||||
V_DrawSmallScaledPatch(tailsx, tailsy, 0, (patch = W_CachePatchName("HELICOP2", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Sonic's feet
|
||||
V_DrawSmallScaledPatch(sonicx - 8, 92, 0, (patch = W_CachePatchName("PEELOUT1", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
// Tails' tails
|
||||
V_DrawSmallScaledPatch(tailsx, tailsy, 0, (patch = W_CachePatchName("HELICOP1", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
|
||||
// Tails
|
||||
V_DrawSmallScaledPatch(tailsx, tailsy, 0, (patch = W_CachePatchName("FLY1", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
|
||||
// Knuckles
|
||||
V_DrawSmallScaledPatch(knucklesx, knucklesy, 0, (patch = W_CachePatchName("GLIDE1", PU_CACHE)));
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
|
||||
{ // Fixing up the black box rendering to look right in resolutions <16:10 -Red
|
||||
INT32 y = 112;
|
||||
INT32 h = BASEVIDHEIGHT - 112;
|
||||
if (vid.height != BASEVIDHEIGHT * vid.dupy)
|
||||
{
|
||||
INT32 adjust = (vid.height/vid.dupy)-200;
|
||||
adjust /= 2;
|
||||
y += adjust;
|
||||
h += adjust;
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, adjust, 31); // Render a black bar on top so it keeps the "cinematic" windowboxing... I just prefer it this way. -Red
|
||||
}
|
||||
V_DrawFill(0, y, BASEVIDWIDTH, h, 31);
|
||||
}
|
||||
// Black bars to hide the sky on widescreen
|
||||
V_DrawFill(-80, 0, 80, 256, 31);
|
||||
V_DrawFill(BASEVIDWIDTH, 0, 80, 256, 31);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -826,21 +896,6 @@ static void F_IntroDrawScene(void)
|
|||
if (animtimer)
|
||||
animtimer--;
|
||||
|
||||
if (intro_scenenum == 7 && intro_curtime > 7*TICRATE)
|
||||
{
|
||||
patch_t *sgrass;
|
||||
|
||||
if (intro_curtime >= 7*TICRATE + ((TICRATE/7)*2))
|
||||
sgrass = W_CachePatchName("SGRASS4", PU_CACHE);
|
||||
else if (intro_curtime >= 7*TICRATE + (TICRATE/7))
|
||||
sgrass = W_CachePatchName("SGRASS3", PU_CACHE);
|
||||
else
|
||||
sgrass = W_CachePatchName("SGRASS2", PU_CACHE);
|
||||
V_DrawScaledPatch(123, 4, 0, sgrass);
|
||||
|
||||
W_UnlockCachedPatch(sgrass);
|
||||
}
|
||||
|
||||
V_DrawString(cx, cy, V_ALLOWLOWERCASE, cutscene_disptext);
|
||||
}
|
||||
|
||||
|
@ -875,7 +930,7 @@ void F_IntroDrawer(void)
|
|||
F_RunWipe(99,true);
|
||||
}
|
||||
}
|
||||
else if (intro_scenenum == 15)
|
||||
else if (intro_scenenum == 16)
|
||||
{
|
||||
if (rendermode != render_none)
|
||||
{
|
||||
|
@ -928,7 +983,7 @@ void F_IntroDrawer(void)
|
|||
|
||||
F_WipeStartScreen();
|
||||
F_WipeColorFill(31);
|
||||
V_DrawScaledPatch(0, 0, 0, radar);
|
||||
V_DrawSmallScaledPatch(0, 0, 0, radar);
|
||||
W_UnlockCachedPatch(radar);
|
||||
V_DrawString(8, 128, V_ALLOWLOWERCASE, cutscene_disptext);
|
||||
|
||||
|
@ -937,18 +992,18 @@ void F_IntroDrawer(void)
|
|||
}
|
||||
else if (intro_scenenum == 7 && intro_curtime == 6*TICRATE) // Force a wipe here
|
||||
{
|
||||
patch_t *grass = W_CachePatchName("SGRASS5", PU_CACHE);
|
||||
patch_t *grass = W_CachePatchName("SGRASS2", PU_CACHE);
|
||||
|
||||
F_WipeStartScreen();
|
||||
F_WipeColorFill(31);
|
||||
V_DrawScaledPatch(0, 0, 0, grass);
|
||||
V_DrawSmallScaledPatch(0, 0, 0, grass);
|
||||
W_UnlockCachedPatch(grass);
|
||||
V_DrawString(8, 128, V_ALLOWLOWERCASE, cutscene_disptext);
|
||||
|
||||
F_WipeEndScreen();
|
||||
F_RunWipe(99,true);
|
||||
}
|
||||
else if (intro_scenenum == 12 && intro_curtime == 7*TICRATE)
|
||||
/*else if (intro_scenenum == 12 && intro_curtime == 7*TICRATE)
|
||||
{
|
||||
patch_t *confront = W_CachePatchName("CONFRONT", PU_CACHE);
|
||||
|
||||
|
@ -960,8 +1015,8 @@ void F_IntroDrawer(void)
|
|||
|
||||
F_WipeEndScreen();
|
||||
F_RunWipe(99,true);
|
||||
}
|
||||
if (intro_scenenum == 14 && intro_curtime == 7*TICRATE)
|
||||
}*/
|
||||
if (intro_scenenum == 15 && intro_curtime == 7*TICRATE)
|
||||
{
|
||||
patch_t *sdo = W_CachePatchName("SONICDO2", PU_CACHE);
|
||||
|
||||
|
@ -1198,30 +1253,41 @@ static const char *credits[] = {
|
|||
"\1Published By",
|
||||
"A 28K dialup modem",
|
||||
"",
|
||||
"\1Thank you",
|
||||
"\1for playing!",
|
||||
"\1Thank you ",
|
||||
"\1for playing! ",
|
||||
NULL
|
||||
};
|
||||
|
||||
#define CREDITS_LEFT 8
|
||||
#define CREDITS_RIGHT ((BASEVIDWIDTH) - 8)
|
||||
|
||||
static struct {
|
||||
UINT32 x, y;
|
||||
UINT32 x;
|
||||
const char *patch;
|
||||
} credits_pics[] = {
|
||||
{ 8, 80+200* 1, "CREDIT01"},
|
||||
{ 4, 80+200* 2, "CREDIT13"},
|
||||
{250, 80+200* 3, "CREDIT12"},
|
||||
{ 8, 80+200* 4, "CREDIT03"},
|
||||
{248, 80+200* 5, "CREDIT11"},
|
||||
{ 8, 80+200* 6, "CREDIT04"},
|
||||
{112, 80+200* 7, "CREDIT10"},
|
||||
{240, 80+200* 8, "CREDIT05"},
|
||||
{120, 80+200* 9, "CREDIT06"},
|
||||
{ 8, 80+200*10, "CREDIT07"},
|
||||
{ 8, 80+200*11, "CREDIT08"},
|
||||
{112, 80+200*12, "CREDIT09"},
|
||||
{0, 0, NULL}
|
||||
{CREDITS_LEFT, "CREDIT01"},
|
||||
{CREDITS_RIGHT - (271 >> 1), "CREDIT02"},
|
||||
{CREDITS_LEFT, "CREDIT03"},
|
||||
{CREDITS_RIGHT - (316 >> 1), "CREDIT04"},
|
||||
{CREDITS_LEFT, "CREDIT05"},
|
||||
{CREDITS_RIGHT - (399 >> 1), "CREDIT06"},
|
||||
{CREDITS_LEFT, "CREDIT07"},
|
||||
{CREDITS_RIGHT - (302 >> 1), "CREDIT08"},
|
||||
{CREDITS_LEFT, "CREDIT09"},
|
||||
{CREDITS_RIGHT - (250 >> 1), "CREDIT10"},
|
||||
{CREDITS_LEFT, "CREDIT11"},
|
||||
{CREDITS_RIGHT - (279 >> 1), "CREDIT12"},
|
||||
//{(BASEVIDWIDTH - (279 >> 1)) >> 1, "CREDIT12"},
|
||||
// CREDIT13 is extra art and is not shown by default
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
#undef CREDITS_LEFT
|
||||
#undef CREDITS_RIGHT
|
||||
|
||||
static UINT32 credits_height = 0;
|
||||
static const UINT8 credits_numpics = sizeof(credits_pics)/sizeof(credits_pics[0]) - 1;
|
||||
|
||||
void F_StartCredits(void)
|
||||
{
|
||||
G_SetGamestate(GS_CREDITS);
|
||||
|
@ -1255,13 +1321,20 @@ void F_StartCredits(void)
|
|||
void F_CreditDrawer(void)
|
||||
{
|
||||
UINT16 i;
|
||||
INT16 zagpos = (timetonext - finalecount - animtimer) % 32;
|
||||
fixed_t y = (80<<FRACBITS) - 5*(animtimer<<FRACBITS)/8;
|
||||
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31);
|
||||
|
||||
// Zig Zagz
|
||||
V_DrawScaledPatch(-16, zagpos, V_SNAPTOLEFT, W_CachePatchName("LTZIGZAG", PU_CACHE));
|
||||
V_DrawScaledPatch(-16, zagpos - 320, V_SNAPTOLEFT, W_CachePatchName("LTZIGZAG", PU_CACHE));
|
||||
V_DrawScaledPatch(BASEVIDWIDTH + 16, zagpos, V_SNAPTORIGHT|V_FLIP, W_CachePatchName("LTZIGZAG", PU_CACHE));
|
||||
V_DrawScaledPatch(BASEVIDWIDTH + 16, zagpos - 320, V_SNAPTORIGHT|V_FLIP, W_CachePatchName("LTZIGZAG", PU_CACHE));
|
||||
|
||||
// Draw background pictures first
|
||||
for (i = 0; credits_pics[i].patch; i++)
|
||||
V_DrawSciencePatch(credits_pics[i].x<<FRACBITS, (credits_pics[i].y<<FRACBITS) - 4*(animtimer<<FRACBITS)/5, 0, W_CachePatchName(credits_pics[i].patch, PU_CACHE), FRACUNIT>>1);
|
||||
V_DrawSciencePatch(credits_pics[i].x<<FRACBITS, (280<<FRACBITS) + (((i*credits_height)<<FRACBITS)/(credits_numpics)) - 4*(animtimer<<FRACBITS)/5, 0, W_CachePatchName(credits_pics[i].patch, PU_CACHE), FRACUNIT>>1);
|
||||
|
||||
// Dim the background
|
||||
V_DrawFadeScreen(0xFF00, 16);
|
||||
|
@ -1279,6 +1352,11 @@ void F_CreditDrawer(void)
|
|||
V_DrawCreditString((160 - (V_CreditStringWidth(&credits[i][1])>>1))<<FRACBITS, y, 0, &credits[i][1]);
|
||||
y += 30<<FRACBITS;
|
||||
break;
|
||||
case 2:
|
||||
if (y>>FRACBITS > -10)
|
||||
V_DrawStringAtFixed((BASEVIDWIDTH-V_StringWidth(&credits[i][1], V_ALLOWLOWERCASE|V_YELLOWMAP))<<FRACBITS>>1, y, V_ALLOWLOWERCASE|V_YELLOWMAP, &credits[i][1]);
|
||||
y += 12<<FRACBITS;
|
||||
break;
|
||||
default:
|
||||
if (y>>FRACBITS > -10)
|
||||
V_DrawStringAtFixed(32<<FRACBITS, y, V_ALLOWLOWERCASE, credits[i]);
|
||||
|
@ -1296,6 +1374,22 @@ void F_CreditTicker(void)
|
|||
UINT16 i;
|
||||
fixed_t y = (80<<FRACBITS) - 5*(animtimer<<FRACBITS)/8;
|
||||
|
||||
// Calculate credits height to display art properly
|
||||
if (credits_height == 0)
|
||||
{
|
||||
for (i = 0; credits[i]; i++)
|
||||
{
|
||||
switch(credits[i][0])
|
||||
{
|
||||
case 0: credits_height += 80; break;
|
||||
case 1: credits_height += 30; break;
|
||||
default: credits_height += 12; break;
|
||||
}
|
||||
}
|
||||
credits_height = 4*8*credits_height/5/5; // account for scroll speed (4/5 accounts for patch drawing, inverse 5/8 accounts for text scroll)
|
||||
//credits_height += 280; // account for starting offset
|
||||
}
|
||||
|
||||
// Draw credits text on top
|
||||
for (i = 0; credits[i]; i++)
|
||||
{
|
||||
|
@ -1386,7 +1480,7 @@ boolean F_CreditResponder(event_t *event)
|
|||
|
||||
void F_StartGameEvaluation(void)
|
||||
{
|
||||
// Credits option in secrets menu
|
||||
// Credits option in extras menu
|
||||
if (cursaveslot == -1)
|
||||
{
|
||||
S_FadeOutStopMusic(2*MUSICRATE);
|
||||
|
@ -1541,9 +1635,9 @@ void F_GameEvaluationDrawer(void)
|
|||
}
|
||||
}
|
||||
else if (netgame)
|
||||
V_DrawString(8, 96, V_YELLOWMAP, "Prizes only\nawarded in\nsingle player!");
|
||||
V_DrawString(8, 96, V_YELLOWMAP, "Multiplayer games\ncan't unlock\nextras!");
|
||||
else
|
||||
V_DrawString(8, 96, V_YELLOWMAP, "Prizes not\nawarded in\nmodified games!");
|
||||
V_DrawString(8, 96, V_YELLOWMAP, "Modified games\ncan't unlock\nextras!");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -1590,7 +1684,7 @@ void F_GameEvaluationTicker(void)
|
|||
{
|
||||
HU_SetCEchoFlags(V_YELLOWMAP|V_RETURN8);
|
||||
HU_SetCEchoDuration(6);
|
||||
HU_DoCEcho("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Prizes only awarded in singleplayer!");
|
||||
HU_DoCEcho("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Multiplayer games can't unlock extras!");
|
||||
S_StartSound(NULL, sfx_s3k68);
|
||||
}
|
||||
else if (!modifiedgame || savemoddata)
|
||||
|
@ -1612,7 +1706,7 @@ void F_GameEvaluationTicker(void)
|
|||
{
|
||||
HU_SetCEchoFlags(V_YELLOWMAP|V_RETURN8);
|
||||
HU_SetCEchoDuration(6);
|
||||
HU_DoCEcho("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Prizes not awarded in modified games!");
|
||||
HU_DoCEcho("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Modified games can't unlock extras!");
|
||||
S_StartSound(NULL, sfx_s3k68);
|
||||
}
|
||||
}
|
||||
|
@ -1625,6 +1719,7 @@ void F_GameEvaluationTicker(void)
|
|||
// ==========
|
||||
|
||||
#define INFLECTIONPOINT (6*TICRATE)
|
||||
#define STOPPINGPOINT (14*TICRATE)
|
||||
#define SPARKLLOOPTIME 15 // must be odd
|
||||
|
||||
void F_StartEnding(void)
|
||||
|
@ -1683,7 +1778,7 @@ void F_StartEnding(void)
|
|||
UINT8 skinnum = players[consoleplayer].skin;
|
||||
spritedef_t *sprdef;
|
||||
spriteframe_t *sprframe;
|
||||
if (skins[skinnum].sprites[SPR2_XTRA].numframes >= (XTRA_ENDING+2)+1)
|
||||
if (skins[skinnum].sprites[SPR2_XTRA].numframes > (XTRA_ENDING+2))
|
||||
{
|
||||
sprdef = &skins[skinnum].sprites[SPR2_XTRA];
|
||||
// character head, skin specific
|
||||
|
@ -1716,7 +1811,7 @@ void F_StartEnding(void)
|
|||
|
||||
void F_EndingTicker(void)
|
||||
{
|
||||
if (++finalecount > INFLECTIONPOINT*2)
|
||||
if (++finalecount > STOPPINGPOINT)
|
||||
{
|
||||
F_StartCredits();
|
||||
wipetypepre = INT16_MAX;
|
||||
|
@ -2112,26 +2207,26 @@ void F_EndingDrawer(void)
|
|||
|
||||
if (finalecount < 10)
|
||||
trans = (10-finalecount)/2;
|
||||
else if (finalecount > (2*INFLECTIONPOINT) - 20)
|
||||
else if (finalecount > STOPPINGPOINT - 20)
|
||||
{
|
||||
trans = 10 + (finalecount/2) - INFLECTIONPOINT;
|
||||
trans = 10 + (finalecount - STOPPINGPOINT)/2;
|
||||
donttouch = true;
|
||||
}
|
||||
|
||||
if (trans != 10)
|
||||
if (trans < 10)
|
||||
{
|
||||
//colset(linkmap, 164, 165, 169); -- the ideal purple colour to represent a clicked in-game link, but not worth it just for a soundtest-controlled secret
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 8, V_ALLOWLOWERCASE|(trans<<V_ALPHASHIFT), str);
|
||||
V_DrawCharacter(32, BASEVIDHEIGHT-16, '>'|(trans<<V_ALPHASHIFT), false);
|
||||
V_DrawString(40, ((finalecount == (2*INFLECTIONPOINT)-(20+TICRATE)) ? 1 : 0)+BASEVIDHEIGHT-16, ((timesBeaten || finalecount >= (2*INFLECTIONPOINT)-TICRATE) ? V_PURPLEMAP : V_BLUEMAP)|(trans<<V_ALPHASHIFT), " [S] ===>");
|
||||
V_DrawString(40, ((finalecount == STOPPINGPOINT-(20+TICRATE)) ? 1 : 0)+BASEVIDHEIGHT-16, ((timesBeaten || finalecount >= STOPPINGPOINT-TICRATE) ? V_PURPLEMAP : V_BLUEMAP)|(trans<<V_ALPHASHIFT), " [S] ===>");
|
||||
}
|
||||
|
||||
if (finalecount > (2*INFLECTIONPOINT)-(20+(2*TICRATE)))
|
||||
if (finalecount > STOPPINGPOINT-(20+(2*TICRATE)))
|
||||
{
|
||||
INT32 trans2 = abs((5*FINECOSINE((FixedAngle((finalecount*5)<<FRACBITS)>>ANGLETOFINESHIFT & FINEMASK)))>>FRACBITS)+2;
|
||||
if (!donttouch)
|
||||
{
|
||||
trans = 10 + ((2*INFLECTIONPOINT)-(20+(2*TICRATE))) - finalecount;
|
||||
trans = 10 + (STOPPINGPOINT-(20+(2*TICRATE))) - finalecount;
|
||||
if (trans > trans2)
|
||||
trans2 = trans;
|
||||
}
|
||||
|
@ -2588,9 +2683,7 @@ void F_TitleScreenDrawer(void)
|
|||
// Draw that sky!
|
||||
if (curbgcolor >= 0)
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, curbgcolor);
|
||||
else if (titlemapinaction && curbghide && ! hidetitlemap)
|
||||
D_Render();
|
||||
else
|
||||
else if (!curbghide || !titlemapinaction || gamestate == GS_WAITINGPLAYERS)
|
||||
F_SkyScroll(curbgxspeed, curbgyspeed, curbgname);
|
||||
|
||||
// Don't draw outside of the title screen, or if the patch isn't there.
|
||||
|
@ -3350,6 +3443,10 @@ void F_TitleScreenTicker(boolean run)
|
|||
if (run)
|
||||
finalecount++;
|
||||
|
||||
// don't trigger if doing anything besides idling on title
|
||||
if (gameaction != ga_nothing || gamestate != GS_TITLESCREEN)
|
||||
return;
|
||||
|
||||
// Execute the titlemap camera settings
|
||||
if (titlemapinaction)
|
||||
{
|
||||
|
@ -3396,10 +3493,6 @@ void F_TitleScreenTicker(boolean run)
|
|||
}
|
||||
}
|
||||
|
||||
// don't trigger if doing anything besides idling on title
|
||||
if (gameaction != ga_nothing || gamestate != GS_TITLESCREEN)
|
||||
return;
|
||||
|
||||
// no demos to play? or, are they disabled?
|
||||
if (!cv_rollingdemos.value || !numDemos)
|
||||
return;
|
||||
|
@ -3552,7 +3645,7 @@ void F_ContinueDrawer(void)
|
|||
if (timetonext >= (11*TICRATE)+10)
|
||||
return;
|
||||
|
||||
V_DrawLevelTitle(x - (V_LevelNameWidth("CONTINUE")>>1), 16, 0, "CONTINUE");
|
||||
V_DrawLevelTitle(x - (V_LevelNameWidth("Continue?")>>1), 16, 0, "Continue?");
|
||||
|
||||
// Two stars...
|
||||
patch = W_CachePatchName("CONTSTAR", PU_CACHE);
|
||||
|
|
|
@ -141,7 +141,6 @@ void F_MenuPresTicker(boolean run);
|
|||
#define FORCEWIPEOFF -2
|
||||
|
||||
extern boolean WipeInAction;
|
||||
extern boolean WipeInLevel;
|
||||
extern boolean WipeStageTitle;
|
||||
|
||||
typedef enum
|
||||
|
@ -153,9 +152,10 @@ extern wipestyle_t wipestyle;
|
|||
|
||||
typedef enum
|
||||
{
|
||||
WSF_FADEOUT = 1,
|
||||
WSF_FADEIN = 1<<1,
|
||||
WSF_TOWHITE = 1<<2,
|
||||
WSF_FADEOUT = 1,
|
||||
WSF_FADEIN = 1<<1,
|
||||
WSF_TOWHITE = 1<<2,
|
||||
WSF_CROSSFADE = 1<<3,
|
||||
} wipestyleflags_t;
|
||||
extern wipestyleflags_t wipestyleflags;
|
||||
|
||||
|
@ -166,7 +166,6 @@ extern wipestyleflags_t wipestyleflags;
|
|||
#define FADEGREENFACTOR 15
|
||||
#define FADEBLUEFACTOR 10
|
||||
|
||||
extern UINT8 wipecolorfill;
|
||||
extern INT32 lastwipetic;
|
||||
|
||||
// Don't know where else to place this constant
|
||||
|
@ -176,9 +175,8 @@ extern INT32 lastwipetic;
|
|||
void F_WipeStartScreen(void);
|
||||
void F_WipeEndScreen(void);
|
||||
void F_RunWipe(UINT8 wipetype, boolean drawMenu);
|
||||
void F_WipeTicker(void);
|
||||
void F_WipeStageTitle(void);
|
||||
#define F_WipeColorFill(c) V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, (wipecolorfill = c))
|
||||
#define F_WipeColorFill(c) V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, c)
|
||||
tic_t F_GetWipeLength(UINT8 wipetype);
|
||||
boolean F_WipeExists(UINT8 wipetype);
|
||||
|
||||
|
|
64
src/f_wipe.c
64
src/f_wipe.c
|
@ -91,12 +91,11 @@ UINT8 wipedefs[NUMWIPEDEFS] = {
|
|||
//--------------------------------------------------------------------------
|
||||
|
||||
boolean WipeInAction = false;
|
||||
boolean WipeInLevel = false;
|
||||
boolean WipeStageTitle = false;
|
||||
INT32 lastwipetic = 0;
|
||||
|
||||
wipestyle_t wipestyle = WIPESTYLE_NORMAL;
|
||||
wipestyleflags_t wipestyleflags = 0;
|
||||
wipestyleflags_t wipestyleflags = WSF_CROSSFADE;
|
||||
|
||||
#ifndef NOWIPE
|
||||
static UINT8 *wipe_scr_start; //screen 3
|
||||
|
@ -104,10 +103,6 @@ static UINT8 *wipe_scr_end; //screen 4
|
|||
static UINT8 *wipe_scr; //screen 0 (main drawing)
|
||||
static fixed_t paldiv = 0;
|
||||
|
||||
static UINT8 curwipetype;
|
||||
static UINT8 curwipeframe;
|
||||
UINT8 wipecolorfill = 31;
|
||||
|
||||
/** Create fademask_t from lump
|
||||
*
|
||||
* \param lump Lump name to get data from
|
||||
|
@ -349,8 +344,6 @@ static void F_DoWipe(fademask_t *fademask)
|
|||
free(scrxpos);
|
||||
free(scrypos);
|
||||
}
|
||||
if (wipestyle == WIPESTYLE_LEVEL)
|
||||
F_WipeStageTitle();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -411,18 +404,13 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu)
|
|||
|
||||
// don't know where else to put this.
|
||||
// this any good?
|
||||
if (gamestate == GS_LEVEL || gamestate == GS_TITLESCREEN)
|
||||
if ((gamestate == GS_LEVEL || gamestate == GS_TITLESCREEN)
|
||||
&& (wipestyleflags & (WSF_FADEIN|WSF_FADEOUT)) // only if one of those wipestyleflags are actually set
|
||||
&& !(wipestyleflags & WSF_CROSSFADE)) // and if not crossfading
|
||||
wipestyle = WIPESTYLE_LEVEL;
|
||||
else
|
||||
wipestyle = WIPESTYLE_NORMAL;
|
||||
|
||||
curwipetype = wipetype;
|
||||
curwipeframe = 0;
|
||||
#ifdef LEVELWIPES
|
||||
if (WipeInLevel)
|
||||
return;
|
||||
#endif
|
||||
|
||||
// lastwipetic should either be 0 or the tic we last wiped
|
||||
// on for fade-to-black
|
||||
for (;;)
|
||||
|
@ -450,6 +438,9 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu)
|
|||
#endif
|
||||
F_DoWipe(fmask);
|
||||
|
||||
if (wipestyle == WIPESTYLE_LEVEL)
|
||||
F_WipeStageTitle();
|
||||
|
||||
I_OsPolling();
|
||||
I_UpdateNoBlit();
|
||||
|
||||
|
@ -463,47 +454,6 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu)
|
|||
}
|
||||
|
||||
WipeInAction = false;
|
||||
WipeInLevel = false;
|
||||
WipeStageTitle = false;
|
||||
#endif
|
||||
}
|
||||
|
||||
/** Run and display the fade with the level.
|
||||
*/
|
||||
void F_WipeTicker(void)
|
||||
{
|
||||
#ifndef NOWIPE
|
||||
#ifndef LEVELWIPES
|
||||
WipeInAction = false;
|
||||
#else
|
||||
fademask_t *fmask;
|
||||
|
||||
// Wait, what?
|
||||
if (!WipeInAction)
|
||||
return;
|
||||
|
||||
if (rendermode == render_soft)
|
||||
wipe_scr_start = wipe_scr_end = screens[0];
|
||||
|
||||
// get fademask first so we can tell if it exists or not
|
||||
fmask = F_GetFadeMask(curwipetype, curwipeframe++);
|
||||
if (!fmask)
|
||||
{
|
||||
// stop
|
||||
WipeInAction = false;
|
||||
WipeInLevel = false;
|
||||
WipeStageTitle = false;
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef HWRENDER
|
||||
// send in the wipe type and wipe frame because we need to cache the graphic
|
||||
if (rendermode == render_opengl)
|
||||
HWR_DoLevelWipe(curwipetype, curwipeframe-1, wipecolorfill); // also send the wipe color
|
||||
else
|
||||
#endif
|
||||
F_DoWipe(fmask);
|
||||
#endif
|
||||
WipeStageTitle = false;
|
||||
#endif
|
||||
}
|
||||
|
|
218
src/g_game.c
218
src/g_game.c
|
@ -172,6 +172,7 @@ mapheader_t* mapheaderinfo[NUMMAPS] = {NULL};
|
|||
|
||||
static boolean exitgame = false;
|
||||
static boolean retrying = false;
|
||||
static boolean retryingmodeattack = false;
|
||||
|
||||
UINT8 stagefailed; // Used for GEMS BONUS? Also to see if you beat the stage.
|
||||
|
||||
|
@ -540,11 +541,99 @@ void G_AddTempNightsRecords(UINT32 pscore, tic_t ptime, UINT8 mare)
|
|||
ntemprecords.nummares = mare;
|
||||
}
|
||||
|
||||
//
|
||||
// G_UpdateRecordReplays
|
||||
//
|
||||
// Update replay files/data, etc. for Record Attack
|
||||
// See G_SetNightsRecords for NiGHTS Attack.
|
||||
//
|
||||
static void G_UpdateRecordReplays(void)
|
||||
{
|
||||
const size_t glen = strlen(srb2home)+1+strlen("replay")+1+strlen(timeattackfolder)+1+strlen("MAPXX")+1;
|
||||
char *gpath;
|
||||
char lastdemo[256], bestdemo[256];
|
||||
UINT8 earnedEmblems;
|
||||
|
||||
// Record new best time
|
||||
if (!mainrecords[gamemap-1])
|
||||
G_AllocMainRecordData(gamemap-1);
|
||||
|
||||
if (players[consoleplayer].score > mainrecords[gamemap-1]->score)
|
||||
mainrecords[gamemap-1]->score = players[consoleplayer].score;
|
||||
|
||||
if ((mainrecords[gamemap-1]->time == 0) || (players[consoleplayer].realtime < mainrecords[gamemap-1]->time))
|
||||
mainrecords[gamemap-1]->time = players[consoleplayer].realtime;
|
||||
|
||||
if ((UINT16)(players[consoleplayer].rings) > mainrecords[gamemap-1]->rings)
|
||||
mainrecords[gamemap-1]->rings = (UINT16)(players[consoleplayer].rings);
|
||||
|
||||
// Save demo!
|
||||
bestdemo[255] = '\0';
|
||||
lastdemo[255] = '\0';
|
||||
G_SetDemoTime(players[consoleplayer].realtime, players[consoleplayer].score, (UINT16)(players[consoleplayer].rings));
|
||||
G_CheckDemoStatus();
|
||||
|
||||
I_mkdir(va("%s"PATHSEP"replay", srb2home), 0755);
|
||||
I_mkdir(va("%s"PATHSEP"replay"PATHSEP"%s", srb2home, timeattackfolder), 0755);
|
||||
|
||||
if ((gpath = malloc(glen)) == NULL)
|
||||
I_Error("Out of memory for replay filepath\n");
|
||||
|
||||
sprintf(gpath,"%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(gamemap));
|
||||
snprintf(lastdemo, 255, "%s-%s-last.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
|
||||
if (FIL_FileExists(lastdemo))
|
||||
{
|
||||
UINT8 *buf;
|
||||
size_t len = FIL_ReadFile(lastdemo, &buf);
|
||||
|
||||
snprintf(bestdemo, 255, "%s-%s-time-best.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
if (!FIL_FileExists(bestdemo) || G_CmpDemoTime(bestdemo, lastdemo) & 1)
|
||||
{ // Better time, save this demo.
|
||||
if (FIL_FileExists(bestdemo))
|
||||
remove(bestdemo);
|
||||
FIL_WriteFile(bestdemo, buf, len);
|
||||
CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW RECORD TIME!"), M_GetText("Saved replay as"), bestdemo);
|
||||
}
|
||||
|
||||
snprintf(bestdemo, 255, "%s-%s-score-best.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
if (!FIL_FileExists(bestdemo) || (G_CmpDemoTime(bestdemo, lastdemo) & (1<<1)))
|
||||
{ // Better score, save this demo.
|
||||
if (FIL_FileExists(bestdemo))
|
||||
remove(bestdemo);
|
||||
FIL_WriteFile(bestdemo, buf, len);
|
||||
CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW HIGH SCORE!"), M_GetText("Saved replay as"), bestdemo);
|
||||
}
|
||||
|
||||
snprintf(bestdemo, 255, "%s-%s-rings-best.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
if (!FIL_FileExists(bestdemo) || (G_CmpDemoTime(bestdemo, lastdemo) & (1<<2)))
|
||||
{ // Better rings, save this demo.
|
||||
if (FIL_FileExists(bestdemo))
|
||||
remove(bestdemo);
|
||||
FIL_WriteFile(bestdemo, buf, len);
|
||||
CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW MOST RINGS!"), M_GetText("Saved replay as"), bestdemo);
|
||||
}
|
||||
|
||||
//CONS_Printf("%s '%s'\n", M_GetText("Saved replay as"), lastdemo);
|
||||
|
||||
Z_Free(buf);
|
||||
}
|
||||
free(gpath);
|
||||
|
||||
// Check emblems when level data is updated
|
||||
if ((earnedEmblems = M_CheckLevelEmblems()))
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for Record Attack records.\n"), (UINT16)earnedEmblems, earnedEmblems > 1 ? "s" : "");
|
||||
|
||||
// Update timeattack menu's replay availability.
|
||||
Nextmap_OnChange();
|
||||
}
|
||||
|
||||
void G_SetNightsRecords(void)
|
||||
{
|
||||
INT32 i;
|
||||
UINT32 totalscore = 0;
|
||||
tic_t totaltime = 0;
|
||||
UINT8 earnedEmblems;
|
||||
|
||||
const size_t glen = strlen(srb2home)+1+strlen("replay")+1+strlen(timeattackfolder)+1+strlen("MAPXX")+1;
|
||||
char *gpath;
|
||||
|
@ -644,6 +733,9 @@ void G_SetNightsRecords(void)
|
|||
}
|
||||
free(gpath);
|
||||
|
||||
if ((earnedEmblems = M_CheckLevelEmblems()))
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for NiGHTS records.\n"), (UINT16)earnedEmblems, earnedEmblems > 1 ? "s" : "");
|
||||
|
||||
// If the mare count changed, this will update the score display
|
||||
Nextmap_OnChange();
|
||||
}
|
||||
|
@ -927,11 +1019,11 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
|
|||
movebkey = PLAYER1INPUTDOWN(gc_backward);
|
||||
|
||||
mouseaiming = (PLAYER1INPUTDOWN(gc_mouseaiming)) ^
|
||||
(cv_chasecam.value ? cv_chasefreelook.value : cv_alwaysfreelook.value);
|
||||
((cv_chasecam.value && !player->spectator) ? cv_chasefreelook.value : cv_alwaysfreelook.value);
|
||||
analogjoystickmove = cv_usejoystick.value && !Joystick.bGamepadStyle;
|
||||
gamepadjoystickmove = cv_usejoystick.value && Joystick.bGamepadStyle;
|
||||
|
||||
thisjoyaiming = (cv_chasecam.value) ? cv_chasefreelook.value : cv_alwaysfreelook.value;
|
||||
thisjoyaiming = (cv_chasecam.value && !player->spectator) ? cv_chasefreelook.value : cv_alwaysfreelook.value;
|
||||
|
||||
// Reset the vertical look if we're no longer joyaiming
|
||||
if (!thisjoyaiming && joyaiming)
|
||||
|
@ -1256,11 +1348,11 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
|
|||
movebkey = PLAYER2INPUTDOWN(gc_backward);
|
||||
|
||||
mouseaiming = (PLAYER2INPUTDOWN(gc_mouseaiming)) ^
|
||||
(cv_chasecam2.value ? cv_chasefreelook2.value : cv_alwaysfreelook2.value);
|
||||
((cv_chasecam2.value && !player->spectator) ? cv_chasefreelook2.value : cv_alwaysfreelook2.value);
|
||||
analogjoystickmove = cv_usejoystick2.value && !Joystick2.bGamepadStyle;
|
||||
gamepadjoystickmove = cv_usejoystick2.value && Joystick2.bGamepadStyle;
|
||||
|
||||
thisjoyaiming = (cv_chasecam2.value) ? cv_chasefreelook2.value : cv_alwaysfreelook2.value;
|
||||
thisjoyaiming = (cv_chasecam2.value && !player->spectator) ? cv_chasefreelook2.value : cv_alwaysfreelook2.value;
|
||||
|
||||
// Reset the vertical look if we're no longer joyaiming
|
||||
if (!thisjoyaiming && joyaiming)
|
||||
|
@ -1712,6 +1804,9 @@ void G_DoLoadLevel(boolean resetplayer)
|
|||
//
|
||||
void G_StartTitleCard(void)
|
||||
{
|
||||
wipestyleflags |= WSF_FADEIN;
|
||||
wipestyleflags &= ~WSF_FADEOUT;
|
||||
|
||||
// The title card has been disabled for this map.
|
||||
// Oh well.
|
||||
if (mapheaderinfo[gamemap-1]->levelflags & LF_NOTITLECARD)
|
||||
|
@ -1728,9 +1823,6 @@ void G_StartTitleCard(void)
|
|||
|
||||
// start the title card
|
||||
WipeStageTitle = (!titlemapinaction);
|
||||
WipeInLevel = true;
|
||||
wipestyleflags |= WSF_FADEIN;
|
||||
wipestyleflags &= ~WSF_FADEOUT;
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1749,9 +1841,6 @@ void G_PreLevelTitleCard(tic_t ticker, boolean update)
|
|||
I_Sleep();
|
||||
lasttime = nowtime;
|
||||
|
||||
// Run some bullshit whatever
|
||||
D_ProcessEvents();
|
||||
|
||||
ST_runTitleCard();
|
||||
ST_preLevelTitleCardDrawer(ticker, update);
|
||||
|
||||
|
@ -1927,7 +2016,7 @@ boolean G_Responder(event_t *ev)
|
|||
pausedelay = 1+(NEWTICRATE/2);
|
||||
else if (++pausedelay > 1+(NEWTICRATE/2)+(NEWTICRATE/3))
|
||||
{
|
||||
G_SetRetryFlag();
|
||||
G_SetModeAttackRetryFlag();
|
||||
return true;
|
||||
}
|
||||
pausedelay++; // counteract subsequent subtraction this frame
|
||||
|
@ -2234,6 +2323,9 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
|
|||
outofcoop = players[player].outofcoop;
|
||||
pflags = (players[player].pflags & (PF_FLIPCAM|PF_ANALOGMODE|PF_DIRECTIONCHAR|PF_AUTOBRAKE|PF_TAGIT|PF_GAMETYPEOVER));
|
||||
|
||||
if (!betweenmaps)
|
||||
pflags |= (players[player].pflags & PF_FINISHED);
|
||||
|
||||
// As long as we're not in multiplayer, carry over cheatcodes from map to map
|
||||
if (!(netgame || multiplayer))
|
||||
pflags |= (players[player].pflags & (PF_GODMODE|PF_NOCLIP|PF_INVIS));
|
||||
|
@ -2768,6 +2860,7 @@ void G_DoReborn(INT32 playernum)
|
|||
|
||||
// Do a wipe
|
||||
wipegamestate = -1;
|
||||
wipestyleflags = WSF_CROSSFADE;
|
||||
|
||||
if (camera.chase)
|
||||
P_ResetCamera(&players[displayplayer], &camera);
|
||||
|
@ -2888,7 +2981,7 @@ void G_AddPlayer(INT32 playernum)
|
|||
if (G_GametypeUsesLives() || ((netgame || multiplayer) && gametype == GT_COOP))
|
||||
p->lives = cv_startinglives.value;
|
||||
|
||||
if (countplayers && !notexiting)
|
||||
if ((countplayers && !notexiting) || G_IsSpecialStage(gamemap))
|
||||
P_DoPlayerExit(p);
|
||||
}
|
||||
|
||||
|
@ -2907,7 +3000,7 @@ boolean G_EnoughPlayersFinished(void)
|
|||
continue;
|
||||
|
||||
total++;
|
||||
if (players[i].pflags & PF_FINISHED)
|
||||
if ((players[i].pflags & PF_FINISHED) || players[i].exiting)
|
||||
exiting++;
|
||||
}
|
||||
|
||||
|
@ -3009,7 +3102,7 @@ boolean G_GametypeUsesLives(void)
|
|||
// Coop, Competitive
|
||||
if ((gametype == GT_COOP || gametype == GT_COMPETITION)
|
||||
&& !(modeattacking || metalrecording) // No lives in Time Attack
|
||||
//&& !G_IsSpecialStage(gamemap)
|
||||
&& !G_IsSpecialStage(gamemap)
|
||||
&& !(maptol & TOL_NIGHTS)) // No lives in NiGHTS
|
||||
return true;
|
||||
return false;
|
||||
|
@ -3122,12 +3215,51 @@ static INT16 RandMap(INT16 tolflags, INT16 pprevmap)
|
|||
return ix;
|
||||
}
|
||||
|
||||
//
|
||||
// G_UpdateVisited
|
||||
//
|
||||
static void G_UpdateVisited(void)
|
||||
{
|
||||
boolean spec = G_IsSpecialStage(gamemap);
|
||||
// Update visitation flags?
|
||||
if ((!modifiedgame || savemoddata) // Not modified
|
||||
&& !multiplayer && !demoplayback && (gametype == GT_COOP) // SP/RA/NiGHTS mode
|
||||
&& !(spec && stagefailed)) // Not failed the special stage
|
||||
{
|
||||
UINT8 earnedEmblems;
|
||||
|
||||
// Update visitation flags
|
||||
mapvisited[gamemap-1] |= MV_BEATEN;
|
||||
// eh, what the hell
|
||||
if (ultimatemode)
|
||||
mapvisited[gamemap-1] |= MV_ULTIMATE;
|
||||
// may seem incorrect but IS possible in what the main game uses as special stages, and nummaprings will be -1 in NiGHTS
|
||||
if (nummaprings > 0 && players[consoleplayer].rings >= nummaprings)
|
||||
mapvisited[gamemap-1] |= MV_PERFECT;
|
||||
if (!spec)
|
||||
{
|
||||
// not available to special stages because they can only really be done in one order in an unmodified game, so impossible for first six and trivial for seventh
|
||||
if (ALL7EMERALDS(emeralds))
|
||||
mapvisited[gamemap-1] |= MV_ALLEMERALDS;
|
||||
}
|
||||
|
||||
if (modeattacking == ATTACKING_RECORD)
|
||||
G_UpdateRecordReplays();
|
||||
else if (modeattacking == ATTACKING_NIGHTS)
|
||||
G_SetNightsRecords();
|
||||
|
||||
if ((earnedEmblems = M_CompletionEmblems()))
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for level completion.\n"), (UINT16)earnedEmblems, earnedEmblems > 1 ? "s" : "");
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// G_DoCompleted
|
||||
//
|
||||
static void G_DoCompleted(void)
|
||||
{
|
||||
INT32 i;
|
||||
boolean spec = G_IsSpecialStage(gamemap);
|
||||
|
||||
tokenlist = 0; // Reset the list
|
||||
|
||||
|
@ -3160,14 +3292,14 @@ static void G_DoCompleted(void)
|
|||
nextmap = (INT16)(mapheaderinfo[gamemap-1]->nextlevel-1);
|
||||
|
||||
// Remember last map for when you come out of the special stage.
|
||||
if (!G_IsSpecialStage(gamemap))
|
||||
if (!spec)
|
||||
lastmap = nextmap;
|
||||
|
||||
// If nextmap is actually going to get used, make sure it points to
|
||||
// a map of the proper gametype -- skip levels that don't support
|
||||
// the current gametype. (Helps avoid playing boss levels in Race,
|
||||
// for instance).
|
||||
if (!token && !G_IsSpecialStage(gamemap)
|
||||
if (!token && !spec
|
||||
&& (nextmap >= 0 && nextmap < NUMMAPS))
|
||||
{
|
||||
register INT16 cm = nextmap;
|
||||
|
@ -3231,7 +3363,7 @@ static void G_DoCompleted(void)
|
|||
gottoken = false;
|
||||
}
|
||||
|
||||
if (G_IsSpecialStage(gamemap) && !gottoken)
|
||||
if (spec && !gottoken)
|
||||
nextmap = lastmap; // Exiting from a special stage? Go back to the game. Tails 08-11-2001
|
||||
|
||||
automapactive = false;
|
||||
|
@ -3250,17 +3382,29 @@ static void G_DoCompleted(void)
|
|||
if (nextmap < NUMMAPS && !mapheaderinfo[nextmap])
|
||||
P_AllocMapHeader(nextmap);
|
||||
|
||||
if (skipstats && !modeattacking) // Don't skip stats if we're in record attack
|
||||
if ((skipstats && !modeattacking) || (spec && modeattacking && stagefailed))
|
||||
{
|
||||
G_UpdateVisited();
|
||||
G_AfterIntermission();
|
||||
}
|
||||
else
|
||||
{
|
||||
G_SetGamestate(GS_INTERMISSION);
|
||||
Y_StartIntermission();
|
||||
G_UpdateVisited();
|
||||
}
|
||||
}
|
||||
|
||||
void G_AfterIntermission(void)
|
||||
{
|
||||
Y_CleanupScreenBuffer();
|
||||
|
||||
if (modeattacking)
|
||||
{
|
||||
M_EndModeAttackRun();
|
||||
return;
|
||||
}
|
||||
|
||||
HU_ClearCEcho();
|
||||
|
||||
if (mapheaderinfo[gamemap-1]->cutscenenum && !modeattacking && skipstats <= 1) // Start a custom cutscene.
|
||||
|
@ -3427,7 +3571,6 @@ void G_LoadGameData(void)
|
|||
UINT32 recscore;
|
||||
tic_t rectime;
|
||||
UINT16 recrings;
|
||||
boolean gotperf;
|
||||
|
||||
UINT8 recmares;
|
||||
INT32 curmare;
|
||||
|
@ -3525,7 +3668,7 @@ void G_LoadGameData(void)
|
|||
recscore = READUINT32(save_p);
|
||||
rectime = (tic_t)READUINT32(save_p);
|
||||
recrings = READUINT16(save_p);
|
||||
gotperf = (boolean)READUINT8(save_p);
|
||||
save_p++; // compat
|
||||
|
||||
if (recrings > 10000 || recscore > MAXSCORE)
|
||||
goto datacorrupt;
|
||||
|
@ -3537,9 +3680,6 @@ void G_LoadGameData(void)
|
|||
mainrecords[i]->time = rectime;
|
||||
mainrecords[i]->rings = recrings;
|
||||
}
|
||||
|
||||
if (gotperf)
|
||||
mainrecords[i]->gotperfect = gotperf;
|
||||
}
|
||||
|
||||
// Nights records
|
||||
|
@ -3671,15 +3811,14 @@ void G_SaveGameData(void)
|
|||
WRITEUINT32(save_p, mainrecords[i]->score);
|
||||
WRITEUINT32(save_p, mainrecords[i]->time);
|
||||
WRITEUINT16(save_p, mainrecords[i]->rings);
|
||||
WRITEUINT8(save_p, mainrecords[i]->gotperfect);
|
||||
}
|
||||
else
|
||||
{
|
||||
WRITEUINT32(save_p, 0);
|
||||
WRITEUINT32(save_p, 0);
|
||||
WRITEUINT16(save_p, 0);
|
||||
WRITEUINT8(save_p, 0);
|
||||
}
|
||||
WRITEUINT8(save_p, 0); // compat
|
||||
}
|
||||
|
||||
// NiGHTS records
|
||||
|
@ -3996,6 +4135,8 @@ void G_InitNew(UINT8 pultmode, const char *mapname, boolean resetplayer, boolean
|
|||
{
|
||||
INT32 i;
|
||||
|
||||
Y_CleanupScreenBuffer();
|
||||
|
||||
if (paused)
|
||||
{
|
||||
paused = false;
|
||||
|
@ -4726,6 +4867,12 @@ void G_WriteGhostTic(mobj_t *ghost)
|
|||
oldghost.flags2 |= MF2_AMBUSH;
|
||||
}
|
||||
|
||||
if (ghost->player->followmobj->scale != ghost->scale)
|
||||
{
|
||||
followtic |= FZT_SCALE;
|
||||
WRITEFIXED(demo_p,ghost->player->followmobj->scale);
|
||||
}
|
||||
|
||||
temp = (INT16)((ghost->player->followmobj->x-ghost->x)>>8);
|
||||
WRITEINT16(demo_p,temp);
|
||||
temp = (INT16)((ghost->player->followmobj->y-ghost->y)>>8);
|
||||
|
@ -4737,11 +4884,6 @@ void G_WriteGhostTic(mobj_t *ghost)
|
|||
WRITEUINT16(demo_p,ghost->player->followmobj->sprite);
|
||||
WRITEUINT8(demo_p,(ghost->player->followmobj->frame & FF_FRAMEMASK));
|
||||
WRITEUINT8(demo_p,ghost->player->followmobj->color);
|
||||
if (ghost->player->followmobj->scale != ghost->scale)
|
||||
{
|
||||
followtic |= FZT_SCALE;
|
||||
WRITEFIXED(demo_p,ghost->player->followmobj->scale);
|
||||
}
|
||||
|
||||
*followtic_p = followtic;
|
||||
}
|
||||
|
@ -6789,6 +6931,22 @@ boolean G_GetRetryFlag(void)
|
|||
return retrying;
|
||||
}
|
||||
|
||||
void G_SetModeAttackRetryFlag(void)
|
||||
{
|
||||
retryingmodeattack = true;
|
||||
G_SetRetryFlag();
|
||||
}
|
||||
|
||||
void G_ClearModeAttackRetryFlag(void)
|
||||
{
|
||||
retryingmodeattack = false;
|
||||
}
|
||||
|
||||
boolean G_GetModeAttackRetryFlag(void)
|
||||
{
|
||||
return retryingmodeattack;
|
||||
}
|
||||
|
||||
// Time utility functions
|
||||
INT32 G_TicsToHours(tic_t tics)
|
||||
{
|
||||
|
|
|
@ -225,10 +225,14 @@ void G_AddPlayer(INT32 playernum);
|
|||
void G_SetExitGameFlag(void);
|
||||
void G_ClearExitGameFlag(void);
|
||||
boolean G_GetExitGameFlag(void);
|
||||
|
||||
void G_SetRetryFlag(void);
|
||||
void G_ClearRetryFlag(void);
|
||||
boolean G_GetRetryFlag(void);
|
||||
|
||||
void G_SetModeAttackRetryFlag(void);
|
||||
void G_ClearModeAttackRetryFlag(void);
|
||||
boolean G_GetModeAttackRetryFlag(void);
|
||||
|
||||
void G_LoadGameData(void);
|
||||
void G_LoadGameSettings(void);
|
||||
|
|
|
@ -771,18 +771,25 @@ void HWR_InitTextureCache(void)
|
|||
gr_textures2 = NULL;
|
||||
}
|
||||
|
||||
|
||||
// Callback function for HWR_FreeTextureCache.
|
||||
static void FreeMipmapColormap(INT32 patchnum, void *patch)
|
||||
{
|
||||
GLPatch_t* const grpatch = patch;
|
||||
GLPatch_t* const pat = patch;
|
||||
(void)patchnum; //unused
|
||||
while (grpatch->mipmap->nextcolormap)
|
||||
while (pat->mipmap && pat->mipmap->nextcolormap) // The mipmap must be valid, obviously
|
||||
{
|
||||
GLMipmap_t *grmip = grpatch->mipmap->nextcolormap;
|
||||
grpatch->mipmap->nextcolormap = grmip->nextcolormap;
|
||||
if (grmip->grInfo.data) Z_Free(grmip->grInfo.data);
|
||||
free(grmip);
|
||||
// Confusing at first, but pat->mipmap->nextcolormap
|
||||
// at the beginning of the loop is the first colormap
|
||||
// from the linked list of colormaps
|
||||
GLMipmap_t *next = pat->mipmap->nextcolormap;
|
||||
// Set the first colormap
|
||||
// to the one that comes after it
|
||||
pat->mipmap->nextcolormap = next->nextcolormap;
|
||||
// Free image data from memory
|
||||
if (next->grInfo.data)
|
||||
Z_Free(next->grInfo.data);
|
||||
// Free the old colormap from memory
|
||||
free(next);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -799,7 +806,7 @@ void HWR_FreeTextureCache(void)
|
|||
|
||||
// Alam: free the Z_Blocks before freeing it's users
|
||||
|
||||
// free all skin after each level: must be done after pfnClearMipMapCache!
|
||||
// free all patch colormaps after each level: must be done after ClearMipMapCache!
|
||||
for (i = 0; i < numwadfiles; i++)
|
||||
M_AATreeIterate(wadfiles[i]->hwrcache, FreeMipmapColormap);
|
||||
|
||||
|
|
|
@ -71,7 +71,6 @@ EXPORT void HWRAPI(FlushScreenTextures) (void);
|
|||
EXPORT void HWRAPI(StartScreenWipe) (void);
|
||||
EXPORT void HWRAPI(EndScreenWipe) (void);
|
||||
EXPORT void HWRAPI(DoScreenWipe) (void);
|
||||
EXPORT void HWRAPI(DoScreenWipeLevel) (void);
|
||||
EXPORT void HWRAPI(DrawIntermissionBG) (void);
|
||||
EXPORT void HWRAPI(MakeScreenTexture) (void);
|
||||
EXPORT void HWRAPI(MakeScreenFinalTexture) (void);
|
||||
|
@ -113,7 +112,6 @@ struct hwdriver_s
|
|||
StartScreenWipe pfnStartScreenWipe;
|
||||
EndScreenWipe pfnEndScreenWipe;
|
||||
DoScreenWipe pfnDoScreenWipe;
|
||||
DoScreenWipeLevel pfnDoScreenWipeLevel;
|
||||
DrawIntermissionBG pfnDrawIntermissionBG;
|
||||
MakeScreenTexture pfnMakeScreenTexture;
|
||||
MakeScreenFinalTexture pfnMakeScreenFinalTexture;
|
||||
|
|
|
@ -586,7 +586,6 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[SUPERSPARK_L], // SPR_BOM3
|
||||
&lspr[NOLIGHT], // SPR_BOM4
|
||||
&lspr[REDBALL_L], // SPR_BMNB
|
||||
&lspr[NOLIGHT], // SPR_WDDB
|
||||
|
||||
// Crumbly rocks
|
||||
&lspr[NOLIGHT], // SPR_ROIA
|
||||
|
@ -606,8 +605,10 @@ light_t *t_lspr[NUMSPRITES] =
|
|||
&lspr[NOLIGHT], // SPR_ROIO
|
||||
&lspr[NOLIGHT], // SPR_ROIP
|
||||
|
||||
// Bricks
|
||||
// Level debris
|
||||
&lspr[NOLIGHT], // SPR_GFZD
|
||||
&lspr[NOLIGHT], // SPR_BRIC
|
||||
&lspr[NOLIGHT], // SPR_WDDB
|
||||
|
||||
// Gravity Well Objects
|
||||
&lspr[NOLIGHT], // SPR_GWLG
|
||||
|
|
|
@ -1973,7 +1973,7 @@ static void HWR_StoreWallRange(double startfrac, double endfrac)
|
|||
{
|
||||
// Single sided line... Deal only with the middletexture (if one exists)
|
||||
gr_midtexture = R_GetTextureNum(gr_sidedef->midtexture);
|
||||
if (gr_midtexture && gr_linedef->special != 41) // Ignore horizon line for OGL
|
||||
if (gr_midtexture && gr_linedef->special != HORIZONSPECIAL) // Ignore horizon line for OGL
|
||||
{
|
||||
{
|
||||
fixed_t texturevpeg;
|
||||
|
@ -7085,26 +7085,6 @@ void HWR_DoTintedWipe(UINT8 wipenum, UINT8 scrnnum)
|
|||
HWR_DoWipe(wipenum, scrnnum);
|
||||
}
|
||||
|
||||
void HWR_DoLevelWipe(UINT8 wipenum, UINT8 scrnnum, UINT8 colfill)
|
||||
{
|
||||
#ifndef LEVELWIPES
|
||||
(void)wipenum;
|
||||
(void)scrnnum;
|
||||
(void)colfill;
|
||||
#else
|
||||
if (!HWR_WipeCheck(wipenum, scrnnum))
|
||||
return;
|
||||
|
||||
HWR_EndScreenWipe();
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, colfill);
|
||||
HWR_StartScreenWipe();
|
||||
HWR_GetFadeMask(wipelumpnum);
|
||||
|
||||
HWD.pfnDoScreenWipeLevel();
|
||||
F_WipeStageTitle();
|
||||
#endif
|
||||
}
|
||||
|
||||
void HWR_MakeScreenFinalTexture(void)
|
||||
{
|
||||
HWD.pfnMakeScreenFinalTexture();
|
||||
|
|
|
@ -67,7 +67,6 @@ void HWR_EndScreenWipe(void);
|
|||
void HWR_DrawIntermissionBG(void);
|
||||
void HWR_DoWipe(UINT8 wipenum, UINT8 scrnnum);
|
||||
void HWR_DoTintedWipe(UINT8 wipenum, UINT8 scrnnum);
|
||||
void HWR_DoLevelWipe(UINT8 wipenum, UINT8 scrnnum, UINT8 wipecolorfill);
|
||||
void HWR_MakeScreenFinalTexture(void);
|
||||
void HWR_DrawScreenFinalTexture(int width, int height);
|
||||
|
||||
|
|
|
@ -417,6 +417,14 @@ static PFNglClientActiveTexture pglClientActiveTexture;
|
|||
#define GL_TEXTURE1 0x84C1
|
||||
#endif
|
||||
|
||||
/* 1.5 Parms */
|
||||
#ifndef GL_ARRAY_BUFFER
|
||||
#define GL_ARRAY_BUFFER 0x8892
|
||||
#endif
|
||||
#ifndef GL_STATIC_DRAW
|
||||
#define GL_STATIC_DRAW 0x88E4
|
||||
#endif
|
||||
|
||||
boolean SetupGLfunc(void)
|
||||
{
|
||||
#ifndef STATIC_OPENGL
|
||||
|
@ -2587,11 +2595,6 @@ EXPORT void HWRAPI(DoScreenWipe)(void)
|
|||
tex_downloaded = endScreenWipe;
|
||||
}
|
||||
|
||||
EXPORT void HWRAPI(DoScreenWipeLevel)(void)
|
||||
{
|
||||
DoScreenWipe();
|
||||
}
|
||||
|
||||
// Create a texture from the screen.
|
||||
EXPORT void HWRAPI(MakeScreenTexture) (void)
|
||||
{
|
||||
|
|
152
src/info.c
152
src/info.c
|
@ -483,7 +483,6 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"BOM3", // Boss Explosion 2
|
||||
"BOM4", // Underwater Explosion
|
||||
"BMNB", // Mine Explosion
|
||||
"WDDB", // Wood Debris
|
||||
|
||||
// Crumbly rocks
|
||||
"ROIA",
|
||||
|
@ -503,8 +502,10 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"ROIO",
|
||||
"ROIP",
|
||||
|
||||
// Bricks
|
||||
"BRIC",
|
||||
// Level debris
|
||||
"GFZD", // GFZ debris
|
||||
"BRIC", // Bricks
|
||||
"WDDB", // Wood Debris
|
||||
|
||||
// Gravity Well Objects
|
||||
"GWLG",
|
||||
|
@ -634,7 +635,7 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = {
|
|||
0, // SPR2_TRNS,
|
||||
|
||||
FF_SPR2SUPER|SPR2_STND, // SPR2_NSTD,
|
||||
FF_SPR2SUPER|SPR2_FLT , // SPR2_NFLT,
|
||||
FF_SPR2SUPER|SPR2_FALL, // SPR2_NFLT,
|
||||
0, // SPR2_NFLY, (will never be referenced unless skin 0 lacks this)
|
||||
SPR2_NFLY, // SPR2_NDRL,
|
||||
FF_SPR2SUPER|SPR2_STUN, // SPR2_NSTN,
|
||||
|
@ -1073,23 +1074,11 @@ state_t states[NUMSTATES] =
|
|||
{SPR_MNUD, 2|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST4}, // S_MINUS_BURST3
|
||||
{SPR_MNUD, 3|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUS_BURST5}, // S_MINUS_BURST4
|
||||
{SPR_MNUD, 4|FF_ANIMATE, 5, {NULL}, 1, 2, S_MINUSDIRT2}, // S_MINUS_BURST5
|
||||
{SPR_MNUS, 0, 1, {A_MinusPopup}, 0, 0, S_MINUS_UPWARD1}, // S_MINUS_POPUP
|
||||
{SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD2}, // S_MINUS_UPWARD1
|
||||
{SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD3}, // S_MINUS_UPWARD2
|
||||
{SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD4}, // S_MINUS_UPWARD3
|
||||
{SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD5}, // S_MINUS_UPWARD4
|
||||
{SPR_MNUS, 4, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD6}, // S_MINUS_UPWARD5
|
||||
{SPR_MNUS, 5, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD7}, // S_MINUS_UPWARD6
|
||||
{SPR_MNUS, 6, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD8}, // S_MINUS_UPWARD7
|
||||
{SPR_MNUS, 7, 1, {A_MinusCheck}, 0, 0, S_MINUS_UPWARD1}, // S_MINUS_UPWARD8
|
||||
{SPR_MNUS, 8, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD2}, // S_MINUS_DOWNWARD1
|
||||
{SPR_MNUS, 9, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD3}, // S_MINUS_DOWNWARD2
|
||||
{SPR_MNUS, 10, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD4}, // S_MINUS_DOWNWARD3
|
||||
{SPR_MNUS, 11, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD5}, // S_MINUS_DOWNWARD4
|
||||
{SPR_MNUS, 12, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD6}, // S_MINUS_DOWNWARD5
|
||||
{SPR_MNUS, 13, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD7}, // S_MINUS_DOWNWARD6
|
||||
{SPR_MNUS, 14, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD8}, // S_MINUS_DOWNWARD7
|
||||
{SPR_MNUS, 15, 1, {A_MinusCheck}, 0, 0, S_MINUS_DOWNWARD1}, // S_MINUS_DOWNWARD8
|
||||
{SPR_MNUS, 3, 1, {A_MinusPopup}, 0, 0, S_MINUS_AERIAL1}, // S_MINUS_POPUP
|
||||
{SPR_MNUS, 0, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL2}, // S_MINUS_AERIAL1
|
||||
{SPR_MNUS, 1, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL3}, // S_MINUS_AERIAL2
|
||||
{SPR_MNUS, 2, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL4}, // S_MINUS_AERIAL3
|
||||
{SPR_MNUS, 3, 1, {A_MinusCheck}, 0, 1, S_MINUS_AERIAL1}, // S_MINUS_AERIAL4
|
||||
|
||||
{SPR_MNUD, FF_ANIMATE, 6, {NULL}, 1, 5, S_MINUSDIRT2}, // S_MINUSDIRT1
|
||||
{SPR_MNUD, 5, 8, {NULL}, 3, 5, S_MINUSDIRT3}, // S_MINUSDIRT2
|
||||
|
@ -1630,13 +1619,13 @@ state_t states[NUMSTATES] =
|
|||
{SPR_BRAK, 18, 0, {A_CheckHealth}, 3, S_CYBRAKDEMON_PAIN3, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN2
|
||||
{SPR_BRAK, 18, 0, {A_LinedefExecute}, LE_PINCHPHASE, 0, S_CYBRAKDEMON_CHOOSE_ATTACK1}, // S_CYBRAKDEMON_PAIN3
|
||||
{SPR_BRAK, 18, 1, {A_Repeat}, 1, S_CYBRAKDEMON_DIE1, S_CYBRAKDEMON_DIE2}, // S_CYBRAKDEMON_DIE1
|
||||
{SPR_BRAK, 18, 2, {A_BossScream}, 0, 0, S_CYBRAKDEMON_DIE3}, // S_CYBRAKDEMON_DIE2
|
||||
{SPR_BRAK, 18, 2, {A_BossScream}, 2, 0, S_CYBRAKDEMON_DIE3}, // S_CYBRAKDEMON_DIE2
|
||||
{SPR_BRAK, 18, 0, {A_Repeat}, 52, S_CYBRAKDEMON_DIE2, S_CYBRAKDEMON_DIE4}, // S_CYBRAKDEMON_DIE3
|
||||
{SPR_BRAK, 13, 14, {A_PlaySound}, sfx_bedie2, 0, S_CYBRAKDEMON_DIE5}, // S_CYBRAKDEMON_DIE4
|
||||
{SPR_BRAK, 14, 7, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6}, // S_CYBRAKDEMON_DIE5
|
||||
{SPR_BRAK, 15, 5, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7}, // S_CYBRAKDEMON_DIE6
|
||||
{SPR_BRAK, 16, 3, {A_PlaySound}, sfx_bgxpld, 0, S_CYBRAKDEMON_DIE8}, // S_CYBRAKDEMON_DIE7
|
||||
{SPR_BRAK, 17, -1, {A_BossDeath}, 0, 0, S_NULL}, // S_CYBRAKDEMON_DIE8
|
||||
{SPR_BRAK, 13, 34, {A_BossDeath}, 0, 0, S_CYBRAKDEMON_DIE5}, // S_CYBRAKDEMON_DIE4
|
||||
{SPR_BRAK, 14, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE6}, // S_CYBRAKDEMON_DIE5
|
||||
{SPR_BRAK, 15, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE7}, // S_CYBRAKDEMON_DIE6
|
||||
{SPR_BRAK, 16, 34, {NULL}, 0, 0, S_CYBRAKDEMON_DIE8}, // S_CYBRAKDEMON_DIE7
|
||||
{SPR_BRAK, 17, 34, {NULL}, sfx_befall, 0, S_CYBRAKDEMON_DIE8}, // S_CYBRAKDEMON_DIE8
|
||||
{SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 2, S_CYBRAKDEMON_IDLE}, // S_CYBRAKDEMON_DEINVINCIBLERIZE
|
||||
{SPR_BRAK, 0, 0, {A_SetObjectFlags}, MF_SPECIAL|MF_SHOOTABLE, 1, S_CYBRAKDEMON_IDLE}, // S_CYBRAKDEMON_INVINCIBLERIZE
|
||||
|
||||
|
@ -3883,8 +3872,6 @@ state_t states[NUMSTATES] =
|
|||
{SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4}, // S_DUST3
|
||||
{SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL}, // S_DUST4
|
||||
|
||||
{SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL}, // S_WOODDEBRIS
|
||||
|
||||
{SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN}, // S_ROCKSPAWN
|
||||
|
||||
{SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEA
|
||||
|
@ -3904,7 +3891,9 @@ state_t states[NUMSTATES] =
|
|||
{SPR_ROIO, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEO
|
||||
{SPR_ROIP, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 2, S_NULL}, // S_ROCKCRUMBLEP
|
||||
|
||||
{SPR_GFZD, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 31, 1, S_NULL}, // S_GFZDEBRIS
|
||||
{SPR_BRIC, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL}, // S_BRICKDEBRIS
|
||||
{SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL}, // S_WOODDEBRIS
|
||||
|
||||
#ifdef SEENAMES
|
||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
|
||||
|
@ -4296,7 +4285,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_DETON1, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_DETON2, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_s3k86, // seesound -- sfx_kc57 for a self-propelled deton...
|
||||
1, // reactiontime
|
||||
sfx_deton, // attacksound
|
||||
S_NULL, // painstate
|
||||
|
@ -4703,7 +4692,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_ROBOHOOD_STAND, // seestate
|
||||
sfx_None, // seesound
|
||||
TICRATE, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
sfx_ngjump, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
|
@ -13380,7 +13369,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_SPECIAL|MF_PAIN|MF_NOGRAVITY, // flags
|
||||
MF_SPECIAL|MF_PAIN|MF_NOGRAVITY|MF_FIRE, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
@ -13448,7 +13437,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
12*TICRATE, // painchance (sets how long an unridden rock should last before disappearing - set to 0 to disable)
|
||||
sfx_None, // painsound
|
||||
sfx_s3k49, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
|
@ -20960,33 +20949,6 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_WOODDEBRIS
|
||||
-1, // doomednum
|
||||
S_WOODDEBRIS, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
16*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_wbreak, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_RUNSPAWNFUNC|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_ROCKSPAWNER
|
||||
1202, // doomednum
|
||||
S_ROCKSPAWN, // spawnstate
|
||||
|
@ -21473,16 +21435,16 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BRICKDEBRIS
|
||||
{ // MT_GFZDEBRIS
|
||||
-1, // doomednum
|
||||
S_BRICKDEBRIS, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_GFZDEBRIS, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
sfx_None, // seesound
|
||||
0, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
|
@ -21490,16 +21452,70 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
16*FRACUNIT, // radius
|
||||
32*FRACUNIT, // radius
|
||||
64*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_crumbl, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_RUNSPAWNFUNC|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BRICKDEBRIS
|
||||
-1, // doomednum
|
||||
S_BRICKDEBRIS, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
16*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_RUNSPAWNFUNC|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_WOODDEBRIS
|
||||
-1, // doomednum
|
||||
S_WOODDEBRIS, // spawnstate
|
||||
1, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
16*FRACUNIT, // radius
|
||||
16*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_wbreak, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_RUNSPAWNFUNC|MF_NOCLIPHEIGHT|MF_SCENERY, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
#ifdef SEENAMES
|
||||
{ // MT_NAMECHECK
|
||||
-1, // doomednum
|
||||
|
|
38
src/info.h
38
src/info.h
|
@ -748,7 +748,6 @@ typedef enum sprite
|
|||
SPR_BOM3, // Boss Explosion 2
|
||||
SPR_BOM4, // Underwater Explosion
|
||||
SPR_BMNB, // Mine Explosion
|
||||
SPR_WDDB, // Wood Debris
|
||||
|
||||
// Crumbly rocks
|
||||
SPR_ROIA,
|
||||
|
@ -768,8 +767,10 @@ typedef enum sprite
|
|||
SPR_ROIO,
|
||||
SPR_ROIP,
|
||||
|
||||
// Bricks
|
||||
SPR_BRIC,
|
||||
// Level debris
|
||||
SPR_GFZD, // GFZ debris
|
||||
SPR_BRIC, // Bricks
|
||||
SPR_WDDB, // Wood Debris
|
||||
|
||||
// Gravity Well Objects
|
||||
SPR_GWLG,
|
||||
|
@ -1269,22 +1270,10 @@ typedef enum state
|
|||
S_MINUS_BURST4,
|
||||
S_MINUS_BURST5,
|
||||
S_MINUS_POPUP,
|
||||
S_MINUS_UPWARD1,
|
||||
S_MINUS_UPWARD2,
|
||||
S_MINUS_UPWARD3,
|
||||
S_MINUS_UPWARD4,
|
||||
S_MINUS_UPWARD5,
|
||||
S_MINUS_UPWARD6,
|
||||
S_MINUS_UPWARD7,
|
||||
S_MINUS_UPWARD8,
|
||||
S_MINUS_DOWNWARD1,
|
||||
S_MINUS_DOWNWARD2,
|
||||
S_MINUS_DOWNWARD3,
|
||||
S_MINUS_DOWNWARD4,
|
||||
S_MINUS_DOWNWARD5,
|
||||
S_MINUS_DOWNWARD6,
|
||||
S_MINUS_DOWNWARD7,
|
||||
S_MINUS_DOWNWARD8,
|
||||
S_MINUS_AERIAL1,
|
||||
S_MINUS_AERIAL2,
|
||||
S_MINUS_AERIAL3,
|
||||
S_MINUS_AERIAL4,
|
||||
|
||||
// Minus dirt
|
||||
S_MINUSDIRT1,
|
||||
|
@ -3970,8 +3959,6 @@ typedef enum state
|
|||
S_DUST3,
|
||||
S_DUST4,
|
||||
|
||||
S_WOODDEBRIS,
|
||||
|
||||
S_ROCKSPAWN,
|
||||
|
||||
S_ROCKCRUMBLEA,
|
||||
|
@ -3991,8 +3978,10 @@ typedef enum state
|
|||
S_ROCKCRUMBLEO,
|
||||
S_ROCKCRUMBLEP,
|
||||
|
||||
// Bricks
|
||||
// Level debris
|
||||
S_GFZDEBRIS,
|
||||
S_BRICKDEBRIS,
|
||||
S_WOODDEBRIS,
|
||||
|
||||
#ifdef SEENAMES
|
||||
S_NAMECHECK,
|
||||
|
@ -4768,7 +4757,6 @@ typedef enum mobj_type
|
|||
MT_EXPLODE, // Robot Explosion
|
||||
MT_UWEXPLODE, // Underwater Explosion
|
||||
MT_DUST,
|
||||
MT_WOODDEBRIS,
|
||||
MT_ROCKSPAWNER,
|
||||
MT_FALLINGROCK,
|
||||
MT_ROCKCRUMBLE1,
|
||||
|
@ -4788,8 +4776,10 @@ typedef enum mobj_type
|
|||
MT_ROCKCRUMBLE15,
|
||||
MT_ROCKCRUMBLE16,
|
||||
|
||||
// Bricks
|
||||
// Level debris
|
||||
MT_GFZDEBRIS,
|
||||
MT_BRICKDEBRIS,
|
||||
MT_WOODDEBRIS,
|
||||
|
||||
#ifdef SEENAMES
|
||||
MT_NAMECHECK,
|
||||
|
|
|
@ -284,6 +284,8 @@ void M_SilentUpdateUnlockablesAndEmblems(void)
|
|||
continue;
|
||||
unlockables[i].unlocked = M_Achieved(unlockables[i].conditionset - 1);
|
||||
}
|
||||
|
||||
players[consoleplayer].availabilities = players[1].availabilities = R_GetSkinAvailabilities(); // players[1] is supposed to be for 2p
|
||||
}
|
||||
|
||||
// Emblem unlocking shit
|
||||
|
|
156
src/m_menu.c
156
src/m_menu.c
|
@ -312,9 +312,7 @@ menu_t OP_VideoOptionsDef, OP_VideoModeDef, OP_ColorOptionsDef;
|
|||
menu_t OP_OpenGLOptionsDef, OP_OpenGLFogDef, OP_OpenGLColorDef;
|
||||
#endif
|
||||
menu_t OP_SoundOptionsDef;
|
||||
#ifdef HAVE_MIXERX
|
||||
menu_t OP_SoundAdvancedDef;
|
||||
#endif
|
||||
|
||||
//Misc
|
||||
menu_t OP_DataOptionsDef, OP_ScreenshotOptionsDef, OP_EraseDataDef;
|
||||
|
@ -474,25 +472,25 @@ static consvar_t cv_dummymares = {"dummymares", "Overall", CV_HIDEN|CV_CALL, dum
|
|||
// ---------
|
||||
static menuitem_t MainMenu[] =
|
||||
{
|
||||
{IT_STRING|IT_CALL, NULL, "Secrets", M_SecretsMenu, 76},
|
||||
{IT_STRING|IT_CALL, NULL, "1 player", M_SinglePlayerMenu, 84},
|
||||
{IT_STRING|IT_CALL, NULL, "1 Player", M_SinglePlayerMenu, 76},
|
||||
#ifndef NONET
|
||||
{IT_STRING|IT_SUBMENU, NULL, "multiplayer", &MP_MainDef, 92},
|
||||
{IT_STRING|IT_SUBMENU, NULL, "Multiplayer", &MP_MainDef, 84},
|
||||
#else
|
||||
{IT_STRING|IT_CALL, NULL, "multiplayer", M_StartSplitServerMenu, 92},
|
||||
{IT_STRING|IT_CALL, NULL, "Multiplayer", M_StartSplitServerMenu, 84},
|
||||
#endif
|
||||
{IT_STRING|IT_CALL, NULL, "options", M_Options, 100},
|
||||
{IT_CALL |IT_STRING, NULL, "addons", M_Addons, 108},
|
||||
{IT_STRING|IT_CALL, NULL, "quit game", M_QuitSRB2, 116},
|
||||
{IT_STRING|IT_CALL, NULL, "Extras", M_SecretsMenu, 92},
|
||||
{IT_CALL |IT_STRING, NULL, "Addons", M_Addons, 100},
|
||||
{IT_STRING|IT_CALL, NULL, "Options", M_Options, 108},
|
||||
{IT_STRING|IT_CALL, NULL, "Quit Game", M_QuitSRB2, 116},
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
secrets = 0,
|
||||
singleplr,
|
||||
singleplr = 0,
|
||||
multiplr,
|
||||
options,
|
||||
secrets,
|
||||
addons,
|
||||
options,
|
||||
quitdoom
|
||||
} main_e;
|
||||
|
||||
|
@ -661,7 +659,7 @@ static menuitem_t SR_PandorasBox[] =
|
|||
// Sky Room Custom Unlocks
|
||||
static menuitem_t SR_MainMenu[] =
|
||||
{
|
||||
{IT_STRING|IT_SUBMENU,NULL, "Secrets Checklist", &SR_UnlockChecklistDef, 0},
|
||||
{IT_STRING|IT_SUBMENU,NULL, "Extras Checklist", &SR_UnlockChecklistDef, 0},
|
||||
{IT_DISABLED, NULL, "", NULL, 0}, // Custom1
|
||||
{IT_DISABLED, NULL, "", NULL, 0}, // Custom2
|
||||
{IT_DISABLED, NULL, "", NULL, 0}, // Custom3
|
||||
|
@ -726,19 +724,19 @@ static menuitem_t SR_EmblemHintMenu[] =
|
|||
// Single Player Main
|
||||
static menuitem_t SP_MainMenu[] =
|
||||
{
|
||||
{IT_CALL | IT_STRING, NULL, "Tutorial", M_StartTutorial, 84},
|
||||
{IT_CALL | IT_STRING, NULL, "Start Game", M_LoadGame, 92},
|
||||
{IT_SECRET, NULL, "Record Attack", M_TimeAttack, 100},
|
||||
{IT_SECRET, NULL, "NiGHTS Mode", M_NightsAttack, 108},
|
||||
{IT_CALL | IT_STRING | IT_CALL_NOTMODIFIED, NULL, "Statistics", M_Statistics, 116},
|
||||
{IT_CALL | IT_STRING, NULL, "Start Game", M_LoadGame, 84},
|
||||
{IT_SECRET, NULL, "Record Attack", M_TimeAttack, 92},
|
||||
{IT_SECRET, NULL, "NiGHTS Mode", M_NightsAttack, 100},
|
||||
{IT_CALL | IT_STRING, NULL, "Tutorial", M_StartTutorial, 108},
|
||||
{IT_CALL | IT_STRING | IT_CALL_NOTMODIFIED, NULL, "Statistics", M_Statistics, 116}
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
sptutorial,
|
||||
sploadgame,
|
||||
sprecordattack,
|
||||
spnightsmode,
|
||||
sptutorial,
|
||||
spstatistics
|
||||
};
|
||||
|
||||
|
@ -1348,29 +1346,22 @@ static menuitem_t OP_OpenGLColorMenu[] =
|
|||
static menuitem_t OP_SoundOptionsMenu[] =
|
||||
{
|
||||
{IT_HEADER, NULL, "Game Audio", NULL, 0},
|
||||
{IT_STRING | IT_CVAR, NULL, "Sound Effects", &cv_gamesounds, 6},
|
||||
{IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Sound Volume", &cv_soundvolume, 11},
|
||||
{IT_STRING | IT_CVAR, NULL, "Sound Effects", &cv_gamesounds, 12},
|
||||
{IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Sound Volume", &cv_soundvolume, 22},
|
||||
|
||||
{IT_STRING | IT_CVAR, NULL, "Digital Music", &cv_gamedigimusic, 21},
|
||||
{IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Digital Music Volume", &cv_digmusicvolume, 26},
|
||||
{IT_STRING | IT_CVAR, NULL, "Digital Music", &cv_gamedigimusic, 42},
|
||||
{IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "Digital Music Volume", &cv_digmusicvolume, 52},
|
||||
|
||||
{IT_STRING | IT_CVAR, NULL, "MIDI Music", &cv_gamemidimusic, 36},
|
||||
{IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "MIDI Music Volume", &cv_midimusicvolume, 41},
|
||||
{IT_STRING | IT_CVAR, NULL, "MIDI Music", &cv_gamemidimusic, 72},
|
||||
{IT_STRING | IT_CVAR | IT_CV_SLIDER, NULL, "MIDI Music Volume", &cv_midimusicvolume, 82},
|
||||
|
||||
{IT_HEADER, NULL, "Accessibility", NULL, 50},
|
||||
{IT_STRING | IT_CVAR, NULL, "Closed Captioning", &cv_closedcaptioning, 56},
|
||||
{IT_STRING | IT_CVAR, NULL, "Reset Music Upon Dying", &cv_resetmusic, 61},
|
||||
{IT_HEADER, NULL, "Miscellaneous", NULL, 102},
|
||||
{IT_STRING | IT_CVAR, NULL, "Closed Captioning", &cv_closedcaptioning, 114},
|
||||
{IT_STRING | IT_CVAR, NULL, "Reset Music Upon Dying", &cv_resetmusic, 124},
|
||||
|
||||
{IT_STRING | IT_CVAR, NULL, "Play Sound Effects if Unfocused", &cv_playsoundsifunfocused, 71},
|
||||
{IT_STRING | IT_CVAR, NULL, "Play Music if Unfocused", &cv_playmusicifunfocused, 76},
|
||||
|
||||
#ifdef HAVE_MIXERX
|
||||
{IT_STRING | IT_SUBMENU, NULL, "Advanced Settings...", &OP_SoundAdvancedDef, 94},
|
||||
#endif
|
||||
{IT_STRING | IT_SUBMENU, NULL, "Advanced Settings...", &OP_SoundAdvancedDef, 144},
|
||||
};
|
||||
|
||||
#ifdef HAVE_MIXERX
|
||||
|
||||
#ifdef HAVE_OPENMPT
|
||||
#define OPENMPT_MENUOFFSET 32
|
||||
#else
|
||||
|
@ -1386,24 +1377,25 @@ static menuitem_t OP_SoundOptionsMenu[] =
|
|||
static menuitem_t OP_SoundAdvancedMenu[] =
|
||||
{
|
||||
#ifdef HAVE_OPENMPT
|
||||
{IT_HEADER, NULL, "OpenMPT Settings", NULL, 10},
|
||||
{IT_STRING | IT_CVAR, NULL, "Instrument Filter", &cv_modfilter, 22},
|
||||
{IT_HEADER, NULL, "OpenMPT Settings", NULL, 0},
|
||||
{IT_STRING | IT_CVAR, NULL, "Instrument Filter", &cv_modfilter, 12},
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_MIXERX
|
||||
{IT_HEADER, NULL, "MIDI Settings", NULL, OPENMPT_MENUOFFSET+10},
|
||||
{IT_STRING | IT_CVAR, NULL, "MIDI Player", &cv_midiplayer, OPENMPT_MENUOFFSET+22},
|
||||
{IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "FluidSynth Sound Font File", &cv_midisoundfontpath, OPENMPT_MENUOFFSET+34},
|
||||
{IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "TiMidity++ Config Folder", &cv_miditimiditypath, OPENMPT_MENUOFFSET+61},
|
||||
{IT_HEADER, NULL, "MIDI Settings", NULL, OPENMPT_MENUOFFSET},
|
||||
{IT_STRING | IT_CVAR, NULL, "MIDI Player", &cv_midiplayer, OPENMPT_MENUOFFSET+12},
|
||||
{IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "FluidSynth Sound Font File", &cv_midisoundfontpath, OPENMPT_MENUOFFSET+24},
|
||||
{IT_STRING | IT_CVAR | IT_CV_STRING, NULL, "TiMidity++ Config Folder", &cv_miditimiditypath, OPENMPT_MENUOFFSET+51},
|
||||
#endif
|
||||
|
||||
{IT_HEADER, NULL, "Miscellaneous", NULL, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+10},
|
||||
{IT_STRING | IT_CVAR, NULL, "Let Levels Force Reset Music", &cv_resetmusicbyheader, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+22},
|
||||
{IT_HEADER, NULL, "Miscellaneous", NULL, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET},
|
||||
{IT_STRING | IT_CVAR, NULL, "Play Sound Effects if Unfocused", &cv_playsoundsifunfocused, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+12},
|
||||
{IT_STRING | IT_CVAR, NULL, "Play Music if Unfocused", &cv_playmusicifunfocused, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+22},
|
||||
{IT_STRING | IT_CVAR, NULL, "Let Levels Force Reset Music", &cv_resetmusicbyheader, OPENMPT_MENUOFFSET+MIXERX_MENUOFFSET+32},
|
||||
};
|
||||
|
||||
#undef OPENMPT_MENUOFFSET
|
||||
#undef MIXERX_MENUOFFSET
|
||||
#endif
|
||||
|
||||
static menuitem_t OP_DataOptionsMenu[] =
|
||||
{
|
||||
|
@ -1455,7 +1447,7 @@ enum
|
|||
static menuitem_t OP_EraseDataMenu[] =
|
||||
{
|
||||
{IT_STRING | IT_CALL, NULL, "Erase Record Data", M_EraseData, 10},
|
||||
{IT_STRING | IT_CALL, NULL, "Erase Secrets Data", M_EraseData, 20},
|
||||
{IT_STRING | IT_CALL, NULL, "Erase Extras Data", M_EraseData, 20},
|
||||
|
||||
{IT_STRING | IT_CALL, NULL, "\x85" "Erase ALL Data", M_EraseData, 40},
|
||||
};
|
||||
|
@ -1666,7 +1658,7 @@ menu_t SP_MainDef = //CENTERMENUSTYLE(NULL, SP_MainMenu, &MainDef, 72);
|
|||
SP_MainMenu,
|
||||
M_DrawCenteredMenu,
|
||||
BASEVIDWIDTH/2, 72,
|
||||
1, // start at "Start Game" on first entry
|
||||
0,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
@ -1992,12 +1984,10 @@ menu_t OP_ColorOptionsDef =
|
|||
0,
|
||||
NULL
|
||||
};
|
||||
menu_t OP_SoundOptionsDef = DEFAULTSCROLLMENUSTYLE(
|
||||
menu_t OP_SoundOptionsDef = DEFAULTMENUSTYLE(
|
||||
MN_OP_MAIN + (MN_OP_SOUND << 6),
|
||||
"M_SOUND", OP_SoundOptionsMenu, &OP_MainDef, 30, 30);
|
||||
#ifdef HAVE_MIXERX
|
||||
menu_t OP_SoundAdvancedDef = DEFAULTMENUSTYLE(MN_OP_MAIN + (MN_OP_SOUND << 6), "M_SOUND", OP_SoundAdvancedMenu, &OP_SoundOptionsDef, 30, 30);
|
||||
#endif
|
||||
|
||||
menu_t OP_ServerOptionsDef = DEFAULTSCROLLMENUSTYLE(
|
||||
MN_OP_MAIN + (MN_OP_SERVER << 6),
|
||||
|
@ -3365,8 +3355,6 @@ boolean M_Responder(event_t *ev)
|
|||
void M_Drawer(void)
|
||||
{
|
||||
boolean wipe = WipeInAction;
|
||||
if (WipeInLevel)
|
||||
wipe = false;
|
||||
|
||||
if (currentMenu == &MessageDef)
|
||||
menuactive = true;
|
||||
|
@ -3436,6 +3424,8 @@ void M_StartControlPanel(void)
|
|||
if (!Playing())
|
||||
{
|
||||
// Secret menu!
|
||||
MainMenu[singleplr].alphaKey = (M_AnySecretUnlocked()) ? 76 : 84;
|
||||
MainMenu[multiplr].alphaKey = (M_AnySecretUnlocked()) ? 84 : 92;
|
||||
MainMenu[secrets].status = (M_AnySecretUnlocked()) ? (IT_STRING | IT_CALL) : (IT_DISABLED);
|
||||
|
||||
currentMenu = &MainDef;
|
||||
|
@ -3537,6 +3527,7 @@ void M_StartControlPanel(void)
|
|||
|
||||
void M_EndModeAttackRun(void)
|
||||
{
|
||||
G_ClearModeAttackRetryFlag();
|
||||
M_ModeAttackEndGame(0);
|
||||
}
|
||||
|
||||
|
@ -6697,7 +6688,7 @@ static void M_DrawChecklist(void)
|
|||
|| !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS)
|
||||
continue;
|
||||
|
||||
V_DrawString(currentMenu->x, y, ((unlockables[i].unlocked) ? V_GREENMAP : V_TRANSLUCENT), ((unlockables[i].unlocked || !unlockables[i].nochecklist) ? unlockables[i].name : M_CreateSecretMenuOption(unlockables[i].name)));
|
||||
V_DrawString(currentMenu->x, y, ((unlockables[i].unlocked) ? V_GREENMAP : V_TRANSLUCENT)|V_ALLOWLOWERCASE, ((unlockables[i].unlocked || !unlockables[i].nochecklist) ? unlockables[i].name : M_CreateSecretMenuOption(unlockables[i].name)));
|
||||
|
||||
for (j = i+1; j < MAXUNLOCKABLES; j++)
|
||||
{
|
||||
|
@ -7841,7 +7832,7 @@ static void M_DrawLoadGameData(void)
|
|||
Z_Free(colormap);
|
||||
|
||||
tempx -= (20<<FRACBITS);
|
||||
flip = V_FLIP;
|
||||
//flip = V_FLIP;
|
||||
}
|
||||
skipbot:
|
||||
// signpost image
|
||||
|
@ -8343,16 +8334,12 @@ static void M_SetupChoosePlayer(INT32 choice)
|
|||
{
|
||||
INT32 skinnum;
|
||||
UINT8 i;
|
||||
UINT8 firstvalid = 255;
|
||||
UINT8 lastvalid = 0;
|
||||
UINT8 firstvalid = 255, lastvalid = 255;
|
||||
boolean allowed = false;
|
||||
char *and;
|
||||
(void)choice;
|
||||
|
||||
if (!(mapheaderinfo[startmap-1]
|
||||
&& (mapheaderinfo[startmap-1]->forcecharacter[0] != '\0'
|
||||
|| (mapheaderinfo[startmap-1]->typeoflevel & TOL_NIGHTS)) // remove this later when everyone gets their own nights sprites, maybe
|
||||
))
|
||||
if (!mapheaderinfo[startmap-1] || mapheaderinfo[startmap-1]->forcecharacter[0] == '\0')
|
||||
{
|
||||
for (i = 0; i < 32; i++) // Handle charsels, availability, and unlocks.
|
||||
{
|
||||
|
@ -8362,6 +8349,8 @@ static void M_SetupChoosePlayer(INT32 choice)
|
|||
if (and)
|
||||
{
|
||||
char firstskin[SKINNAMESIZE+1];
|
||||
if (mapheaderinfo[startmap-1]->typeoflevel & TOL_NIGHTS) // skip tagteam characters for NiGHTS levels
|
||||
continue;
|
||||
strncpy(firstskin, description[i].skinname, (and - description[i].skinname));
|
||||
firstskin[(and - description[i].skinname)] = '\0';
|
||||
description[i].skinnum[0] = R_SkinAvailable(firstskin);
|
||||
|
@ -8390,7 +8379,7 @@ static void M_SetupChoosePlayer(INT32 choice)
|
|||
|
||||
if (!(description[i].picname[0]))
|
||||
{
|
||||
if (skins[skinnum].sprites[SPR2_XTRA].numframes >= XTRA_CHARSEL+1)
|
||||
if (skins[skinnum].sprites[SPR2_XTRA].numframes > XTRA_CHARSEL)
|
||||
{
|
||||
spritedef_t *sprdef = &skins[skinnum].sprites[SPR2_XTRA];
|
||||
spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_CHARSEL];
|
||||
|
@ -8415,17 +8404,16 @@ static void M_SetupChoosePlayer(INT32 choice)
|
|||
}
|
||||
}
|
||||
|
||||
if (firstvalid != 255)
|
||||
{ // One last bit of order we can't do in the iteration above.
|
||||
description[firstvalid].prev = lastvalid;
|
||||
description[lastvalid].next = firstvalid;
|
||||
}
|
||||
else // We're being forced into a specific character, so might as well just skip it.
|
||||
if (firstvalid == lastvalid) // We're being forced into a specific character, so might as well just skip it.
|
||||
{
|
||||
M_ChoosePlayer(-1);
|
||||
M_ChoosePlayer(firstvalid);
|
||||
return;
|
||||
}
|
||||
|
||||
// One last bit of order we can't do in the iteration above.
|
||||
description[firstvalid].prev = lastvalid;
|
||||
description[lastvalid].next = firstvalid;
|
||||
|
||||
M_ChangeMenuMusic("_chsel", true);
|
||||
|
||||
/* the menus suck -James */
|
||||
|
@ -8752,7 +8740,7 @@ static void M_ChoosePlayer(INT32 choice)
|
|||
UINT8 skinnum;
|
||||
|
||||
// skip this if forcecharacter or no characters available
|
||||
if (choice == -1)
|
||||
if (choice == 255)
|
||||
{
|
||||
skinnum = botskin = 0;
|
||||
botingame = false;
|
||||
|
@ -8864,9 +8852,9 @@ static void M_DrawStatsMaps(int location)
|
|||
M_DrawMapEmblems(mnum+1, 292, y);
|
||||
|
||||
if (mapheaderinfo[mnum]->actnum != 0)
|
||||
V_DrawString(20, y, V_YELLOWMAP, va("%s %d", mapheaderinfo[mnum]->lvlttl, mapheaderinfo[mnum]->actnum));
|
||||
V_DrawString(20, y, V_YELLOWMAP|V_ALLOWLOWERCASE, va("%s %d", mapheaderinfo[mnum]->lvlttl, mapheaderinfo[mnum]->actnum));
|
||||
else
|
||||
V_DrawString(20, y, V_YELLOWMAP, mapheaderinfo[mnum]->lvlttl);
|
||||
V_DrawString(20, y, V_YELLOWMAP|V_ALLOWLOWERCASE, mapheaderinfo[mnum]->lvlttl);
|
||||
|
||||
y += 8;
|
||||
|
||||
|
@ -8910,7 +8898,7 @@ static void M_DrawStatsMaps(int location)
|
|||
else
|
||||
V_DrawSmallScaledPatch(292, y, 0, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
|
||||
V_DrawString(20, y, V_YELLOWMAP, va("%s", exemblem->description));
|
||||
V_DrawString(20, y, V_YELLOWMAP|V_ALLOWLOWERCASE, va("%s", exemblem->description));
|
||||
}
|
||||
|
||||
y += 8;
|
||||
|
@ -9121,7 +9109,7 @@ void M_DrawTimeAttackMenu(void)
|
|||
|
||||
// Character face!
|
||||
{
|
||||
if (skins[cv_chooseskin.value-1].sprites[SPR2_XTRA].numframes >= XTRA_CHARSEL+1)
|
||||
if (skins[cv_chooseskin.value-1].sprites[SPR2_XTRA].numframes > XTRA_CHARSEL)
|
||||
{
|
||||
spritedef_t *sprdef = &skins[cv_chooseskin.value-1].sprites[SPR2_XTRA];
|
||||
spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_CHARSEL];
|
||||
|
@ -9245,10 +9233,7 @@ void M_DrawTimeAttackMenu(void)
|
|||
|
||||
V_DrawString(104-72, 73+lsheadingheight/2, V_YELLOWMAP, "RINGS:");
|
||||
|
||||
if (!mainrecords[cv_nextmap.value-1] || !mainrecords[cv_nextmap.value-1]->gotperfect)
|
||||
V_DrawRightAlignedString(104+64, 73+lsheadingheight/2, V_ALLOWLOWERCASE, beststr);
|
||||
else
|
||||
V_DrawRightAlignedString(104+64, 73+lsheadingheight/2, V_ALLOWLOWERCASE|V_YELLOWMAP, beststr);
|
||||
V_DrawRightAlignedString(104+64, 73+lsheadingheight/2, V_ALLOWLOWERCASE|((mapvisited[cv_nextmap.value-1] & MV_PERFECT) ? V_YELLOWMAP : 0), beststr);
|
||||
|
||||
V_DrawRightAlignedString(104+72, 83+lsheadingheight/2, V_ALLOWLOWERCASE, reqrings);
|
||||
}
|
||||
|
@ -9400,6 +9385,7 @@ void M_DrawNightsAttackMenu(void)
|
|||
{
|
||||
emblem_t *em;
|
||||
INT32 yHeight;
|
||||
INT32 xpos;
|
||||
patch_t *PictureOfLevel;
|
||||
lumpnum_t lumpnum;
|
||||
char beststr[40];
|
||||
|
@ -9459,17 +9445,23 @@ void M_DrawNightsAttackMenu(void)
|
|||
{
|
||||
switch (em->type)
|
||||
{
|
||||
case ET_NGRADE: yHeight = 48; break;
|
||||
case ET_NTIME: yHeight = 68; break;
|
||||
case ET_NGRADE:
|
||||
xpos = 104+38;
|
||||
yHeight = 48;
|
||||
break;
|
||||
case ET_NTIME:
|
||||
xpos = 104+76;
|
||||
yHeight = 68;
|
||||
break;
|
||||
default:
|
||||
goto skipThisOne;
|
||||
}
|
||||
|
||||
if (em->collected)
|
||||
V_DrawSmallMappedPatch(104+38, yHeight+lsheadingheight/2, 0, W_CachePatchName(M_GetEmblemPatch(em, false), PU_CACHE),
|
||||
V_DrawSmallMappedPatch(xpos, yHeight+lsheadingheight/2, 0, W_CachePatchName(M_GetEmblemPatch(em, false), PU_CACHE),
|
||||
R_GetTranslationColormap(TC_DEFAULT, M_GetEmblemColor(em), GTC_CACHE));
|
||||
else
|
||||
V_DrawSmallScaledPatch(104+38, yHeight+lsheadingheight/2, 0, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
V_DrawSmallScaledPatch(xpos, yHeight+lsheadingheight/2, 0, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
|
||||
skipThisOne:
|
||||
em = M_GetLevelEmblems(-1);
|
||||
|
@ -10910,7 +10902,7 @@ static void M_EraseData(INT32 choice)
|
|||
if (choice == 0)
|
||||
eschoice = M_GetText("Record Attack data");
|
||||
else if (choice == 1)
|
||||
eschoice = M_GetText("Secrets data");
|
||||
eschoice = M_GetText("Extras data");
|
||||
else
|
||||
eschoice = M_GetText("ALL game data");
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ typedef enum
|
|||
MN_OP_SCREENSHOTS,
|
||||
MN_OP_ERASEDATA,
|
||||
|
||||
// Secrets
|
||||
// Extras
|
||||
MN_SR_MAIN,
|
||||
MN_SR_PANDORA,
|
||||
MN_SR_LEVELSELECT,
|
||||
|
|
|
@ -789,7 +789,7 @@ static void M_PNGText(png_structp png_ptr, png_infop png_info_ptr, PNG_CONST png
|
|||
if (gamestate == GS_LEVEL && mapheaderinfo[gamemap-1]->lvlttl[0] != '\0')
|
||||
snprintf(lvlttltext, 48, "%s%s%s",
|
||||
mapheaderinfo[gamemap-1]->lvlttl,
|
||||
(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE) ? "" : " ZONE",
|
||||
(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE) ? "" : " Zone",
|
||||
(mapheaderinfo[gamemap-1]->actnum > 0) ? va(" %d",mapheaderinfo[gamemap-1]->actnum) : "");
|
||||
else
|
||||
snprintf(lvlttltext, 48, "Unknown");
|
||||
|
|
|
@ -1731,6 +1731,7 @@ void A_HoodThink(mobj_t *actor)
|
|||
// Target dangerously close to robohood, retreat then.
|
||||
if ((dm < 256<<FRACBITS) && (abs(dz) < 128<<FRACBITS))
|
||||
{
|
||||
S_StartSound(actor, actor->info->attacksound);
|
||||
P_SetMobjState(actor, actor->info->raisestate);
|
||||
return;
|
||||
}
|
||||
|
@ -2476,12 +2477,8 @@ void A_VultureBlast(mobj_t *actor)
|
|||
void A_VultureFly(mobj_t *actor)
|
||||
{
|
||||
fixed_t speedmax = 18*FRACUNIT;
|
||||
angle_t angledif = R_PointToAngle2(actor->x, actor->y, actor->target->x, actor->target->y) - actor->angle;
|
||||
fixed_t dx = actor->target->x - actor->x;
|
||||
fixed_t dy = actor->target->y - actor->y;
|
||||
fixed_t dz = actor->target->z - actor->z;
|
||||
fixed_t dxy = FixedHypot(dx, dy);
|
||||
fixed_t dm;
|
||||
angle_t angledif;
|
||||
fixed_t dx, dy, dz, dxy, dm;
|
||||
mobj_t *dust;
|
||||
fixed_t momm;
|
||||
|
||||
|
@ -2490,6 +2487,18 @@ void A_VultureFly(mobj_t *actor)
|
|||
return;
|
||||
#endif
|
||||
|
||||
if (!actor->target || P_MobjWasRemoved(actor->target))
|
||||
{
|
||||
P_SetMobjState(actor, actor->info->spawnstate);
|
||||
return;
|
||||
}
|
||||
|
||||
angledif = R_PointToAngle2(actor->x, actor->y, actor->target->x, actor->target->y) - actor->angle;
|
||||
dx = actor->target->x - actor->x;
|
||||
dy = actor->target->y - actor->y;
|
||||
dz = actor->target->z - actor->z;
|
||||
dxy = FixedHypot(dx, dy);
|
||||
|
||||
if (leveltime % 4 == 0)
|
||||
S_StartSound(actor, actor->info->activesound);
|
||||
|
||||
|
@ -3333,7 +3342,7 @@ void A_SkullAttack(mobj_t *actor)
|
|||
INT32 i, j;
|
||||
static INT32 k;/* static for (at least) GCC 9.1 weirdness */
|
||||
boolean allow;
|
||||
angle_t testang;
|
||||
angle_t testang = 0;
|
||||
|
||||
mobjinfo[MT_NULL].spawnstate = S_INVISIBLE;
|
||||
mobjinfo[MT_NULL].flags = MF_NOGRAVITY|MF_NOTHINK|MF_NOCLIPTHING|MF_NOBLOCKMAP;
|
||||
|
@ -3449,8 +3458,8 @@ void A_BossZoom(mobj_t *actor)
|
|||
// Description: Spawns explosions and plays appropriate sounds around the defeated boss.
|
||||
//
|
||||
// var1:
|
||||
// 0 - Use movecount to spawn explosions evenly
|
||||
// 1 - Use P_Random to spawn explosions at complete random
|
||||
// & 1 - Use P_Random to spawn explosions at complete random
|
||||
// & 2 - Use entire vertical range of object to spawn
|
||||
// var2 = Object to spawn. Default is MT_SONIC3KBOSSEXPLODE.
|
||||
//
|
||||
void A_BossScream(mobj_t *actor)
|
||||
|
@ -3466,17 +3475,13 @@ void A_BossScream(mobj_t *actor)
|
|||
if (LUA_CallAction("A_BossScream", actor))
|
||||
return;
|
||||
#endif
|
||||
switch (locvar1)
|
||||
if (locvar1 & 1)
|
||||
fa = (FixedAngle(P_RandomKey(360)*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK;
|
||||
else
|
||||
{
|
||||
default:
|
||||
case 0:
|
||||
actor->movecount += 4*16;
|
||||
actor->movecount %= 360;
|
||||
fa = (FixedAngle(actor->movecount*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK;
|
||||
break;
|
||||
case 1:
|
||||
fa = (FixedAngle(P_RandomKey(360)*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK;
|
||||
break;
|
||||
}
|
||||
x = actor->x + FixedMul(FINECOSINE(fa),actor->radius);
|
||||
y = actor->y + FixedMul(FINESINE(fa),actor->radius);
|
||||
|
@ -3487,7 +3492,9 @@ void A_BossScream(mobj_t *actor)
|
|||
else
|
||||
explodetype = (mobjtype_t)locvar2;
|
||||
|
||||
if (actor->eflags & MFE_VERTICALFLIP)
|
||||
if (locvar1 & 2)
|
||||
z = actor->z + (P_RandomKey((actor->height - mobjinfo[explodetype].height)>>FRACBITS)<<FRACBITS);
|
||||
else if (actor->eflags & MFE_VERTICALFLIP)
|
||||
z = actor->z + actor->height - mobjinfo[explodetype].height - FixedMul((P_RandomByte()<<(FRACBITS-2)) - 8*FRACUNIT, actor->scale);
|
||||
else
|
||||
z = actor->z + FixedMul((P_RandomByte()<<(FRACBITS-2)) - 8*FRACUNIT, actor->scale);
|
||||
|
@ -4040,7 +4047,6 @@ bossjustdie:
|
|||
switch (mo->type)
|
||||
{
|
||||
case MT_BLACKEGGMAN:
|
||||
case MT_CYBRAKDEMON:
|
||||
{
|
||||
mo->flags |= MF_NOCLIP;
|
||||
mo->flags &= ~MF_SPECIAL;
|
||||
|
@ -4048,6 +4054,20 @@ bossjustdie:
|
|||
S_StartSound(NULL, sfx_befall);
|
||||
break;
|
||||
}
|
||||
case MT_CYBRAKDEMON:
|
||||
{
|
||||
mo->flags |= MF_NOCLIP;
|
||||
mo->flags &= ~(MF_SPECIAL|MF_NOGRAVITY|MF_NOCLIPHEIGHT);
|
||||
|
||||
S_StartSound(NULL, sfx_bedie2);
|
||||
P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_CYBRAKDEMON_VILE_EXPLOSION);
|
||||
mo->z += P_MobjFlip(mo);
|
||||
P_SetObjectMomZ(mo, 12*FRACUNIT, false);
|
||||
S_StartSound(mo, sfx_bgxpld);
|
||||
if (mo->spawnpoint && !(mo->spawnpoint->options & MTF_EXTRA))
|
||||
P_InstaThrust(mo, R_PointToAngle2(0, 0, mo->x, mo->y), 14*FRACUNIT);
|
||||
break;
|
||||
}
|
||||
case MT_KOOPA:
|
||||
{
|
||||
junk.tag = LE_KOOPA;
|
||||
|
@ -5664,10 +5684,10 @@ void A_MinusPopup(mobj_t *actor)
|
|||
S_StartSound(actor, sfx_s3k82);
|
||||
for (i = 1; i <= num; i++)
|
||||
{
|
||||
mobj_t *rock = P_SpawnMobj(actor->x, actor->y, actor->z + actor->height/4, MT_ROCKCRUMBLE1);
|
||||
mobj_t *rock = P_SpawnMobjFromMobj(actor, 0, 0, actor->height/4, MT_ROCKCRUMBLE1);
|
||||
P_Thrust(rock, ani*i, FRACUNIT);
|
||||
rock->momz = 3*FRACUNIT;
|
||||
P_SetScale(rock, FRACUNIT/3);
|
||||
P_SetObjectMomZ(rock, 3*FRACUNIT, false);
|
||||
P_SetScale(rock, rock->scale/3);
|
||||
}
|
||||
P_RadiusAttack(actor, actor, 2*actor->radius, 0);
|
||||
if (actor->tracer)
|
||||
|
@ -5681,11 +5701,12 @@ void A_MinusPopup(mobj_t *actor)
|
|||
// Description: If the minus hits the floor, dig back into the ground.
|
||||
//
|
||||
// var1 = State to switch to (if 0, use seestate).
|
||||
// var2 = unused
|
||||
// var2 = If not 0, spawn debris when hitting the floor.
|
||||
//
|
||||
void A_MinusCheck(mobj_t *actor)
|
||||
{
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = var2;
|
||||
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_MinusCheck", actor))
|
||||
|
@ -5696,6 +5717,18 @@ void A_MinusCheck(mobj_t *actor)
|
|||
{
|
||||
P_SetMobjState(actor, locvar1 ? (statenum_t)locvar1 : actor->info->seestate);
|
||||
actor->flags = actor->info->flags;
|
||||
if (locvar2)
|
||||
{
|
||||
INT32 i, num = 6;
|
||||
angle_t ani = FixedAngle(FRACUNIT*360/num);
|
||||
for (i = 1; i <= num; i++)
|
||||
{
|
||||
mobj_t *rock = P_SpawnMobjFromMobj(actor, 0, 0, actor->height/4, MT_ROCKCRUMBLE1);
|
||||
P_Thrust(rock, ani*i, FRACUNIT);
|
||||
P_SetObjectMomZ(rock, 3*FRACUNIT, false);
|
||||
P_SetScale(rock, rock->scale/3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13346,7 +13379,7 @@ void A_Boss5MakeJunk(mobj_t *actor)
|
|||
{
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = var2;
|
||||
mobj_t *broked;
|
||||
mobj_t *broked = NULL;
|
||||
angle_t ang;
|
||||
INT32 i = ((locvar2 & 1) ? 8 : 1);
|
||||
#ifdef HAVE_BLUA
|
||||
|
@ -14534,6 +14567,9 @@ void A_RolloutRock(mobj_t *actor)
|
|||
|
||||
actor->friction = FRACUNIT; // turns out riding on solids sucks, so let's just make it easier on ourselves
|
||||
|
||||
if (actor->eflags & MFE_JUSTHITFLOOR)
|
||||
S_StartSound(actor, actor->info->painsound);
|
||||
|
||||
if (actor->threshold)
|
||||
actor->threshold--;
|
||||
|
||||
|
@ -14587,6 +14623,9 @@ void A_RolloutRock(mobj_t *actor)
|
|||
|
||||
actor->frame = actor->reactiontime % maxframes; // set frame
|
||||
|
||||
if (!actor->tracer || P_MobjWasRemoved(actor->tracer) || !actor->tracer->health)
|
||||
actor->flags |= MF_PUSHABLE;
|
||||
|
||||
if (!(actor->flags & MF_PUSHABLE)) // if being ridden, don't disappear
|
||||
actor->fuse = 0;
|
||||
else if (!actor->fuse && actor->movecount == 1) // otherwise if rock has moved, set its fuse
|
||||
|
|
|
@ -148,15 +148,19 @@ void P_ResetStarposts(void)
|
|||
//
|
||||
boolean P_CanPickupItem(player_t *player, boolean weapon)
|
||||
{
|
||||
if (player->bot && weapon)
|
||||
if (!player->mo || player->mo->health <= 0)
|
||||
return false;
|
||||
|
||||
if (player->bot)
|
||||
{
|
||||
if (weapon)
|
||||
return false;
|
||||
return P_CanPickupItem(&players[consoleplayer], true); // weapon is true to prevent infinite recursion if p1 is bot - doesn't occur in vanilla, but may be relevant for mods
|
||||
}
|
||||
|
||||
if (player->powers[pw_flashing] > (flashingtics/4)*3 && player->powers[pw_flashing] < UINT16_MAX)
|
||||
return false;
|
||||
|
||||
if (player->mo && player->mo->health <= 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -2521,7 +2525,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
|
||||
if ((target->player->lives <= 1) && (netgame || multiplayer) && (gametype == GT_COOP) && (cv_cooplives.value == 0))
|
||||
;
|
||||
else if (!target->player->bot && !target->player->spectator && !G_IsSpecialStage(gamemap) && (target->player->lives != INFLIVES)
|
||||
else if (!target->player->bot && !target->player->spectator && (target->player->lives != INFLIVES)
|
||||
&& G_GametypeUsesLives())
|
||||
{
|
||||
target->player->lives -= 1; // Lose a life Tails 03-11-2000
|
||||
|
@ -2814,13 +2818,10 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
if (flip)
|
||||
momz *= -1;
|
||||
#define makechunk(angtweak, xmov, ymov) \
|
||||
chunk = P_SpawnMobj(target->x, target->y, target->z, MT_SPIKE);\
|
||||
chunk->eflags |= flip;\
|
||||
chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_SPIKE);\
|
||||
P_SetMobjState(chunk, target->info->xdeathstate);\
|
||||
chunk->health = 0;\
|
||||
chunk->angle = angtweak;\
|
||||
chunk->destscale = scale;\
|
||||
P_SetScale(chunk, scale);\
|
||||
P_UnsetThingPosition(chunk);\
|
||||
chunk->flags = MF_NOCLIP;\
|
||||
chunk->x += xmov;\
|
||||
|
@ -2839,14 +2840,10 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
if (flip)
|
||||
momz *= -1;
|
||||
|
||||
chunk = P_SpawnMobj(target->x, target->y, target->z, MT_SPIKE);
|
||||
chunk->eflags |= flip;
|
||||
|
||||
chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_SPIKE);
|
||||
P_SetMobjState(chunk, target->info->deathstate);
|
||||
chunk->health = 0;
|
||||
chunk->angle = ang + ANGLE_180;
|
||||
chunk->destscale = scale;
|
||||
P_SetScale(chunk, scale);
|
||||
P_UnsetThingPosition(chunk);
|
||||
chunk->flags = MF_NOCLIP;
|
||||
chunk->x -= xoffs;
|
||||
|
@ -2889,13 +2886,10 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
sprflip = P_RandomChance(FRACUNIT/2);
|
||||
|
||||
#define makechunk(angtweak, xmov, ymov) \
|
||||
chunk = P_SpawnMobj(target->x, target->y, target->z, MT_WALLSPIKE);\
|
||||
chunk->eflags |= flip;\
|
||||
chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_WALLSPIKE);\
|
||||
P_SetMobjState(chunk, target->info->xdeathstate);\
|
||||
chunk->health = 0;\
|
||||
chunk->angle = target->angle;\
|
||||
chunk->destscale = scale;\
|
||||
P_SetScale(chunk, scale);\
|
||||
P_UnsetThingPosition(chunk);\
|
||||
chunk->flags = MF_NOCLIP;\
|
||||
chunk->x += xmov - forwardxoffs;\
|
||||
|
@ -2917,14 +2911,11 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
|||
|
||||
sprflip = P_RandomChance(FRACUNIT/2);
|
||||
|
||||
chunk = P_SpawnMobj(target->x, target->y, target->z, MT_WALLSPIKE);
|
||||
chunk->eflags |= flip;
|
||||
chunk = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_WALLSPIKE);
|
||||
|
||||
P_SetMobjState(chunk, target->info->deathstate);
|
||||
chunk->health = 0;
|
||||
chunk->angle = target->angle;
|
||||
chunk->destscale = scale;
|
||||
P_SetScale(chunk, scale);
|
||||
P_UnsetThingPosition(chunk);
|
||||
chunk->flags = MF_NOCLIP;
|
||||
chunk->x += forwardxoffs - xoffs;
|
||||
|
|
|
@ -323,6 +323,7 @@ SINT8 P_MobjFlip(mobj_t *mobj);
|
|||
fixed_t P_GetMobjGravity(mobj_t *mo);
|
||||
FUNCMATH boolean P_WeaponOrPanel(mobjtype_t type);
|
||||
|
||||
void P_CalcChasePostImg(player_t *player, camera_t *thiscam);
|
||||
boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled);
|
||||
|
||||
void P_Attract(mobj_t *source, mobj_t *enemy, boolean nightsgrab);
|
||||
|
|
63
src/p_map.c
63
src/p_map.c
|
@ -784,12 +784,12 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
if (thing->type == MT_SPIKE
|
||||
|| thing->type == MT_WALLSPIKE)
|
||||
{
|
||||
mobjtype_t type = thing->type;
|
||||
mobj_t *iter;
|
||||
if (thing->flags & MF_SOLID)
|
||||
S_StartSound(tmthing, thing->info->deathsound);
|
||||
for (thing = thing->subsector->sector->thinglist; thing; thing = thing->snext)
|
||||
if (thing->type == type && thing->health > 0 && thing->flags & MF_SOLID && P_AproxDistance(P_AproxDistance(thing->x - tmthing->x, thing->y - tmthing->y), thing->z - tmthing->z) < 56*thing->scale)//FixedMul(56*FRACUNIT, thing->scale))
|
||||
P_KillMobj(thing, tmthing, tmthing, 0);
|
||||
for (iter = thing->subsector->sector->thinglist; iter; iter = iter->snext)
|
||||
if (iter->type == thing->type && iter->health > 0 && iter->flags & MF_SOLID && (iter == thing || P_AproxDistance(P_AproxDistance(thing->x - iter->x, thing->y - iter->y), thing->z - iter->z) < 56*thing->scale))//FixedMul(56*FRACUNIT, thing->scale))
|
||||
P_KillMobj(iter, tmthing, tmthing, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -823,12 +823,12 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
if (thing->type == MT_SPIKE
|
||||
|| thing->type == MT_WALLSPIKE)
|
||||
{
|
||||
mobjtype_t type = thing->type;
|
||||
mobj_t *iter;
|
||||
if (thing->flags & MF_SOLID)
|
||||
S_StartSound(tmthing, thing->info->deathsound);
|
||||
for (thing = thing->subsector->sector->thinglist; thing; thing = thing->snext)
|
||||
if (thing->type == type && thing->health > 0 && thing->flags & MF_SOLID && P_AproxDistance(P_AproxDistance(thing->x - tmthing->x, thing->y - tmthing->y), thing->z - tmthing->z) < 56*thing->scale)//FixedMul(56*FRACUNIT, thing->scale))
|
||||
P_KillMobj(thing, tmthing, tmthing, 0);
|
||||
for (iter = thing->subsector->sector->thinglist; iter; iter = iter->snext)
|
||||
if (iter->type == thing->type && iter->health > 0 && iter->flags & MF_SOLID && (iter == thing || P_AproxDistance(P_AproxDistance(thing->x - iter->x, thing->y - iter->y), thing->z - iter->z) < 56*thing->scale))//FixedMul(56*FRACUNIT, thing->scale))
|
||||
P_KillMobj(iter, tmthing, tmthing, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1032,7 +1032,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
P_SetPlayerMobjState(tmthing, S_PLAY_WALK);
|
||||
tmthing->player->powers[pw_carry] = CR_ROLLOUT;
|
||||
P_SetTarget(&tmthing->tracer, thing);
|
||||
P_SetObjectMomZ(thing, tmthing->momz, true);
|
||||
if (!P_IsObjectOnGround(thing))
|
||||
thing->momz += tmthing->momz;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1063,6 +1064,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
thing->momy = tmthing->momy;
|
||||
tmthing->momx = tempmomx;
|
||||
tmthing->momy = tempmomy;
|
||||
S_StartSound(thing, thing->info->painsound);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1301,11 +1303,6 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
return false;
|
||||
}
|
||||
|
||||
// Fireball touched an enemy
|
||||
// Don't bounce though, just despawn right there
|
||||
if ((tmthing->type == MT_FIREBALL) && (thing->flags & MF_ENEMY))
|
||||
P_KillMobj(tmthing, NULL, NULL, 0);
|
||||
|
||||
// damage / explode
|
||||
if (tmthing->flags & MF_ENEMY) // An actual ENEMY! (Like the deton, for example)
|
||||
P_DamageMobj(thing, tmthing, tmthing, 1, 0);
|
||||
|
@ -1354,6 +1351,11 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
P_DamageMobj(thing, tmthing, tmthing->target, 1, damagetype);
|
||||
}
|
||||
|
||||
// Fireball touched an enemy
|
||||
// Don't bounce though, just despawn right there
|
||||
if ((tmthing->type == MT_FIREBALL) && (thing->flags & MF_ENEMY))
|
||||
P_KillMobj(tmthing, NULL, NULL, 0);
|
||||
|
||||
// don't traverse any more
|
||||
|
||||
if (tmthing->type == MT_SHELL)
|
||||
|
@ -1717,8 +1719,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
|||
}
|
||||
}
|
||||
|
||||
if ((tmthing->flags & MF_SPRING || tmthing->type == MT_STEAM) && (thing->player))
|
||||
; // springs and gas jets should never be able to step up onto a player
|
||||
if ((tmthing->flags & MF_SPRING || tmthing->type == MT_STEAM || tmthing->type == MT_SPIKE || tmthing->type == MT_WALLSPIKE) && (thing->player))
|
||||
; // springs, gas jets and springs should never be able to step up onto a player
|
||||
// z checking at last
|
||||
// Treat noclip things as non-solid!
|
||||
else if ((thing->flags & (MF_SOLID|MF_NOCLIP)) == MF_SOLID
|
||||
|
@ -3469,7 +3471,7 @@ isblocking:
|
|||
}
|
||||
|
||||
// see about climbing on the wall
|
||||
if (!(checkline->flags & ML_NOCLIMB))
|
||||
if (!(checkline->flags & ML_NOCLIMB) && checkline->special != HORIZONSPECIAL)
|
||||
{
|
||||
boolean canclimb;
|
||||
angle_t climbangle, climbline;
|
||||
|
@ -3756,6 +3758,33 @@ void P_SlideMove(mobj_t *mo)
|
|||
v2.x = tmhitthing->x + cosradius;
|
||||
v2.y = tmhitthing->y + sinradius;
|
||||
|
||||
// Can we box collision our way into smooth movement..?
|
||||
if (sinradius && mo->y + mo->radius <= min(v1.y, v2.y))
|
||||
{
|
||||
mo->momy = 0;
|
||||
P_TryMove(mo, mo->x + mo->momx, min(v1.y, v2.y) - mo->radius, true);
|
||||
return;
|
||||
}
|
||||
else if (sinradius && mo->y - mo->radius >= max(v1.y, v2.y))
|
||||
{
|
||||
mo->momy = 0;
|
||||
P_TryMove(mo, mo->x + mo->momx, max(v1.y, v2.y) + mo->radius, true);
|
||||
return;
|
||||
}
|
||||
else if (cosradius && mo->x + mo->radius <= min(v1.x, v2.x))
|
||||
{
|
||||
mo->momx = 0;
|
||||
P_TryMove(mo, min(v1.x, v2.x) - mo->radius, mo->y + mo->momy, true);
|
||||
return;
|
||||
}
|
||||
else if (cosradius && mo->x - mo->radius >= max(v1.x, v2.x))
|
||||
{
|
||||
mo->momx = 0;
|
||||
P_TryMove(mo, max(v1.x, v2.x) + mo->radius, mo->y + mo->momy, true);
|
||||
return;
|
||||
}
|
||||
|
||||
// nope, gotta fuck around with a fake linedef!
|
||||
junk.v1 = &v1;
|
||||
junk.v2 = &v2;
|
||||
junk.dx = 2*cosradius; // v2.x - v1.x;
|
||||
|
|
111
src/p_mobj.c
111
src/p_mobj.c
|
@ -255,7 +255,6 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
case S_PLAY_WALK:
|
||||
case S_PLAY_SKID:
|
||||
case S_PLAY_FLOAT:
|
||||
case S_PLAY_NIGHTS_FLOAT:
|
||||
player->panim = PA_WALK;
|
||||
break;
|
||||
case S_PLAY_RUN:
|
||||
|
@ -281,6 +280,7 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
player->panim = PA_SPRING;
|
||||
break;
|
||||
case S_PLAY_FALL:
|
||||
case S_PLAY_NIGHTS_FLOAT:
|
||||
player->panim = PA_FALL;
|
||||
break;
|
||||
case S_PLAY_FLY:
|
||||
|
@ -1572,6 +1572,7 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
}
|
||||
break;
|
||||
case MT_WATERDROP:
|
||||
case MT_CYBRAKDEMON:
|
||||
gravityadd >>= 1;
|
||||
default:
|
||||
break;
|
||||
|
@ -3408,7 +3409,7 @@ void P_MobjCheckWater(mobj_t *mobj)
|
|||
|
||||
// Drown timer setting
|
||||
if ((p->powers[pw_shield] & SH_PROTECTWATER) // Has water protection
|
||||
|| (p->exiting) // Or exiting
|
||||
|| (p->exiting) || (p->pflags & PF_FINISHED) // Or finished/exiting
|
||||
|| (maptol & TOL_NIGHTS) // Or in NiGHTS mode
|
||||
|| (mariomode)) // Or in Mario mode...
|
||||
{
|
||||
|
@ -3724,17 +3725,10 @@ void P_DestroyRobots(void)
|
|||
}
|
||||
}
|
||||
|
||||
// P_CameraThinker
|
||||
//
|
||||
// Process the mobj-ish required functions of the camera
|
||||
boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled)
|
||||
// the below is chasecam only, if you're curious. check out P_CalcPostImg in p_user.c for first person
|
||||
void P_CalcChasePostImg(player_t *player, camera_t *thiscam)
|
||||
{
|
||||
boolean itsatwodlevel = false;
|
||||
postimg_t postimg = postimg_none;
|
||||
if (twodlevel
|
||||
|| (thiscam == &camera && players[displayplayer].mo && (players[displayplayer].mo->flags2 & MF2_TWOD))
|
||||
|| (thiscam == &camera2 && players[secondarydisplayplayer].mo && (players[secondarydisplayplayer].mo->flags2 & MF2_TWOD)))
|
||||
itsatwodlevel = true;
|
||||
|
||||
if (player->pflags & PF_FLIPCAM && !(player->powers[pw_carry] == CR_NIGHTSMODE) && player->mo->eflags & MFE_VERTICALFLIP)
|
||||
postimg = postimg_flip;
|
||||
|
@ -3762,13 +3756,27 @@ boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled
|
|||
postimg = postimg_heat;
|
||||
}
|
||||
|
||||
if (postimg != postimg_none)
|
||||
{
|
||||
if (splitscreen && player == &players[secondarydisplayplayer])
|
||||
postimgtype2 = postimg;
|
||||
else
|
||||
postimgtype = postimg;
|
||||
}
|
||||
if (postimg == postimg_none)
|
||||
return;
|
||||
|
||||
if (splitscreen && player == &players[secondarydisplayplayer])
|
||||
postimgtype2 = postimg;
|
||||
else
|
||||
postimgtype = postimg;
|
||||
}
|
||||
|
||||
// P_CameraThinker
|
||||
//
|
||||
// Process the mobj-ish required functions of the camera
|
||||
boolean P_CameraThinker(player_t *player, camera_t *thiscam, boolean resetcalled)
|
||||
{
|
||||
boolean itsatwodlevel = false;
|
||||
if (twodlevel
|
||||
|| (thiscam == &camera && players[displayplayer].mo && (players[displayplayer].mo->flags2 & MF2_TWOD))
|
||||
|| (thiscam == &camera2 && players[secondarydisplayplayer].mo && (players[secondarydisplayplayer].mo->flags2 & MF2_TWOD)))
|
||||
itsatwodlevel = true;
|
||||
|
||||
P_CalcChasePostImg(player, thiscam);
|
||||
|
||||
if (thiscam->momx || thiscam->momy)
|
||||
{
|
||||
|
@ -4538,23 +4546,29 @@ static void P_Boss3Thinker(mobj_t *mobj)
|
|||
}
|
||||
else if (mobj->movecount) // Firing mode
|
||||
{
|
||||
// look for a new target
|
||||
P_BossTargetPlayer(mobj, false);
|
||||
|
||||
if (!mobj->target || !mobj->target->player)
|
||||
return;
|
||||
|
||||
// Always face your target.
|
||||
A_FaceTarget(mobj);
|
||||
|
||||
// Check if the attack animation is running. If not, play it.
|
||||
if (mobj->state < &states[mobj->info->missilestate] || mobj->state > &states[mobj->info->raisestate])
|
||||
{
|
||||
// look for a new target
|
||||
P_BossTargetPlayer(mobj, true);
|
||||
|
||||
if (!mobj->target || !mobj->target->player)
|
||||
return;
|
||||
|
||||
if (mobj->health <= mobj->info->damage) // pinch phase
|
||||
mobj->movecount--; // limited number of shots before diving again
|
||||
if (mobj->movecount)
|
||||
P_SetMobjState(mobj, mobj->info->missilestate+1);
|
||||
}
|
||||
else if (mobj->target && mobj->target->player)
|
||||
{
|
||||
angle_t diff = R_PointToAngle2(mobj->x, mobj->y, mobj->target->x, mobj->target->y) - mobj->angle;
|
||||
if (diff > ANGLE_180)
|
||||
diff = InvAngle(InvAngle(diff)/4);
|
||||
else
|
||||
diff /= 4;
|
||||
mobj->angle += diff;
|
||||
}
|
||||
}
|
||||
else if (mobj->threshold >= 0) // Traveling mode
|
||||
{
|
||||
|
@ -4638,7 +4652,7 @@ static void P_Boss3Thinker(mobj_t *mobj)
|
|||
{
|
||||
UINT8 i, numtospawn = 24;
|
||||
angle_t ang = 0, interval = FixedAngle((360 << FRACBITS) / numtospawn);
|
||||
mobj_t *shock, *sfirst, *sprev = NULL;
|
||||
mobj_t *shock, *sfirst = NULL, *sprev = NULL;
|
||||
|
||||
mobj->movecount = mobj->health+1;
|
||||
mobj->movefactor = -512*FRACUNIT;
|
||||
|
@ -4669,13 +4683,10 @@ static void P_Boss3Thinker(mobj_t *mobj)
|
|||
S_StartSound(mobj, shock->info->seesound);
|
||||
|
||||
// look for a new target
|
||||
P_BossTargetPlayer(mobj, false);
|
||||
P_BossTargetPlayer(mobj, true);
|
||||
|
||||
if (mobj->target && mobj->target->player)
|
||||
{
|
||||
A_FaceTarget(mobj);
|
||||
P_SetMobjState(mobj, mobj->info->missilestate);
|
||||
}
|
||||
}
|
||||
else if (mobj->flags2 & (MF2_STRONGBOX|MF2_CLASSICPUSH)) // just hit the bottom of your tube
|
||||
{
|
||||
|
@ -7079,7 +7090,7 @@ static void P_SpawnMinecartSegments(mobj_t *mobj, boolean mode)
|
|||
seg = P_SpawnMobj(x, y, z, MT_MINECARTSEG);
|
||||
P_SetMobjState(seg, (statenum_t)(S_MINECARTSEG_FRONT + i));
|
||||
if (i >= 2)
|
||||
seg->extravalue1 = (i == 2) ? -18 : 18;
|
||||
seg->extravalue1 = (i == 2) ? -20 : 20;
|
||||
else
|
||||
{
|
||||
seg->extravalue2 = (i == 0) ? 24 : -24;
|
||||
|
@ -8181,6 +8192,26 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
else if (mobj->target)
|
||||
P_InstaThrust(mobj, mobj->angle, FixedMul(12*FRACUNIT, mobj->scale));
|
||||
}
|
||||
if (mobj->type == MT_CYBRAKDEMON && !mobj->health)
|
||||
{
|
||||
if (!(mobj->tics & 1))
|
||||
{
|
||||
var1 = 2;
|
||||
var2 = 0;
|
||||
A_BossScream(mobj);
|
||||
}
|
||||
if (P_CheckDeathPitCollide(mobj))
|
||||
{
|
||||
P_RemoveMobj(mobj);
|
||||
return;
|
||||
}
|
||||
if (mobj->momz && mobj->z+mobj->momz <= mobj->floorz)
|
||||
{
|
||||
S_StartSound(mobj, sfx_befall);
|
||||
if (mobj->state != states+S_CYBRAKDEMON_DIE8)
|
||||
P_SetMobjState(mobj, S_CYBRAKDEMON_DIE8);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (mobj->health <= 0) // Dead things think differently than the living.
|
||||
switch (mobj->type)
|
||||
|
@ -9706,6 +9737,16 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
#undef DRAGONTURNSPEED
|
||||
}
|
||||
break;
|
||||
case MT_MINUS:
|
||||
#ifdef ROTSPRITE
|
||||
{
|
||||
if (P_IsObjectOnGround(mobj))
|
||||
mobj->rollangle = 0;
|
||||
else
|
||||
mobj->rollangle = R_PointToAngle2(0, 0, mobj->momz, (mobj->scale << 1) - min(abs(mobj->momz), mobj->scale << 1));
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case MT_SPINFIRE:
|
||||
if (mobj->flags & MF_NOGRAVITY)
|
||||
{
|
||||
|
@ -11291,7 +11332,7 @@ void P_SpawnPlayer(INT32 playernum)
|
|||
mobj->radius = FixedMul(skins[p->skin].radius, mobj->scale);
|
||||
mobj->height = P_GetPlayerHeight(p);
|
||||
|
||||
if (!leveltime && ((maptol & TOL_NIGHTS) == TOL_NIGHTS) != (G_IsSpecialStage(gamemap))) // non-special NiGHTS stage or special non-NiGHTS stage
|
||||
if (!leveltime && !p->spectator && ((maptol & TOL_NIGHTS) == TOL_NIGHTS) != (G_IsSpecialStage(gamemap))) // non-special NiGHTS stage or special non-NiGHTS stage
|
||||
{
|
||||
if (maptol & TOL_NIGHTS)
|
||||
{
|
||||
|
@ -11957,7 +11998,7 @@ You should think about modifying the deathmatch starts to take full advantage of
|
|||
skyboxviewpnts[mthing->extrainfo] = mobj;
|
||||
break;
|
||||
case MT_EGGSTATUE:
|
||||
if (tutorialmode != (mthing->options & MTF_OBJECTSPECIAL))
|
||||
if (mthing->options & MTF_EXTRA)
|
||||
{
|
||||
mobj->color = SKINCOLOR_GOLD;
|
||||
mobj->colorized = true;
|
||||
|
|
|
@ -2725,7 +2725,7 @@ boolean P_SetupLevel(boolean skipprecip)
|
|||
S_FadeOutStopMusic(MUSICRATE/4); //FixedMul(FixedDiv(F_GetWipeLength(wipedefs[wipe_speclevel_towhite])*NEWTICRATERATIO, NEWTICRATE), MUSICRATE)
|
||||
|
||||
F_WipeStartScreen();
|
||||
wipestyleflags |= WSF_FADEOUT|WSF_TOWHITE;
|
||||
wipestyleflags |= (WSF_FADEOUT|WSF_TOWHITE);
|
||||
|
||||
#ifdef HWRENDER
|
||||
// uh..........
|
||||
|
@ -2757,6 +2757,13 @@ boolean P_SetupLevel(boolean skipprecip)
|
|||
ranspecialwipe = 1;
|
||||
}
|
||||
|
||||
if (G_GetModeAttackRetryFlag())
|
||||
{
|
||||
if (modeattacking)
|
||||
wipestyleflags |= (WSF_FADEOUT|WSF_TOWHITE);
|
||||
G_ClearModeAttackRetryFlag();
|
||||
}
|
||||
|
||||
// Make sure all sounds are stopped before Z_FreeTags.
|
||||
S_StopSounds();
|
||||
S_ClearSfx();
|
||||
|
@ -2805,12 +2812,12 @@ boolean P_SetupLevel(boolean skipprecip)
|
|||
{
|
||||
// Don't include these in the fade!
|
||||
char tx[64];
|
||||
V_DrawSmallString(1, 191, V_ALLOWLOWERCASE|V_TRANSLUCENT, M_GetText("Speeding off to..."));
|
||||
V_DrawSmallString(1, 191, V_ALLOWLOWERCASE|V_TRANSLUCENT|V_SNAPTOLEFT|V_SNAPTOBOTTOM, M_GetText("Speeding off to..."));
|
||||
snprintf(tx, 63, "%s%s%s",
|
||||
mapheaderinfo[gamemap-1]->lvlttl,
|
||||
(mapheaderinfo[gamemap-1]->levelflags & LF_NOZONE) ? "" : " Zone",
|
||||
(mapheaderinfo[gamemap-1]->actnum > 0) ? va("%d",mapheaderinfo[gamemap-1]->actnum) : "");
|
||||
V_DrawSmallString(1, 195, V_ALLOWLOWERCASE|V_TRANSLUCENT, tx);
|
||||
(mapheaderinfo[gamemap-1]->actnum > 0) ? va(" %d",mapheaderinfo[gamemap-1]->actnum) : "");
|
||||
V_DrawSmallString(1, 195, V_ALLOWLOWERCASE|V_TRANSLUCENT|V_SNAPTOLEFT|V_SNAPTOBOTTOM, tx);
|
||||
I_UpdateNoVsync();
|
||||
}
|
||||
|
||||
|
@ -2855,6 +2862,17 @@ boolean P_SetupLevel(boolean skipprecip)
|
|||
loadprecip = 0;
|
||||
loademblems = 0;
|
||||
}
|
||||
else if (savedata.lives > 0)
|
||||
{
|
||||
numgameovers = savedata.numgameovers;
|
||||
players[consoleplayer].continues = savedata.continues;
|
||||
players[consoleplayer].lives = savedata.lives;
|
||||
players[consoleplayer].score = savedata.score;
|
||||
if ((botingame = ((botskin = savedata.botskin) != 0)))
|
||||
botcolor = skins[botskin-1].prefcolor;
|
||||
emeralds = savedata.emeralds;
|
||||
savedata.lives = 0;
|
||||
}
|
||||
|
||||
// internal game map
|
||||
maplumpname = G_BuildMapName(gamemap);
|
||||
|
@ -3064,7 +3082,7 @@ boolean P_SetupLevel(boolean skipprecip)
|
|||
#endif
|
||||
&& !(netgame || multiplayer) && gamemap == 0x1d35-016464)
|
||||
{
|
||||
P_SpawnMobj(0640370000, 0x11000000, 0b11000110000000000000000000, MT_LETTER)->angle = ANGLE_90;
|
||||
P_SpawnMobj(0640370000, 0x11000000, 0x3180000, MT_LETTER)->angle = ANGLE_90;
|
||||
if (textprompts[199]->page[1].backcolor != 259)
|
||||
{
|
||||
char *buf = W_CacheLumpName("WATERMAP", PU_STATIC), *b = buf;
|
||||
|
@ -3218,18 +3236,6 @@ boolean P_SetupLevel(boolean skipprecip)
|
|||
|
||||
lastmaploaded = gamemap; // HAS to be set after saving!!
|
||||
|
||||
if (savedata.lives > 0)
|
||||
{
|
||||
numgameovers = savedata.numgameovers;
|
||||
players[consoleplayer].continues = savedata.continues;
|
||||
players[consoleplayer].lives = savedata.lives;
|
||||
players[consoleplayer].score = savedata.score;
|
||||
if ((botingame = ((botskin = savedata.botskin) != 0)))
|
||||
botcolor = skins[botskin-1].prefcolor;
|
||||
emeralds = savedata.emeralds;
|
||||
savedata.lives = 0;
|
||||
}
|
||||
|
||||
if (loadprecip) // uglier hack
|
||||
{ // to make a newly loaded level start on the second frame.
|
||||
INT32 buf = gametic % BACKUPTICS;
|
||||
|
|
139
src/p_spec.c
139
src/p_spec.c
|
@ -2721,6 +2721,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
|
||||
if (line->tag != 0) // Do special stuff only if a non-zero linedef tag is set
|
||||
{
|
||||
// Play sounds from tagged sectors' origins.
|
||||
if (line->flags & ML_EFFECT5) // Repeat Midtexture
|
||||
{
|
||||
// Additionally play the sound from tagged sectors' soundorgs
|
||||
|
@ -2732,31 +2733,45 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
|
|||
S_StartSound(&sec->soundorg, sfxnum);
|
||||
}
|
||||
}
|
||||
else if (mo) // A mobj must have triggered the executor
|
||||
|
||||
// Play the sound without origin for anyone, as long as they're inside tagged areas.
|
||||
else
|
||||
{
|
||||
// Only trigger if mobj is touching the tag
|
||||
UINT8 i = 0;
|
||||
mobj_t* camobj = players[displayplayer].mo;
|
||||
ffloor_t *rover;
|
||||
boolean foundit = false;
|
||||
|
||||
for(rover = mo->subsector->sector->ffloors; rover; rover = rover->next)
|
||||
for (i = 0; i < 2; camobj = players[secondarydisplayplayer].mo, i++)
|
||||
{
|
||||
if (rover->master->frontsector->tag != line->tag)
|
||||
if (!camobj)
|
||||
continue;
|
||||
|
||||
if (mo->z > P_GetSpecialTopZ(mo, sectors + rover->secnum, mo->subsector->sector))
|
||||
continue;
|
||||
if (foundit || (camobj->subsector->sector->tag == line->tag))
|
||||
{
|
||||
foundit = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (mo->z + mo->height < P_GetSpecialBottomZ(mo, sectors + rover->secnum, mo->subsector->sector))
|
||||
continue;
|
||||
// Only trigger if mobj is touching the tag
|
||||
for(rover = camobj->subsector->sector->ffloors; rover; rover = rover->next)
|
||||
{
|
||||
if (rover->master->frontsector->tag != line->tag)
|
||||
continue;
|
||||
|
||||
foundit = true;
|
||||
if (camobj->z > P_GetSpecialTopZ(camobj, sectors + rover->secnum, camobj->subsector->sector))
|
||||
continue;
|
||||
|
||||
if (camobj->z + camobj->height < P_GetSpecialBottomZ(camobj, sectors + rover->secnum, camobj->subsector->sector))
|
||||
continue;
|
||||
|
||||
foundit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (mo->subsector->sector->tag == line->tag)
|
||||
foundit = true;
|
||||
|
||||
if (!foundit)
|
||||
return;
|
||||
if (foundit)
|
||||
S_StartSound(NULL, sfxnum);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -4072,8 +4087,10 @@ void P_SetupSignExit(player_t *player)
|
|||
if (thing->type != MT_SIGN)
|
||||
continue;
|
||||
|
||||
if (!endsign || P_MobjWasRemoved(endsign))
|
||||
endsign = thing;
|
||||
if (!numfound
|
||||
&& !(player->mo->target && player->mo->target->type == MT_SIGN)
|
||||
&& !(gametype == GT_COOP && (netgame || multiplayer) && cv_exitmove.value))
|
||||
P_SetTarget(&player->mo->target, thing);
|
||||
|
||||
if (thing->state != &states[thing->info->spawnstate])
|
||||
continue;
|
||||
|
@ -4101,8 +4118,10 @@ void P_SetupSignExit(player_t *player)
|
|||
if (thing->type != MT_SIGN)
|
||||
continue;
|
||||
|
||||
if (!endsign || P_MobjWasRemoved(endsign))
|
||||
endsign = thing;
|
||||
if (!numfound
|
||||
&& !(player->mo->target && player->mo->target->type == MT_SIGN)
|
||||
&& !(gametype == GT_COOP && (netgame || multiplayer) && cv_exitmove.value))
|
||||
P_SetTarget(&player->mo->target, thing);
|
||||
|
||||
if (thing->state != &states[thing->info->spawnstate])
|
||||
continue;
|
||||
|
@ -4439,59 +4458,55 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
|
|||
case 3: // Linedef executor requires all players present
|
||||
/// \todo check continues for proper splitscreen support?
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
if (playeringame[i] && !players[i].bot && players[i].mo && (gametype != GT_COOP || players[i].lives > 0))
|
||||
{
|
||||
if (!playeringame[i])
|
||||
continue;
|
||||
if (!players[i].mo)
|
||||
continue;
|
||||
if (players[i].spectator)
|
||||
continue;
|
||||
if (players[i].bot)
|
||||
continue;
|
||||
if (gametype == GT_COOP && players[i].lives <= 0)
|
||||
continue;
|
||||
if (roversector)
|
||||
{
|
||||
if (roversector)
|
||||
if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
|
||||
{
|
||||
if (players[i].mo->subsector->sector == roversector)
|
||||
;
|
||||
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
|
||||
msecnode_t *node;
|
||||
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||
{
|
||||
boolean insector = false;
|
||||
msecnode_t *node;
|
||||
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||
{
|
||||
if (node->m_sector == roversector)
|
||||
{
|
||||
insector = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!insector)
|
||||
goto DoneSection2;
|
||||
if (P_ThingIsOnThe3DFloor(players[i].mo, sector, node->m_sector))
|
||||
break;
|
||||
}
|
||||
else
|
||||
if (!node)
|
||||
goto DoneSection2;
|
||||
|
||||
if (!P_ThingIsOnThe3DFloor(players[i].mo, sector, roversector))
|
||||
}
|
||||
else if (players[i].mo->subsector && !P_ThingIsOnThe3DFloor(players[i].mo, sector, players[i].mo->subsector->sector)) // this function handles basically everything for us lmao
|
||||
goto DoneSection2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (players[i].mo->subsector->sector == sector)
|
||||
;
|
||||
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
|
||||
{
|
||||
msecnode_t *node;
|
||||
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||
{
|
||||
if (node->m_sector == sector)
|
||||
break;
|
||||
}
|
||||
if (!node)
|
||||
goto DoneSection2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (players[i].mo->subsector->sector == sector)
|
||||
;
|
||||
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
|
||||
{
|
||||
boolean insector = false;
|
||||
msecnode_t *node;
|
||||
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||
{
|
||||
if (node->m_sector == sector)
|
||||
{
|
||||
insector = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!insector)
|
||||
goto DoneSection2;
|
||||
}
|
||||
else
|
||||
goto DoneSection2;
|
||||
goto DoneSection2;
|
||||
|
||||
if (special == 3 && !P_MobjReadyToTrigger(players[i].mo, sector))
|
||||
goto DoneSection2;
|
||||
}
|
||||
if (special == 3 && !P_MobjReadyToTrigger(players[i].mo, sector))
|
||||
goto DoneSection2;
|
||||
}
|
||||
}
|
||||
/* FALLTHRU */
|
||||
case 4: // Linedef executor that doesn't require touching floor
|
||||
case 5: // Linedef executor
|
||||
|
@ -4663,7 +4678,7 @@ DoneSection2:
|
|||
}
|
||||
|
||||
case 2: // Special stage GOAL sector / Exit Sector / CTF Flag Return
|
||||
if (player->bot)
|
||||
if (player->bot || !G_PlatformGametype())
|
||||
break;
|
||||
if (!(maptol & TOL_NIGHTS) && G_IsSpecialStage(gamemap) && player->nightstime > 6)
|
||||
{
|
||||
|
|
|
@ -21,8 +21,6 @@ extern mobj_t *skyboxmo[2]; // current skybox mobjs: 0 = viewpoint, 1 = centerpo
|
|||
extern mobj_t *skyboxviewpnts[16]; // array of MT_SKYBOX viewpoint mobjs
|
||||
extern mobj_t *skyboxcenterpnts[16]; // array of MT_SKYBOX centerpoint mobjs
|
||||
|
||||
mobj_t *endsign;
|
||||
|
||||
// GETSECSPECIAL (specialval, section)
|
||||
//
|
||||
// Pulls out the special # from a particular section.
|
||||
|
|
|
@ -481,6 +481,9 @@ static inline void P_DoSpecialStageStuff(void)
|
|||
tic_t oldnightstime = players[i].nightstime;
|
||||
countspheres += players[i].spheres;
|
||||
|
||||
if (!oldnightstime)
|
||||
continue;
|
||||
|
||||
// If in water, deplete timer 6x as fast.
|
||||
if (players[i].mo->eflags & (MFE_TOUCHWATER|MFE_UNDERWATER) && !(players[i].powers[pw_shield] & SH_PROTECTWATER))
|
||||
players[i].nightstime -= 5;
|
||||
|
@ -506,12 +509,11 @@ static inline void P_DoSpecialStageStuff(void)
|
|||
{
|
||||
// Halt all the players
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
if (playeringame[i])
|
||||
if (playeringame[i] && !players[i].exiting)
|
||||
{
|
||||
players[i].mo->momx = players[i].mo->momy = 0;
|
||||
players[i].exiting = (14*TICRATE)/5 + 1;
|
||||
}
|
||||
|
||||
sstimer = 0;
|
||||
P_GiveEmerald(true);
|
||||
P_RestoreMusic(&players[consoleplayer]);
|
||||
|
|
138
src/p_user.c
138
src/p_user.c
|
@ -343,13 +343,15 @@ void P_GiveEmerald(boolean spawnObj)
|
|||
continue;
|
||||
|
||||
emmo = P_SpawnMobjFromMobj(players[i].mo, 0, 0, players[i].mo->height, MT_GOTEMERALD);
|
||||
if (!emmo)
|
||||
continue;
|
||||
P_SetTarget(&emmo->target, players[i].mo);
|
||||
P_SetMobjState(emmo, mobjinfo[MT_GOTEMERALD].meleestate + em);
|
||||
P_SetTarget(&players[i].mo->tracer, emmo);
|
||||
|
||||
if (pnum == 255)
|
||||
{
|
||||
i = pnum;
|
||||
pnum = i;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1223,6 +1225,7 @@ void P_GivePlayerSpheres(player_t *player, INT32 num_spheres)
|
|||
//
|
||||
void P_GivePlayerLives(player_t *player, INT32 numlives)
|
||||
{
|
||||
UINT8 prevlives = player->lives;
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
|
@ -1239,10 +1242,9 @@ void P_GivePlayerLives(player_t *player, INT32 numlives)
|
|||
|
||||
if ((netgame || multiplayer) && gametype == GT_COOP && cv_cooplives.value == 0)
|
||||
{
|
||||
UINT8 prevlives = player->lives;
|
||||
P_GivePlayerRings(player, 100*numlives);
|
||||
if (player->lives - prevlives >= numlives)
|
||||
return;
|
||||
goto docooprespawn;
|
||||
|
||||
numlives = (numlives + prevlives - player->lives);
|
||||
}
|
||||
|
@ -1256,6 +1258,15 @@ void P_GivePlayerLives(player_t *player, INT32 numlives)
|
|||
player->lives = 99;
|
||||
else if (player->lives < 1)
|
||||
player->lives = 1;
|
||||
|
||||
docooprespawn:
|
||||
if (cv_coopstarposts.value)
|
||||
return;
|
||||
if (prevlives > 0)
|
||||
return;
|
||||
if (!player->spectator)
|
||||
return;
|
||||
P_SpectatorJoinGame(player);
|
||||
}
|
||||
|
||||
void P_GiveCoopLives(player_t *player, INT32 numlives, boolean sound)
|
||||
|
@ -2153,6 +2164,10 @@ void P_DoPlayerFinish(player_t *player)
|
|||
|
||||
if (netgame)
|
||||
CONS_Printf(M_GetText("%s has completed the level.\n"), player_names[player-players]);
|
||||
|
||||
player->powers[pw_underwater] = 0;
|
||||
player->powers[pw_spacetime] = 0;
|
||||
P_RestoreMusic(player);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -2296,7 +2311,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
|
|||
else if (!player->skidtime)
|
||||
player->pflags &= ~PF_GLIDING;
|
||||
}
|
||||
else if (player->charability == CA_GLIDEANDCLIMB && player->pflags & PF_THOKKED && !(player->pflags & PF_SHIELDABILITY) && player->mo->state-states == S_PLAY_FALL)
|
||||
else if (player->charability == CA_GLIDEANDCLIMB && player->pflags & PF_THOKKED && !(player->pflags & (PF_JUMPED|PF_SHIELDABILITY)) && player->mo->state-states == S_PLAY_FALL)
|
||||
{
|
||||
if (player->mo->state-states != S_PLAY_GLIDE_LANDING)
|
||||
{
|
||||
|
@ -2359,11 +2374,23 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
|
|||
;
|
||||
else if (player->panim != PA_IDLE && player->panim != PA_WALK && player->panim != PA_RUN && player->panim != PA_DASH)
|
||||
{
|
||||
fixed_t runspd = FixedMul(player->runspeed, player->mo->scale);
|
||||
|
||||
// See comments in P_MovePlayer for explanation of changes.
|
||||
|
||||
if (player->powers[pw_super])
|
||||
runspd = FixedMul(runspd, 5*FRACUNIT/3);
|
||||
|
||||
runspd = FixedMul(runspd, player->mo->movefactor);
|
||||
|
||||
if (maptol & TOL_2D)
|
||||
runspd = FixedMul(runspd, 2*FRACUNIT/3);
|
||||
|
||||
if (player->cmomx || player->cmomy)
|
||||
{
|
||||
if (player->charflags & SF_DASHMODE && player->dashmode >= DASHMODE_THRESHOLD && player->panim != PA_DASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_DASH);
|
||||
else if (player->speed >= FixedMul(player->runspeed, player->mo->scale)
|
||||
else if (player->speed >= runspd
|
||||
&& (player->panim != PA_RUN || player->mo->state-states == S_PLAY_FLOAT_RUN))
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_RUN);
|
||||
else if ((player->rmomx || player->rmomy)
|
||||
|
@ -2376,7 +2403,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff)
|
|||
{
|
||||
if (player->charflags & SF_DASHMODE && player->dashmode >= DASHMODE_THRESHOLD && player->panim != PA_DASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_DASH);
|
||||
else if (player->speed >= FixedMul(player->runspeed, player->mo->scale)
|
||||
else if (player->speed >= runspd
|
||||
&& (player->panim != PA_RUN || player->mo->state-states == S_PLAY_FLOAT_RUN))
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_RUN);
|
||||
else if ((player->mo->momx || player->mo->momy)
|
||||
|
@ -2860,7 +2887,7 @@ static void P_CheckUnderwaterAndSpaceTimer(player_t *player)
|
|||
{
|
||||
tic_t timeleft = (player->powers[pw_spacetime]) ? player->powers[pw_spacetime] : player->powers[pw_underwater];
|
||||
|
||||
if (player->exiting)
|
||||
if (player->exiting || (player->pflags & PF_FINISHED))
|
||||
player->powers[pw_underwater] = player->powers[pw_spacetime] = 0;
|
||||
|
||||
timeleft--; // The original code was all n*TICRATE + 1, so let's remove 1 tic for simplicity
|
||||
|
@ -3511,7 +3538,7 @@ static void P_DoClimbing(player_t *player)
|
|||
{
|
||||
P_SetObjectMomZ(player->mo, 2*FRACUNIT, true);
|
||||
if (cmd->forwardmove)
|
||||
P_SetObjectMomZ(player->mo, 2*player->mo->momz/3, false);
|
||||
player->mo->momz = 2*player->mo->momz/3;
|
||||
}
|
||||
if (thrust)
|
||||
P_Thrust(player->mo, player->mo->angle, FixedMul(4*FRACUNIT, player->mo->scale)); // Lil' boost up.
|
||||
|
@ -4429,6 +4456,8 @@ void P_DoJump(player_t *player, boolean soundandstate)
|
|||
player->mo->momz = 9*FRACUNIT;
|
||||
if (P_MobjFlip(player->mo->tracer)*player->mo->tracer->momz > 0)
|
||||
player->mo->momz += player->mo->tracer->momz;
|
||||
if (!P_IsObjectOnGround(player->mo->tracer))
|
||||
P_SetObjectMomZ(player->mo->tracer, -9*FRACUNIT, true);
|
||||
player->powers[pw_carry] = CR_NONE;
|
||||
player->mo->tracer->flags |= MF_PUSHABLE;
|
||||
P_SetTarget(&player->mo->tracer->tracer, NULL);
|
||||
|
@ -4594,18 +4623,25 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd)
|
|||
player->dashspeed = player->mindash;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPINDASH);
|
||||
if (!player->spectator)
|
||||
S_StartSound(player->mo, sfx_s3kab); // Make the rev sound! Previously sfx_spndsh.
|
||||
S_StartSound(player->mo, sfx_spndsh); // Make the rev sound!
|
||||
}
|
||||
// Revving
|
||||
else if ((cmd->buttons & BT_USE) && (player->pflags & PF_STARTDASH))
|
||||
{
|
||||
if (player->speed > 5*player->mo->scale)
|
||||
{
|
||||
player->pflags &= ~PF_STARTDASH;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_ROLL);
|
||||
S_StartSound(player->mo, sfx_spin);
|
||||
break;
|
||||
}
|
||||
if (player->dashspeed < player->maxdash)
|
||||
{
|
||||
#define chargecalculation (6*(player->dashspeed - player->mindash))/(player->maxdash - player->mindash)
|
||||
fixed_t soundcalculation = chargecalculation;
|
||||
player->dashspeed += FRACUNIT;
|
||||
if (!player->spectator && soundcalculation != chargecalculation)
|
||||
S_StartSound(player->mo, sfx_s3kab); // Make the rev sound! Previously sfx_spndsh.
|
||||
S_StartSound(player->mo, sfx_spndsh); // Make the rev sound!
|
||||
#undef chargecalculation
|
||||
}
|
||||
if (player->revitem && !(leveltime % 5)) // Now spawn the color thok circle.
|
||||
|
@ -4614,7 +4650,6 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd)
|
|||
G_GhostAddRev();
|
||||
}
|
||||
}
|
||||
|
||||
// If not moving up or down, and travelling faster than a speed of five while not holding
|
||||
// down the spin button and not spinning.
|
||||
// AKA Just go into a spin on the ground, you idiot. ;)
|
||||
|
@ -4703,7 +4738,6 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd)
|
|||
player->drawangle = player->mo->angle;
|
||||
#undef zpos
|
||||
|
||||
P_SetTarget(&player->mo->tracer, NULL);
|
||||
player->mo->momx >>= 1;
|
||||
player->mo->momy >>= 1;
|
||||
player->pflags |= PF_USEDOWN;
|
||||
|
@ -4766,10 +4800,10 @@ static void P_DoSpinAbility(player_t *player, ticcmd_t *cmd)
|
|||
|
||||
// Rolling normally
|
||||
if (onground && player->pflags & PF_SPINNING && !(player->pflags & PF_STARTDASH)
|
||||
&& player->speed < FixedMul(5*FRACUNIT,player->mo->scale) && canstand)
|
||||
&& player->speed < 5*player->mo->scale && canstand)
|
||||
{
|
||||
if (GETSECSPECIAL(player->mo->subsector->sector->special, 4) == 7 || (player->mo->ceilingz - player->mo->floorz < P_GetPlayerHeight(player)))
|
||||
P_InstaThrust(player->mo, player->mo->angle, FixedMul(10*FRACUNIT, player->mo->scale));
|
||||
P_InstaThrust(player->mo, player->mo->angle, 10*player->mo->scale);
|
||||
else
|
||||
{
|
||||
player->skidtime = 0;
|
||||
|
@ -5536,7 +5570,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
|
|||
else
|
||||
potentialmomz = ((player->speed < 10*player->mo->scale)
|
||||
? (player->speed - 10*player->mo->scale)/5
|
||||
: 0);
|
||||
: -1); // Should be 0, but made negative to ensure P_PlayerHitFloor runs upon touching ground
|
||||
if (P_MobjFlip(player->mo)*player->mo->momz < potentialmomz)
|
||||
player->mo->momz = P_MobjFlip(player->mo)*potentialmomz;
|
||||
player->pflags &= ~PF_SPINNING;
|
||||
|
@ -5931,6 +5965,8 @@ static void P_3dMovement(player_t *player)
|
|||
// When sliding, don't allow forward/back
|
||||
if (player->pflags & PF_SLIDING)
|
||||
cmd->forwardmove = 0;
|
||||
else if (onground && player->mo->state == states+S_PLAY_PAIN)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_WALK);
|
||||
|
||||
player->aiming = cmd->aiming<<FRACBITS;
|
||||
|
||||
|
@ -7741,9 +7777,12 @@ void P_ElementalFire(player_t *player, boolean cropcircle)
|
|||
I_Assert(!P_MobjWasRemoved(player->mo));
|
||||
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_SPINFIRE].height - 1, player->mo->scale);
|
||||
ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_SPINFIRE].height, player->mo->scale);
|
||||
else
|
||||
ground = player->mo->floorz + 1;
|
||||
ground = player->mo->floorz;
|
||||
|
||||
if (cropcircle)
|
||||
ground += P_MobjFlip(player->mo);
|
||||
|
||||
if (cropcircle)
|
||||
{
|
||||
|
@ -7922,6 +7961,11 @@ static void P_MovePlayer(player_t *player)
|
|||
cmd = &player->cmd;
|
||||
runspd = FixedMul(player->runspeed, player->mo->scale);
|
||||
|
||||
// This was done in Sonic 3 & Knuckles, but has been missed in Sonic Mania and the Taxman/Stealth mobile remakes. Thanks to NeoHazard for his 2017 blogpost on the matter, because this oversight otherwise almost made it all the way to 2.2's release.
|
||||
//https://s3unlocked.blogspot.com/2017/12/over-threshold.html
|
||||
if (player->powers[pw_super])
|
||||
runspd = FixedMul(runspd, 5*FRACUNIT/3);
|
||||
|
||||
// Let's have some movement speed fun on low-friction surfaces, JUST for players... (high friction surfaces shouldn't have any adjustment, since the acceleration in this game is super high and that ends up cheesing high-friction surfaces.)
|
||||
runspd = FixedMul(runspd, player->mo->movefactor);
|
||||
|
||||
|
@ -9460,7 +9504,6 @@ static void P_DeathThink(player_t *player)
|
|||
}
|
||||
else if ((netgame || multiplayer) && player->deadtimer >= 8*TICRATE)
|
||||
{
|
||||
|
||||
INT32 i, deadtimercheck = INT32_MAX;
|
||||
|
||||
// In a net/multiplayer game, and out of lives
|
||||
|
@ -9630,8 +9673,25 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
|
||||
mo = player->mo;
|
||||
|
||||
if (player->exiting && endsign && !P_MobjWasRemoved(endsign))
|
||||
sign = endsign;
|
||||
if (player->playerstate == PST_REBORN)
|
||||
{
|
||||
P_CalcChasePostImg(player, thiscam);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (player->exiting)
|
||||
{
|
||||
if (mo->target && mo->target->type == MT_SIGN && mo->target->spawnpoint
|
||||
&& !(gametype == GT_COOP && (netgame || multiplayer) && cv_exitmove.value))
|
||||
sign = mo->target;
|
||||
else if ((player->powers[pw_carry] == CR_NIGHTSMODE)
|
||||
&& !(player->mo->state >= &states[S_PLAY_NIGHTS_TRANS1]
|
||||
&& player->mo->state <= &states[S_PLAY_NIGHTS_TRANS6]))
|
||||
{
|
||||
P_CalcChasePostImg(player, thiscam);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
cameranoclip = (sign || player->powers[pw_carry] == CR_NIGHTSMODE || player->pflags & PF_NOCLIP) || (mo->flags & (MF_NOCLIP|MF_NOCLIPHEIGHT)); // Noclipping player camera noclips too!!
|
||||
|
||||
|
@ -9711,7 +9771,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
camorbit = (!stricmp(cv_cam_orbit.defaultvalue, "off")) ? false : true;
|
||||
camrotate = atoi(cv_cam_rotate.defaultvalue);
|
||||
camdist = FixedMul((INT32)(atof(cv_cam_dist.defaultvalue) * FRACUNIT), mo->scale);
|
||||
camheight = FixedMul((INT32)(atof(cv_cam_height.defaultvalue) * FRACUNIT), FixedMul(player->camerascale, mo->scale));
|
||||
camheight = FixedMul((INT32)(atof(cv_cam_height.defaultvalue) * FRACUNIT), mo->scale);
|
||||
}
|
||||
else if (thiscam == &camera)
|
||||
{
|
||||
|
@ -9720,7 +9780,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
camorbit = cv_cam_orbit.value;
|
||||
camrotate = cv_cam_rotate.value;
|
||||
camdist = FixedMul(cv_cam_dist.value, mo->scale);
|
||||
camheight = FixedMul(cv_cam_height.value, FixedMul(player->camerascale, mo->scale));
|
||||
camheight = FixedMul(cv_cam_height.value, mo->scale);
|
||||
}
|
||||
else // Camera 2
|
||||
{
|
||||
|
@ -9729,9 +9789,12 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
camorbit = cv_cam2_orbit.value;
|
||||
camrotate = cv_cam2_rotate.value;
|
||||
camdist = FixedMul(cv_cam2_dist.value, mo->scale);
|
||||
camheight = FixedMul(cv_cam2_height.value, FixedMul(player->camerascale, mo->scale));
|
||||
camheight = FixedMul(cv_cam2_height.value, mo->scale);
|
||||
}
|
||||
|
||||
if (!(twodlevel || (mo->flags2 & MF2_TWOD)) && !(player->powers[pw_carry] == CR_NIGHTSMODE))
|
||||
camheight = FixedMul(camheight, player->camerascale);
|
||||
|
||||
#ifdef REDSANALOG
|
||||
if (P_AnalogMove(player) && (player->cmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)) {
|
||||
camstill = true;
|
||||
|
@ -9763,7 +9826,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
angle = R_PointToAngle2(mo->x, mo->y, mo->target->x, mo->target->y);
|
||||
}
|
||||
}
|
||||
else if (P_AnalogMove(player)) // Analog
|
||||
else if (P_AnalogMove(player) && !sign) // Analog
|
||||
angle = R_PointToAngle2(thiscam->x, thiscam->y, mo->x, mo->y);
|
||||
else if (demoplayback)
|
||||
{
|
||||
|
@ -9787,7 +9850,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
thiscam->angle = angle;
|
||||
}
|
||||
|
||||
if ((((thiscam == &camera) && cv_analog.value) || ((thiscam != &camera) && cv_analog2.value) || demoplayback) && !objectplacing && !(twodlevel || (mo->flags2 & MF2_TWOD)) && (player->powers[pw_carry] != CR_NIGHTSMODE) && displayplayer == consoleplayer)
|
||||
if ((((thiscam == &camera) && cv_analog.value) || ((thiscam != &camera) && cv_analog2.value) || demoplayback) && !sign && !objectplacing && !(twodlevel || (mo->flags2 & MF2_TWOD)) && (player->powers[pw_carry] != CR_NIGHTSMODE) && displayplayer == consoleplayer)
|
||||
{
|
||||
#ifdef REDSANALOG
|
||||
if ((player->cmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) == (BT_CAMLEFT|BT_CAMRIGHT)); else
|
||||
|
@ -9842,9 +9905,10 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
dist <<= 1;
|
||||
}
|
||||
|
||||
if (!sign && !(twodlevel || (mo->flags2 & MF2_TWOD)) && !(player->powers[pw_carry] == CR_NIGHTSMODE))
|
||||
dist = FixedMul(dist, player->camerascale);
|
||||
|
||||
|
||||
checkdist = (dist = FixedMul(dist, player->camerascale));
|
||||
checkdist = dist;
|
||||
|
||||
if (checkdist < 128*FRACUNIT)
|
||||
checkdist = 128*FRACUNIT;
|
||||
|
@ -9931,7 +9995,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
|
||||
if (sign)
|
||||
{
|
||||
if (mo->eflags & MFE_VERTICALFLIP)
|
||||
if (sign->eflags & MFE_VERTICALFLIP)
|
||||
z = sign->ceilingz - pviewheight - camheight;
|
||||
else
|
||||
z = sign->floorz + pviewheight + camheight;
|
||||
|
@ -10162,17 +10226,6 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
if (!camstill && !resetcalled && !paused)
|
||||
thiscam->angle = R_PointToAngle2(thiscam->x, thiscam->y, viewpointx, viewpointy);
|
||||
|
||||
if (sign)
|
||||
{
|
||||
viewpointx = sign->x + FixedMul(FINECOSINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
|
||||
viewpointy = sign->y + FixedMul(FINESINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
|
||||
}
|
||||
else
|
||||
{
|
||||
viewpointx = mo->x + FixedMul(FINECOSINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
|
||||
viewpointy = mo->y + FixedMul(FINESINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
|
||||
}
|
||||
|
||||
/*
|
||||
if (twodlevel || (mo->flags2 & MF2_TWOD))
|
||||
thiscam->angle = angle;
|
||||
|
@ -10216,9 +10269,9 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
|||
dist = FixedHypot(f1, f2);
|
||||
|
||||
if (mo->eflags & MFE_VERTICALFLIP)
|
||||
angle = R_PointToAngle2(0, thiscam->z + thiscam->height, dist, mo->z + mo->height - P_GetPlayerHeight(player));
|
||||
angle = R_PointToAngle2(0, thiscam->z + thiscam->height, dist, (sign ? sign->ceilingz : mo->z + mo->height) - P_GetPlayerHeight(player));
|
||||
else
|
||||
angle = R_PointToAngle2(0, thiscam->z, dist, mo->z + P_GetPlayerHeight(player));
|
||||
angle = R_PointToAngle2(0, thiscam->z, dist, (sign ? sign->floorz : mo->z) + P_GetPlayerHeight(player));
|
||||
if (player->playerstate != PST_DEAD)
|
||||
angle += (focusaiming < ANGLE_180 ? focusaiming/2 : InvAngle(InvAngle(focusaiming)/2)); // overcomplicated version of '((signed)focusaiming)/2;'
|
||||
|
||||
|
@ -10378,6 +10431,7 @@ boolean P_SpectatorJoinGame(player_t *player)
|
|||
return false;
|
||||
}
|
||||
|
||||
// the below is first person only, if you're curious. check out P_CalcChasePostImg in p_mobj.c for chasecam
|
||||
static void P_CalcPostImg(player_t *player)
|
||||
{
|
||||
sector_t *sector = player->mo->subsector->sector;
|
||||
|
@ -11452,7 +11506,7 @@ void P_PlayerThink(player_t *player)
|
|||
|
||||
if (player->pflags & PF_FINISHED)
|
||||
{
|
||||
if (cv_exitmove.value && !G_EnoughPlayersFinished())
|
||||
if ((gametype == GT_COOP && cv_exitmove.value) && !G_EnoughPlayersFinished())
|
||||
player->exiting = 0;
|
||||
else
|
||||
P_DoPlayerExit(player);
|
||||
|
|
|
@ -410,6 +410,8 @@ typedef enum
|
|||
ST_NEGATIVE
|
||||
} slopetype_t;
|
||||
|
||||
#define HORIZONSPECIAL 41
|
||||
|
||||
typedef struct line_s
|
||||
{
|
||||
// Vertices, from v1 to v2.
|
||||
|
|
|
@ -1007,6 +1007,8 @@ void R_DrawSinglePlane(visplane_t *pl)
|
|||
R_CheckFlatLength(W_LumpLength(levelflat->u.flat.lumpnum));
|
||||
// Raw flats always have dimensions that are powers-of-two numbers.
|
||||
ds_powersoftwo = true;
|
||||
if (spanfunc == basespanfunc)
|
||||
spanfunc = mmxspanfunc;
|
||||
break;
|
||||
default:
|
||||
switch (type)
|
||||
|
|
|
@ -2694,7 +2694,7 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
worldbottomslope >>= 4;
|
||||
#endif
|
||||
|
||||
if (linedef->special == 41) { // HORIZON LINES
|
||||
if (linedef->special == HORIZONSPECIAL) { // HORIZON LINES
|
||||
topstep = bottomstep = 0;
|
||||
topfrac = bottomfrac = (centeryfrac>>4);
|
||||
topfrac++; // Prevent 1px HOM
|
||||
|
@ -2825,7 +2825,7 @@ void R_StoreWallRange(INT32 start, INT32 stop)
|
|||
#ifdef ESLOPE
|
||||
ffloor[i].f_pos_slope >>= 4;
|
||||
#endif
|
||||
if (linedef->special == 41) // Horizon lines extend FOFs in contact with them too.
|
||||
if (linedef->special == HORIZONSPECIAL) // Horizon lines extend FOFs in contact with them too.
|
||||
{
|
||||
ffloor[i].f_step = 0;
|
||||
ffloor[i].f_frac = (centeryfrac>>4);
|
||||
|
|
|
@ -1137,8 +1137,6 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
UINT32 rollangle = AngleFixed(arollangle)>>FRACBITS;
|
||||
#endif
|
||||
|
||||
fixed_t ang_scale = FRACUNIT;
|
||||
|
||||
// transform the origin point
|
||||
tr_x = thing->x - viewx;
|
||||
tr_y = thing->y - viewy;
|
||||
|
@ -1223,8 +1221,6 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
if (sprframe->rotate != SRF_SINGLE || papersprite)
|
||||
{
|
||||
ang = R_PointToAngle (thing->x, thing->y) - (thing->player ? thing->player->drawangle : thing->angle);
|
||||
if (papersprite)
|
||||
ang_scale = abs(FINESINE(ang>>ANGLETOFINESHIFT));
|
||||
}
|
||||
|
||||
if (sprframe->rotate == SRF_SINGLE)
|
||||
|
@ -1286,24 +1282,11 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
else
|
||||
offset = -spr_offset;
|
||||
offset = FixedMul(offset, this_scale);
|
||||
tx += FixedMul(offset, ang_scale);
|
||||
x1 = (centerxfrac + FixedMul (tx,xscale)) >>FRACBITS;
|
||||
|
||||
// off the right side?
|
||||
if (x1 > viewwidth)
|
||||
return;
|
||||
|
||||
offset2 = FixedMul(spr_width, this_scale);
|
||||
tx += FixedMul(offset2, ang_scale);
|
||||
x2 = ((centerxfrac + FixedMul (tx,xscale)) >> FRACBITS) - (papersprite ? 2 : 1);
|
||||
|
||||
// off the left side
|
||||
if (x2 < 0)
|
||||
return;
|
||||
|
||||
if (papersprite)
|
||||
{
|
||||
fixed_t yscale2, cosmul, sinmul, tz2;
|
||||
fixed_t xscale2, yscale2, cosmul, sinmul, tz2;
|
||||
INT32 range;
|
||||
|
||||
if (ang >= ANGLE_180)
|
||||
|
@ -1323,6 +1306,16 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
yscale = FixedDiv(projectiony, tz);
|
||||
if (yscale < 64) return; // Fix some funky visuals
|
||||
|
||||
gxt = -FixedMul(tr_x, viewsin);
|
||||
gyt = FixedMul(tr_y, viewcos);
|
||||
tx = -(gyt + gxt);
|
||||
xscale = FixedDiv(projection, tz);
|
||||
x1 = (centerxfrac + FixedMul(tx,xscale))>>FRACBITS;
|
||||
|
||||
// off the right side?
|
||||
if (x1 > viewwidth)
|
||||
return;
|
||||
|
||||
tr_x += FixedMul(offset2, cosmul);
|
||||
tr_y += FixedMul(offset2, sinmul);
|
||||
gxt = FixedMul(tr_x, viewcos);
|
||||
|
@ -1331,15 +1324,25 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
yscale2 = FixedDiv(projectiony, tz2);
|
||||
if (yscale2 < 64) return; // ditto
|
||||
|
||||
gxt = -FixedMul(tr_x, viewsin);
|
||||
gyt = FixedMul(tr_y, viewcos);
|
||||
tx = -(gyt + gxt);
|
||||
xscale2 = FixedDiv(projection, tz2);
|
||||
x2 = (centerxfrac + FixedMul(tx,xscale2))>>FRACBITS; x2--;
|
||||
|
||||
// off the left side
|
||||
if (x2 < 0)
|
||||
return;
|
||||
|
||||
if (max(tz, tz2) < FixedMul(MINZ, this_scale)) // non-papersprite clipping is handled earlier
|
||||
return;
|
||||
|
||||
if (x2 > x1)
|
||||
range = (x2 - x1);
|
||||
else
|
||||
range = 1;
|
||||
if ((range = x2 - x1) <= 0)
|
||||
return;
|
||||
|
||||
scalestep = (yscale2 - yscale)/range ?: 1;
|
||||
scalestep = (yscale2 - yscale)/range;
|
||||
scalestep = scalestep ? scalestep : 1;
|
||||
xscale = FixedDiv(range<<FRACBITS, abs(offset2))+1;
|
||||
|
||||
// The following two are alternate sorting methods which might be more applicable in some circumstances. TODO - maybe enable via MF2?
|
||||
// sortscale = max(yscale, yscale2);
|
||||
|
@ -1349,9 +1352,20 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
{
|
||||
scalestep = 0;
|
||||
yscale = sortscale;
|
||||
}
|
||||
tx += offset;
|
||||
x1 = (centerxfrac + FixedMul(tx,xscale))>>FRACBITS;
|
||||
|
||||
xscale = FixedMul(xscale, ang_scale);
|
||||
// off the right side?
|
||||
if (x1 > viewwidth)
|
||||
return;
|
||||
|
||||
tx += offset2;
|
||||
x2 = ((centerxfrac + FixedMul(tx,xscale))>>FRACBITS); x2--;
|
||||
|
||||
// off the left side
|
||||
if (x2 < 0)
|
||||
return;
|
||||
}
|
||||
|
||||
if ((thing->flags2 & MF2_LINKDRAW) && thing->tracer) // toast 16/09/16 (SYMMETRY)
|
||||
{
|
||||
|
|
|
@ -860,7 +860,6 @@ static INT32 actualmidimusicvolume;
|
|||
void S_UpdateSounds(void)
|
||||
{
|
||||
INT32 audible, cnum, volume, sep, pitch;
|
||||
UINT8 i;
|
||||
channel_t *c;
|
||||
|
||||
listener_t listener;
|
||||
|
@ -1017,28 +1016,30 @@ void S_UpdateSounds(void)
|
|||
|
||||
notinlevel:
|
||||
I_UpdateSound();
|
||||
}
|
||||
|
||||
void S_UpdateClosedCaptions(void)
|
||||
{
|
||||
UINT8 i;
|
||||
boolean gamestopped = (paused || P_AutoPause());
|
||||
for (i = 0; i < NUMCAPTIONS; i++) // update captions
|
||||
{
|
||||
boolean gamestopped = (paused || P_AutoPause());
|
||||
for (i = 0; i < NUMCAPTIONS; i++) // update captions
|
||||
if (!closedcaptions[i].s)
|
||||
continue;
|
||||
|
||||
if (i == 0 && (closedcaptions[0].s-S_sfx == sfx_None) && gamestopped)
|
||||
continue;
|
||||
|
||||
if (!(--closedcaptions[i].t))
|
||||
{
|
||||
if (!closedcaptions[i].s)
|
||||
continue;
|
||||
|
||||
if (i == 0 && (closedcaptions[0].s-S_sfx == sfx_None) && gamestopped)
|
||||
continue;
|
||||
|
||||
if (!(--closedcaptions[i].t))
|
||||
{
|
||||
closedcaptions[i].c = NULL;
|
||||
closedcaptions[i].s = NULL;
|
||||
}
|
||||
else if (closedcaptions[i].c && !I_SoundIsPlaying(closedcaptions[i].c->handle))
|
||||
{
|
||||
closedcaptions[i].c = NULL;
|
||||
if (closedcaptions[i].t > CAPTIONFADETICS)
|
||||
closedcaptions[i].t = CAPTIONFADETICS;
|
||||
}
|
||||
closedcaptions[i].c = NULL;
|
||||
closedcaptions[i].s = NULL;
|
||||
}
|
||||
else if (closedcaptions[i].c && !I_SoundIsPlaying(closedcaptions[i].c->handle))
|
||||
{
|
||||
closedcaptions[i].c = NULL;
|
||||
if (closedcaptions[i].t > CAPTIONFADETICS)
|
||||
closedcaptions[i].t = CAPTIONFADETICS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1685,7 +1686,7 @@ boolean S_PrepareSoundTest(void)
|
|||
soundtestdefs[pos++] = def;
|
||||
if (def->soundtestcond > 0 && !(mapvisited[def->soundtestcond-1] & MV_BEATEN))
|
||||
continue;
|
||||
if (def->soundtestcond < 0 && !M_Achieved(1-def->soundtestcond))
|
||||
if (def->soundtestcond < 0 && !M_Achieved(-1-def->soundtestcond))
|
||||
continue;
|
||||
def->allowed = true;
|
||||
}
|
||||
|
@ -2094,21 +2095,8 @@ static lumpnum_t S_GetMusicLumpNum(const char *mname)
|
|||
return W_GetNumForName(va("o_%s", mname));
|
||||
else if (!S_MIDIMusicDisabled() && S_MIDIExists(mname))
|
||||
return W_GetNumForName(va("d_%s", mname));
|
||||
else if (S_DigMusicDisabled() && S_DigExists(mname))
|
||||
{
|
||||
//CONS_Alert(CONS_NOTICE, "Digital music is disabled!\n");
|
||||
return LUMPERROR;
|
||||
}
|
||||
else if (S_MIDIMusicDisabled() && S_MIDIExists(mname))
|
||||
{
|
||||
//CONS_Alert(CONS_NOTICE, "MIDI music is disabled!\n");
|
||||
return LUMPERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, M_GetText("Music lump %.6s not found!\n"), mname);
|
||||
return LUMPERROR;
|
||||
}
|
||||
}
|
||||
|
||||
static boolean S_LoadMusic(const char *mname)
|
||||
|
@ -2122,7 +2110,10 @@ static boolean S_LoadMusic(const char *mname)
|
|||
mlumpnum = S_GetMusicLumpNum(mname);
|
||||
|
||||
if (mlumpnum == LUMPERROR)
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, "Music %.6s could not be loaded: lump not found!\n", mname);
|
||||
return false;
|
||||
}
|
||||
|
||||
// load & register it
|
||||
mdata = W_CacheLumpNum(mlumpnum, PU_MUSIC);
|
||||
|
@ -2147,7 +2138,10 @@ static boolean S_LoadMusic(const char *mname)
|
|||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, "Music %.6s could not be loaded: engine failure!\n", mname);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static void S_UnloadMusic(void)
|
||||
|
@ -2172,6 +2166,7 @@ static boolean S_PlayMusic(boolean looping, UINT32 fadeinms)
|
|||
if ((!fadeinms && !I_PlaySong(looping)) ||
|
||||
(fadeinms && !I_FadeInPlaySong(fadeinms, looping)))
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, "Music %.6s could not be played: engine failure!\n", music_name);
|
||||
S_UnloadMusic();
|
||||
return false;
|
||||
}
|
||||
|
@ -2248,19 +2243,13 @@ void S_ChangeMusicEx(const char *mmusic, UINT16 mflags, boolean looping, UINT32
|
|||
S_StopMusic();
|
||||
|
||||
if (!S_LoadMusic(newmusic))
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, "Music %.6s could not be loaded!\n", newmusic);
|
||||
return;
|
||||
}
|
||||
|
||||
music_flags = mflags;
|
||||
music_looping = looping;
|
||||
|
||||
if (!S_PlayMusic(looping, fadeinms))
|
||||
{
|
||||
CONS_Alert(CONS_ERROR, "Music %.6s could not be played!\n", newmusic);
|
||||
return;
|
||||
}
|
||||
|
||||
if (position)
|
||||
I_SetSongPosition(position);
|
||||
|
|
|
@ -303,6 +303,7 @@ boolean S_FadeOutStopMusic(UINT32 ms);
|
|||
// Updates music & sounds
|
||||
//
|
||||
void S_UpdateSounds(void);
|
||||
void S_UpdateClosedCaptions(void);
|
||||
|
||||
FUNCMATH fixed_t S_CalculateSoundDistance(fixed_t px1, fixed_t py1, fixed_t pz1, fixed_t px2, fixed_t py2, fixed_t pz2);
|
||||
|
||||
|
|
|
@ -421,9 +421,9 @@ void SCR_DisplayTicRate(void)
|
|||
else if (totaltics == TICRATE) ticcntcolor = V_GREENMAP;
|
||||
|
||||
V_DrawString(vid.width-(72*vid.dupx), h,
|
||||
V_YELLOWMAP|V_NOSCALESTART|V_HUDTRANS, "FPS:");
|
||||
V_YELLOWMAP|V_NOSCALESTART|V_USERHUDTRANS, "FPS:");
|
||||
V_DrawString(vid.width-(40*vid.dupx), h,
|
||||
ticcntcolor|V_NOSCALESTART|V_HUDTRANS, va("%02d/%02u", totaltics, TICRATE));
|
||||
ticcntcolor|V_NOSCALESTART|V_USERHUDTRANS, va("%02d/%02u", totaltics, TICRATE));
|
||||
|
||||
lasttic = ontic;
|
||||
}
|
||||
|
|
|
@ -97,7 +97,6 @@ void *hwSym(const char *funcName,void *handle)
|
|||
GETFUNC(StartScreenWipe);
|
||||
GETFUNC(EndScreenWipe);
|
||||
GETFUNC(DoScreenWipe);
|
||||
GETFUNC(DoScreenWipeLevel);
|
||||
GETFUNC(DrawIntermissionBG);
|
||||
GETFUNC(MakeScreenTexture);
|
||||
GETFUNC(MakeScreenFinalTexture);
|
||||
|
|
|
@ -1176,14 +1176,11 @@ void I_FinishUpdate(void)
|
|||
if (cv_closedcaptioning.value)
|
||||
SCR_ClosedCaptions();
|
||||
|
||||
if (st_overlay)
|
||||
{
|
||||
if (cv_ticrate.value)
|
||||
SCR_DisplayTicRate();
|
||||
if (cv_ticrate.value)
|
||||
SCR_DisplayTicRate();
|
||||
|
||||
if (cv_showping.value && netgame && consoleplayer != serverplayer)
|
||||
SCR_DisplayLocalPing();
|
||||
}
|
||||
if (cv_showping.value && netgame && consoleplayer != serverplayer)
|
||||
SCR_DisplayLocalPing();
|
||||
|
||||
if (rendermode == render_soft && screens[0])
|
||||
{
|
||||
|
@ -1666,7 +1663,6 @@ void I_StartupGraphics(void)
|
|||
HWD.pfnStartScreenWipe = hwSym("StartScreenWipe",NULL);
|
||||
HWD.pfnEndScreenWipe = hwSym("EndScreenWipe",NULL);
|
||||
HWD.pfnDoScreenWipe = hwSym("DoScreenWipe",NULL);
|
||||
HWD.pfnDoScreenWipeLevel= hwSym("DoScreenWipeLevel",NULL);
|
||||
HWD.pfnDrawIntermissionBG=hwSym("DrawIntermissionBG",NULL);
|
||||
HWD.pfnMakeScreenTexture= hwSym("MakeScreenTexture",NULL);
|
||||
HWD.pfnMakeScreenFinalTexture=hwSym("MakeScreenFinalTexture",NULL);
|
||||
|
|
|
@ -92,7 +92,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"pstop", false, 100, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Crusher stomp"},
|
||||
{"steam1", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Steam jet"}, // Tails 06-19-2001
|
||||
{"steam2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Steam jet"}, // Tails 06-19-2001
|
||||
{"wbreak", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wood breaking"},
|
||||
{"wbreak", true, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Wood breaking"},
|
||||
{"ambmac", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Machinery"},
|
||||
{"spsmsh", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Heavy impact"},
|
||||
|
||||
|
@ -208,7 +208,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"shrpsp", true, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Spincushion"},
|
||||
{"shrpgo", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Launch"},
|
||||
{"mswarp", false, 60, 16, -1, NULL, 0, -1, -1, LUMPERROR, "Spinning out"},
|
||||
{"mspogo", false, 60, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Breaking through"},
|
||||
{"mspogo", true, 60, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Breaking through"},
|
||||
{"boingf", false, 60, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bouncing"},
|
||||
{"corkp", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cork fired"},
|
||||
{"corkh", false, 32, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Cork hit"},
|
||||
|
@ -528,7 +528,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"s3k83", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Collapsing"},
|
||||
{"s3k84", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Powering up"},
|
||||
{"s3k85", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Powering down"},
|
||||
{"s3k86", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Alarm"},
|
||||
{"s3k86", false, 128, 8, -1, NULL, 0, -1, -1, LUMPERROR, "Alarm"},
|
||||
{"s3k87", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Bounce"},
|
||||
{"s3k88", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Metallic squeak"},
|
||||
{"s3k89", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Advanced tech"},
|
||||
|
|
|
@ -198,7 +198,7 @@ void ST_Ticker(boolean run)
|
|||
|
||||
// 0 is default, any others are special palettes.
|
||||
INT32 st_palette = 0;
|
||||
INT32 st_translucency = 0;
|
||||
INT32 st_translucency = 10;
|
||||
|
||||
void ST_doPaletteStuff(void)
|
||||
{
|
||||
|
@ -353,12 +353,12 @@ void ST_LoadGraphics(void)
|
|||
// made separate so that skins code can reload custom face graphics
|
||||
void ST_LoadFaceGraphics(INT32 skinnum)
|
||||
{
|
||||
if (skins[skinnum].sprites[SPR2_XTRA].numframes)
|
||||
if (skins[skinnum].sprites[SPR2_XTRA].numframes > XTRA_LIFEPIC)
|
||||
{
|
||||
spritedef_t *sprdef = &skins[skinnum].sprites[SPR2_XTRA];
|
||||
spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_LIFEPIC];
|
||||
faceprefix[skinnum] = W_CachePatchNum(sprframe->lumppat[0], PU_HUDGFX);
|
||||
if (skins[skinnum].sprites[(SPR2_XTRA|FF_SPR2SUPER)].numframes)
|
||||
if (skins[skinnum].sprites[(SPR2_XTRA|FF_SPR2SUPER)].numframes > XTRA_LIFEPIC)
|
||||
{
|
||||
sprdef = &skins[skinnum].sprites[SPR2_XTRA|FF_SPR2SUPER];
|
||||
sprframe = &sprdef->spriteframes[0];
|
||||
|
@ -699,6 +699,7 @@ static void ST_drawTime(void)
|
|||
tics = (hidetime*TICRATE - stplyr->realtime);
|
||||
if (tics < 3*TICRATE)
|
||||
ST_drawRaceNum(tics);
|
||||
tics += (TICRATE-1); // match the race num
|
||||
downwards = true;
|
||||
}
|
||||
else
|
||||
|
@ -710,11 +711,12 @@ static void ST_drawTime(void)
|
|||
// Time limit?
|
||||
if (gametype != GT_COOP && gametype != GT_RACE && gametype != GT_COMPETITION && cv_timelimit.value && timelimitintics > 0)
|
||||
{
|
||||
if (timelimitintics >= stplyr->realtime)
|
||||
if (timelimitintics > stplyr->realtime)
|
||||
{
|
||||
tics = (timelimitintics + (TICRATE-1) - stplyr->realtime);
|
||||
tics = (timelimitintics - stplyr->realtime);
|
||||
if (tics < 3*TICRATE)
|
||||
ST_drawRaceNum(tics);
|
||||
tics += (TICRATE-1); // match the race num
|
||||
}
|
||||
else // Overtime!
|
||||
tics = 0;
|
||||
|
@ -1294,10 +1296,8 @@ void ST_drawTitleCard(void)
|
|||
return;
|
||||
#endif
|
||||
|
||||
#ifndef LEVELWIPES
|
||||
if ((lt_ticker-lt_lasttic) > 1)
|
||||
lt_ticker = lt_lasttic+1;
|
||||
#endif
|
||||
|
||||
ST_cacheLevelTitle();
|
||||
actpat = lt_patches[0];
|
||||
|
@ -1351,9 +1351,7 @@ luahook:
|
|||
void ST_preLevelTitleCardDrawer(tic_t ticker, boolean update)
|
||||
{
|
||||
V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, levelfadecol);
|
||||
#ifndef LEVELWIPES
|
||||
if (ticker < PRELEVELTIME-1)
|
||||
#endif
|
||||
ST_drawWipeTitleCard();
|
||||
|
||||
I_OsPolling();
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "v_video.h"
|
||||
#include "st_stuff.h"
|
||||
#include "hu_stuff.h"
|
||||
#include "f_finale.h"
|
||||
#include "r_draw.h"
|
||||
#include "console.h"
|
||||
|
||||
|
@ -1075,7 +1076,7 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_
|
|||
//
|
||||
void V_DrawContinueIcon(INT32 x, INT32 y, INT32 flags, INT32 skinnum, UINT8 skincolor)
|
||||
{
|
||||
if (skinnum >= 0 && skinnum < numskins && skins[skinnum].sprites[SPR2_XTRA].numframes >= 4)
|
||||
if (skinnum >= 0 && skinnum < numskins && skins[skinnum].sprites[SPR2_XTRA].numframes > XTRA_CONTINUE)
|
||||
{
|
||||
spritedef_t *sprdef = &skins[skinnum].sprites[SPR2_XTRA];
|
||||
spriteframe_t *sprframe = &sprdef->spriteframes[XTRA_CONTINUE];
|
||||
|
@ -1861,7 +1862,9 @@ void V_DrawFadeScreen(UINT16 color, UINT8 strength)
|
|||
|
||||
{
|
||||
const UINT8 *fadetable = ((color & 0xFF00) // Color is not palette index?
|
||||
? ((UINT8 *)colormaps + strength*256) // Do COLORMAP fade.
|
||||
? ((UINT8 *)(((color & 0x0F00) == 0x0A00) ? fadecolormap // Do fadecolormap fade.
|
||||
: (((color & 0x0F00) == 0x0B00) ? fadecolormap + (256 * FADECOLORMAPROWS) // Do white fadecolormap fade.
|
||||
: colormaps)) + strength*256) // Do COLORMAP fade.
|
||||
: ((UINT8 *)transtables + ((9-strength)<<FF_TRANSSHIFT) + color*256)); // Else, do TRANSMAP** fade.
|
||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
||||
UINT8 *buf = screens[0];
|
||||
|
@ -1899,14 +1902,15 @@ void V_DrawPromptBack(INT32 boxheight, INT32 color)
|
|||
{
|
||||
UINT8 *deststop, *buf;
|
||||
|
||||
boxheight = ((boxheight * 4) + (boxheight/2)*5);
|
||||
|
||||
if (color >= 256 && color < 512)
|
||||
{
|
||||
boxheight = ((boxheight * 4) + (boxheight/2)*5);
|
||||
V_DrawFill((BASEVIDWIDTH-(vid.width/vid.dupx))/2, BASEVIDHEIGHT-boxheight, (vid.width/vid.dupx),boxheight, (color-256)|V_SNAPTOBOTTOM);
|
||||
return;
|
||||
}
|
||||
|
||||
boxheight *= vid.dupy;
|
||||
|
||||
if (color == INT32_MAX)
|
||||
color = cons_backcolor.value;
|
||||
|
||||
|
@ -1948,7 +1952,7 @@ void V_DrawPromptBack(INT32 boxheight, INT32 color)
|
|||
// heavily simplified -- we don't need to know x or y position,
|
||||
// just the start and stop positions
|
||||
deststop = screens[0] + vid.rowbytes * vid.height;
|
||||
buf = deststop - vid.rowbytes * boxheight * vid.dupy; // 4 lines of space plus gaps between and some leeway
|
||||
buf = deststop - vid.rowbytes * ((boxheight * 4) + (boxheight/2)*5); // 4 lines of space plus gaps between and some leeway
|
||||
for (; buf < deststop; ++buf)
|
||||
*buf = promptbgmap[*buf];
|
||||
}
|
||||
|
@ -2447,6 +2451,8 @@ void V_DrawStringAtFixed(fixed_t x, fixed_t y, INT32 option, const char *string)
|
|||
fixed_t cx = x, cy = y;
|
||||
INT32 w, c, dupx, dupy, scrwidth, center = 0, left = 0;
|
||||
const char *ch = string;
|
||||
INT32 charflags = 0;
|
||||
const UINT8 *colormap = NULL;
|
||||
INT32 spacewidth = 4, charwidth = 0;
|
||||
|
||||
INT32 lowercase = (option & V_ALLOWLOWERCASE);
|
||||
|
@ -2466,6 +2472,8 @@ void V_DrawStringAtFixed(fixed_t x, fixed_t y, INT32 option, const char *string)
|
|||
scrwidth -= left;
|
||||
}
|
||||
|
||||
charflags = (option & V_CHARCOLORMASK);
|
||||
|
||||
switch (option & V_SPACINGMASK)
|
||||
{
|
||||
case V_MONOSPACE:
|
||||
|
@ -2485,7 +2493,12 @@ void V_DrawStringAtFixed(fixed_t x, fixed_t y, INT32 option, const char *string)
|
|||
if (!*ch)
|
||||
break;
|
||||
if (*ch & 0x80) //color ignoring
|
||||
{
|
||||
// manually set flags override color codes
|
||||
if (!(option & V_CHARCOLORMASK))
|
||||
charflags = ((*ch & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||
continue;
|
||||
}
|
||||
if (*ch == '\n')
|
||||
{
|
||||
cx = x;
|
||||
|
@ -2526,7 +2539,8 @@ void V_DrawStringAtFixed(fixed_t x, fixed_t y, INT32 option, const char *string)
|
|||
continue;
|
||||
}
|
||||
|
||||
V_DrawSciencePatch(cx + (center<<FRACBITS), cy, option, hu_font[c], FRACUNIT);
|
||||
colormap = V_GetStringColormap(charflags);
|
||||
V_DrawFixedPatch(cx + (center<<FRACBITS), cy, FRACUNIT, option, hu_font[c], colormap);
|
||||
|
||||
cx += w<<FRACBITS;
|
||||
}
|
||||
|
|
|
@ -106,6 +106,10 @@ extern RGBA_t *pMasterPalette;
|
|||
#define V_HUDTRANSHALF 0x000D0000
|
||||
#define V_HUDTRANS 0x000E0000 // draw the hud translucent
|
||||
#define V_HUDTRANSDOUBLE 0x000F0000
|
||||
// Macros follow
|
||||
#define V_USERHUDTRANSHALF ((10-(cv_translucenthud.value/2))<<V_ALPHASHIFT)
|
||||
#define V_USERHUDTRANS ((10-cv_translucenthud.value)<<V_ALPHASHIFT)
|
||||
#define V_USERHUDTRANSDOUBLE ((10-min(cv_translucenthud.value*2, 10))<<V_ALPHASHIFT)
|
||||
|
||||
#define V_AUTOFADEOUT 0x00100000 // used by CECHOs, automatic fade out when almost over
|
||||
#define V_RETURN8 0x00200000 // 8 pixel return instead of 12
|
||||
|
|
|
@ -121,7 +121,6 @@ static loadfunc_t hwdFuncTable[] = {
|
|||
{"StartScreenWipe@0", &hwdriver.pfnStartScreenWipe},
|
||||
{"EndScreenWipe@0", &hwdriver.pfnEndScreenWipe},
|
||||
{"DoScreenWipe@4", &hwdriver.pfnDoScreenWipe},
|
||||
{"DoScreenWipeLevel@0", &hwdriver.pfnDoScreenWipeLevel},
|
||||
{"DrawIntermissionBG@0",&hwdriver.pfnDrawIntermissionBG},
|
||||
{"MakeScreenTexture@0", &hwdriver.pfnMakeScreenTexture},
|
||||
{"MakeScreenFinalTexture@0", &hwdriver.pfnMakeScreenFinalTexture},
|
||||
|
@ -153,7 +152,6 @@ static loadfunc_t hwdFuncTable[] = {
|
|||
{"StartScreenWipe", &hwdriver.pfnStartScreenWipe},
|
||||
{"EndScreenWipe", &hwdriver.pfnEndScreenWipe},
|
||||
{"DoScreenWipe", &hwdriver.pfnDoScreenWipe},
|
||||
{"DoScreenWipeLevel", &hwdriver.pfnDoScreenWipeLevel},
|
||||
{"DrawIntermissionBG", &hwdriver.pfnDrawIntermissionBG},
|
||||
{"MakeScreenTexture", &hwdriver.pfnMakeScreenTexture},
|
||||
{"MakeScreenFinalTexture", &hwdriver.pfnMakeScreenFinalTexture},
|
||||
|
|
217
src/y_inter.c
217
src/y_inter.c
|
@ -166,13 +166,11 @@ static INT32 endtic = -1;
|
|||
intertype_t intertype = int_none;
|
||||
|
||||
static void Y_RescaleScreenBuffer(void);
|
||||
static void Y_CleanupScreenBuffer(void);
|
||||
static void Y_AwardCoopBonuses(void);
|
||||
static void Y_AwardSpecialStageBonus(void);
|
||||
static void Y_CalculateCompetitionWinners(void);
|
||||
static void Y_CalculateTimeRaceWinners(void);
|
||||
static void Y_CalculateMatchWinners(void);
|
||||
static void Y_FollowIntermission(void);
|
||||
static void Y_UnloadData(void);
|
||||
|
||||
// Stuff copy+pasted from st_stuff.c
|
||||
|
@ -293,7 +291,7 @@ static void Y_RescaleScreenBuffer(void)
|
|||
//
|
||||
// Free all related memory.
|
||||
//
|
||||
static void Y_CleanupScreenBuffer(void)
|
||||
void Y_CleanupScreenBuffer(void)
|
||||
{
|
||||
// Who knows?
|
||||
if (y_buffer == NULL)
|
||||
|
@ -605,8 +603,7 @@ void Y_IntermissionDrawer(void)
|
|||
{
|
||||
if (emeraldbounces < 3)
|
||||
{
|
||||
emeraldmomy += 1;
|
||||
emeraldy += emeraldmomy;
|
||||
emeraldy += (++emeraldmomy);
|
||||
if (emeraldy > 74)
|
||||
{
|
||||
S_StartSound(NULL, sfx_tink); // tink
|
||||
|
@ -618,9 +615,11 @@ void Y_IntermissionDrawer(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
emeraldmomy += 1;
|
||||
emeraldy += emeraldmomy;
|
||||
emeraldx += intertic - 6;
|
||||
if (emeraldy < (vid.height/vid.dupy)+16)
|
||||
{
|
||||
emeraldy += (++emeraldmomy);
|
||||
emeraldx += intertic - 6;
|
||||
}
|
||||
if (emeraldbounces < 1 && emeraldy > 74)
|
||||
{
|
||||
S_StartSound(NULL, sfx_shldls); // nope
|
||||
|
@ -819,7 +818,7 @@ void Y_IntermissionDrawer(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (intertype == int_classicrace)
|
||||
else if (intertype == int_comp)
|
||||
{
|
||||
INT32 x = 4;
|
||||
INT32 y = 48;
|
||||
|
@ -953,7 +952,7 @@ void Y_Ticker(void)
|
|||
if (!--timer)
|
||||
{
|
||||
Y_EndIntermission();
|
||||
Y_FollowIntermission();
|
||||
G_AfterIntermission();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -961,7 +960,7 @@ void Y_Ticker(void)
|
|||
else if (intertic == endtic)
|
||||
{
|
||||
Y_EndIntermission();
|
||||
Y_FollowIntermission();
|
||||
G_AfterIntermission();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1145,7 +1144,7 @@ void Y_Ticker(void)
|
|||
if (data.match.numplayers != D_NumPlayers())
|
||||
Y_CalculateMatchWinners();
|
||||
}
|
||||
else if (intertype == int_race || intertype == int_classicrace) // race
|
||||
else if (intertype == int_race || intertype == int_comp) // race
|
||||
{
|
||||
if (!intertic) // first time only
|
||||
S_ChangeMusicInternal("_inter", true); // loop it
|
||||
|
@ -1154,96 +1153,6 @@ void Y_Ticker(void)
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Y_UpdateRecordReplays
|
||||
//
|
||||
// Update replay files/data, etc. for Record Attack
|
||||
// See G_SetNightsRecords for NiGHTS Attack.
|
||||
//
|
||||
static void Y_UpdateRecordReplays(void)
|
||||
{
|
||||
const size_t glen = strlen(srb2home)+1+strlen("replay")+1+strlen(timeattackfolder)+1+strlen("MAPXX")+1;
|
||||
char *gpath;
|
||||
char lastdemo[256], bestdemo[256];
|
||||
UINT8 earnedEmblems;
|
||||
|
||||
// Record new best time
|
||||
if (!mainrecords[gamemap-1])
|
||||
G_AllocMainRecordData(gamemap-1);
|
||||
|
||||
if (players[consoleplayer].score > mainrecords[gamemap-1]->score)
|
||||
mainrecords[gamemap-1]->score = players[consoleplayer].score;
|
||||
|
||||
if ((mainrecords[gamemap-1]->time == 0) || (players[consoleplayer].realtime < mainrecords[gamemap-1]->time))
|
||||
mainrecords[gamemap-1]->time = players[consoleplayer].realtime;
|
||||
|
||||
if ((UINT16)(players[consoleplayer].rings) > mainrecords[gamemap-1]->rings)
|
||||
mainrecords[gamemap-1]->rings = (UINT16)(players[consoleplayer].rings);
|
||||
|
||||
if (data.coop.gotperfbonus)
|
||||
mainrecords[gamemap-1]->gotperfect = true;
|
||||
|
||||
// Save demo!
|
||||
bestdemo[255] = '\0';
|
||||
lastdemo[255] = '\0';
|
||||
G_SetDemoTime(players[consoleplayer].realtime, players[consoleplayer].score, (UINT16)(players[consoleplayer].rings));
|
||||
G_CheckDemoStatus();
|
||||
|
||||
I_mkdir(va("%s"PATHSEP"replay", srb2home), 0755);
|
||||
I_mkdir(va("%s"PATHSEP"replay"PATHSEP"%s", srb2home, timeattackfolder), 0755);
|
||||
|
||||
if ((gpath = malloc(glen)) == NULL)
|
||||
I_Error("Out of memory for replay filepath\n");
|
||||
|
||||
sprintf(gpath,"%s"PATHSEP"replay"PATHSEP"%s"PATHSEP"%s", srb2home, timeattackfolder, G_BuildMapName(gamemap));
|
||||
snprintf(lastdemo, 255, "%s-%s-last.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
|
||||
if (FIL_FileExists(lastdemo))
|
||||
{
|
||||
UINT8 *buf;
|
||||
size_t len = FIL_ReadFile(lastdemo, &buf);
|
||||
|
||||
snprintf(bestdemo, 255, "%s-%s-time-best.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
if (!FIL_FileExists(bestdemo) || G_CmpDemoTime(bestdemo, lastdemo) & 1)
|
||||
{ // Better time, save this demo.
|
||||
if (FIL_FileExists(bestdemo))
|
||||
remove(bestdemo);
|
||||
FIL_WriteFile(bestdemo, buf, len);
|
||||
CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW RECORD TIME!"), M_GetText("Saved replay as"), bestdemo);
|
||||
}
|
||||
|
||||
snprintf(bestdemo, 255, "%s-%s-score-best.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
if (!FIL_FileExists(bestdemo) || (G_CmpDemoTime(bestdemo, lastdemo) & (1<<1)))
|
||||
{ // Better score, save this demo.
|
||||
if (FIL_FileExists(bestdemo))
|
||||
remove(bestdemo);
|
||||
FIL_WriteFile(bestdemo, buf, len);
|
||||
CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW HIGH SCORE!"), M_GetText("Saved replay as"), bestdemo);
|
||||
}
|
||||
|
||||
snprintf(bestdemo, 255, "%s-%s-rings-best.lmp", gpath, skins[cv_chooseskin.value-1].name);
|
||||
if (!FIL_FileExists(bestdemo) || (G_CmpDemoTime(bestdemo, lastdemo) & (1<<2)))
|
||||
{ // Better rings, save this demo.
|
||||
if (FIL_FileExists(bestdemo))
|
||||
remove(bestdemo);
|
||||
FIL_WriteFile(bestdemo, buf, len);
|
||||
CONS_Printf("\x83%s\x80 %s '%s'\n", M_GetText("NEW MOST RINGS!"), M_GetText("Saved replay as"), bestdemo);
|
||||
}
|
||||
|
||||
//CONS_Printf("%s '%s'\n", M_GetText("Saved replay as"), lastdemo);
|
||||
|
||||
Z_Free(buf);
|
||||
}
|
||||
free(gpath);
|
||||
|
||||
// Check emblems when level data is updated
|
||||
if ((earnedEmblems = M_CheckLevelEmblems()))
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for Record Attack records.\n"), (UINT16)earnedEmblems, earnedEmblems > 1 ? "s" : "");
|
||||
|
||||
// Update timeattack menu's replay availability.
|
||||
Nextmap_OnChange();
|
||||
}
|
||||
|
||||
//
|
||||
// Y_StartIntermission
|
||||
//
|
||||
|
@ -1252,7 +1161,6 @@ static void Y_UpdateRecordReplays(void)
|
|||
void Y_StartIntermission(void)
|
||||
{
|
||||
INT32 i;
|
||||
UINT8 completionEmblems = M_CompletionEmblems();
|
||||
|
||||
intertic = -1;
|
||||
|
||||
|
@ -1265,10 +1173,7 @@ void Y_StartIntermission(void)
|
|||
{
|
||||
timer = 0;
|
||||
|
||||
if (G_IsSpecialStage(gamemap))
|
||||
intertype = (maptol & TOL_NIGHTS) ? int_nightsspec : int_spec;
|
||||
else
|
||||
intertype = (maptol & TOL_NIGHTS) ? int_nights : int_coop;
|
||||
intertype = (G_IsSpecialStage(gamemap)) ? int_spec : int_coop;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1283,14 +1188,7 @@ void Y_StartIntermission(void)
|
|||
}
|
||||
|
||||
if (gametype == GT_COOP)
|
||||
{
|
||||
// Nights intermission is single player only
|
||||
// Don't add it here
|
||||
if (G_IsSpecialStage(gamemap))
|
||||
intertype = int_spec;
|
||||
else
|
||||
intertype = int_coop;
|
||||
}
|
||||
intertype = (G_IsSpecialStage(gamemap)) ? int_spec : int_coop;
|
||||
else if (gametype == GT_TEAMMATCH)
|
||||
intertype = int_teammatch;
|
||||
else if (gametype == GT_MATCH
|
||||
|
@ -1300,7 +1198,7 @@ void Y_StartIntermission(void)
|
|||
else if (gametype == GT_RACE)
|
||||
intertype = int_race;
|
||||
else if (gametype == GT_COMPETITION)
|
||||
intertype = int_classicrace;
|
||||
intertype = int_comp;
|
||||
else if (gametype == GT_CTF)
|
||||
intertype = int_ctf;
|
||||
}
|
||||
|
@ -1315,20 +1213,6 @@ void Y_StartIntermission(void)
|
|||
|
||||
switch (intertype)
|
||||
{
|
||||
case int_nights:
|
||||
// Can't fail
|
||||
G_SetNightsRecords();
|
||||
|
||||
// Check records
|
||||
{
|
||||
UINT8 earnedEmblems = M_CheckLevelEmblems();
|
||||
if (earnedEmblems)
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for NiGHTS records.\n"), (UINT16)earnedEmblems, earnedEmblems > 1 ? "s" : "");
|
||||
}
|
||||
|
||||
// fall back into the coop intermission for now
|
||||
intertype = int_coop;
|
||||
/* FALLTHRU */
|
||||
case int_coop: // coop or single player, normal level
|
||||
{
|
||||
// award time and ring bonuses
|
||||
|
@ -1337,24 +1221,6 @@ void Y_StartIntermission(void)
|
|||
// setup time data
|
||||
data.coop.tics = players[consoleplayer].realtime;
|
||||
|
||||
if ((!modifiedgame || savemoddata) && !multiplayer && !demoplayback)
|
||||
{
|
||||
// Update visitation flags
|
||||
mapvisited[gamemap-1] |= MV_BEATEN;
|
||||
if (ALL7EMERALDS(emeralds))
|
||||
mapvisited[gamemap-1] |= MV_ALLEMERALDS;
|
||||
if (ultimatemode)
|
||||
mapvisited[gamemap-1] |= MV_ULTIMATE;
|
||||
if (data.coop.gotperfbonus)
|
||||
mapvisited[gamemap-1] |= MV_PERFECT;
|
||||
|
||||
if (modeattacking == ATTACKING_RECORD)
|
||||
Y_UpdateRecordReplays();
|
||||
|
||||
if (completionEmblems)
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for level completion.\n"), (UINT16)completionEmblems, completionEmblems > 1 ? "s" : "");
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; ++i)
|
||||
data.coop.bonuspatches[i] = W_CachePatchName(data.coop.bonuses[i].patch, PU_STATIC);
|
||||
data.coop.ptotal = W_CachePatchName("YB_TOTAL", PU_STATIC);
|
||||
|
@ -1421,40 +1287,8 @@ void Y_StartIntermission(void)
|
|||
break;
|
||||
}
|
||||
|
||||
case int_nightsspec:
|
||||
if (modeattacking && stagefailed)
|
||||
{
|
||||
// Nuh-uh. Get out of here.
|
||||
Y_EndIntermission();
|
||||
Y_FollowIntermission();
|
||||
break;
|
||||
}
|
||||
if (!stagefailed)
|
||||
G_SetNightsRecords();
|
||||
|
||||
// Check records
|
||||
{
|
||||
UINT8 earnedEmblems = M_CheckLevelEmblems();
|
||||
if (earnedEmblems)
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for NiGHTS records.\n"), (UINT16)earnedEmblems, earnedEmblems > 1 ? "s" : "");
|
||||
}
|
||||
|
||||
// fall back into the special stage intermission for now
|
||||
intertype = int_spec;
|
||||
/* FALLTHRU */
|
||||
case int_spec: // coop or single player, special stage
|
||||
{
|
||||
// Update visitation flags?
|
||||
if ((!modifiedgame || savemoddata) && !multiplayer && !demoplayback)
|
||||
{
|
||||
if (!stagefailed)
|
||||
mapvisited[gamemap-1] |= MV_BEATEN;
|
||||
|
||||
// all emeralds/ultimate/perfect emblems won't be possible in ss, oh well?
|
||||
if (completionEmblems)
|
||||
CONS_Printf(M_GetText("\x82" "Earned %hu emblem%s for level completion.\n"), (UINT16)completionEmblems, completionEmblems > 1 ? "s" : "");
|
||||
}
|
||||
|
||||
// give out ring bonuses
|
||||
Y_AwardSpecialStageBonus();
|
||||
|
||||
|
@ -1640,7 +1474,7 @@ void Y_StartIntermission(void)
|
|||
break;
|
||||
}
|
||||
|
||||
case int_classicrace: // classic (full race)
|
||||
case int_comp: // classic (full race)
|
||||
{
|
||||
// find out who won
|
||||
Y_CalculateCompetitionWinners();
|
||||
|
@ -2195,23 +2029,6 @@ void Y_EndIntermission(void)
|
|||
usebuffer = false;
|
||||
}
|
||||
|
||||
//
|
||||
// Y_FollowIntermission
|
||||
//
|
||||
static void Y_FollowIntermission(void)
|
||||
{
|
||||
if (modeattacking)
|
||||
{
|
||||
M_EndModeAttackRun();
|
||||
return;
|
||||
}
|
||||
|
||||
// This handles whether to play a post-level cutscene, end the game,
|
||||
// or simply go to the next level.
|
||||
// No need to duplicate the code here!
|
||||
G_AfterIntermission();
|
||||
}
|
||||
|
||||
#define UNLOAD(x) Z_ChangeTag(x, PU_CACHE); x = NULL
|
||||
|
||||
//
|
||||
|
@ -2224,8 +2041,6 @@ static void Y_UnloadData(void)
|
|||
if (rendermode != render_soft)
|
||||
return;
|
||||
|
||||
Y_CleanupScreenBuffer();
|
||||
|
||||
// unload the background patches
|
||||
UNLOAD(bgpatch);
|
||||
UNLOAD(widebgpatch);
|
||||
|
@ -2261,7 +2076,7 @@ static void Y_UnloadData(void)
|
|||
break;
|
||||
default:
|
||||
//without this default,
|
||||
//int_none, int_tag, int_chaos, and int_classicrace
|
||||
//int_none, int_tag, int_chaos, and int_comp
|
||||
//are not handled
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ void Y_Ticker(void);
|
|||
void Y_StartIntermission(void);
|
||||
void Y_EndIntermission(void);
|
||||
void Y_ConsiderScreenBuffer(void);
|
||||
void Y_CleanupScreenBuffer(void);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -26,9 +27,7 @@ typedef enum
|
|||
// int_tag, // Tag
|
||||
int_ctf, // CTF
|
||||
int_spec, // Special Stage
|
||||
int_nights, // NiGHTS into Dreams
|
||||
int_nightsspec,// NiGHTS special stage
|
||||
int_race, // Race
|
||||
int_classicrace, // Competition
|
||||
int_comp, // Competition
|
||||
} intertype_t;
|
||||
extern intertype_t intertype;
|
||||
|
|
Loading…
Reference in a new issue