mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-17 17:41:57 +00:00
Allow up to 256 frames per sprite
This commit is contained in:
parent
99a9e5fcc9
commit
178d29cf0c
5 changed files with 17 additions and 15 deletions
|
@ -359,8 +359,8 @@ static int PopPivotTable(spriteinfo_t *info, lua_State *L, int stk)
|
||||||
default:
|
default:
|
||||||
TYPEERROR("pivot frame", LUA_TNUMBER, lua_type(L, stk+1));
|
TYPEERROR("pivot frame", LUA_TNUMBER, lua_type(L, stk+1));
|
||||||
}
|
}
|
||||||
if ((idx < 0) || (idx >= 64))
|
if ((idx < 0) || (idx >= MAXFRAMENUM))
|
||||||
return luaL_error(L, "pivot frame %d out of range (0 - %d)", idx, 63);
|
return luaL_error(L, "pivot frame %d out of range (0 - %d)", idx, MAXFRAMENUM - 1);
|
||||||
// the values in pivot[] are also tables
|
// the values in pivot[] are also tables
|
||||||
if (PopPivotSubTable(info->pivot, L, stk+2, idx))
|
if (PopPivotSubTable(info->pivot, L, stk+2, idx))
|
||||||
info->available = true;
|
info->available = true;
|
||||||
|
@ -555,7 +555,7 @@ static int pivotlist_set(lua_State *L)
|
||||||
|
|
||||||
static int pivotlist_num(lua_State *L)
|
static int pivotlist_num(lua_State *L)
|
||||||
{
|
{
|
||||||
lua_pushinteger(L, 64);
|
lua_pushinteger(L, MAXFRAMENUM);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#pragma interface
|
#pragma interface
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// \brief Frame flags: only the frame number - 0 to 256 (Frames from 0 to 63, Sprite2 number uses 0 to 127 plus FF_SPR2SUPER)
|
/// \brief Frame flags: only the frame number - 0 to 256 (Frames from 0 to 255, Sprite2 number uses 0 to 127 plus FF_SPR2SUPER)
|
||||||
#define FF_FRAMEMASK 0xff
|
#define FF_FRAMEMASK 0xff
|
||||||
|
|
||||||
/// \brief Frame flags - SPR2: Super sprite2
|
/// \brief Frame flags - SPR2: Super sprite2
|
||||||
|
|
|
@ -976,6 +976,8 @@ typedef struct
|
||||||
#endif
|
#endif
|
||||||
} spriteframe_t;
|
} spriteframe_t;
|
||||||
|
|
||||||
|
#define MAXFRAMENUM 256
|
||||||
|
|
||||||
//
|
//
|
||||||
// A sprite definition: a number of animation frames.
|
// A sprite definition: a number of animation frames.
|
||||||
//
|
//
|
||||||
|
|
|
@ -100,7 +100,7 @@ typedef struct
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
spriteframepivot_t pivot[64];
|
spriteframepivot_t pivot[MAXFRAMENUM];
|
||||||
boolean available;
|
boolean available;
|
||||||
} spriteinfo_t;
|
} spriteinfo_t;
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ spriteinfo_t spriteinfo[NUMSPRITES];
|
||||||
spritedef_t *sprites;
|
spritedef_t *sprites;
|
||||||
size_t numsprites;
|
size_t numsprites;
|
||||||
|
|
||||||
static spriteframe_t sprtemp[64];
|
static spriteframe_t sprtemp[MAXFRAMENUM];
|
||||||
static size_t maxframe;
|
static size_t maxframe;
|
||||||
static const char *spritename;
|
static const char *spritename;
|
||||||
|
|
||||||
|
@ -248,9 +248,9 @@ static void R_InstallSpriteLump(UINT16 wad, // graphics patch
|
||||||
|
|
||||||
static boolean GetFramesAndRotationsFromShortLumpName(
|
static boolean GetFramesAndRotationsFromShortLumpName(
|
||||||
const char *name,
|
const char *name,
|
||||||
UINT8 *ret_frame,
|
INT32 *ret_frame,
|
||||||
UINT8 *ret_rotation,
|
UINT8 *ret_rotation,
|
||||||
UINT8 *ret_frame2,
|
INT32 *ret_frame2,
|
||||||
UINT8 *ret_rotation2
|
UINT8 *ret_rotation2
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -273,7 +273,7 @@ static boolean GetFramesAndRotationsFromShortLumpName(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*ret_frame2 = 255;
|
*ret_frame2 = -1;
|
||||||
*ret_rotation2 = 255;
|
*ret_rotation2 = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,9 +282,9 @@ static boolean GetFramesAndRotationsFromShortLumpName(
|
||||||
|
|
||||||
static boolean GetFramesAndRotationsFromLongLumpName(
|
static boolean GetFramesAndRotationsFromLongLumpName(
|
||||||
const char *name,
|
const char *name,
|
||||||
UINT8 *ret_frame,
|
INT32 *ret_frame,
|
||||||
UINT8 *ret_rotation,
|
UINT8 *ret_rotation,
|
||||||
UINT8 *ret_frame2,
|
INT32 *ret_frame2,
|
||||||
UINT8 *ret_rotation2
|
UINT8 *ret_rotation2
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -305,10 +305,10 @@ static boolean GetFramesAndRotationsFromLongLumpName(
|
||||||
|
|
||||||
*ret_frame = atoi(framepart);
|
*ret_frame = atoi(framepart);
|
||||||
*ret_rotation = R_Char2Rotation(*(underscore + 1));
|
*ret_rotation = R_Char2Rotation(*(underscore + 1));
|
||||||
if (*ret_frame >= 64 || *ret_rotation == 255)
|
if (*ret_frame >= MAXFRAMENUM || *ret_rotation == 255)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
*ret_frame2 = 255;
|
*ret_frame2 = -1;
|
||||||
*ret_rotation2 = 255;
|
*ret_rotation2 = 255;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -404,7 +404,7 @@ boolean R_AddSingleSpriteDef(const char *sprname, spritedef_t *spritedef, UINT16
|
||||||
{
|
{
|
||||||
INT16 width, height;
|
INT16 width, height;
|
||||||
INT16 topoffset, leftoffset;
|
INT16 topoffset, leftoffset;
|
||||||
UINT8 frame, frame2;
|
INT32 frame, frame2;
|
||||||
UINT8 rotation, rotation2;
|
UINT8 rotation, rotation2;
|
||||||
|
|
||||||
boolean good = longname ?
|
boolean good = longname ?
|
||||||
|
@ -443,7 +443,7 @@ boolean R_AddSingleSpriteDef(const char *sprname, spritedef_t *spritedef, UINT16
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
|
|
||||||
R_InstallSpriteLump(wadnum, l, numspritelumps, frame, rotation, 0);
|
R_InstallSpriteLump(wadnum, l, numspritelumps, frame, rotation, 0);
|
||||||
if (frame2 != 255)
|
if (frame2 != -1)
|
||||||
R_InstallSpriteLump(wadnum, l, numspritelumps, frame2, rotation2, 1);
|
R_InstallSpriteLump(wadnum, l, numspritelumps, frame2, rotation2, 1);
|
||||||
|
|
||||||
if (++numspritelumps >= max_spritelumps)
|
if (++numspritelumps >= max_spritelumps)
|
||||||
|
|
Loading…
Reference in a new issue