mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 17:01:51 +00:00
Add events EVENT_DISPLAYINACTIVEMENU and EVENT_DISPLAYINACTIVEMENUREST and userdef members m_origin_x and m_origin_y.
This allows for CON screen display code to use menu animations. The following is an example of how to adapt screen features that should animate. before: onevent EVENT_DISPLAYMENUREST ifvare current_menu 0 // main menu { setvar x 1 setvar y 1 rotatesprite x y zoom ang tilenum shade pal orientation 0 0 xdim ydim } endevent after: state DisplayMenuCommon ifvare RETURN 0 // main menu { getuserdef[THISACTOR].m_origin_x x getuserdef[THISACTOR].m_origin_y y addvar x 65536 addvar y 65536 rotatesprite16 x y zoom ang tilenum shade pal orientation 0 0 xdim ydim } ends onevent EVENT_DISPLAYMENUREST state DisplayMenuCommon endevent onevent EVENT_DISPLAYINACTIVEMENUREST state DisplayMenuCommon endevent git-svn-id: https://svn.eduke32.com/eduke32@4945 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
7fb76291ee
commit
93a3ff34e8
8 changed files with 49 additions and 12 deletions
|
@ -102,6 +102,8 @@ enum GameEvent_t {
|
|||
EVENT_CHANGEMENU,
|
||||
EVENT_DAMAGEHPLANE, // 95
|
||||
EVENT_ACTIVATECHEAT,
|
||||
EVENT_DISPLAYINACTIVEMENU,
|
||||
EVENT_DISPLAYINACTIVEMENUREST,
|
||||
#ifdef LUNATIC
|
||||
EVENT_ANIMATEALLSPRITES,
|
||||
#endif
|
||||
|
|
|
@ -166,6 +166,8 @@ typedef struct {
|
|||
int32_t m_ffire,ffire,m_player_skill,m_level_number,m_volume_number,multimode;
|
||||
int32_t player_skill,level_number,volume_number,m_marker,marker,mouseflip;
|
||||
|
||||
vec2_t m_origin;
|
||||
|
||||
int32_t configversion;
|
||||
#if !defined LUNATIC
|
||||
int16_t cameraang, camerasect, camerahoriz;
|
||||
|
|
|
@ -656,6 +656,8 @@ const char *EventNames[MAXEVENTS] =
|
|||
"EVENT_CHANGEMENU",
|
||||
"EVENT_DAMAGEHPLANE",
|
||||
"EVENT_ACTIVATECHEAT",
|
||||
"EVENT_DISPLAYINACTIVEMENU",
|
||||
"EVENT_DISPLAYINACTIVEMENUREST",
|
||||
#ifdef LUNATIC
|
||||
"EVENT_ANIMATEALLSPRITES",
|
||||
#endif
|
||||
|
@ -1054,6 +1056,9 @@ const memberlabel_t UserdefsLabels[]=
|
|||
{ "fola", USERDEFS_FOLA, 0, 0 },
|
||||
{ "reccnt", USERDEFS_RECCNT, 0, 0 },
|
||||
|
||||
{ "m_origin_x", USERDEFS_M_ORIGIN_X, 0, 0 },
|
||||
{ "m_origin_y", USERDEFS_M_ORIGIN_Y, 0, 0 },
|
||||
|
||||
{ "entered_name", USERDEFS_ENTERED_NAME, 0, 0 },
|
||||
{ "screen_tilting", USERDEFS_SCREEN_TILTING, 0, 0 },
|
||||
{ "shadows", USERDEFS_SHADOWS, 0, 0 },
|
||||
|
|
|
@ -423,6 +423,8 @@ enum UserdefsLabel_t
|
|||
USERDEFS_WEAPONSCALE,
|
||||
USERDEFS_TEXTSCALE,
|
||||
USERDEFS_RUNKEY_MODE,
|
||||
USERDEFS_M_ORIGIN_X,
|
||||
USERDEFS_M_ORIGIN_Y,
|
||||
USERDEFS_END
|
||||
};
|
||||
|
||||
|
|
|
@ -145,6 +145,8 @@ static void __fastcall VM_AccessUserdef(int32_t iSet, int32_t lLabelID, int32_t
|
|||
case USERDEFS_WEAPONSCALE: ud.weaponscale = iSet; break;
|
||||
case USERDEFS_TEXTSCALE: ud.textscale = iSet; break;
|
||||
case USERDEFS_RUNKEY_MODE: ud.runkey_mode = iSet; break;
|
||||
case USERDEFS_M_ORIGIN_X: ud.m_origin.x = iSet; break;
|
||||
case USERDEFS_M_ORIGIN_Y: ud.m_origin.y = iSet; break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
@ -247,6 +249,8 @@ static void __fastcall VM_AccessUserdef(int32_t iSet, int32_t lLabelID, int32_t
|
|||
case USERDEFS_WEAPONSCALE: lLabelID = ud.weaponscale; break;
|
||||
case USERDEFS_TEXTSCALE: lLabelID = ud.textscale; break;
|
||||
case USERDEFS_RUNKEY_MODE: lLabelID = ud.runkey_mode; break;
|
||||
case USERDEFS_M_ORIGIN_X: lLabelID = ud.m_origin.x; break;
|
||||
case USERDEFS_M_ORIGIN_Y: lLabelID = ud.m_origin.y; break;
|
||||
default: lLabelID = -1; break;
|
||||
}
|
||||
Gv_SetVarX(lVar2, lLabelID);
|
||||
|
|
|
@ -170,10 +170,13 @@ EVENT = {
|
|||
EVENT_CHANGEMENU = 94,
|
||||
EVENT_DAMAGEHPLANE = 95,
|
||||
EVENT_ACTIVATECHEAT = 96,
|
||||
-- EVENT_ANIMATEALLSPRITES = 97, -- internal
|
||||
EVENT_DISPLAYINACTIVEMENU = 97,
|
||||
EVENT_DISPLAYINACTIVEMENUREST = 98,
|
||||
-- EVENT_ANIMATEALLSPRITES = previous+1, -- internal
|
||||
-- KEEPINSYNC with MAXEVENTS below
|
||||
}
|
||||
|
||||
MAXEVENTS = 97 -- KEEPINSYNC with above EVENT_* list
|
||||
MAXEVENTS = 99 -- KEEPINSYNC with above EVENT_* list
|
||||
|
||||
-- NOTE: negated values are not exported to the ffi.C namespace or CON.
|
||||
-- See TWEAK_SFLAG below.
|
||||
|
@ -857,6 +860,8 @@ local UserdefLabels = {
|
|||
level_number = { UD".level_number", UD":set_level_number(%%s)", {0, MAXLEVELS-1} },
|
||||
levelstats = UD".levelstats",
|
||||
lockout = UDRO".lockout",
|
||||
m_origin_x = UD".m_origin.x",
|
||||
m_origin_y = UD".m_origin.y",
|
||||
m_player_skill = UDRO".m_player_skill",
|
||||
m_volume_number = { UD".m_volume_number", UD":set_m_volume_number(%%s)", {0, MAXVOLUMES} },
|
||||
mouseaiming = UD".mouseaiming",
|
||||
|
|
|
@ -512,6 +512,8 @@ typedef struct {
|
|||
int32_t m_ffire,ffire,m_player_skill,m_level_number,m_volume_number,multimode;
|
||||
int32_t player_skill,level_number,volume_number,m_marker,marker,mouseflip;
|
||||
|
||||
vec2_t m_origin;
|
||||
|
||||
int32_t configversion;
|
||||
|
||||
int16_t pause_on,from_bonus;
|
||||
|
|
|
@ -5490,7 +5490,7 @@ static void M_RunMenuInput(Menu_t *cm)
|
|||
// This function MUST NOT RECURSE. That is why M_RunMenu is separate.
|
||||
void M_DisplayMenus(void)
|
||||
{
|
||||
vec2_t origin = { 0, 0 };
|
||||
vec2_t origin = { 0, 0 }, previousOrigin = { 0, 0 };
|
||||
|
||||
Net_GetPackets();
|
||||
|
||||
|
@ -5509,7 +5509,22 @@ void M_DisplayMenus(void)
|
|||
|
||||
M_RunMenuInput(m_currentMenu);
|
||||
|
||||
VM_OnEvent(EVENT_DISPLAYMENU, g_player[screenpeek].ps->i, screenpeek);
|
||||
// Determine animation values.
|
||||
if (totalclock < m_animation.start + m_animation.length)
|
||||
{
|
||||
const int32_t screenwidth = scale(240<<16, xdim, ydim);
|
||||
|
||||
origin.x = scale(screenwidth, m_animation.in(&m_animation), 32768);
|
||||
previousOrigin.x = scale(screenwidth, m_animation.out(&m_animation), 32768);
|
||||
|
||||
ud.m_origin = previousOrigin;
|
||||
VM_OnEventWithReturn(EVENT_DISPLAYINACTIVEMENU, g_player[screenpeek].ps->i, screenpeek, m_animation.previous->menuID);
|
||||
previousOrigin = ud.m_origin;
|
||||
}
|
||||
|
||||
ud.m_origin = origin;
|
||||
VM_OnEventWithReturn(EVENT_DISPLAYMENU, g_player[screenpeek].ps->i, screenpeek, g_currentMenu);
|
||||
origin = ud.m_origin;
|
||||
|
||||
g_player[myconnectindex].ps->gm &= (0xff-MODE_TYPE);
|
||||
g_player[myconnectindex].ps->fta = 0;
|
||||
|
@ -5528,12 +5543,6 @@ void M_DisplayMenus(void)
|
|||
// Display the menu, with a transition animation if applicable.
|
||||
if (totalclock < m_animation.start + m_animation.length)
|
||||
{
|
||||
vec2_t previousOrigin = { 0, 0 };
|
||||
const int32_t screenwidth = scale(240<<16, xdim, ydim);
|
||||
|
||||
origin.x = scale(screenwidth, m_animation.in(&m_animation), 32768);
|
||||
previousOrigin.x = scale(screenwidth, m_animation.out(&m_animation), 32768);
|
||||
|
||||
M_RunMenu(m_animation.previous, previousOrigin);
|
||||
M_RunMenu(m_animation.current, origin);
|
||||
}
|
||||
|
@ -5545,8 +5554,14 @@ void M_DisplayMenus(void)
|
|||
m_menuchange_watchpoint = 0;
|
||||
#endif
|
||||
|
||||
if (VM_HaveEvent(EVENT_DISPLAYMENUREST))
|
||||
VM_OnEvent(EVENT_DISPLAYMENUREST, g_player[screenpeek].ps->i, screenpeek);
|
||||
if (totalclock < m_animation.start + m_animation.length)
|
||||
{
|
||||
ud.m_origin = previousOrigin;
|
||||
VM_OnEventWithReturn(EVENT_DISPLAYINACTIVEMENUREST, g_player[screenpeek].ps->i, screenpeek, m_animation.previous->menuID);
|
||||
}
|
||||
|
||||
ud.m_origin = origin;
|
||||
VM_OnEventWithReturn(EVENT_DISPLAYMENUREST, g_player[screenpeek].ps->i, screenpeek, g_currentMenu);
|
||||
|
||||
#if !defined EDUKE32_TOUCH_DEVICES
|
||||
if (tilesiz[CROSSHAIR].x > 0 && mousestatus)
|
||||
|
|
Loading…
Reference in a new issue