mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-20 18:01:16 +00:00
Merge branch 'master' of http://git.magicalgirl.moe/STJr/SRB2Internal into spr2-freeslots
This commit is contained in:
commit
01dd3e9bd5
51 changed files with 1353 additions and 1199 deletions
|
@ -103,7 +103,8 @@ set(GIT_EXECUTABLE "git" CACHE FILEPATH "Path to git binary")
|
|||
include(GitUtilities)
|
||||
git_describe(SRB2_GIT_DESCRIBE "${CMAKE_SOURCE_DIR}")
|
||||
git_current_branch(SRB2_GIT_BRANCH "${CMAKE_SOURCE_DIR}")
|
||||
set(SRB2_COMP_REVISION "${SRB2_GIT_DESCRIBE}-<${SRB2_GIT_BRANCH}>")
|
||||
set(SRB2_COMP_BRANCH "${SRB2_GIT_BRANCH}")
|
||||
set(SRB2_COMP_REVISION "${SRB2_GIT_DESCRIBE}")
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/src/config.h)
|
||||
|
||||
##### PACKAGE CONFIGURATION #####
|
||||
|
|
29
comptime.bat
29
comptime.bat
|
@ -1,10 +1,31 @@
|
|||
@ECHO OFF
|
||||
set REV=Unknown
|
||||
set BRA=Unknown
|
||||
set REV=illegal
|
||||
|
||||
copy nul: /b +%1\comptime.c tmp.$$$ > nul
|
||||
move tmp.$$$ %1\comptime.c > nul
|
||||
SET REV=illegal
|
||||
FOR /F "usebackq" %%s IN (`svnversion %1`) DO @SET REV=%%s
|
||||
|
||||
if exist .git goto gitrev
|
||||
if exist .svn goto svnrev
|
||||
goto filwri
|
||||
|
||||
:gitrev
|
||||
set GIT=%2
|
||||
if "%GIT%"=="" set GIT=git
|
||||
FOR /F "usebackq" %%s IN (`%GIT% rev-parse --abbrev-ref HEAD`) DO @SET BRA=%%s
|
||||
FOR /F "usebackq" %%s IN (`%GIT% rev-parse HEAD`) DO @SET REV=%%s
|
||||
set REV=%REV:~0,8%
|
||||
goto filwri
|
||||
|
||||
:svnrev
|
||||
set BRA=Subversion
|
||||
FOR /F "usebackq" %%s IN (`svnversion .`) DO @SET REV=%%s
|
||||
set REV=r%REV%
|
||||
goto filwri
|
||||
|
||||
:filwri
|
||||
ECHO // Do not edit! This file was autogenerated > %1\comptime.h
|
||||
ECHO // by the %0 batch file >> %1\comptime.h
|
||||
ECHO // >> %1\comptime.h
|
||||
ECHO const char* comprevision = "r%REV%"; >> %1\comptime.h
|
||||
ECHO const char* compbranch = "%BRA%"; >> %1\comptime.h
|
||||
ECHO const char* comprevision = "%REV%"; >> %1\comptime.h
|
||||
|
|
10
comptime.sh
10
comptime.sh
|
@ -5,13 +5,15 @@ if [ x"$1" != x ]; then
|
|||
fi
|
||||
|
||||
versiongit() {
|
||||
gitversion=`git describe`
|
||||
gitbranch=`git rev-parse --abbrev-ref HEAD`
|
||||
gitversion=`git rev-parse HEAD`
|
||||
cat <<EOF > $path/comptime.h
|
||||
|
||||
// Do not edit! This file was autogenerated
|
||||
// by the $0 script with git svn
|
||||
// by the $0 script with git
|
||||
//
|
||||
const char* comprevision = "$gitversion";
|
||||
const char* compbranch = "$gitbranch";
|
||||
const char* comprevision = "${gitversion:0:8}";
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
@ -23,6 +25,7 @@ versionsvn() {
|
|||
// Do not edit! This file was autogenerated
|
||||
// by the $0 script with subversion
|
||||
//
|
||||
const char* compbranch = "Subversion";
|
||||
const char* comprevision = "r$svnrevision";
|
||||
EOF
|
||||
exit 0
|
||||
|
@ -34,6 +37,7 @@ versionfake() {
|
|||
// Do not edit! This file was autogenerated
|
||||
// by the $0 script with an unknown or nonexist SCM
|
||||
//
|
||||
const char* compbranch = "Unknown";
|
||||
const char* comprevision = "illegal";
|
||||
EOF
|
||||
}
|
||||
|
|
|
@ -9,12 +9,14 @@
|
|||
|
||||
#if (defined(CMAKECONFIG))
|
||||
#include "config.h"
|
||||
const char *compbranch = SRB2_COMP_BRANCH;
|
||||
const char *comprevision = SRB2_COMP_REVISION;
|
||||
|
||||
#elif (defined(COMPVERSION))
|
||||
#include "comptime.h"
|
||||
|
||||
#else
|
||||
const char *compbranch = "Unknown";
|
||||
const char *comprevision = "illegal";
|
||||
|
||||
#endif
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#define ASSET_HASH_PATCH_DTA "${SRB2_ASSET_patch.dta_HASH}"
|
||||
|
||||
#define SRB2_COMP_REVISION "${SRB2_COMP_REVISION}"
|
||||
#define SRB2_COMP_BRANCH "${SRB2_COMP_BRANCH}"
|
||||
#define SRB2_GIT_DESCRIBE "${SRB2_GIT_DESCRIBE}"
|
||||
#define SRB2_GIT_BRANCH "${SRB2_GIT_BRANCH}"
|
||||
|
||||
|
|
|
@ -248,11 +248,11 @@ void CON_ReSetupBackColormap(UINT16 num)
|
|||
{
|
||||
j = pal[i] + pal[i+1] + pal[i+2];
|
||||
cwhitemap[k] = (UINT8)(15 - (j>>6));
|
||||
corangemap[k] = (UINT8)(95 - (j>>6));
|
||||
cbluemap[k] = (UINT8)(239 - (j>>6));
|
||||
cgreenmap[k] = (UINT8)(175 - (j>>6));
|
||||
corangemap[k] = (UINT8)(63 - (j>>6));
|
||||
cbluemap[k] = (UINT8)(159 - (j>>6));
|
||||
cgreenmap[k] = (UINT8)(111 - (j>>6));
|
||||
cgraymap[k] = (UINT8)(31 - (j>>6));
|
||||
credmap[k] = (UINT8)(143 - (j>>6));
|
||||
credmap[k] = (UINT8)(47 - (j>>6));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -283,11 +283,11 @@ static void CON_SetupBackColormap(void)
|
|||
{
|
||||
j = pal[i] + pal[i+1] + pal[i+2];
|
||||
cwhitemap[k] = (UINT8)(15 - (j>>6));
|
||||
corangemap[k] = (UINT8)(95 - (j>>6));
|
||||
cbluemap[k] = (UINT8)(239 - (j>>6));
|
||||
cgreenmap[k] = (UINT8)(175 - (j>>6));
|
||||
corangemap[k] = (UINT8)(63 - (j>>6));
|
||||
cbluemap[k] = (UINT8)(159 - (j>>6));
|
||||
cgreenmap[k] = (UINT8)(111 - (j>>6));
|
||||
cgraymap[k] = (UINT8)(31 - (j>>6));
|
||||
credmap[k] = (UINT8)(143 - (j>>6));
|
||||
credmap[k] = (UINT8)(47 - (j>>6));
|
||||
}
|
||||
|
||||
// setup the other colormaps, for console text
|
||||
|
@ -306,20 +306,20 @@ static void CON_SetupBackColormap(void)
|
|||
orangemap[i] = (UINT8)i;
|
||||
}
|
||||
|
||||
yellowmap[3] = (UINT8)103;
|
||||
yellowmap[9] = (UINT8)115;
|
||||
purplemap[3] = (UINT8)195;
|
||||
purplemap[9] = (UINT8)198;
|
||||
lgreenmap[3] = (UINT8)162;
|
||||
lgreenmap[9] = (UINT8)170;
|
||||
bluemap[3] = (UINT8)228;
|
||||
bluemap[9] = (UINT8)238;
|
||||
yellowmap[3] = (UINT8)73;
|
||||
yellowmap[9] = (UINT8)66;
|
||||
purplemap[3] = (UINT8)184;
|
||||
purplemap[9] = (UINT8)186;
|
||||
lgreenmap[3] = (UINT8)102;
|
||||
lgreenmap[9] = (UINT8)106;
|
||||
bluemap[3] = (UINT8)147;
|
||||
bluemap[9] = (UINT8)158;
|
||||
graymap[3] = (UINT8)10;
|
||||
graymap[9] = (UINT8)15;
|
||||
redmap[3] = (UINT8)124;
|
||||
redmap[9] = (UINT8)127;
|
||||
orangemap[3] = (UINT8)85;
|
||||
orangemap[9] = (UINT8)90;
|
||||
redmap[3] = (UINT8)210;
|
||||
redmap[9] = (UINT8)32;
|
||||
orangemap[3] = (UINT8)52;
|
||||
orangemap[9] = (UINT8)57;
|
||||
}
|
||||
|
||||
// Setup the console text buffer
|
||||
|
@ -1472,3 +1472,4 @@ void CON_Drawer(void)
|
|||
else if (gamestate == GS_LEVEL || gamestate == GS_INTERMISSION || gamestate == GS_CUTSCENE || gamestate == GS_CREDITS)
|
||||
CON_DrawHudlines();
|
||||
}
|
||||
|
||||
|
|
|
@ -1101,7 +1101,7 @@ static inline void CL_DrawConnectionStatus(void)
|
|||
if (cl_mode != cl_downloadfiles)
|
||||
{
|
||||
INT32 i, animtime = ((ccstime / 4) & 15) + 16;
|
||||
UINT8 palstart = (cl_mode == cl_searching) ? 128 : 160;
|
||||
UINT8 palstart = (cl_mode == cl_searching) ? 32 : 96;
|
||||
// 15 pal entries total.
|
||||
const char *cltext;
|
||||
|
||||
|
@ -1139,8 +1139,8 @@ static inline void CL_DrawConnectionStatus(void)
|
|||
dldlength = (INT32)((fileneeded[lastfilenum].currentsize/(double)fileneeded[lastfilenum].totalsize) * 256);
|
||||
if (dldlength > 256)
|
||||
dldlength = 256;
|
||||
V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, 256, 8, 175);
|
||||
V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, dldlength, 8, 160);
|
||||
V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, 256, 8, 111);
|
||||
V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, dldlength, 8, 96);
|
||||
|
||||
memset(tempname, 0, sizeof(tempname));
|
||||
nameonly(strncpy(tempname, fileneeded[lastfilenum].filename, 31));
|
||||
|
|
|
@ -1129,10 +1129,10 @@ void D_SRB2Main(void)
|
|||
#ifndef DEVELOP // md5s last updated 12/14/14
|
||||
|
||||
// Check MD5s of autoloaded files
|
||||
W_VerifyFileMD5(0, ASSET_HASH_SRB2_SRB); // srb2.srb/srb2.wad
|
||||
W_VerifyFileMD5(1, ASSET_HASH_ZONES_DTA); // zones.dta
|
||||
W_VerifyFileMD5(2, ASSET_HASH_PLAYER_DTA); // player.dta
|
||||
W_VerifyFileMD5(3, ASSET_HASH_RINGS_DTA); // rings.dta
|
||||
//W_VerifyFileMD5(0, ASSET_HASH_SRB2_SRB); // srb2.srb/srb2.wad
|
||||
//W_VerifyFileMD5(1, ASSET_HASH_ZONES_DTA); // zones.dta
|
||||
//W_VerifyFileMD5(2, ASSET_HASH_PLAYER_DTA); // player.dta
|
||||
//W_VerifyFileMD5(3, ASSET_HASH_RINGS_DTA); // rings.dta
|
||||
//W_VerifyFileMD5(4, "0c66790502e648bfce90fdc5bb15722e"); // patch.dta
|
||||
// don't check music.dta because people like to modify it, and it doesn't matter if they do
|
||||
// ...except it does if they slip maps in there, and that's what W_VerifyNMUSlumps is for.
|
||||
|
|
|
@ -3179,7 +3179,11 @@ static void Command_ListWADS_f(void)
|
|||
*/
|
||||
static void Command_Version_f(void)
|
||||
{
|
||||
#ifdef DEVELOP
|
||||
CONS_Printf("Sonic Robo Blast 2 %s-%s (%s %s)\n", compbranch, comprevision, compdate, comptime);
|
||||
#else
|
||||
CONS_Printf("Sonic Robo Blast 2 %s (%s %s %s)\n", VERSIONSTRING, compdate, comptime, comprevision);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef UPDATE_ALERT
|
||||
|
|
|
@ -166,7 +166,7 @@ typedef enum
|
|||
PA_RUN,
|
||||
PA_PAIN,
|
||||
PA_ROLL,
|
||||
PA_JUMP,
|
||||
PA_SPRING,
|
||||
PA_FALL,
|
||||
PA_ABILITY,
|
||||
PA_RIDE
|
||||
|
|
|
@ -1148,6 +1148,10 @@ static void readlevelheader(MYFILE *f, INT32 num)
|
|||
}
|
||||
else if (fastcmp(word, "NEXTLEVEL"))
|
||||
{
|
||||
if (fastcmp(word2, "TITLE")) i = 1100;
|
||||
else if (fastcmp(word2, "EVALUATION")) i = 1101;
|
||||
else if (fastcmp(word2, "CREDITS")) i = 1102;
|
||||
else
|
||||
// Support using the actual map name,
|
||||
// i.e., Nextlevel = AB, Nextlevel = FZ, etc.
|
||||
|
||||
|
@ -3771,6 +3775,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_PLAY_DASH",
|
||||
"S_PLAY_GASP",
|
||||
"S_PLAY_JUMP",
|
||||
"S_PLAY_SPRING",
|
||||
"S_PLAY_FALL",
|
||||
"S_PLAY_EDGE",
|
||||
"S_PLAY_RIDE",
|
||||
|
@ -3795,6 +3800,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_PLAY_SUPER_SPIN",
|
||||
"S_PLAY_SUPER_GASP",
|
||||
"S_PLAY_SUPER_JUMP",
|
||||
"S_PLAY_SUPER_SPRING",
|
||||
"S_PLAY_SUPER_FALL",
|
||||
"S_PLAY_SUPER_EDGE",
|
||||
"S_PLAY_SUPER_RIDE",
|
||||
|
@ -7329,27 +7335,31 @@ static const char *COLOR_ENUMS[] = {
|
|||
"SILVER", // SKINCOLOR_SILVER
|
||||
"GREY", // SKINCOLOR_GREY
|
||||
"BLACK", // SKINCOLOR_BLACK
|
||||
"CYAN", // SKINCOLOR_CYAN
|
||||
"TEAL", // SKINCOLOR_TEAL
|
||||
"STEELBLUE", // SKINCOLOR_STEELBLUE
|
||||
"BLUE", // SKINCOLOR_BLUE
|
||||
"PEACH", // SKINCOLOR_PEACH
|
||||
"TAN", // SKINCOLOR_TAN
|
||||
"PINK", // SKINCOLOR_PINK
|
||||
"LAVENDER", // SKINCOLOR_LAVENDER
|
||||
"PURPLE", // SKINCOLOR_PURPLE
|
||||
"ORANGE", // SKINCOLOR_ORANGE
|
||||
"ROSEWOOD", // SKINCOLOR_ROSEWOOD
|
||||
"BEIGE", // SKINCOLOR_BEIGE
|
||||
"PEACH", // SKINCOLOR_PEACH
|
||||
"BROWN", // SKINCOLOR_BROWN
|
||||
"RED", // SKINCOLOR_RED
|
||||
"DARKRED", // SKINCOLOR_DARKRED
|
||||
"NEONGREEN", // SKINCOLOR_NEONGREEN
|
||||
"GREEN", // SKINCOLOR_GREEN
|
||||
"ZIM", // SKINCOLOR_ZIM
|
||||
"OLIVE", // SKINCOLOR_OLIVE
|
||||
"CRIMSON", // SKINCOLOR_CRIMSON
|
||||
"ORANGE", // SKINCOLOR_ORANGE
|
||||
"RUST", // SKINCOLOR_RUST
|
||||
"GOLD", // SKINCOLOR_GOLD
|
||||
"YELLOW", // SKINCOLOR_YELLOW
|
||||
"GOLD", // SKINCOLOR_GOLD
|
||||
"TAN", // SKINCOLOR_TAN
|
||||
"MOSS", // SKINCOLOR_MOSS
|
||||
"PERIDOT", // SKINCOLOR_PERIDOT
|
||||
"GREEN", // SKINCOLOR_GREEN
|
||||
"EMERALD", // SKINCOLOR_EMERALD
|
||||
"AQUA", // SKINCOLOR_AQUA
|
||||
"TEAL", // SKINCOLOR_TEAL
|
||||
"CYAN", // SKINCOLOR_CYAN
|
||||
"BLUE", // SKINCOLOR_BLUE
|
||||
"AZURE", // SKINCOLOR_AZURE
|
||||
"PASTEL", // SKINCOLOR_PASTEL
|
||||
"PURPLE", // SKINCOLOR_PURPLE
|
||||
"LAVENDER", // SKINCOLOR_LAVENDER
|
||||
"MAGENTA", // SKINCOLOR_MAGENTA
|
||||
"PINK", // SKINCOLOR_PINK
|
||||
"ROSY", // SKINCOLOR_ROSY
|
||||
// Super special awesome Super flashing colors!
|
||||
"SUPER1", // SKINCOLOR_SUPER1
|
||||
"SUPER2", // SKINCOLOR_SUPER2,
|
||||
|
@ -7691,7 +7701,7 @@ struct {
|
|||
{"PA_RUN",PA_RUN},
|
||||
{"PA_PAIN",PA_PAIN},
|
||||
{"PA_ROLL",PA_ROLL},
|
||||
{"PA_JUMP",PA_JUMP},
|
||||
{"PA_SPRING",PA_SPRING},
|
||||
{"PA_FALL",PA_FALL},
|
||||
{"PA_ABILITY",PA_ABILITY},
|
||||
{"PA_RIDE",PA_RIDE},
|
||||
|
@ -8849,3 +8859,4 @@ void LUA_SetActionByName(void *state, const char *actiontocompare)
|
|||
}
|
||||
|
||||
#endif // HAVE_BLUA
|
||||
|
||||
|
|
|
@ -142,8 +142,10 @@ extern FILE *logstream;
|
|||
#ifdef DEVELOP
|
||||
#define VERSION 0 // Game version
|
||||
#define SUBVERSION 0 // more precise version number
|
||||
#define VERSIONSTRING "Trunk"
|
||||
#define VERSIONSTRINGW L"Trunk"
|
||||
#define VERSIONSTRING "Development EXE"
|
||||
#define VERSIONSTRINGW L"Development EXE"
|
||||
// most interface strings are ignored in development mode.
|
||||
// we use comprevision and compbranch instead.
|
||||
#else
|
||||
#define VERSION 202 // Game version
|
||||
#define SUBVERSION 0 // more precise version number
|
||||
|
@ -232,27 +234,31 @@ typedef enum
|
|||
SKINCOLOR_SILVER,
|
||||
SKINCOLOR_GREY,
|
||||
SKINCOLOR_BLACK,
|
||||
SKINCOLOR_CYAN,
|
||||
SKINCOLOR_TEAL,
|
||||
SKINCOLOR_STEELBLUE,
|
||||
SKINCOLOR_BLUE,
|
||||
SKINCOLOR_PEACH,
|
||||
SKINCOLOR_TAN,
|
||||
SKINCOLOR_PINK,
|
||||
SKINCOLOR_LAVENDER,
|
||||
SKINCOLOR_PURPLE,
|
||||
SKINCOLOR_ORANGE,
|
||||
SKINCOLOR_ROSEWOOD,
|
||||
SKINCOLOR_BEIGE,
|
||||
SKINCOLOR_PEACH,
|
||||
SKINCOLOR_BROWN,
|
||||
SKINCOLOR_RED,
|
||||
SKINCOLOR_DARKRED,
|
||||
SKINCOLOR_NEONGREEN,
|
||||
SKINCOLOR_GREEN,
|
||||
SKINCOLOR_ZIM,
|
||||
SKINCOLOR_OLIVE,
|
||||
SKINCOLOR_YELLOW,
|
||||
SKINCOLOR_CRIMSON,
|
||||
SKINCOLOR_ORANGE,
|
||||
SKINCOLOR_RUST,
|
||||
SKINCOLOR_GOLD,
|
||||
SKINCOLOR_YELLOW,
|
||||
SKINCOLOR_TAN,
|
||||
SKINCOLOR_MOSS,
|
||||
SKINCOLOR_PERIDOT,
|
||||
SKINCOLOR_GREEN,
|
||||
SKINCOLOR_EMERALD,
|
||||
SKINCOLOR_AQUA,
|
||||
SKINCOLOR_TEAL,
|
||||
SKINCOLOR_CYAN,
|
||||
SKINCOLOR_BLUE,
|
||||
SKINCOLOR_AZURE,
|
||||
SKINCOLOR_PASTEL,
|
||||
SKINCOLOR_PURPLE,
|
||||
SKINCOLOR_LAVENDER,
|
||||
SKINCOLOR_MAGENTA,
|
||||
SKINCOLOR_PINK,
|
||||
SKINCOLOR_ROSY,
|
||||
|
||||
// Careful! MAXSKINCOLORS cannot be greater than 0x20!
|
||||
MAXSKINCOLORS,
|
||||
|
@ -426,7 +432,7 @@ INT32 I_GetKey(void);
|
|||
#endif
|
||||
|
||||
// Compile date and time and revision.
|
||||
extern const char *compdate, *comptime, *comprevision;
|
||||
extern const char *compdate, *comptime, *comprevision, *compbranch;
|
||||
|
||||
// Disabled code and code under testing
|
||||
// None of these that are disabled in the normal build are guaranteed to work perfectly
|
||||
|
@ -500,3 +506,4 @@ extern const char *compdate, *comptime, *comprevision;
|
|||
//#define REDSANALOG
|
||||
|
||||
#endif // __DOOMDEF__
|
||||
|
||||
|
|
|
@ -100,11 +100,13 @@ typedef long ssize_t;
|
|||
|
||||
#if defined (_MSC_VER) || defined (__OS2__)
|
||||
// Microsoft VisualC++
|
||||
#ifdef _MSC_VER
|
||||
#if (_MSC_VER <= 1800) // MSVC 2013 and back
|
||||
#define snprintf _snprintf
|
||||
#if (_MSC_VER <= 1200) // MSVC 2012 and back
|
||||
#define vsnprintf _vsnprintf
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#define strncasecmp strnicmp
|
||||
#define strcasecmp stricmp
|
||||
|
@ -177,6 +179,8 @@ size_t strlcpy(char *dst, const char *src, size_t siz);
|
|||
// not the number of bytes in the buffer.
|
||||
#define STRBUFCPY(dst,src) strlcpy(dst, src, sizeof dst)
|
||||
|
||||
// \note __BYTEBOOL__ used to be set above if "macintosh" was defined,
|
||||
// if macintosh's version of boolean type isn't needed anymore, then isn't this macro pointless now?
|
||||
#ifndef __BYTEBOOL__
|
||||
#define __BYTEBOOL__
|
||||
|
||||
|
@ -193,7 +197,6 @@ size_t strlcpy(char *dst, const char *src, size_t siz);
|
|||
#else
|
||||
typedef enum {false, true} boolean;
|
||||
#endif
|
||||
//#endif // __cplusplus
|
||||
#endif // __BYTEBOOL__
|
||||
|
||||
/* 7.18.2.1 Limits of exact-width integer types */
|
||||
|
|
52
src/f_wipe.c
52
src/f_wipe.c
|
@ -231,34 +231,52 @@ static void F_DoWipe(fademask_t *fademask)
|
|||
maskx = masky = 0;
|
||||
do
|
||||
{
|
||||
// pointer to transtable that this mask would use
|
||||
transtbl = transtables + ((9 - *mask)<<FF_TRANSSHIFT);
|
||||
// (ignore that it goes out of bounds if *mask is 0 or 10 --
|
||||
// it wouldn't be used in those cases anyway)
|
||||
|
||||
draw_rowstart = scrxpos[maskx];
|
||||
draw_rowend = scrxpos[maskx + 1];
|
||||
draw_linestart = scrypos[masky];
|
||||
draw_lineend = scrypos[masky + 1];
|
||||
|
||||
// DRAWING LOOP
|
||||
relativepos = (draw_linestart * vid.width) + draw_rowstart;
|
||||
draw_linestogo = draw_lineend - draw_linestart;
|
||||
while (draw_linestogo--)
|
||||
|
||||
if (*mask == 0)
|
||||
{
|
||||
w = w_base + relativepos;
|
||||
s = s_base + relativepos;
|
||||
e = e_base + relativepos;
|
||||
draw_rowstogo = draw_rowend - draw_rowstart;
|
||||
while (draw_rowstogo--)
|
||||
// shortcut - memcpy source to work
|
||||
while (draw_linestogo--)
|
||||
{
|
||||
if (*s != *e)
|
||||
*w = ((*mask == 0) ? *s : (*mask == 10) ? *e : transtbl[(*e<<8) + *s]);
|
||||
++w, ++s, ++e;
|
||||
M_Memcpy(w_base+relativepos, s_base+relativepos, draw_rowend-draw_rowstart);
|
||||
relativepos += vid.width;
|
||||
}
|
||||
relativepos += vid.width;
|
||||
}
|
||||
// END DRAWING LOOP
|
||||
else if (*mask == 10)
|
||||
{
|
||||
// shortcut - memcpy target to work
|
||||
while (draw_linestogo--)
|
||||
{
|
||||
M_Memcpy(w_base+relativepos, e_base+relativepos, draw_rowend-draw_rowstart);
|
||||
relativepos += vid.width;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// pointer to transtable that this mask would use
|
||||
transtbl = transtables + ((9 - *mask)<<FF_TRANSSHIFT);
|
||||
|
||||
// DRAWING LOOP
|
||||
while (draw_linestogo--)
|
||||
{
|
||||
w = w_base + relativepos;
|
||||
s = s_base + relativepos;
|
||||
e = e_base + relativepos;
|
||||
draw_rowstogo = draw_rowend - draw_rowstart;
|
||||
|
||||
while (draw_rowstogo--)
|
||||
*w++ = transtbl[ ( *e++ << 8 ) + *s++ ];
|
||||
|
||||
relativepos += vid.width;
|
||||
}
|
||||
// END DRAWING LOOP
|
||||
}
|
||||
|
||||
if (++maskx >= fademask->width)
|
||||
++masky, maskx = 0;
|
||||
|
|
|
@ -123,7 +123,7 @@ boolean useNightsSS = false;
|
|||
UINT8 skincolor_redteam = SKINCOLOR_RED;
|
||||
UINT8 skincolor_blueteam = SKINCOLOR_BLUE;
|
||||
UINT8 skincolor_redring = SKINCOLOR_RED;
|
||||
UINT8 skincolor_bluering = SKINCOLOR_STEELBLUE;
|
||||
UINT8 skincolor_bluering = SKINCOLOR_AZURE;
|
||||
|
||||
tic_t countdowntimer = 0;
|
||||
boolean countdowntimeup = false;
|
||||
|
@ -297,9 +297,6 @@ static CV_PossibleValue_t joyaxis_cons_t[] = {{0, "None"},
|
|||
#if JOYAXISSET > 3
|
||||
{7, "Pitch"}, {8, "Roll"}, {-7, "Pitch-"}, {-8, "Roll-"},
|
||||
#endif
|
||||
#if JOYAXISSET > 3
|
||||
{7, "Pitch"}, {8, "Roll"}, {-7, "Pitch-"}, {-8, "Roll-"},
|
||||
#endif
|
||||
#if JOYAXISSET > 4
|
||||
{7, "Yaw"}, {8, "Dummy"}, {-7, "Yaw-"}, {-8, "Dummy-"},
|
||||
#endif
|
||||
|
|
|
@ -46,8 +46,8 @@ typedef unsigned char FBOOLEAN;
|
|||
#define HWR_PATCHES_CHROMAKEY_COLORINDEX 0
|
||||
#define HWR_CHROMAKEY_EQUIVALENTCOLORINDEX 1
|
||||
#else
|
||||
#define HWR_PATCHES_CHROMAKEY_COLORINDEX 247
|
||||
#define HWR_CHROMAKEY_EQUIVALENTCOLORINDEX 220
|
||||
#define HWR_PATCHES_CHROMAKEY_COLORINDEX 255
|
||||
#define HWR_CHROMAKEY_EQUIVALENTCOLORINDEX 130
|
||||
#endif
|
||||
|
||||
// the chroma key color shows on border sprites, set it to black
|
||||
|
@ -229,3 +229,4 @@ enum hwdfiltermode
|
|||
|
||||
|
||||
#endif //_HWR_DEFS_
|
||||
|
||||
|
|
|
@ -79,6 +79,7 @@ typedef struct gr_vissprite_s
|
|||
boolean vflip;
|
||||
//Hurdler: 25/04/2000: now support colormap in hardware mode
|
||||
UINT8 *colormap;
|
||||
INT32 dispoffset; // copy of info->dispoffset, affects ordering but not drawing
|
||||
} gr_vissprite_t;
|
||||
|
||||
// --------
|
||||
|
|
|
@ -3998,6 +3998,7 @@ static void HWR_SortVisSprites(void)
|
|||
gr_vissprite_t *best = NULL;
|
||||
gr_vissprite_t unsorted;
|
||||
float bestdist;
|
||||
INT32 bestdispoffset;
|
||||
|
||||
if (!gr_visspritecount)
|
||||
return;
|
||||
|
@ -4025,11 +4026,19 @@ static void HWR_SortVisSprites(void)
|
|||
for (i = 0; i < gr_visspritecount; i++)
|
||||
{
|
||||
bestdist = ZCLIP_PLANE-1;
|
||||
bestdispoffset = INT32_MAX;
|
||||
for (ds = unsorted.next; ds != &unsorted; ds = ds->next)
|
||||
{
|
||||
if (ds->tz > bestdist)
|
||||
{
|
||||
bestdist = ds->tz;
|
||||
bestdispoffset = ds->dispoffset;
|
||||
best = ds;
|
||||
}
|
||||
// order visprites of same scale by dispoffset, smallest first
|
||||
else if (ds->tz == bestdist && ds->dispoffset < bestdispoffset)
|
||||
{
|
||||
bestdispoffset = ds->dispoffset;
|
||||
best = ds;
|
||||
}
|
||||
}
|
||||
|
@ -4653,6 +4662,7 @@ static void HWR_ProjectSprite(mobj_t *thing)
|
|||
#endif
|
||||
vis->x2 = tx;
|
||||
vis->tz = tz;
|
||||
vis->dispoffset = thing->info->dispoffset; // Monster Iestyn: 23/11/15: HARDWARE SUPPORT AT LAST
|
||||
vis->patchlumpnum = sprframe->lumppat[rot];
|
||||
vis->flip = flip;
|
||||
vis->mobj = thing;
|
||||
|
@ -4769,6 +4779,7 @@ static void HWR_ProjectPrecipitationSprite(precipmobj_t *thing)
|
|||
vis->x1 = x1;
|
||||
vis->x2 = tx;
|
||||
vis->tz = tz;
|
||||
vis->dispoffset = 0; // Monster Iestyn: 23/11/15: HARDWARE SUPPORT AT LAST
|
||||
vis->patchlumpnum = sprframe->lumppat[rot];
|
||||
vis->flip = flip;
|
||||
vis->mobj = (mobj_t *)thing;
|
||||
|
|
|
@ -1085,7 +1085,7 @@ void HWR_DrawMD2(gr_vissprite_t *spr)
|
|||
if (!cv_grmd2.value)
|
||||
return;
|
||||
|
||||
if (!spr->precip)
|
||||
if (spr->precip)
|
||||
return;
|
||||
|
||||
// MD2 colormap fix
|
||||
|
|
10
src/info.c
10
src/info.c
|
@ -69,6 +69,7 @@ char spr2names[NUMPLAYERSPRITES][5] =
|
|||
"DASH",
|
||||
"GASP",
|
||||
"JUMP",
|
||||
"SPNG",
|
||||
"FALL",
|
||||
"EDGE",
|
||||
"RIDE",
|
||||
|
@ -94,6 +95,7 @@ char spr2names[NUMPLAYERSPRITES][5] =
|
|||
"SSPN",
|
||||
"SGSP",
|
||||
"SJMP",
|
||||
"SSPG",
|
||||
"SFAL",
|
||||
"SEDG",
|
||||
"SRID",
|
||||
|
@ -136,7 +138,8 @@ state_t states[NUMSTATES] =
|
|||
{SPR_PLAY, SPR2_SPIN, 1, {NULL}, 0, 0, S_PLAY_SPIN}, // S_PLAY_SPIN
|
||||
{SPR_PLAY, SPR2_DASH, 2, {NULL}, 0, 0, S_PLAY_DASH}, // S_PLAY_DASH
|
||||
{SPR_PLAY, SPR2_GASP, 14, {NULL}, 0, 0, S_PLAY_WALK}, // S_PLAY_GASP
|
||||
{SPR_PLAY, SPR2_JUMP, 2, {NULL}, 0, 0, S_PLAY_JUMP}, // S_PLAY_JUMP
|
||||
{SPR_PLAY, SPR2_JUMP, 1, {NULL}, 0, 0, S_PLAY_JUMP}, // S_PLAY_JUMP
|
||||
{SPR_PLAY, SPR2_SPNG, 2, {NULL}, 0, 0, S_PLAY_SPRING}, // S_PLAY_SPRING
|
||||
{SPR_PLAY, SPR2_FALL, 2, {NULL}, 0, 0, S_PLAY_FALL}, // S_PLAY_FALL
|
||||
{SPR_PLAY, SPR2_EDGE, 12, {NULL}, 0, 0, S_PLAY_EDGE}, // S_PLAY_EDGE
|
||||
{SPR_PLAY, SPR2_RIDE, 4, {NULL}, 0, 0, S_PLAY_RIDE}, // S_PLAY_RIDE
|
||||
|
@ -160,7 +163,8 @@ state_t states[NUMSTATES] =
|
|||
{SPR_PLAY, SPR2_SDRN, 4, {NULL}, 0, 0, S_PLAY_SUPER_DRWN}, // S_PLAY_SUPER_DRWN
|
||||
{SPR_PLAY, SPR2_SSPN, 1, {NULL}, 0, 0, S_PLAY_SUPER_SPIN}, // S_PLAY_SUPER_SPIN
|
||||
{SPR_PLAY, SPR2_SGSP, 14, {NULL}, 0, 0, S_PLAY_SUPER_WALK}, // S_PLAY_SUPER_GASP
|
||||
{SPR_PLAY, SPR2_SJMP, 2, {NULL}, 0, 0, S_PLAY_SUPER_JUMP}, // S_PLAY_SUPER_JUMP
|
||||
{SPR_PLAY, SPR2_SJMP, 1, {NULL}, 0, 0, S_PLAY_SUPER_JUMP}, // S_PLAY_SUPER_JUMP
|
||||
{SPR_PLAY, SPR2_SSPG, 2, {NULL}, 0, 0, S_PLAY_SUPER_SPRING}, // S_PLAY_SUPER_SPRING
|
||||
{SPR_PLAY, SPR2_SFAL, 2, {NULL}, 0, 0, S_PLAY_SUPER_FALL}, // S_PLAY_SUPER_FALL
|
||||
{SPR_PLAY, SPR2_SEDG, 12, {NULL}, 0, 0, S_PLAY_SUPER_EDGE}, // S_PLAY_SUPER_EDGE
|
||||
{SPR_PLAY, SPR2_SRID, 4, {NULL}, 0, 0, S_PLAY_SUPER_RIDE}, // S_PLAY_SUPER_RIDE
|
||||
|
@ -3427,7 +3431,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_XPLD1, // deathstate
|
||||
S_DETON16, // xdeathstate
|
||||
sfx_pop, // deathsound
|
||||
1*FRACUNIT, // speed
|
||||
|
|
|
@ -588,6 +588,7 @@ enum playersprite
|
|||
SPR2_DASH,
|
||||
SPR2_GASP,
|
||||
SPR2_JUMP,
|
||||
SPR2_SPNG, // spring
|
||||
SPR2_FALL,
|
||||
SPR2_EDGE,
|
||||
SPR2_RIDE,
|
||||
|
@ -613,6 +614,7 @@ enum playersprite
|
|||
SPR2_SSPN,
|
||||
SPR2_SGSP,
|
||||
SPR2_SJMP,
|
||||
SPR2_SSPG,
|
||||
SPR2_SFAL,
|
||||
SPR2_SEDG,
|
||||
SPR2_SRID,
|
||||
|
@ -651,7 +653,8 @@ typedef enum state
|
|||
S_PLAY_SPIN,
|
||||
S_PLAY_DASH,
|
||||
S_PLAY_GASP,
|
||||
S_PLAY_JUMP,
|
||||
S_PLAY_JUMP, // spin jump (todo: make jump separate from spring up for non-spin chars too?)
|
||||
S_PLAY_SPRING,
|
||||
S_PLAY_FALL,
|
||||
S_PLAY_EDGE,
|
||||
S_PLAY_RIDE,
|
||||
|
@ -675,7 +678,8 @@ typedef enum state
|
|||
S_PLAY_SUPER_DRWN,
|
||||
S_PLAY_SUPER_SPIN,
|
||||
S_PLAY_SUPER_GASP,
|
||||
S_PLAY_SUPER_JUMP,
|
||||
S_PLAY_SUPER_JUMP, // see note above
|
||||
S_PLAY_SUPER_SPRING,
|
||||
S_PLAY_SUPER_FALL,
|
||||
S_PLAY_SUPER_EDGE,
|
||||
S_PLAY_SUPER_RIDE,
|
||||
|
|
|
@ -77,7 +77,9 @@ static int lib_finecosine(lua_State *L)
|
|||
|
||||
static int lib_finetangent(lua_State *L)
|
||||
{
|
||||
lua_pushfixed(L, FINETANGENT((luaL_checkangle(L, 1)>>ANGLETOFINESHIFT) & FINEMASK));
|
||||
// HACK: add ANGLE_90 to make tan() in Lua start at 0 like it should
|
||||
// use & 4095 instead of & FINEMASK (8191), so it doesn't go out of the array's bounds
|
||||
lua_pushfixed(L, FINETANGENT(((luaL_checkangle(L, 1)+ANGLE_90)>>ANGLETOFINESHIFT) & 4095));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
52
src/m_cond.c
52
src/m_cond.c
|
@ -49,7 +49,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Streams come to an end\n"
|
||||
"where they can no longer fall.\n"
|
||||
"But if you went up...", 0},
|
||||
{0, -336, 2064, 195, 1, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, -336, 2064, 195, 1, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"This one's in plain sight.\n"
|
||||
"Why haven't you claimed it?\n"
|
||||
"Surely you saw it.", 0},
|
||||
|
@ -77,7 +77,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Near the level's end,\n"
|
||||
"another bridge spans a lake.\n"
|
||||
"What could be under...?", 0},
|
||||
{0, -170, 491, 3821, 2, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, -170, 491, 3821, 2, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"An ivied tunnel\n"
|
||||
"has a corner that's sunlit.\n"
|
||||
"Go reach for the sky!", 0},
|
||||
|
@ -110,7 +110,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Spinning through small gaps\n"
|
||||
"can slip you into a cave.\n"
|
||||
"In that cave's first stretch...", 0},
|
||||
{0, 2848, -9088, 488, 4, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 2848, -9088, 488, 4, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"The slime lake is deep,\n"
|
||||
"but reaching the floor takes height.\n"
|
||||
"Scream \"Geronimo!\"...", 0},
|
||||
|
@ -138,7 +138,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"There is a hallway\n"
|
||||
"that a button floods with slime.\n"
|
||||
"Go through it again!", 0},
|
||||
{0, -2468,-12128, 1312, 5, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, -2468,-12128, 1312, 5, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"Jumping on turtles\n"
|
||||
"will send you springing skyward.\n"
|
||||
"Now, do that six times...", 0},
|
||||
|
@ -171,7 +171,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"A caved-in hallway?\n"
|
||||
"The floor falls; the path goes down.\n"
|
||||
"But those rocks looked weak...", 0},
|
||||
{0, 12576, 16096, -992, 7, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 12576, 16096, -992, 7, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"The end is quite dry.\n"
|
||||
"Some rocks dam the water in.\n"
|
||||
"Knuckles can fix that...", 0},
|
||||
|
@ -199,7 +199,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"In the current maze\n"
|
||||
"hides a dark room of columns.\n"
|
||||
"Find it, then look up.", 0},
|
||||
{0, 3104, 16192, 2408, 8, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 3104, 16192, 2408, 8, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"That same dragon's eye\n"
|
||||
"hides another secret room.\n"
|
||||
"There, solve its riddle.", 0},
|
||||
|
@ -232,7 +232,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"The final approach!\n"
|
||||
"A tower holds the emblem\n"
|
||||
"near a ring arrow.", 0},
|
||||
{0, 9472, -5890, 710, 10, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 9472, -5890, 710, 10, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"The right starting path\n"
|
||||
"hides this near a canopy,\n"
|
||||
"high, where two trees meet.", 0},
|
||||
|
@ -260,7 +260,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Some of these bookshelves\n"
|
||||
"are not flush against the walls.\n"
|
||||
"Wonder why that is?", 0},
|
||||
{0, 12708,-13536, 4768, 11, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 12708,-13536, 4768, 11, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"The ending's towers\n"
|
||||
"are hiding a small alcove.\n"
|
||||
"Check around outside.", 0},
|
||||
|
@ -293,7 +293,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Not far from the start,\n"
|
||||
"if you climb toward the sky,\n"
|
||||
"the cliffs hide something.", 0},
|
||||
{0, 12504, 6848, 3424, 13, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 12504, 6848, 3424, 13, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"Right by the exit,\n"
|
||||
"an emblem lies on a cliff.\n"
|
||||
"Ride ropes to reach it.", 0},
|
||||
|
@ -321,7 +321,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Where once a bridge stood,\n"
|
||||
"now magma falls from above.\n"
|
||||
"The bridge dropped something...", 0},
|
||||
{0, 8287,-11043, 1328, 16, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 8287,-11043, 1328, 16, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"A lake of magma\n"
|
||||
"ebbs and flows unendingly.\n"
|
||||
"Wait for its nadir.", 0},
|
||||
|
@ -349,7 +349,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Don't jump too high here!\n"
|
||||
"No conveyor will catch you;\n"
|
||||
"you'd fall to your death.", 0},
|
||||
{0, -6432, -6192, 584, 22, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, -6432, -6192, 584, 22, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"Conveyors! Magma!\n"
|
||||
"What an intense room this is!\n"
|
||||
"But, what brought you here?", 0},
|
||||
|
@ -377,7 +377,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Gears with missing teeth\n"
|
||||
"can hide a clever secret!\n"
|
||||
"Think Green Hill Zone boss.", 0},
|
||||
{0, 1920, 20608, 1064, 23, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 1920, 20608, 1064, 23, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"Just before you reach\n"
|
||||
"the defective cargo bay,\n"
|
||||
"fly under a bridge.", 0},
|
||||
|
@ -398,7 +398,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"[PH] In the ceiling of the conveyor belt + laser hallway.", 0},
|
||||
{0,-13728,-13728, 1552, 24, 'D', SKINCOLOR_ORANGE, 0,
|
||||
"[PH] On top of the platform with rows of spikes in reverse gravity.", 0},
|
||||
{0,-14944, 768, 1232, 24, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0,-14944, 768, 1232, 24, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"Follow the leader.", 0},
|
||||
*/
|
||||
|
||||
|
@ -430,7 +430,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"The underground room\n"
|
||||
"with platforms that fall and rise\n"
|
||||
"only LOOKS empty...", 0},
|
||||
{0 , 4960, -6112, 1312, 30, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0 , 4960, -6112, 1312, 30, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"This one's straightforward.\n"
|
||||
"What comes to mind when I say:\n"
|
||||
"\"WELCOME TO WARP ZONE!\"?", 0},
|
||||
|
@ -458,7 +458,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"Much like the last one,\n"
|
||||
"you need to find some switches.\n"
|
||||
"Only two, this time.", 0},
|
||||
{0, 13184, 18880, 6672, 40, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, 13184, 18880, 6672, 40, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"The inner sanctum!\n"
|
||||
"Teleport to its switches;\n"
|
||||
"then, check near the goal.", 0},
|
||||
|
@ -486,7 +486,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
"A room of currents;\n"
|
||||
"most of them are marked by spikes.\n"
|
||||
"This one? A corner.", 0},
|
||||
{0, -4128, 21344, 1120, 41, 'E', SKINCOLOR_NEONGREEN, 0,
|
||||
{0, -4128, 21344, 1120, 41, 'E', SKINCOLOR_EMERALD, 0,
|
||||
"The only way to hit\n"
|
||||
"all those gems at once is with\n"
|
||||
"a radial blast.", 0},
|
||||
|
@ -498,63 +498,63 @@ emblem_t emblemlocations[MAXEMBLEMS] =
|
|||
|
||||
// FLORAL FIELD
|
||||
// ---
|
||||
{0, 5394, -996, 160, 50, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, 5394, -996, 160, 50, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 50, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 50, 'T', SKINCOLOR_GREY, 40*TICRATE, "", 0},
|
||||
|
||||
|
||||
// TOXIC PLATEAU
|
||||
// ---
|
||||
{0, 780, -1664, 32, 51, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, 780, -1664, 32, 51, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 51, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 51, 'T', SKINCOLOR_GREY, 50*TICRATE, "", 0},
|
||||
|
||||
|
||||
// FLOODED COVE
|
||||
// ---
|
||||
{0, 1824, -1888, 2448, 52, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, 1824, -1888, 2448, 52, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 52, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 52, 'T', SKINCOLOR_GREY, 90*TICRATE, "", 0},
|
||||
|
||||
|
||||
// CAVERN FORTRESS
|
||||
// ---
|
||||
{0, -3089, -431, 1328, 53, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, -3089, -431, 1328, 53, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 53, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 53, 'T', SKINCOLOR_GREY, 75*TICRATE, "", 0},
|
||||
|
||||
|
||||
// DUSTY WASTELAND
|
||||
// ---
|
||||
{0, 957, 924, 2956, 54, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, 957, 924, 2956, 54, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 54, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 54, 'T', SKINCOLOR_GREY, 65*TICRATE, "", 0},
|
||||
|
||||
|
||||
// MAGMA CAVES
|
||||
// ---
|
||||
{0, -2752, 3104, 1800, 55, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, -2752, 3104, 1800, 55, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 55, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 55, 'T', SKINCOLOR_GREY, 80*TICRATE, "", 0},
|
||||
|
||||
|
||||
// EGG SATELLITE
|
||||
// ---
|
||||
{0, 5334, -609, 3426, 56, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, 5334, -609, 3426, 56, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 56, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 56, 'T', SKINCOLOR_GREY, 120*TICRATE, "", 0},
|
||||
|
||||
|
||||
// BLACK HOLE
|
||||
// ---
|
||||
{0, 2108, 3776, 32, 57, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, 2108, 3776, 32, 57, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 57, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 57, 'T', SKINCOLOR_GREY, 150*TICRATE, "", 0},
|
||||
|
||||
|
||||
// SPRING HILL
|
||||
// ---
|
||||
{0, -1840, -1024, 1644, 58, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
|
||||
{0, -1840, -1024, 1644, 58, 'N', SKINCOLOR_RUST, 0, "", 0},
|
||||
{ET_NGRADE, 0,0,0, 58, 'Q', SKINCOLOR_TEAL, GRADE_A, "", 0},
|
||||
{ET_NTIME, 0,0,0, 58, 'T', SKINCOLOR_GREY, 60*TICRATE, "", 0},
|
||||
};
|
||||
|
@ -565,7 +565,7 @@ extraemblem_t extraemblems[MAXEXTRAEMBLEMS] =
|
|||
{"Game Complete", "Complete 1P Mode", 10, 'X', SKINCOLOR_BLUE, 0},
|
||||
{"All Emeralds", "Complete 1P Mode with all Emeralds", 11, 'V', SKINCOLOR_GREY, 0},
|
||||
{"Perfect Bonus", "Perfect Bonus on a non-secret stage", 30, 'P', SKINCOLOR_GOLD, 0},
|
||||
{"SRB1 Remake", "Complete SRB1 Remake", 21, 'O', SKINCOLOR_ROSEWOOD, 0},
|
||||
{"SRB1 Remake", "Complete SRB1 Remake", 21, 'O', SKINCOLOR_RUST, 0},
|
||||
{"NiGHTS Mastery", "Show your mastery of NiGHTS!", 22, 'W', SKINCOLOR_TEAL, 0},
|
||||
};
|
||||
|
||||
|
|
12
src/m_menu.c
12
src/m_menu.c
|
@ -2463,11 +2463,14 @@ void M_Drawer(void)
|
|||
V_DrawThinString(vid.dupx, vid.height - 9*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT|V_ALLOWLOWERCASE, customversionstring);
|
||||
}
|
||||
else
|
||||
#if VERSION > 0 || SUBVERSION > 0
|
||||
{
|
||||
#ifdef DEVELOP // Development -- show revision / branch info
|
||||
V_DrawThinString(vid.dupx, vid.height - 17*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT|V_ALLOWLOWERCASE, compbranch);
|
||||
V_DrawThinString(vid.dupx, vid.height - 9*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT|V_ALLOWLOWERCASE, comprevision);
|
||||
#else // Regular build
|
||||
V_DrawThinString(vid.dupx, vid.height - 9*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT|V_ALLOWLOWERCASE, va("%s", VERSIONSTRING));
|
||||
#else // Trunk build, show revision info
|
||||
V_DrawThinString(vid.dupx, vid.height - 9*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT|V_ALLOWLOWERCASE, va("%s (%s)", VERSIONSTRING, comprevision));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2823,7 +2826,7 @@ static void M_DrawSlider(INT32 x, INT32 y, const consvar_t *cv)
|
|||
void M_DrawTextBox(INT32 x, INT32 y, INT32 width, INT32 boxlines)
|
||||
{
|
||||
// Solid color textbox.
|
||||
V_DrawFill(x+5, y+5, width*8+6, boxlines*8+6, 239);
|
||||
V_DrawFill(x+5, y+5, width*8+6, boxlines*8+6, 159);
|
||||
//V_DrawFill(x+8, y+8, width*8, boxlines*8, 31);
|
||||
/*
|
||||
patch_t *p;
|
||||
|
@ -7406,3 +7409,4 @@ static void M_HandleFogColor(INT32 choice)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
10
src/m_misc.c
10
src/m_misc.c
|
@ -1800,16 +1800,14 @@ UINT8 M_HighestBit(UINT32 num)
|
|||
|
||||
const char *GetRevisionString(void)
|
||||
{
|
||||
INT32 vinfo;
|
||||
static char rev[8] = {0};
|
||||
static char rev[9] = {0};
|
||||
if (rev[0])
|
||||
return rev;
|
||||
|
||||
vinfo = atoi(&comprevision[1]);
|
||||
if (vinfo)
|
||||
snprintf(rev, 7, "r%d", vinfo);
|
||||
if (comprevision[0] == 'r')
|
||||
strncpy(rev, comprevision, 7);
|
||||
else
|
||||
strcpy(rev, "rNULL");
|
||||
snprintf(rev, 7, "r%s", comprevision);
|
||||
rev[7] = '\0';
|
||||
|
||||
return rev;
|
||||
|
|
|
@ -7597,48 +7597,35 @@ void A_SetTargetsTarget(mobj_t *actor)
|
|||
{
|
||||
INT32 locvar1 = var1;
|
||||
INT32 locvar2 = var2;
|
||||
mobj_t *targetedmobj = NULL;
|
||||
thinker_t *th;
|
||||
mobj_t *mo2;
|
||||
mobj_t *oldtarg = NULL, *newtarg = NULL;
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUA_CallAction("A_SetTargetsTarget", actor))
|
||||
return;
|
||||
#endif
|
||||
|
||||
if ((!locvar1 && (!actor->target)) || (locvar1 && (!actor->tracer)))
|
||||
// actor's target
|
||||
if (locvar1) // or tracer
|
||||
oldtarg = actor->tracer;
|
||||
else
|
||||
oldtarg = actor->target;
|
||||
|
||||
if (P_MobjWasRemoved(oldtarg))
|
||||
return;
|
||||
|
||||
if ((!locvar1 && !locvar2 && (!actor->target->target))
|
||||
|| (!locvar1 && locvar2 && (!actor->target->tracer))
|
||||
|| (locvar1 && !locvar2 && (!actor->tracer->target))
|
||||
|| (locvar1 && locvar2 && (!actor->tracer->tracer)))
|
||||
return; // Don't search for nothing.
|
||||
|
||||
// scan the thinkers
|
||||
for (th = thinkercap.next; th != &thinkercap; th = th->next)
|
||||
{
|
||||
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
|
||||
continue;
|
||||
|
||||
mo2 = (mobj_t *)th;
|
||||
|
||||
if ((!locvar1 && !locvar2 && (mo2 == actor->target->target))
|
||||
|| (!locvar1 && locvar2 && (mo2 == actor->target->tracer))
|
||||
|| (locvar1 && !locvar2 && (mo2 == actor->tracer->target))
|
||||
|| (locvar1 && locvar2 && (mo2 == actor->tracer->tracer)))
|
||||
{
|
||||
targetedmobj = mo2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!targetedmobj)
|
||||
return; // Oops, nothing found..
|
||||
|
||||
if (!locvar1)
|
||||
P_SetTarget(&actor->target, targetedmobj);
|
||||
// actor's target's target!
|
||||
if (locvar2) // or tracer
|
||||
newtarg = oldtarg->tracer;
|
||||
else
|
||||
P_SetTarget(&actor->tracer, targetedmobj);
|
||||
newtarg = oldtarg->target;
|
||||
|
||||
if (P_MobjWasRemoved(newtarg))
|
||||
return;
|
||||
|
||||
// set actor's new target
|
||||
if (locvar1) // or tracer
|
||||
P_SetTarget(&actor->tracer, newtarg);
|
||||
else
|
||||
P_SetTarget(&actor->target, newtarg);
|
||||
}
|
||||
|
||||
// Function: A_SetObjectFlags
|
||||
|
|
117
src/p_inter.c
117
src/p_inter.c
|
@ -1648,11 +1648,126 @@ static void P_HitDeathMessages(player_t *player, mobj_t *inflictor, mobj_t *sour
|
|||
CONS_Printf(str, targetname, deadtarget ? M_GetText("killed") : M_GetText("hit"));
|
||||
}
|
||||
|
||||
/** Checks if the level timer is over the timelimit and the round should end,
|
||||
* unless you are in overtime. In which case leveltime may stretch out beyond
|
||||
* timelimitintics and overtime's status will be checked here each tick.
|
||||
* Verify that the value of ::cv_timelimit is greater than zero before
|
||||
* calling this function.
|
||||
*
|
||||
* \sa cv_timelimit, P_CheckPointLimit, P_UpdateSpecials
|
||||
*/
|
||||
void P_CheckTimeLimit(void)
|
||||
{
|
||||
INT32 i, k;
|
||||
|
||||
if (!cv_timelimit.value)
|
||||
return;
|
||||
|
||||
if (!(multiplayer || netgame))
|
||||
return;
|
||||
|
||||
if (G_PlatformGametype())
|
||||
return;
|
||||
|
||||
if (leveltime < timelimitintics)
|
||||
return;
|
||||
|
||||
if (gameaction == ga_completed)
|
||||
return;
|
||||
|
||||
//Tagmode round end but only on the tic before the
|
||||
//XD_EXITLEVEL packet is recieved by all players.
|
||||
if (G_TagGametype())
|
||||
{
|
||||
if (leveltime == (timelimitintics + 1))
|
||||
{
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i] || players[i].spectator
|
||||
|| (players[i].pflags & PF_TAGGED) || (players[i].pflags & PF_TAGIT))
|
||||
continue;
|
||||
|
||||
CONS_Printf(M_GetText("%s recieved double points for surviving the round.\n"), player_names[i]);
|
||||
P_AddPlayerScore(&players[i], players[i].score);
|
||||
}
|
||||
}
|
||||
|
||||
if (server)
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
}
|
||||
|
||||
//Optional tie-breaker for Match/CTF
|
||||
else if (cv_overtime.value)
|
||||
{
|
||||
INT32 playerarray[MAXPLAYERS];
|
||||
INT32 tempplayer = 0;
|
||||
INT32 spectators = 0;
|
||||
INT32 playercount = 0;
|
||||
|
||||
//Figure out if we have enough participating players to care.
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (playeringame[i] && players[i].spectator)
|
||||
spectators++;
|
||||
}
|
||||
|
||||
if ((D_NumPlayers() - spectators) > 1)
|
||||
{
|
||||
// Play the starpost sfx after the first second of overtime.
|
||||
if (gamestate == GS_LEVEL && (leveltime == (timelimitintics + TICRATE)))
|
||||
S_StartSound(NULL, sfx_strpst);
|
||||
|
||||
// Normal Match
|
||||
if (!G_GametypeHasTeams())
|
||||
{
|
||||
//Store the nodes of participating players in an array.
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (playeringame[i] && !players[i].spectator)
|
||||
{
|
||||
playerarray[playercount] = i;
|
||||
playercount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Sort 'em.
|
||||
for (i = 1; i < playercount; i++)
|
||||
{
|
||||
for (k = i; k < playercount; k++)
|
||||
{
|
||||
if (players[playerarray[i-1]].score < players[playerarray[k]].score)
|
||||
{
|
||||
tempplayer = playerarray[i-1];
|
||||
playerarray[i-1] = playerarray[k];
|
||||
playerarray[k] = tempplayer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//End the round if the top players aren't tied.
|
||||
if (players[playerarray[0]].score == players[playerarray[1]].score)
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
//In team match and CTF, determining a tie is much simpler. =P
|
||||
if (redscore == bluescore)
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (server)
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
}
|
||||
|
||||
if (server)
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
}
|
||||
|
||||
/** Checks if a player's score is over the pointlimit and the round should end.
|
||||
* Verify that the value of ::cv_pointlimit is greater than zero before
|
||||
* calling this function.
|
||||
*
|
||||
* \sa cv_pointlimit, P_UpdateSpecials
|
||||
* \sa cv_pointlimit, P_CheckTimeLimit, P_UpdateSpecials
|
||||
*/
|
||||
void P_CheckPointLimit(void)
|
||||
{
|
||||
|
|
|
@ -397,6 +397,7 @@ void P_PlayerEmeraldBurst(player_t *player, boolean toss);
|
|||
|
||||
void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck);
|
||||
void P_PlayerFlagBurst(player_t *player, boolean toss);
|
||||
void P_CheckTimeLimit(void);
|
||||
void P_CheckPointLimit(void);
|
||||
void P_CheckSurvivors(void);
|
||||
boolean P_CheckRacers(void);
|
||||
|
|
|
@ -199,7 +199,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
|
|||
P_ResetPlayer(object->player);
|
||||
|
||||
if (P_MobjFlip(object)*vertispeed > 0)
|
||||
P_SetPlayerMobjState(object, S_PLAY_JUMP);
|
||||
P_SetPlayerMobjState(object, S_PLAY_SPRING);
|
||||
else if (P_MobjFlip(object)*vertispeed < 0)
|
||||
P_SetPlayerMobjState(object, S_PLAY_FALL);
|
||||
else // horizontal spring
|
||||
|
@ -213,7 +213,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
|
|||
if (spring->info->painchance)
|
||||
{
|
||||
object->player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(object, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(object, S_PLAY_JUMP);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -1929,7 +1929,7 @@ boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, boolean allowdropoff)
|
|||
|
||||
// Don't 'step up' while springing,
|
||||
// Only step up "if needed".
|
||||
if (thing->player->panim == PA_JUMP
|
||||
if (thing->player->panim == PA_SPRING
|
||||
&& P_MobjFlip(thing)*thing->momz > FixedMul(FRACUNIT, thing->scale))
|
||||
maxstep = 0;
|
||||
}
|
||||
|
|
48
src/p_mobj.c
48
src/p_mobj.c
|
@ -163,7 +163,11 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
case S_PLAY_GASP:
|
||||
return P_SetPlayerMobjState(mobj, S_PLAY_SUPER_GASP);
|
||||
case S_PLAY_JUMP:
|
||||
if (!(player->charflags & SF_SUPERSPIN))
|
||||
return true;
|
||||
return P_SetPlayerMobjState(mobj, S_PLAY_SUPER_JUMP);
|
||||
case S_PLAY_SPRING:
|
||||
return P_SetPlayerMobjState(mobj, S_PLAY_SUPER_SPRING);
|
||||
case S_PLAY_FALL:
|
||||
return P_SetPlayerMobjState(mobj, S_PLAY_SUPER_FALL);
|
||||
case S_PLAY_EDGE:
|
||||
|
@ -209,12 +213,14 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
break;
|
||||
case S_PLAY_SPIN:
|
||||
case S_PLAY_DASH:
|
||||
case S_PLAY_JUMP:
|
||||
case S_PLAY_SUPER_SPIN:
|
||||
case S_PLAY_SUPER_JUMP:
|
||||
player->panim = PA_ROLL;
|
||||
break;
|
||||
case S_PLAY_JUMP:
|
||||
case S_PLAY_SUPER_JUMP:
|
||||
player->panim = PA_JUMP;
|
||||
case S_PLAY_SPRING:
|
||||
case S_PLAY_SUPER_SPRING:
|
||||
player->panim = PA_SPRING;
|
||||
break;
|
||||
case S_PLAY_FALL:
|
||||
case S_PLAY_SUPER_FALL:
|
||||
|
@ -317,9 +323,12 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
spr2 = SPR2_SPIN;
|
||||
break;
|
||||
case SPR2_GASP:
|
||||
spr2 = SPR2_JUMP;
|
||||
spr2 = SPR2_SPNG;
|
||||
break;
|
||||
case SPR2_JUMP:
|
||||
spr2 = SPR2_SPIN;
|
||||
break;
|
||||
case SPR2_SPNG: // spring
|
||||
spr2 = SPR2_FALL;
|
||||
break;
|
||||
case SPR2_FALL:
|
||||
|
@ -330,7 +339,7 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
break;
|
||||
|
||||
case SPR2_FLY:
|
||||
spr2 = SPR2_JUMP;
|
||||
spr2 = SPR2_SPNG;
|
||||
break;
|
||||
case SPR2_TIRE:
|
||||
spr2 = SPR2_FLY;
|
||||
|
@ -379,6 +388,9 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
|||
case SPR2_SJMP:
|
||||
spr2 = SPR2_JUMP;
|
||||
break;
|
||||
case SPR2_SSPG:
|
||||
spr2 = SPR2_SPNG;
|
||||
break;
|
||||
case SPR2_SFAL:
|
||||
spr2 = SPR2_FALL;
|
||||
break;
|
||||
|
@ -5924,8 +5936,6 @@ static void P_NightsItemChase(mobj_t *thing)
|
|||
|
||||
static boolean P_ShieldLook(mobj_t *thing, shieldtype_t shield)
|
||||
{
|
||||
fixed_t destx, desty;
|
||||
|
||||
if (!thing->target || thing->target->health <= 0 || !thing->target->player
|
||||
|| (thing->target->player->powers[pw_shield] & SH_NOSTACK) == SH_NONE || thing->target->player->powers[pw_super]
|
||||
|| thing->target->player->powers[pw_invulnerability] > 1)
|
||||
|
@ -5950,26 +5960,6 @@ static boolean P_ShieldLook(mobj_t *thing, shieldtype_t shield)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!splitscreen && rendermode != render_soft)
|
||||
{
|
||||
angle_t viewingangle;
|
||||
|
||||
if (players[displayplayer].awayviewtics)
|
||||
viewingangle = R_PointToAngle2(thing->target->x, thing->target->y, players[displayplayer].awayviewmobj->x, players[displayplayer].awayviewmobj->y);
|
||||
else if (!camera.chase && players[displayplayer].mo)
|
||||
viewingangle = R_PointToAngle2(thing->target->x, thing->target->y, players[displayplayer].mo->x, players[displayplayer].mo->y);
|
||||
else
|
||||
viewingangle = R_PointToAngle2(thing->target->x, thing->target->y, camera.x, camera.y);
|
||||
|
||||
destx = thing->target->x + P_ReturnThrustX(thing->target, viewingangle, FixedMul(FRACUNIT, thing->scale));
|
||||
desty = thing->target->y + P_ReturnThrustY(thing->target, viewingangle, FixedMul(FRACUNIT, thing->scale));
|
||||
}
|
||||
else
|
||||
{
|
||||
destx = thing->target->x;
|
||||
desty = thing->target->y;
|
||||
}
|
||||
|
||||
if (shield == SH_FORCE && thing->movecount != (thing->target->player->powers[pw_shield] & 0xFF))
|
||||
{
|
||||
thing->movecount = (thing->target->player->powers[pw_shield] & 0xFF);
|
||||
|
@ -5994,8 +5984,8 @@ static boolean P_ShieldLook(mobj_t *thing, shieldtype_t shield)
|
|||
|
||||
P_SetScale(thing, thing->target->scale);
|
||||
P_UnsetThingPosition(thing);
|
||||
thing->x = destx;
|
||||
thing->y = desty;
|
||||
thing->x = thing->target->x;
|
||||
thing->y = thing->target->y;
|
||||
if (thing->eflags & MFE_VERTICALFLIP)
|
||||
thing->z = thing->target->z + thing->target->height - thing->height + FixedDiv(P_GetPlayerHeight(thing->target->player) - thing->target->height, 3*FRACUNIT) - FixedMul(2*FRACUNIT, thing->target->scale);
|
||||
else
|
||||
|
|
|
@ -636,7 +636,7 @@ static void P_NetArchiveWorld(void)
|
|||
if (li->special != SHORT(mld->special))
|
||||
diff |= LD_SPECIAL;
|
||||
|
||||
if (mld->special == 321 || mld->special == 322) // only reason li->callcount would be non-zero is if either of these are involved
|
||||
if (SHORT(mld->special) == 321 || SHORT(mld->special) == 322) // only reason li->callcount would be non-zero is if either of these are involved
|
||||
diff |= LD_CLLCOUNT;
|
||||
|
||||
if (li->sidenum[0] != 0xffff)
|
||||
|
|
|
@ -46,14 +46,14 @@ static pslope_t *slopelist = NULL;
|
|||
static UINT16 slopecount = 0;
|
||||
|
||||
// Calculate line normal
|
||||
void P_CalculateSlopeNormal(pslope_t *slope) {
|
||||
static void P_CalculateSlopeNormal(pslope_t *slope) {
|
||||
slope->normal.z = FINECOSINE(slope->zangle>>ANGLETOFINESHIFT);
|
||||
slope->normal.x = -FixedMul(FINESINE(slope->zangle>>ANGLETOFINESHIFT), slope->d.x);
|
||||
slope->normal.y = -FixedMul(FINESINE(slope->zangle>>ANGLETOFINESHIFT), slope->d.y);
|
||||
}
|
||||
|
||||
// With a vertex slope that has its vertices set, configure relevant slope info
|
||||
void P_ReconfigureVertexSlope(pslope_t *slope)
|
||||
static void P_ReconfigureVertexSlope(pslope_t *slope)
|
||||
{
|
||||
vector3_t vec1, vec2;
|
||||
|
||||
|
@ -543,7 +543,7 @@ void P_SpawnSlope_Line(int linenum)
|
|||
//
|
||||
// Creates a new slope from three vertices with the specified IDs
|
||||
//
|
||||
pslope_t *P_NewVertexSlope(INT16 tag1, INT16 tag2, INT16 tag3, UINT8 flags)
|
||||
static pslope_t *P_NewVertexSlope(INT16 tag1, INT16 tag2, INT16 tag3, UINT8 flags)
|
||||
{
|
||||
size_t i;
|
||||
mapthing_t *mt = mapthings;
|
||||
|
|
|
@ -29,9 +29,6 @@
|
|||
#define P_SLOPES_H__
|
||||
|
||||
#ifdef ESLOPE
|
||||
void P_CalculateSlopeNormal(pslope_t *slope);
|
||||
void P_ReconfigureVertexSlope(pslope_t *slope);
|
||||
|
||||
void P_ResetDynamicSlopes(void);
|
||||
void P_RunDynamicSlopes(void);
|
||||
// P_SpawnSlope_Line
|
||||
|
@ -39,8 +36,6 @@ void P_RunDynamicSlopes(void);
|
|||
// sectors.
|
||||
void P_SpawnSlope_Line(int linenum);
|
||||
|
||||
pslope_t *P_NewVertexSlope(INT16 tag1, INT16 tag2, INT16 tag3, UINT8 flags);
|
||||
|
||||
#ifdef SPRINGCLEAN
|
||||
// Loads just map objects that make slopes,
|
||||
// terrain affecting objects have to be spawned first
|
||||
|
|
101
src/p_spec.c
101
src/p_spec.c
|
@ -4648,114 +4648,19 @@ void P_PlayerInSpecialSector(player_t *player)
|
|||
|
||||
/** Animate planes, scroll walls, etc. and keeps track of level timelimit and exits if time is up.
|
||||
*
|
||||
* \sa cv_timelimit, P_CheckPointLimit
|
||||
* \sa P_CheckTimeLimit, P_CheckPointLimit
|
||||
*/
|
||||
void P_UpdateSpecials(void)
|
||||
{
|
||||
anim_t *anim;
|
||||
INT32 i, k;
|
||||
INT32 i;
|
||||
INT32 pic;
|
||||
size_t j;
|
||||
|
||||
levelflat_t *foundflats; // for flat animation
|
||||
|
||||
// LEVEL TIMER
|
||||
// Exit if the timer is equal to or greater the timelimit, unless you are
|
||||
// in overtime. In which case leveltime may stretch out beyond timelimitintics
|
||||
// and overtime's status will be checked here each tick.
|
||||
if (cv_timelimit.value && timelimitintics <= leveltime && (multiplayer || netgame)
|
||||
&& G_RingSlingerGametype() && (gameaction != ga_completed))
|
||||
{
|
||||
boolean pexit = false;
|
||||
|
||||
//Tagmode round end but only on the tic before the
|
||||
//XD_EXITLEVEL packet is recieved by all players.
|
||||
if (G_TagGametype())
|
||||
{
|
||||
if (leveltime == (timelimitintics + 1))
|
||||
{
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (!playeringame[i] || players[i].spectator
|
||||
|| (players[i].pflags & PF_TAGGED) || (players[i].pflags & PF_TAGIT))
|
||||
continue;
|
||||
|
||||
CONS_Printf(M_GetText("%s recieved double points for surviving the round.\n"), player_names[i]);
|
||||
P_AddPlayerScore(&players[i], players[i].score);
|
||||
}
|
||||
}
|
||||
|
||||
pexit = true;
|
||||
}
|
||||
|
||||
//Optional tie-breaker for Match/CTF
|
||||
else if (G_RingSlingerGametype() && cv_overtime.value)
|
||||
{
|
||||
INT32 playerarray[MAXPLAYERS];
|
||||
INT32 tempplayer = 0;
|
||||
INT32 spectators = 0;
|
||||
INT32 playercount = 0;
|
||||
|
||||
//Figure out if we have enough participating players to care.
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (playeringame[i] && players[i].spectator)
|
||||
spectators++;
|
||||
}
|
||||
|
||||
if ((D_NumPlayers() - spectators) > 1)
|
||||
{
|
||||
// Play the starpost sfx after the first second of overtime.
|
||||
if (gamestate == GS_LEVEL && (leveltime == (timelimitintics + TICRATE)))
|
||||
S_StartSound(NULL, sfx_strpst);
|
||||
|
||||
// Normal Match
|
||||
if (!G_GametypeHasTeams())
|
||||
{
|
||||
//Store the nodes of participating players in an array.
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
{
|
||||
if (playeringame[i] && !players[i].spectator)
|
||||
{
|
||||
playerarray[playercount] = i;
|
||||
playercount++;
|
||||
}
|
||||
}
|
||||
|
||||
//Sort 'em.
|
||||
for (i = 1; i < playercount; i++)
|
||||
{
|
||||
for (k = i; k < playercount; k++)
|
||||
{
|
||||
if (players[playerarray[i-1]].score < players[playerarray[k]].score)
|
||||
{
|
||||
tempplayer = playerarray[i-1];
|
||||
playerarray[i-1] = playerarray[k];
|
||||
playerarray[k] = tempplayer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//End the round if the top players aren't tied.
|
||||
if (!(players[playerarray[0]].score == players[playerarray[1]].score))
|
||||
pexit = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//In team match and CTF, determining a tie is much simpler. =P
|
||||
if (!(redscore == bluescore))
|
||||
pexit = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
pexit = true;
|
||||
}
|
||||
else
|
||||
pexit = true;
|
||||
|
||||
if (server && pexit)
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
}
|
||||
P_CheckTimeLimit();
|
||||
|
||||
// POINT LIMIT
|
||||
P_CheckPointLimit();
|
||||
|
|
68
src/p_user.c
68
src/p_user.c
|
@ -1598,7 +1598,7 @@ void P_DoPlayerExit(player_t *player)
|
|||
{
|
||||
player->climbing = 0;
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
player->powers[pw_underwater] = 0;
|
||||
player->powers[pw_spacetime] = 0;
|
||||
|
@ -2115,30 +2115,7 @@ static void P_CheckInvincibilityTimer(player_t *player)
|
|||
player->mo->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
||||
else if (leveltime % (TICRATE/7) == 0)
|
||||
{
|
||||
fixed_t destx, desty;
|
||||
mobj_t *sparkle;
|
||||
|
||||
if (!splitscreen && rendermode != render_soft)
|
||||
{
|
||||
angle_t viewingangle;
|
||||
|
||||
if (players[displayplayer].awayviewtics)
|
||||
viewingangle = R_PointToAngle2(player->mo->x, player->mo->y, players[displayplayer].awayviewmobj->x, players[displayplayer].awayviewmobj->y);
|
||||
else if (!camera.chase && players[displayplayer].mo)
|
||||
viewingangle = R_PointToAngle2(player->mo->x, player->mo->y, players[displayplayer].mo->x, players[displayplayer].mo->y);
|
||||
else
|
||||
viewingangle = R_PointToAngle2(player->mo->x, player->mo->y, camera.x, camera.y);
|
||||
|
||||
destx = player->mo->x + P_ReturnThrustX(player->mo, viewingangle, FixedMul(FRACUNIT, player->mo->scale));
|
||||
desty = player->mo->y + P_ReturnThrustY(player->mo, viewingangle, FixedMul(FRACUNIT, player->mo->scale));
|
||||
}
|
||||
else
|
||||
{
|
||||
destx = player->mo->x;
|
||||
desty = player->mo->y;
|
||||
}
|
||||
|
||||
sparkle = P_SpawnMobj(destx, desty, player->mo->z, MT_IVSP);
|
||||
mobj_t *sparkle = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_IVSP);
|
||||
sparkle->destscale = player->mo->scale;
|
||||
P_SetScale(sparkle, player->mo->scale);
|
||||
}
|
||||
|
@ -2689,21 +2666,21 @@ static void P_DoClimbing(player_t *player)
|
|||
|
||||
player->climbing = 0;
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
|
||||
if (skyclimber)
|
||||
{
|
||||
player->climbing = 0;
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
player->climbing = 0;
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
|
||||
if (cmd->sidemove != 0 || cmd->forwardmove != 0)
|
||||
|
@ -2721,7 +2698,7 @@ static void P_DoClimbing(player_t *player)
|
|||
{
|
||||
player->climbing = 0;
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
P_SetObjectMomZ(player->mo, 4*FRACUNIT, false);
|
||||
P_InstaThrust(player->mo, player->mo->angle, FixedMul(-4*FRACUNIT, player->mo->scale));
|
||||
}
|
||||
|
@ -2732,7 +2709,7 @@ static void P_DoClimbing(player_t *player)
|
|||
localangle2 = player->mo->angle;
|
||||
|
||||
if (player->climbing == 0)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
|
||||
if (player->climbing && P_IsObjectOnGround(player->mo))
|
||||
{
|
||||
|
@ -3520,8 +3497,9 @@ static void P_DoSuperStuff(player_t *player)
|
|||
|
||||
if (player->mo->health > 0)
|
||||
{
|
||||
if ((player->pflags & PF_JUMPED || player->pflags & PF_SPINNING)
|
||||
&& player->mo->state-states != S_PLAY_DASH)
|
||||
if (player->pflags & PF_JUMPED)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
else if (player->pflags & PF_SPINNING && player->mo->state-states != S_PLAY_DASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
else switch (player->mo->state-states)
|
||||
{
|
||||
|
@ -3539,8 +3517,8 @@ static void P_DoSuperStuff(player_t *player)
|
|||
case S_PLAY_SUPER_PAIN:
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_PAIN);
|
||||
break;
|
||||
case S_PLAY_SUPER_JUMP:
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
case S_PLAY_SUPER_SPRING:
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPRING);
|
||||
break;
|
||||
case S_PLAY_SUPER_FALL:
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_FALL);
|
||||
|
@ -3760,9 +3738,9 @@ void P_DoJump(player_t *player, boolean soundandstate)
|
|||
S_StartSound(player->mo, sfx_jump); // Play jump sound!
|
||||
|
||||
if (!(player->charability2 == CA2_SPINDASH))
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPRING);
|
||||
else
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6539,10 +6517,10 @@ static void P_MovePlayer(player_t *player)
|
|||
}
|
||||
|
||||
// If Springing, but travelling DOWNWARD, change back!
|
||||
if (player->panim == PA_JUMP && P_MobjFlip(player->mo)*player->mo->momz < 0)
|
||||
if (player->panim == PA_SPRING && P_MobjFlip(player->mo)*player->mo->momz < 0)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_FALL);
|
||||
// If Springing but on the ground, change back!
|
||||
else if (onground && (player->panim == PA_JUMP || player->panim == PA_FALL || player->panim == PA_RIDE) && !player->mo->momz)
|
||||
else if (onground && (player->panim == PA_SPRING || player->panim == PA_FALL || player->panim == PA_RIDE) && !player->mo->momz)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_STND);
|
||||
|
||||
// If you are stopped and are still walking, stand still!
|
||||
|
@ -6581,7 +6559,7 @@ static void P_MovePlayer(player_t *player)
|
|||
else
|
||||
{
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
}
|
||||
player->pflags &= ~PF_GLIDING;
|
||||
|
@ -6639,7 +6617,7 @@ static void P_MovePlayer(player_t *player)
|
|||
|| (player->powers[pw_super] && ALL7EMERALDS(player->powers[pw_emeralds]) && player->charability == CA_GLIDEANDCLIMB))
|
||||
{
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6709,7 +6687,7 @@ static void P_MovePlayer(player_t *player)
|
|||
else
|
||||
{
|
||||
player->pflags |= PF_JUMPED;
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
}
|
||||
player->powers[pw_tailsfly] = 0;
|
||||
|
@ -7289,7 +7267,7 @@ static void P_DoRopeHang(player_t *player)
|
|||
|
||||
if (!(player->pflags & PF_SLIDING) && (player->pflags & PF_JUMPED)
|
||||
&& !(player->panim == PA_ROLL) && player->charability2 == CA2_SPINDASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -7406,7 +7384,7 @@ static void P_DoRopeHang(player_t *player)
|
|||
|
||||
if (!(player->pflags & PF_SLIDING) && (player->pflags & PF_JUMPED)
|
||||
&& !(player->panim == PA_ROLL) && player->charability2 == CA2_SPINDASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
}
|
||||
|
||||
P_SetTarget(&player->mo->tracer, NULL);
|
||||
|
@ -8722,7 +8700,7 @@ void P_PlayerThink(player_t *player)
|
|||
P_SetPlayerMobjState(player->mo, S_PLAY_GLIDE);
|
||||
}
|
||||
else if ((player->pflags & PF_JUMPED) && !player->powers[pw_super] && player->panim != PA_ROLL && player->charability2 == CA2_SPINDASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
|
||||
if (player->flashcount)
|
||||
player->flashcount--;
|
||||
|
@ -9350,7 +9328,7 @@ void P_PlayerAfterThink(player_t *player)
|
|||
&& ((!player->powers[pw_super] && player->panim != PA_ROLL)
|
||||
|| player->mo->state == &states[player->mo->info->painstate])
|
||||
&& player->charability2 == CA2_SPINDASH)
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_SPIN);
|
||||
P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
|
||||
|
||||
if (player->pflags & PF_CARRIED && player->mo->tracer)
|
||||
{
|
||||
|
|
548
src/r_draw.c
548
src/r_draw.c
|
@ -127,7 +127,7 @@ UINT32 nflatxshift, nflatyshift, nflatshiftup, nflatmask;
|
|||
#define METALSONIC_TT_CACHE_INDEX (MAXSKINS + 2)
|
||||
#define ALLWHITE_TT_CACHE_INDEX (MAXSKINS + 3)
|
||||
#define SKIN_RAMP_LENGTH 16
|
||||
#define DEFAULT_STARTTRANSCOLOR 160
|
||||
#define DEFAULT_STARTTRANSCOLOR 96
|
||||
#define NUM_PALETTE_ENTRIES 256
|
||||
|
||||
static UINT8** translationtablecache[MAXSKINS + 4] = {NULL};
|
||||
|
@ -137,62 +137,70 @@ static UINT8** translationtablecache[MAXSKINS + 4] = {NULL};
|
|||
// TODO Callum: Can this be translated?
|
||||
const char *Color_Names[MAXSKINCOLORS] =
|
||||
{
|
||||
"None", // SKINCOLOR_NONE
|
||||
"White", // SKINCOLOR_WHITE
|
||||
"Silver", // SKINCOLOR_SILVER
|
||||
"Grey", // SKINCOLOR_GREY
|
||||
"Black", // SKINCOLOR_BLACK
|
||||
"Cyan", // SKINCOLOR_CYAN
|
||||
"Teal", // SKINCOLOR_TEAL
|
||||
"Steel_Blue",// SKINCOLOR_STEELBLUE
|
||||
"Blue", // SKINCOLOR_BLUE
|
||||
"Peach", // SKINCOLOR_PEACH
|
||||
"Tan", // SKINCOLOR_TAN
|
||||
"Pink", // SKINCOLOR_PINK
|
||||
"Lavender", // SKINCOLOR_LAVENDER
|
||||
"Purple", // SKINCOLOR_PURPLE
|
||||
"Orange", // SKINCOLOR_ORANGE
|
||||
"Rosewood", // SKINCOLOR_ROSEWOOD
|
||||
"Beige", // SKINCOLOR_BEIGE
|
||||
"Brown", // SKINCOLOR_BROWN
|
||||
"Red", // SKINCOLOR_RED
|
||||
"Dark_Red", // SKINCOLOR_DARKRED
|
||||
"Neon_Green",// SKINCOLOR_NEONGREEN
|
||||
"Green", // SKINCOLOR_GREEN
|
||||
"Zim", // SKINCOLOR_ZIM
|
||||
"Olive", // SKINCOLOR_OLIVE
|
||||
"Yellow", // SKINCOLOR_YELLOW
|
||||
"Gold" // SKINCOLOR_GOLD
|
||||
"None", // SKINCOLOR_NONE
|
||||
"White", // SKINCOLOR_WHITE
|
||||
"Silver", // SKINCOLOR_SILVER
|
||||
"Grey", // SKINCOLOR_GREY
|
||||
"Black", // SKINCOLOR_BLACK
|
||||
"Beige", // SKINCOLOR_BEIGE
|
||||
"Peach", // SKINCOLOR_PEACH
|
||||
"Brown", // SKINCOLOR_BROWN
|
||||
"Red", // SKINCOLOR_RED
|
||||
"Crimson", // SKINCOLOR_CRIMSON
|
||||
"Orange", // SKINCOLOR_ORANGE
|
||||
"Rust", // SKINCOLOR_RUST
|
||||
"Gold", // SKINCOLOR_GOLD
|
||||
"Yellow", // SKINCOLOR_YELLOW
|
||||
"Tan", // SKINCOLOR_TAN
|
||||
"Moss", // SKINCOLOR_MOSS
|
||||
"Peridot", // SKINCOLOR_PERIDOT
|
||||
"Green", // SKINCOLOR_GREEN
|
||||
"Emerald", // SKINCOLOR_EMERALD
|
||||
"Aqua", // SKINCOLOR_AQUA
|
||||
"Teal", // SKINCOLOR_TEAL
|
||||
"Cyan", // SKINCOLOR_CYAN
|
||||
"Blue", // SKINCOLOR_BLUE
|
||||
"Azure", // SKINCOLOR_AZURE
|
||||
"Pastel", // SKINCOLOR_PASTEL
|
||||
"Purple", // SKINCOLOR_PURPLE
|
||||
"Lavender", // SKINCOLOR_LAVENDER
|
||||
"Magenta", // SKINCOLOR_MAGENTA
|
||||
"Pink", // SKINCOLOR_PINK
|
||||
"Rosy" // SKINCOLOR_ROSY
|
||||
};
|
||||
|
||||
const UINT8 Color_Opposite[MAXSKINCOLORS*2] =
|
||||
{
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_NONE
|
||||
SKINCOLOR_BLACK,10, // SKINCOLOR_WHITE
|
||||
SKINCOLOR_GREY,4, // SKINCOLOR_SILVER
|
||||
SKINCOLOR_SILVER,12,// SKINCOLOR_GREY
|
||||
SKINCOLOR_WHITE,8, // SKINCOLOR_BLACK
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_CYAN
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_TEAL
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_STEELBLUE
|
||||
SKINCOLOR_ORANGE,9, // SKINCOLOR_BLUE
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_PEACH
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_TAN
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_PINK
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_LAVENDER
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_PURPLE
|
||||
SKINCOLOR_BLUE,12, // SKINCOLOR_ORANGE
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_ROSEWOOD
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_BEIGE
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_BROWN
|
||||
SKINCOLOR_GREEN,5, // SKINCOLOR_RED
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_DARKRED
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_NEONGREEN
|
||||
SKINCOLOR_RED,11, // SKINCOLOR_GREEN
|
||||
SKINCOLOR_PURPLE,3, // SKINCOLOR_ZIM
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_OLIVE
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_YELLOW
|
||||
SKINCOLOR_NONE,8 // SKINCOLOR_GOLD
|
||||
SKINCOLOR_NONE,8, // SKINCOLOR_NONE
|
||||
SKINCOLOR_BLACK,10, // SKINCOLOR_WHITE
|
||||
SKINCOLOR_GREY,4, // SKINCOLOR_SILVER
|
||||
SKINCOLOR_SILVER,12, // SKINCOLOR_GREY
|
||||
SKINCOLOR_WHITE,8, // SKINCOLOR_BLACK
|
||||
SKINCOLOR_BEIGE,8, // SKINCOLOR_BEIGE - needs new offset
|
||||
SKINCOLOR_BROWN,8, // SKINCOLOR_PEACH - ditto
|
||||
SKINCOLOR_PEACH,8, // SKINCOLOR_BROWN - ditto
|
||||
SKINCOLOR_GREEN,5, // SKINCOLOR_RED
|
||||
SKINCOLOR_CYAN,8, // SKINCOLOR_CRIMSON - ditto
|
||||
SKINCOLOR_BLUE,12, // SKINCOLOR_ORANGE
|
||||
SKINCOLOR_TAN,8, // SKINCOLOR_RUST - ditto
|
||||
SKINCOLOR_LAVENDER,8, // SKINCOLOR_GOLD - ditto
|
||||
SKINCOLOR_TEAL,8, // SKINCOLOR_YELLOW - ditto
|
||||
SKINCOLOR_RUST,8, // SKINCOLOR_TAN - ditto
|
||||
SKINCOLOR_MAGENTA,3, // SKINCOLOR_MOSS
|
||||
SKINCOLOR_PURPLE,8, // SKINCOLOR_PERIDOT - ditto
|
||||
SKINCOLOR_RED,11, // SKINCOLOR_GREEN
|
||||
SKINCOLOR_PASTEL,8, // SKINCOLOR_EMERALD - ditto
|
||||
SKINCOLOR_ROSY,8, // SKINCOLOR_AQUA - ditto
|
||||
SKINCOLOR_YELLOW,8, // SKINCOLOR_TEAL - ditto
|
||||
SKINCOLOR_CRIMSON,8, // SKINCOLOR_CYAN - ditto
|
||||
SKINCOLOR_ORANGE,9, // SKINCOLOR_BLUE
|
||||
SKINCOLOR_PINK,8, // SKINCOLOR_AZURE - ditto
|
||||
SKINCOLOR_EMERALD,8, // SKINCOLOR_PASTEL - ditto
|
||||
SKINCOLOR_PERIDOT,8, // SKINCOLOR_PURPLE - ditto
|
||||
SKINCOLOR_GOLD,8, // SKINCOLOR_LAVENDER - ditto
|
||||
SKINCOLOR_MOSS,8, // SKINCOLOR_MAGENTA - ditto
|
||||
SKINCOLOR_AZURE,8, // SKINCOLOR_PINK - ditto
|
||||
SKINCOLOR_AQUA,8 // SKINCOLOR_ROSY - ditto
|
||||
};
|
||||
|
||||
CV_PossibleValue_t Color_cons_t[MAXSKINCOLORS+1];
|
||||
|
@ -242,27 +250,31 @@ static void R_GenerateTranslationColormap(UINT8 *dest_colormap, INT32 skinnum, U
|
|||
0x03, // SKINCOLOR_SILVER
|
||||
0x08, // SKINCOLOR_GREY
|
||||
0x18, // SKINCOLOR_BLACK
|
||||
0xd0, // SKINCOLOR_CYAN
|
||||
0xdc, // SKINCOLOR_TEAL
|
||||
0xc8, // SKINCOLOR_STEELBLUE
|
||||
0xe2, // SKINCOLOR_BLUE
|
||||
0x40, // SKINCOLOR_PEACH
|
||||
0x48, // SKINCOLOR_TAN
|
||||
0x90, // SKINCOLOR_PINK
|
||||
0xf8, // SKINCOLOR_LAVENDER
|
||||
0xc0, // SKINCOLOR_PURPLE
|
||||
0x52, // SKINCOLOR_ORANGE
|
||||
0x5c, // SKINCOLOR_ROSEWOOD
|
||||
0x20, // SKINCOLOR_BEIGE
|
||||
0x30, // SKINCOLOR_BROWN
|
||||
0x7d, // SKINCOLOR_RED
|
||||
0x85, // SKINCOLOR_DARKRED
|
||||
0xb8, // SKINCOLOR_NEONGREEN
|
||||
0xa0, // SKINCOLOR_GREEN
|
||||
0xb0, // SKINCOLOR_ZIM
|
||||
0x69, // SKINCOLOR_OLIVE
|
||||
0x67, // SKINCOLOR_YELLOW
|
||||
0x70, // SKINCOLOR_GOLD
|
||||
0xf0, // SKINCOLOR_BEIGE
|
||||
0xd8, // SKINCOLOR_PEACH
|
||||
0xe0, // SKINCOLOR_BROWN
|
||||
0x21, // SKINCOLOR_RED
|
||||
0x28, // SKINCOLOR_CRIMSON
|
||||
0x31, // SKINCOLOR_ORANGE
|
||||
0x3a, // SKINCOLOR_RUST
|
||||
0x40, // SKINCOLOR_GOLD
|
||||
0x48, // SKINCOLOR_YELLOW
|
||||
0x54, // SKINCOLOR_TAN
|
||||
0x58, // SKINCOLOR_MOSS
|
||||
0xbc, // SKINCOLOR_PERIDOT
|
||||
0x60, // SKINCOLOR_GREEN
|
||||
0x70, // SKINCOLOR_EMERALD
|
||||
0x78, // SKINCOLOR_AQUA
|
||||
0x8c, // SKINCOLOR_TEAL
|
||||
0x80, // SKINCOLOR_CYAN
|
||||
0x92, // SKINCOLOR_BLUE
|
||||
0xaa, // SKINCOLOR_AZURE
|
||||
0xa0, // SKINCOLOR_PASTEL
|
||||
0xa0, // SKINCOLOR_PURPLE
|
||||
0xc0, // SKINCOLOR_LAVENDER
|
||||
0xb3, // SKINCOLOR_MAGENTA
|
||||
0xd0, // SKINCOLOR_PINK
|
||||
0xc8, // SKINCOLOR_ROSY
|
||||
};
|
||||
INT32 i;
|
||||
INT32 starttranscolor;
|
||||
|
@ -280,7 +292,7 @@ static void R_GenerateTranslationColormap(UINT8 *dest_colormap, INT32 skinnum, U
|
|||
if (skinnum == TC_BOSS)
|
||||
dest_colormap[31] = 0;
|
||||
else if (skinnum == TC_METALSONIC)
|
||||
dest_colormap[239] = 0;
|
||||
dest_colormap[159] = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -299,196 +311,339 @@ static void R_GenerateTranslationColormap(UINT8 *dest_colormap, INT32 skinnum, U
|
|||
{
|
||||
case SKINCOLOR_SILVER:
|
||||
case SKINCOLOR_GREY:
|
||||
case SKINCOLOR_PEACH:
|
||||
case SKINCOLOR_BEIGE:
|
||||
case SKINCOLOR_BROWN:
|
||||
case SKINCOLOR_RED:
|
||||
case SKINCOLOR_GREEN:
|
||||
case SKINCOLOR_BLUE:
|
||||
// 16 color ramp
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
|
||||
break;
|
||||
|
||||
case SKINCOLOR_ORANGE:
|
||||
// 14 colors of orange + brown
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH-2; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
|
||||
for (i = 0; i < 2; i++)
|
||||
dest_colormap[starttranscolor + (i+SKIN_RAMP_LENGTH-2)] = (UINT8)(152 + i);
|
||||
break;
|
||||
|
||||
case SKINCOLOR_WHITE:
|
||||
case SKINCOLOR_CYAN:
|
||||
// 12 color ramp
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (12*i/SKIN_RAMP_LENGTH));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_WHITE:
|
||||
case SKINCOLOR_BLACK:
|
||||
case SKINCOLOR_STEELBLUE:
|
||||
case SKINCOLOR_PINK:
|
||||
case SKINCOLOR_MOSS:
|
||||
case SKINCOLOR_EMERALD:
|
||||
case SKINCOLOR_LAVENDER:
|
||||
case SKINCOLOR_PURPLE:
|
||||
case SKINCOLOR_DARKRED:
|
||||
case SKINCOLOR_ZIM:
|
||||
case SKINCOLOR_YELLOW:
|
||||
case SKINCOLOR_GOLD:
|
||||
case SKINCOLOR_PINK:
|
||||
// 8 color ramp
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_TEAL:
|
||||
// 5 color ramp
|
||||
case SKINCOLOR_BEIGE:
|
||||
// 13 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (5*i/16 == 0)
|
||||
dest_colormap[starttranscolor + i] = 0xf7;
|
||||
if (i == 15)
|
||||
dest_colormap[starttranscolor + i] = 0xed; // Darkest
|
||||
else if (i <= 6)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + ((i + 1) >> 1)); // Brightest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (5*i/SKIN_RAMP_LENGTH) - 1);
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 3);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_PEACH:
|
||||
// 11 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
dest_colormap[starttranscolor + i] = 0xD0; // Lightest 1
|
||||
else if (i == 1)
|
||||
dest_colormap[starttranscolor + i] = 0x30; // Lightest 2
|
||||
else if (i <= 11)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 7); // Darkest
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_RED:
|
||||
// 16 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 13)
|
||||
dest_colormap[starttranscolor + i] = 0x47; // Semidark
|
||||
else if (i > 13)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 1); // Darkest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_OLIVE:
|
||||
// 7 color ramp
|
||||
case SKINCOLOR_CRIMSON:
|
||||
// 9 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (7*i/SKIN_RAMP_LENGTH));
|
||||
{
|
||||
if (i/2 == 6)
|
||||
dest_colormap[starttranscolor + i] = 0x47; // Semidark
|
||||
else if (i/2 == 7)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 8); // Darkest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_ORANGE:
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 15)
|
||||
dest_colormap[starttranscolor + i] = 0x2c; // Darkest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_RUST:
|
||||
// 10 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i <= 11)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
|
||||
else if (i == 12)
|
||||
dest_colormap[starttranscolor + i] = 0x2c; // Darkest 4
|
||||
else if (i == 13)
|
||||
dest_colormap[starttranscolor + i] = 0xfe; // Darkest 3
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = 0x2d + i - 14; // Darkest 2 and 1
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_GOLD:
|
||||
// 10 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
dest_colormap[starttranscolor + i] = 0x50; // Lightest 1
|
||||
else if (i == 1)
|
||||
dest_colormap[starttranscolor + i] = 0x53; // Lightest 2
|
||||
else if (i/2 == 7)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 8); //Darkest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_YELLOW:
|
||||
// 10 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
dest_colormap[starttranscolor + i] = 0x53; // Lightest
|
||||
else if (i == 15)
|
||||
dest_colormap[starttranscolor + i] = 0xed; // Darkest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_TAN:
|
||||
// 16 color ramp, from two color ranges
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH/2; i++) // Peach half
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH/2; i++) // Brown half
|
||||
dest_colormap[starttranscolor + (i+8)] = (UINT8)(48 + i);
|
||||
// 8 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i/2 == 0)
|
||||
dest_colormap[starttranscolor + i] = 0x51; // Lightest
|
||||
else if (i/2 == 5)
|
||||
dest_colormap[starttranscolor + i] = 0xf5; // Darkest 1
|
||||
else if (i/2 == 6)
|
||||
dest_colormap[starttranscolor + i] = 0xf9; // Darkest 2
|
||||
else if (i/2 == 7)
|
||||
dest_colormap[starttranscolor + i] = 0xed; // Darkest 3
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_ROSEWOOD:
|
||||
// 12 color ramp, from two color ranges!
|
||||
for (i = 0; i < 6; i++) // Orange ...third?
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (12*i/SKIN_RAMP_LENGTH));
|
||||
for (i = 0; i < 10; i++) // Rosewood two-thirds-ish
|
||||
dest_colormap[starttranscolor + (i+6)] = (UINT8)(152 + (12*i/SKIN_RAMP_LENGTH));
|
||||
case SKINCOLOR_PERIDOT:
|
||||
// 8 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i/2 == 0)
|
||||
dest_colormap[starttranscolor + i] = 0x58; // Lightest
|
||||
else if (i/2 == 7)
|
||||
dest_colormap[starttranscolor + i] = 0x77; // Darkest
|
||||
else if (i/2 >= 5)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(0x5e + (i >> 1) - 5); // Semidark
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_NEONGREEN:
|
||||
// Multi-color ramp
|
||||
dest_colormap[starttranscolor] = 0xA0; // Brighter green
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH-1; i++) // Neon Green
|
||||
dest_colormap[starttranscolor + (i+1)] = (UINT8)(skinbasecolors[color - 1] + (6*i/(SKIN_RAMP_LENGTH-1)));
|
||||
case SKINCOLOR_AQUA:
|
||||
// 10 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
dest_colormap[starttranscolor + i] = 0x78; // Lightest
|
||||
else if (i >= 14)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(0x76 + i - 14); // Darkest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) + 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_TEAL:
|
||||
// 6 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i <= 1)
|
||||
dest_colormap[starttranscolor + i] = 0x78; // Lightest
|
||||
else if (i >= 13)
|
||||
dest_colormap[starttranscolor + i] = 0x8a; // Darkest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + ((i - 1)/3));
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_AZURE:
|
||||
// 8 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i <= 3)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(0x90 + i/2); // Lightest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 2);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_BLUE:
|
||||
// 16 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 15)
|
||||
dest_colormap[starttranscolor + i] = 0x1F; //Darkest 1
|
||||
else if (i == 14)
|
||||
dest_colormap[starttranscolor + i] = 0xfd; //Darkest 2
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_PASTEL:
|
||||
// 10 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i >= 12)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 7); // Darkest
|
||||
else if (i <= 1)
|
||||
dest_colormap[starttranscolor + i] = 0x90; // Lightest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_PURPLE:
|
||||
// 10 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i <= 3)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i); // Lightest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) + 2);
|
||||
}
|
||||
break;
|
||||
|
||||
case SKINCOLOR_MAGENTA:
|
||||
// 9 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
if (i == 0)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1]); // Lightest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) + 1);
|
||||
break;
|
||||
|
||||
case SKINCOLOR_ROSY:
|
||||
// 9 colors
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
dest_colormap[starttranscolor + i] = 0xfc; // Lightest
|
||||
else
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + ((i - 1) >> 1));
|
||||
}
|
||||
break;
|
||||
|
||||
// Super colors, from lightest to darkest!
|
||||
case SKINCOLOR_SUPER1:
|
||||
// Super White
|
||||
for (i = 0; i < 10; i++)
|
||||
dest_colormap[starttranscolor + i] = 120; // True white
|
||||
for (; i < SKIN_RAMP_LENGTH; i++) // White-yellow fade
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(96 + (i-10));
|
||||
dest_colormap[starttranscolor + i] = (UINT8)0; // True white
|
||||
for (; i < 12; i++) // White-yellow fade
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(80);
|
||||
for (; i < 15; i++) // White-yellow fade
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(81 + (i-12));
|
||||
dest_colormap[starttranscolor + 15] = (UINT8)(72);
|
||||
break;
|
||||
|
||||
case SKINCOLOR_SUPER2:
|
||||
// Super Bright
|
||||
for (i = 0; i < 5; i++) // White-yellow fade
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(96 + i);
|
||||
dest_colormap[starttranscolor + 5] = 112; // Golden shine
|
||||
for (i = 0; i < 8; i++) // Yellow
|
||||
dest_colormap[starttranscolor + (i+6)] = (UINT8)(101 + (i>>1));
|
||||
for (i = 0; i < 2; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + (i+14)] = (UINT8)(113 + i);
|
||||
dest_colormap[starttranscolor] = (UINT8)(0);
|
||||
for (i = 1; i < 4; i++) // White-yellow fade
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(80 + (i-1));
|
||||
for (; i < 6; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(83);
|
||||
for (; i < 8; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(72);
|
||||
for (; i < 14; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(73);
|
||||
for (; i < 16; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-14));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_SUPER3:
|
||||
// Super Yellow
|
||||
for (i = 0; i < 3; i++) // White-yellow fade
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(98 + i);
|
||||
dest_colormap[starttranscolor + 3] = 112; // Golden shine
|
||||
for (i = 0; i < 8; i++) // Yellow
|
||||
dest_colormap[starttranscolor + (i+4)] = (UINT8)(101 + (i>>1));
|
||||
for (i = 0; i < 4; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + (i+12)] = (UINT8)(113 + i);
|
||||
for (i = 0; i < 2; i++) // White-yellow fade
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(81 + i);
|
||||
for (; i < 4; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(83);
|
||||
for (; i < 6; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(72);
|
||||
for (; i < 12; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(73);
|
||||
for (; i < 16; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-12));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_SUPER4:
|
||||
// "The SSNTails"
|
||||
dest_colormap[starttranscolor] = 112; // Golden shine
|
||||
for (i = 0; i < 8; i++) // Yellow
|
||||
dest_colormap[starttranscolor + (i+1)] = (UINT8)(101 + (i>>1));
|
||||
for (i = 0; i < 7; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + (i+9)] = (UINT8)(113 + i);
|
||||
dest_colormap[starttranscolor] = 83; // Golden shine
|
||||
for (i = 1; i < 3; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(72);
|
||||
for (; i < 9; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(73);
|
||||
for (; i < 16; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-9));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_SUPER5:
|
||||
// Golden Delicious
|
||||
for (i = 0; i < 8; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(101 + (i>>1));
|
||||
for (i = 0; i < 7; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + (i+8)] = (UINT8)(113 + i);
|
||||
dest_colormap[starttranscolor + 15] = 155;
|
||||
for (i = 0; i < 2; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(72);
|
||||
for (; i < 8; i++) // Yellow
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(73);
|
||||
for (; i < 15; i++) // With a fine golden finish! :3
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-8));
|
||||
dest_colormap[starttranscolor + 15] = (UINT8)63;
|
||||
break;
|
||||
|
||||
// Super Tails
|
||||
// Super Tails and Knuckles, who really should be dummied out by now
|
||||
case SKINCOLOR_TSUPER1:
|
||||
for (i = 0; i < 10; i++) // white
|
||||
dest_colormap[starttranscolor + i] = 120;
|
||||
for (; i < SKIN_RAMP_LENGTH; i++) // orange
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(80 + (i-10));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_TSUPER2:
|
||||
for (i = 0; i < 4; i++) // white
|
||||
dest_colormap[starttranscolor + i] = 120;
|
||||
for (; i < SKIN_RAMP_LENGTH; i++) // orange
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(80 + ((i-4)>>1));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_TSUPER3:
|
||||
dest_colormap[starttranscolor] = 120; // pure white
|
||||
dest_colormap[starttranscolor+1] = 120;
|
||||
for (i = 2; i < SKIN_RAMP_LENGTH; i++) // orange
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(80 + ((i-2)>>1));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_TSUPER4:
|
||||
dest_colormap[starttranscolor] = 120; // pure white
|
||||
for (i = 1; i < 9; i++) // orange
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(80 + (i-1));
|
||||
for (; i < SKIN_RAMP_LENGTH; i++) // gold
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(115 + (5*(i-9)/7));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_TSUPER5:
|
||||
for (i = 0; i < 8; i++) // orange
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(80 + i);
|
||||
for (; i < SKIN_RAMP_LENGTH; i++) // gold
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(115 + (5*(i-8)/8));
|
||||
break;
|
||||
|
||||
// Super Knuckles
|
||||
case SKINCOLOR_KSUPER1:
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(120 + (i >> 2));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_KSUPER2:
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(120 + (6*i/SKIN_RAMP_LENGTH));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_KSUPER3:
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(120 + (i >> 1));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_KSUPER4:
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(121 + (i >> 1));
|
||||
break;
|
||||
|
||||
case SKINCOLOR_KSUPER5:
|
||||
for (i = 0; i < SKIN_RAMP_LENGTH; i++)
|
||||
dest_colormap[starttranscolor + i] = (UINT8)(122 + (i >> 1));
|
||||
dest_colormap[starttranscolor + i] = 0xFF;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -802,3 +957,4 @@ void R_DrawViewBorder(void)
|
|||
// ==========================================================================
|
||||
|
||||
#include "r_draw16.c"
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ void R_DrawColumn_8(void)
|
|||
}
|
||||
}
|
||||
|
||||
#define TRANSPARENTPIXEL 247
|
||||
#define TRANSPARENTPIXEL 255
|
||||
|
||||
void R_Draw2sMultiPatchColumn_8(void)
|
||||
{
|
||||
|
@ -1388,3 +1388,4 @@ void R_DrawColumnShadowed_8(void)
|
|||
if (dc_yl <= realyh)
|
||||
walldrawerfunc(); // R_DrawWallColumn_8 for the appropriate architecture
|
||||
}
|
||||
|
||||
|
|
11
src/r_main.c
11
src/r_main.c
|
@ -114,15 +114,6 @@ INT32 viewangletox[FINEANGLES/2];
|
|||
// from clipangle to -clipangle.
|
||||
angle_t xtoviewangle[MAXVIDWIDTH+1];
|
||||
|
||||
// UNUSED.
|
||||
// The finetangentgent[angle+FINEANGLES/4] table
|
||||
// holds the fixed_t tangent values for view angles,
|
||||
// ranging from INT32_MIN to 0 to INT32_MAX.
|
||||
|
||||
#if !(defined _NDS) || !(defined NONET)
|
||||
fixed_t *finecosine = &finesine[FINEANGLES/4];
|
||||
#endif
|
||||
|
||||
lighttable_t *scalelight[LIGHTLEVELS][MAXLIGHTSCALE];
|
||||
lighttable_t *scalelightfixed[MAXLIGHTSCALE];
|
||||
lighttable_t *zlight[LIGHTLEVELS][MAXLIGHTZ];
|
||||
|
@ -1278,7 +1269,7 @@ void R_RenderPlayerView(player_t *player)
|
|||
if (cv_homremoval.value == 1)
|
||||
V_DrawFill(0, 0, vid.width, vid.height, 31); // No HOM effect!
|
||||
else //'development' HOM removal -- makes it blindingly obvious if HOM is spotted.
|
||||
V_DrawFill(0, 0, vid.width, vid.height, 128+(timeinmap&15));
|
||||
V_DrawFill(0, 0, vid.width, vid.height, 32+(timeinmap&15));
|
||||
}
|
||||
|
||||
portalrender = 0;
|
||||
|
|
|
@ -750,31 +750,15 @@ void R_DrawSinglePlane(visplane_t *pl)
|
|||
// Hacked up support for alpha value in software mode Tails 09-24-2002 (sidenote: ported to polys 10-15-2014, there was no time travel involved -Red)
|
||||
if (pl->polyobj->translucency >= 10)
|
||||
return; // Don't even draw it
|
||||
else if (pl->polyobj->translucency == 9)
|
||||
ds_transmap = ((tr_trans90)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 8)
|
||||
ds_transmap = ((tr_trans80)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 7)
|
||||
ds_transmap = ((tr_trans70)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 6)
|
||||
ds_transmap = ((tr_trans60)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 5)
|
||||
ds_transmap = ((tr_trans50)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 4)
|
||||
ds_transmap = ((tr_trans40)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 3)
|
||||
ds_transmap = ((tr_trans30)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 2)
|
||||
ds_transmap = ((tr_trans20)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency == 1)
|
||||
ds_transmap = ((tr_trans10)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
else if (pl->polyobj->translucency > 0)
|
||||
ds_transmap = transtables + ((pl->polyobj->translucency-1)<<FF_TRANSSHIFT);
|
||||
else // Opaque, but allow transparent flat pixels
|
||||
spanfunc = splatfunc;
|
||||
|
||||
if (pl->extra_colormap && pl->extra_colormap->fog)
|
||||
light = (pl->lightlevel >> LIGHTSEGSHIFT);
|
||||
else
|
||||
light = LIGHTLEVELS-1;
|
||||
light = LIGHTLEVELS-1;
|
||||
|
||||
} else
|
||||
#endif
|
||||
|
@ -805,23 +789,23 @@ void R_DrawSinglePlane(visplane_t *pl)
|
|||
if (pl->ffloor->alpha < 12)
|
||||
return; // Don't even draw it
|
||||
else if (pl->ffloor->alpha < 38)
|
||||
ds_transmap = ((tr_trans90)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans90-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 64)
|
||||
ds_transmap = ((tr_trans80)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans80-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 89)
|
||||
ds_transmap = ((tr_trans70)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans70-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 115)
|
||||
ds_transmap = ((tr_trans60)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans60-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 140)
|
||||
ds_transmap = ((tr_trans50)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans50-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 166)
|
||||
ds_transmap = ((tr_trans40)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans40-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 192)
|
||||
ds_transmap = ((tr_trans30)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans30-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 217)
|
||||
ds_transmap = ((tr_trans20)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans20-1)<<FF_TRANSSHIFT);
|
||||
else if (pl->ffloor->alpha < 243)
|
||||
ds_transmap = ((tr_trans10)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans10-1)<<FF_TRANSSHIFT);
|
||||
else // Opaque, but allow transparent flat pixels
|
||||
spanfunc = splatfunc;
|
||||
|
||||
|
@ -1082,7 +1066,7 @@ using the palette colors.
|
|||
if (spanfunc == R_DrawSpan_8)
|
||||
{
|
||||
INT32 i;
|
||||
ds_transmap = ((tr_trans50)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans50-1)<<FF_TRANSSHIFT);
|
||||
spanfunc = R_DrawTranslucentSpan_8;
|
||||
for (i=0; i<4; i++)
|
||||
{
|
||||
|
|
48
src/r_segs.c
48
src/r_segs.c
|
@ -183,7 +183,7 @@ static void R_DrawWallSplats(void)
|
|||
colfunc = basecolfunc;
|
||||
else
|
||||
{
|
||||
dc_transmap = ((tr_trans50 - 1)<<FF_TRANSSHIFT) + transtables;
|
||||
dc_transmap = transtables + ((tr_trans50 - 1)<<FF_TRANSSHIFT);
|
||||
colfunc = fuzzcolfunc;
|
||||
}
|
||||
|
||||
|
@ -304,39 +304,15 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
|||
switch (ldef->special)
|
||||
{
|
||||
case 900:
|
||||
dc_transmap = ((tr_trans10)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 901:
|
||||
dc_transmap = ((tr_trans20)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 902:
|
||||
dc_transmap = ((tr_trans30)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 903:
|
||||
dc_transmap = ((tr_trans40)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 904:
|
||||
dc_transmap = ((tr_trans50)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 905:
|
||||
dc_transmap = ((tr_trans60)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 906:
|
||||
dc_transmap = ((tr_trans70)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 907:
|
||||
dc_transmap = ((tr_trans80)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 908:
|
||||
dc_transmap = ((tr_trans90)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((ldef->special-900)<<FF_TRANSSHIFT);
|
||||
colfunc = fuzzcolfunc;
|
||||
break;
|
||||
case 909:
|
||||
|
@ -354,7 +330,7 @@ void R_RenderMaskedSegRange(drawseg_t *ds, INT32 x1, INT32 x2)
|
|||
if (curline->polyseg->translucency >= NUMTRANSMAPS)
|
||||
return;
|
||||
|
||||
dc_transmap = ((curline->polyseg->translucency)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((curline->polyseg->translucency-1)<<FF_TRANSSHIFT);
|
||||
colfunc = fuzzcolfunc;
|
||||
}
|
||||
|
||||
|
@ -733,23 +709,23 @@ void R_RenderThickSideRange(drawseg_t *ds, INT32 x1, INT32 x2, ffloor_t *pfloor)
|
|||
if (pfloor->alpha < 12)
|
||||
return; // Don't even draw it
|
||||
else if (pfloor->alpha < 38)
|
||||
dc_transmap = ((tr_trans90)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans90-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 64)
|
||||
dc_transmap = ((tr_trans80)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans80-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 89)
|
||||
dc_transmap = ((tr_trans70)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans70-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 115)
|
||||
dc_transmap = ((tr_trans60)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans60-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 140)
|
||||
dc_transmap = ((tr_trans50)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans50-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 166)
|
||||
dc_transmap = ((tr_trans40)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans40-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 192)
|
||||
dc_transmap = ((tr_trans30)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans30-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 217)
|
||||
dc_transmap = ((tr_trans20)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans20-1)<<FF_TRANSSHIFT);
|
||||
else if (pfloor->alpha < 243)
|
||||
dc_transmap = ((tr_trans10)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
dc_transmap = transtables + ((tr_trans10-1)<<FF_TRANSSHIFT);
|
||||
else
|
||||
fuzzy = false; // Opaque
|
||||
|
||||
|
|
|
@ -503,7 +503,7 @@ static void R_RenderFloorSplat(floorsplat_t *pSplat, vertex_t *verts, UINT8 *pTe
|
|||
{
|
||||
ds_x1 = x1;
|
||||
ds_x2 = x2;
|
||||
ds_transmap = ((tr_trans50)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
ds_transmap = transtables + ((tr_trans50-1)<<FF_TRANSSHIFT);
|
||||
splatfunc();
|
||||
}
|
||||
|
||||
|
|
|
@ -1266,7 +1266,8 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
vis = R_NewVisSprite();
|
||||
vis->heightsec = heightsec; //SoM: 3/17/2000
|
||||
vis->mobjflags = thing->flags;
|
||||
vis->scale = yscale + thing->info->dispoffset; //<<detailshift;
|
||||
vis->scale = yscale; //<<detailshift;
|
||||
vis->dispoffset = thing->info->dispoffset; // Monster Iestyn: 23/11/15
|
||||
vis->gx = thing->x;
|
||||
vis->gy = thing->y;
|
||||
vis->gz = gz;
|
||||
|
@ -1329,9 +1330,9 @@ static void R_ProjectSprite(mobj_t *thing)
|
|||
if (!cv_translucency.value)
|
||||
; // no translucency
|
||||
else if (thing->flags2 & MF2_SHADOW) // actually only the player should use this (temporary invisibility)
|
||||
vis->transmap = ((tr_trans80-1)<<FF_TRANSSHIFT) + transtables; // because now the translucency is set through FF_TRANSMASK
|
||||
vis->transmap = transtables + ((tr_trans80-1)<<FF_TRANSSHIFT); // because now the translucency is set through FF_TRANSMASK
|
||||
else if (thing->frame & FF_TRANSMASK)
|
||||
vis->transmap = (thing->frame & FF_TRANSMASK) - 0x10000 + transtables;
|
||||
vis->transmap = transtables + (thing->frame & FF_TRANSMASK) - 0x10000;
|
||||
|
||||
if (((thing->frame & FF_FULLBRIGHT) || (thing->flags2 & MF2_SHADOW))
|
||||
&& (!vis->extra_colormap || !vis->extra_colormap->fog))
|
||||
|
@ -1482,6 +1483,7 @@ static void R_ProjectPrecipitationSprite(precipmobj_t *thing)
|
|||
// store information in a vissprite
|
||||
vis = R_NewVisSprite();
|
||||
vis->scale = yscale; //<<detailshift;
|
||||
vis->dispoffset = 0; // Monster Iestyn: 23/11/15
|
||||
vis->gx = thing->x;
|
||||
vis->gy = thing->y;
|
||||
vis->gz = gz;
|
||||
|
@ -1633,6 +1635,7 @@ void R_SortVisSprites(void)
|
|||
vissprite_t *best = NULL;
|
||||
vissprite_t unsorted;
|
||||
fixed_t bestscale;
|
||||
INT32 bestdispoffset;
|
||||
|
||||
if (!visspritecount)
|
||||
return;
|
||||
|
@ -1663,12 +1666,19 @@ void R_SortVisSprites(void)
|
|||
vsprsortedhead.next = vsprsortedhead.prev = &vsprsortedhead;
|
||||
for (i = 0; i < visspritecount; i++)
|
||||
{
|
||||
bestscale = INT32_MAX;
|
||||
bestscale = bestdispoffset = INT32_MAX;
|
||||
for (ds = unsorted.next; ds != &unsorted; ds = ds->next)
|
||||
{
|
||||
if (ds->scale < bestscale)
|
||||
{
|
||||
bestscale = ds->scale;
|
||||
bestdispoffset = ds->dispoffset;
|
||||
best = ds;
|
||||
}
|
||||
// order visprites of same scale by dispoffset, smallest first
|
||||
else if (ds->scale == bestscale && ds->dispoffset < bestdispoffset)
|
||||
{
|
||||
bestdispoffset = ds->dispoffset;
|
||||
best = ds;
|
||||
}
|
||||
}
|
||||
|
@ -1920,7 +1930,8 @@ static void R_CreateDrawNodes(void)
|
|||
if (r2->sprite->szt > rover->sz || r2->sprite->sz < rover->szt)
|
||||
continue;
|
||||
|
||||
if (r2->sprite->scale > rover->scale)
|
||||
if (r2->sprite->scale > rover->scale
|
||||
|| (r2->sprite->scale == rover->scale && r2->sprite->dispoffset > rover->dispoffset))
|
||||
{
|
||||
entry = R_CreateDrawNode(NULL);
|
||||
(entry->prev = r2->prev)->next = entry;
|
||||
|
@ -2285,7 +2296,7 @@ static void Sk_SetDefaultValue(skin_t *skin)
|
|||
strncpy(skin->face, "MISSING", 8);
|
||||
strncpy(skin->superface, "MISSING", 8);
|
||||
|
||||
skin->starttranscolor = 160;
|
||||
skin->starttranscolor = 96;
|
||||
skin->prefcolor = SKINCOLOR_GREEN;
|
||||
|
||||
skin->normalspeed = 36<<FRACBITS;
|
||||
|
@ -2654,9 +2665,6 @@ next_token:
|
|||
}
|
||||
free(buf2);
|
||||
|
||||
if (skin != &skins[0])
|
||||
skin->flags &= ~SF_SUPER;
|
||||
|
||||
// Add sprites
|
||||
{
|
||||
UINT16 z;
|
||||
|
|
|
@ -162,6 +162,7 @@ typedef struct vissprite_s
|
|||
boolean precip;
|
||||
boolean vflip; // Flip vertically
|
||||
boolean isScaled;
|
||||
INT32 dispoffset; // copy of info->dispoffset, affects ordering but not drawing
|
||||
} vissprite_t;
|
||||
|
||||
// A drawnode is something that points to a 3D floor, 3D side, or masked
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#ifdef CMAKECONFIG
|
||||
#include "config.h"
|
||||
#else
|
||||
#include "config.h.in"
|
||||
#include "../config.h.in"
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_WCE
|
||||
|
|
|
@ -217,10 +217,12 @@ static void SDLSetMode(INT32 width, INT32 height, SDL_bool fullscreen)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef HWRENDER
|
||||
if (rendermode == render_opengl)
|
||||
{
|
||||
OglSdlSurface(vid.width, vid.height);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (rendermode == render_soft)
|
||||
{
|
||||
|
@ -401,9 +403,11 @@ static INT32 Impl_SDL_Scancode_To_Keycode(SDL_Scancode code)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
#ifdef HWRENDER
|
||||
DBG_Printf("Unknown incoming scancode: %d, represented %c\n",
|
||||
code,
|
||||
SDL_GetKeyName(SDL_GetKeyFromScancode(code)));
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -888,8 +888,8 @@ static void ST_drawFirstPersonHUD(void)
|
|||
|
||||
// [21:42] <+Rob> Beige - Lavender - Steel Blue - Peach - Orange - Purple - Silver - Yellow - Pink - Red - Blue - Green - Cyan - Gold
|
||||
static skincolors_t linkColor[14] =
|
||||
{SKINCOLOR_BEIGE, SKINCOLOR_LAVENDER, SKINCOLOR_STEELBLUE, SKINCOLOR_PEACH, SKINCOLOR_ORANGE,
|
||||
SKINCOLOR_PURPLE, SKINCOLOR_SILVER, SKINCOLOR_SUPER4, SKINCOLOR_PINK, SKINCOLOR_RED,
|
||||
{SKINCOLOR_BEIGE, SKINCOLOR_LAVENDER, SKINCOLOR_AZURE, SKINCOLOR_PEACH, SKINCOLOR_ORANGE,
|
||||
SKINCOLOR_MAGENTA, SKINCOLOR_SILVER, SKINCOLOR_SUPER4, SKINCOLOR_PINK, SKINCOLOR_RED,
|
||||
SKINCOLOR_BLUE, SKINCOLOR_GREEN, SKINCOLOR_CYAN, SKINCOLOR_GOLD};
|
||||
|
||||
static void ST_drawNightsRecords(void)
|
||||
|
@ -938,7 +938,7 @@ static void ST_drawNightsRecords(void)
|
|||
V_DrawString(BASEVIDWIDTH/2 - 48, STRINGY(148), aflag, "BONUS:");
|
||||
V_DrawRightAlignedString(BASEVIDWIDTH/2 + 48, STRINGY(140), V_ORANGEMAP|aflag, va("%d", stplyr->finishedrings));
|
||||
V_DrawRightAlignedString(BASEVIDWIDTH/2 + 48, STRINGY(148), V_ORANGEMAP|aflag, va("%d", stplyr->finishedrings * 50));
|
||||
ST_DrawNightsOverlayNum(BASEVIDWIDTH/2 + 48, STRINGY(160), aflag, stplyr->lastmarescore, nightsnum, SKINCOLOR_STEELBLUE);
|
||||
ST_DrawNightsOverlayNum(BASEVIDWIDTH/2 + 48, STRINGY(160), aflag, stplyr->lastmarescore, nightsnum, SKINCOLOR_AZURE);
|
||||
|
||||
// If new record, say so!
|
||||
if (!(netgame || multiplayer) && G_GetBestNightsScore(gamemap, stplyr->lastmare + 1) <= stplyr->lastmarescore)
|
||||
|
@ -1220,7 +1220,7 @@ static void ST_drawNiGHTSHUD(void)
|
|||
#endif
|
||||
)
|
||||
{
|
||||
ST_DrawNightsOverlayNum(304, STRINGY(16), SPLITFLAGS(V_SNAPTOTOP)|V_SNAPTORIGHT, stplyr->marescore, nightsnum, SKINCOLOR_STEELBLUE);
|
||||
ST_DrawNightsOverlayNum(304, STRINGY(16), SPLITFLAGS(V_SNAPTOTOP)|V_SNAPTORIGHT, stplyr->marescore, nightsnum, SKINCOLOR_AZURE);
|
||||
}
|
||||
|
||||
if (!stplyr->exiting
|
||||
|
@ -1842,37 +1842,6 @@ static void ST_overlayDrawer(void)
|
|||
LUAh_GameHUD(stplyr);
|
||||
#endif
|
||||
|
||||
#if 0 // Pope XVI
|
||||
if (!(netgame || multiplayer) && !modifiedgame && gamemap == 11 && ALL7EMERALDS(emeralds)
|
||||
&& stplyr->mo && stplyr->mo->subsector && stplyr->mo->subsector->sector-sectors == 1361)
|
||||
{
|
||||
if (grade & 2048) // NAGZ
|
||||
{
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 70, 0, M_GetText("I, Pope Rededict XVI proclaim"));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 80, 0, M_GetText("AJ & Amy"));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 90, 0, M_GetText("Husband & Wife"));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 100, 0, M_GetText("on this day"));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 110, 0, M_GetText("May 16, 2009"));
|
||||
|
||||
P_GivePlayerRings(stplyr, 9999);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 60, 0, M_GetText("Oh... it's you again..."));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 80, 0, M_GetText("Look, I wanted to apologize for the way"));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 90, 0, M_GetText("I've acted in the past."));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 110, 0, M_GetText("I've seen the error of my ways"));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 120, 0, M_GetText("and turned over a new leaf."));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 140, 0, M_GetText("Instead of sending people to hell,"));
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 150, 0, M_GetText("I now send them to heaven!"));
|
||||
|
||||
P_LinedefExecute(4200, stplyr->mo, stplyr->mo->subsector->sector);
|
||||
P_LinedefExecute(4201, stplyr->mo, stplyr->mo->subsector->sector);
|
||||
stplyr->mo->momx = stplyr->mo->momy = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// draw level title Tails
|
||||
if (*mapheaderinfo[gamemap-1]->lvlttl != '\0' && !(hu_showscores && (netgame || multiplayer))
|
||||
#ifdef HAVE_BLUA
|
||||
|
|
1028
src/tables.c
1028
src/tables.c
File diff suppressed because it is too large
Load diff
|
@ -17,7 +17,7 @@
|
|||
[BITS 32]
|
||||
|
||||
%define FRACBITS 16
|
||||
%define TRANSPARENTPIXEL 247
|
||||
%define TRANSPARENTPIXEL 255
|
||||
|
||||
%ifdef LINUX
|
||||
%macro cextern 1
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
[BITS 32]
|
||||
|
||||
%define FRACBITS 16
|
||||
%define TRANSPARENTPIXEL 247
|
||||
%define TRANSPARENTPIXEL 255
|
||||
|
||||
%ifdef LINUX
|
||||
%macro cextern 1
|
||||
|
|
|
@ -366,7 +366,7 @@ void V_DrawFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, INT32 scrn, patch_t
|
|||
}
|
||||
if (alphalevel)
|
||||
{
|
||||
v_translevel = ((alphalevel)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
v_translevel = transtables + ((alphalevel-1)<<FF_TRANSSHIFT);
|
||||
patchdrawfunc = translucentpdraw;
|
||||
}
|
||||
|
||||
|
@ -1869,7 +1869,7 @@ void V_DoPostProcessor(INT32 view, postimg_t type, INT32 param)
|
|||
angle_t disStart = (leveltime * 128) & FINEMASK; // in 0 to FINEANGLE
|
||||
INT32 newpix;
|
||||
INT32 sine;
|
||||
//UINT8 *transme = ((tr_trans50)<<FF_TRANSSHIFT) + transtables;
|
||||
//UINT8 *transme = transtables + ((tr_trans50-1)<<FF_TRANSSHIFT);
|
||||
|
||||
for (y = yoffset; y < yoffset+height; y++)
|
||||
{
|
||||
|
@ -1926,7 +1926,7 @@ Unoptimized version
|
|||
INT32 x, y;
|
||||
|
||||
// TODO: Add a postimg_param so that we can pick the translucency level...
|
||||
UINT8 *transme = ((param)<<FF_TRANSSHIFT) - 0x10000 + transtables;
|
||||
UINT8 *transme = transtables + ((param-1)<<FF_TRANSSHIFT);
|
||||
|
||||
for (y = yoffset; y < yoffset+height; y++)
|
||||
{
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
|
||||
#ifdef HWRENDER
|
||||
#include "hardware/hw_data.h"
|
||||
#else
|
||||
typedef void GLPatch_t;
|
||||
#endif
|
||||
|
||||
#ifdef __GNUG__
|
||||
|
|
Loading…
Reference in a new issue