Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • STJr/SRB2
  • Sryder/SRB2
  • wolfy852/SRB2
  • Alpha2244/SRB2
  • Inuyasha/SRB2
  • yoshibot/SRB2
  • TehRealSalt/SRB2
  • PrisimaTF/SRB2
  • Hatninja/SRB2
  • SteelT/SRB2
  • james/SRB2
  • ShaderWraith/SRB2
  • SinnamonLat/SRB2
  • mazmazz_/SRB2
  • filpAM/SRB2
  • chaoloveicemdboy/SRB2
  • Whooa21/SRB2
  • Machturne/SRB2
  • Golden/SRB2
  • Tatsuru/SRB2
  • Snu/SRB2
  • Zwip-Zwap_Zapony/SRB2
  • fickleheart/SRB2
  • alphaRexJames/SRB2
  • JJK/SRB2
  • diskpoppy/SRB2
  • Hannu_Hanhi/SRB2
  • ZipperQR/SRB2
  • kays/SRB2
  • spherallic/SRB2
  • Zippy_Zolton/SRB2
  • namiishere/SRB2
  • Ors/SRB2
  • SMS_Alfredo/SRB2
  • sonic_edge/SRB2
  • lavla/SRB2
  • ashi/SRB2
  • X.organic/SRB2
  • Fafabis/SRB2
  • Meziu/SRB2
  • v-rob/SRB2
  • tertu/SRB2
  • bitten2up/SRB2
  • flarn2006/SRB2
  • Krabs/SRB2
  • clairebun/SRB2
  • Lactozilla/SRB2
  • thehackstack/SRB2
  • Spice/SRB2
  • win8linux/SRB2
  • JohnFrostFox/SRB2
  • talktoneon726/SRB2
  • Wane/SRB2
  • Lamibe/SRB2
  • spectrumuk2/srb-2
  • nerdyminer18/srb-2
  • 256nil/SRB2
  • ARJr/SRB2
  • Alam/SRB2
  • Zenya/srb-2-marathon-demos
  • Acelite/srb-2-archivedmodifications
  • MIDIMan/SRB2
  • Lach/SRB2
  • Frostiikin/bounce-tweaks
  • Jaden/SRB2
  • Tyron/SRB2
  • Astronight/SRB2
  • Mari0shi06/SRB2
  • aiire/SRB2
  • Galactice/SRB2
  • srb2-ports/srb2-dreamcast
  • sdasdas/SRB2
  • chreas/srb-2-vr
  • StarManiaKG/the-story-of-sinically-rocketing-and-botching-the-2nd
  • LoganAir/SRB2
  • NepDisk/srb-2
  • alufolie91/SRB2
  • Felicia.iso/SRB2
  • twi/SRB2
  • BarrelsOFun/SRB2
  • Speed2411/SRB2
  • Leather_Realms/SRB2
  • Ayemar/SRB2
  • Acelite/SRB2
  • VladDoc/SRB2
  • kaldrum/model-features
  • strawberryfox417/SRB2
  • Lugent/SRB2
  • Rem/SRB2
  • Refrag/SRB2
  • Henry_3230/srb-3230
  • TehPuertoRicanSpartan2/tprs-srb2
  • Leminn/srb-2-marathon-stuff
  • chromaticpipe2/SRB2
  • MiguelGustavo15/SRB2
  • Maru/srb-2-tests
  • SilicDev/SRB2
  • UnmatchedBracket/SRB2
  • HybridDog/SRB2
  • xordspar0/SRB2
  • jsjhbewfhh/SRB2
  • Fancy2209/SRB2
  • Lorsoen/SRB2
  • shindoukin/SRB2
  • GamerOfDays/SRB2
  • Craftyawesome/SRB2
  • tenshi-tensai-tennoji/SRB2
  • Scarfdudebalder/SRB2
  • luigi-budd/srb-2-fix-interplag-lockon
  • mskluesner/SRB2
  • johnpetersa19/SRB2
  • Pheazant/SRB2
  • chromaticpipe2/srb2classic
  • romoney5/SRB2
  • PAS/SRB2Classic
  • BlueStaggo/SRB2
  • Jisk/srb-2-beef-jerky
117 results
Select Git revision
Show changes
...@@ -1121,11 +1121,11 @@ static const char *credits[] = { ...@@ -1121,11 +1121,11 @@ static const char *credits[] = {
"Alice \"Alacroix\" de Lemos", "Alice \"Alacroix\" de Lemos",
"Logan \"Hyperchaotix\" McCloud", "Logan \"Hyperchaotix\" McCloud",
"Alexander \"DrTapeworm\" Moench-Ford", "Alexander \"DrTapeworm\" Moench-Ford",
"\"orbitalviolet\"", // summit showdown hehehehe (aka Evertone)
"Andrew \"Senku Niola\" Moran", "Andrew \"Senku Niola\" Moran",
"\"MotorRoach\"", "\"MotorRoach\"",
"Phillip \"TelosTurntable\" Robinson", "Phillip \"TelosTurntable\" Robinson",
"\"Scizor300\"", "\"Scizor300\"",
"\"Skydusk\"",
"Wessel \"sphere\" Smit", "Wessel \"sphere\" Smit",
"David \"Instant Sonic\" Spencer Jr.", "David \"Instant Sonic\" Spencer Jr.",
"\"SSNTails\"", "\"SSNTails\"",
...@@ -1173,11 +1173,9 @@ static const char *credits[] = { ...@@ -1173,11 +1173,9 @@ static const char *credits[] = {
"Mujamel \"MK\" Khan", "Mujamel \"MK\" Khan",
"\"Kaito Sinclaire\"", "\"Kaito Sinclaire\"",
"Alexander \"DrTapeworm\" Moench-Ford", "Alexander \"DrTapeworm\" Moench-Ford",
"\"orbitalviolet\"", // summit showdown hehehehe (aka Evertone)
"\"Radicalicious\"", "\"Radicalicious\"",
"\"Revan\"", "\"Revan\"",
"Anna \"QueenDelta\" Sandlin", "Anna \"QueenDelta\" Sandlin",
"\"Skydusk\"",
"Wessel \"sphere\" Smit", "Wessel \"sphere\" Smit",
"\"SSNTails\"", "\"SSNTails\"",
"Aaron \"Othius\" Stojkov", "Aaron \"Othius\" Stojkov",
...@@ -4591,9 +4589,9 @@ void F_TextPromptDrawer(void) ...@@ -4591,9 +4589,9 @@ void F_TextPromptDrawer(void)
players[j].powers[pw_nocontrol] = 1;\ players[j].powers[pw_nocontrol] = 1;\
if (players[j].mo)\ if (players[j].mo)\
{\ {\
if (players[j].mo->state == states+S_PLAY_STND && players[j].mo->tics != -1)\ if (P_IsPlayerInState(&players[j], S_PLAY_STND) && players[j].mo->tics != -1)\
players[j].mo->tics++;\ players[j].mo->tics++;\
else if (players[j].mo->state == states+S_PLAY_WAIT)\ else if (P_IsPlayerInState(&players[j], S_PLAY_WAIT))\
P_SetMobjState(players[j].mo, S_PLAY_STND);\ P_SetMobjState(players[j].mo, S_PLAY_STND);\
}\ }\
} }
......
...@@ -100,7 +100,7 @@ demoghost *ghosts = NULL; ...@@ -100,7 +100,7 @@ demoghost *ghosts = NULL;
// DEMO RECORDING // DEMO RECORDING
// //
#define DEMOVERSION 0x0012 #define DEMOVERSION 0x0011
#define DEMOHEADER "\xF0" "SRB2Replay" "\x0F" #define DEMOHEADER "\xF0" "SRB2Replay" "\x0F"
#define DF_GHOST 0x01 // This demo contains ghost data too! #define DF_GHOST 0x01 // This demo contains ghost data too!
...@@ -185,11 +185,7 @@ void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum) ...@@ -185,11 +185,7 @@ void G_ReadDemoTiccmd(ticcmd_t *cmd, INT32 playernum)
if (ziptic & ZT_ANGLE) if (ziptic & ZT_ANGLE)
oldcmd.angleturn = READINT16(demo_p); oldcmd.angleturn = READINT16(demo_p);
if (ziptic & ZT_BUTTONS) if (ziptic & ZT_BUTTONS)
{
oldcmd.buttons = (oldcmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) | (READUINT16(demo_p) & ~(BT_CAMLEFT|BT_CAMRIGHT)); oldcmd.buttons = (oldcmd.buttons & (BT_CAMLEFT|BT_CAMRIGHT)) | (READUINT16(demo_p) & ~(BT_CAMLEFT|BT_CAMRIGHT));
if (demoversion < 0x0012 && oldcmd.buttons & BT_SPIN)
oldcmd.buttons |= BT_SHIELD; // Copy BT_SPIN to BT_SHIELD for pre-Shield-button demos
}
if (ziptic & ZT_AIMING) if (ziptic & ZT_AIMING)
oldcmd.aiming = READINT16(demo_p); oldcmd.aiming = READINT16(demo_p);
if (ziptic & ZT_LATENCY) if (ziptic & ZT_LATENCY)
......
...@@ -407,7 +407,6 @@ consvar_t cv_lookaxis = CVAR_INIT ("joyaxis_look", "X-Rudder-", CV_SAVE, ...@@ -407,7 +407,6 @@ consvar_t cv_lookaxis = CVAR_INIT ("joyaxis_look", "X-Rudder-", CV_SAVE,
consvar_t cv_turnaxis = CVAR_INIT ("joyaxis_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_turnaxis = CVAR_INIT ("joyaxis_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_jumpaxis = CVAR_INIT ("joyaxis_jump", "None", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_jumpaxis = CVAR_INIT ("joyaxis_jump", "None", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_spinaxis = CVAR_INIT ("joyaxis_spin", "None", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_spinaxis = CVAR_INIT ("joyaxis_spin", "None", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_shieldaxis = CVAR_INIT ("joyaxis_shield", "None", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_fireaxis = CVAR_INIT ("joyaxis_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_fireaxis = CVAR_INIT ("joyaxis_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_firenaxis = CVAR_INIT ("joyaxis_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_firenaxis = CVAR_INIT ("joyaxis_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_deadzone = CVAR_INIT ("joy_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); consvar_t cv_deadzone = CVAR_INIT ("joy_deadzone", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
...@@ -419,7 +418,6 @@ consvar_t cv_lookaxis2 = CVAR_INIT ("joyaxis2_look", "X-Rudder-", CV_SAV ...@@ -419,7 +418,6 @@ consvar_t cv_lookaxis2 = CVAR_INIT ("joyaxis2_look", "X-Rudder-", CV_SAV
consvar_t cv_turnaxis2 = CVAR_INIT ("joyaxis2_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_turnaxis2 = CVAR_INIT ("joyaxis2_turn", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_jumpaxis2 = CVAR_INIT ("joyaxis2_jump", "None", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_jumpaxis2 = CVAR_INIT ("joyaxis2_jump", "None", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_spinaxis2 = CVAR_INIT ("joyaxis2_spin", "None", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_spinaxis2 = CVAR_INIT ("joyaxis2_spin", "None", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_shieldaxis2 = CVAR_INIT ("joyaxis2_shield", "None", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_fireaxis2 = CVAR_INIT ("joyaxis2_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_fireaxis2 = CVAR_INIT ("joyaxis2_fire", "Z-Rudder", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_firenaxis2 = CVAR_INIT ("joyaxis2_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL); consvar_t cv_firenaxis2 = CVAR_INIT ("joyaxis2_firenormal", "Z-Axis", CV_SAVE, joyaxis_cons_t, NULL);
consvar_t cv_deadzone2 = CVAR_INIT ("joy_deadzone2", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL); consvar_t cv_deadzone2 = CVAR_INIT ("joy_deadzone2", "0.125", CV_FLOAT|CV_SAVE, zerotoone_cons_t, NULL);
...@@ -894,9 +892,6 @@ INT32 JoyAxis(joyaxis_e axissel) ...@@ -894,9 +892,6 @@ INT32 JoyAxis(joyaxis_e axissel)
case JA_SPIN: case JA_SPIN:
axisval = cv_spinaxis.value; axisval = cv_spinaxis.value;
break; break;
case JA_SHIELD:
axisval = cv_shieldaxis.value;
break;
case JA_FIRE: case JA_FIRE:
axisval = cv_fireaxis.value; axisval = cv_fireaxis.value;
break; break;
...@@ -970,9 +965,6 @@ INT32 Joy2Axis(joyaxis_e axissel) ...@@ -970,9 +965,6 @@ INT32 Joy2Axis(joyaxis_e axissel)
case JA_SPIN: case JA_SPIN:
axisval = cv_spinaxis2.value; axisval = cv_spinaxis2.value;
break; break;
case JA_SHIELD:
axisval = cv_shieldaxis2.value;
break;
case JA_FIRE: case JA_FIRE:
axisval = cv_fireaxis2.value; axisval = cv_fireaxis2.value;
break; break;
...@@ -1340,10 +1332,10 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) ...@@ -1340,10 +1332,10 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
if (PLAYERINPUTDOWN(ssplayer, GC_WEAPONPREV)) if (PLAYERINPUTDOWN(ssplayer, GC_WEAPONPREV))
cmd->buttons |= BT_WEAPONPREV; // Previous Weapon cmd->buttons |= BT_WEAPONPREV; // Previous Weapon
#if NUM_WEAPONS > 7 #if NUM_WEAPONS > 10
"Add extra inputs to g_input.h/gamecontrols_e, and fix conflicts in d_ticcmd.h/ticcmd_t/buttons" "Add extra inputs to g_input.h/gamecontrols_e"
#endif #endif
//use the three avaliable bits to determine the weapon. //use the four avaliable bits to determine the weapon.
cmd->buttons &= ~BT_WEAPONMASK; cmd->buttons &= ~BT_WEAPONMASK;
for (i = 0; i < NUM_WEAPONS; ++i) for (i = 0; i < NUM_WEAPONS; ++i)
if (PLAYERINPUTDOWN(ssplayer, GC_WEPSLOT1 + i)) if (PLAYERINPUTDOWN(ssplayer, GC_WEPSLOT1 + i))
...@@ -1362,15 +1354,9 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer) ...@@ -1362,15 +1354,9 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics, UINT8 ssplayer)
if (PLAYERINPUTDOWN(ssplayer, GC_FIRENORMAL) || (usejoystick && axis > 0)) if (PLAYERINPUTDOWN(ssplayer, GC_FIRENORMAL) || (usejoystick && axis > 0))
cmd->buttons |= BT_FIRENORMAL; cmd->buttons |= BT_FIRENORMAL;
// Toss flag button
if (PLAYERINPUTDOWN(ssplayer, GC_TOSSFLAG)) if (PLAYERINPUTDOWN(ssplayer, GC_TOSSFLAG))
cmd->buttons |= BT_TOSSFLAG; cmd->buttons |= BT_TOSSFLAG;
// Shield button
axis = PlayerJoyAxis(ssplayer, JA_SHIELD);
if (PLAYERINPUTDOWN(ssplayer, GC_SHIELD) || (usejoystick && axis > 0))
cmd->buttons |= BT_SHIELD;
// Lua scriptable buttons // Lua scriptable buttons
if (PLAYERINPUTDOWN(ssplayer, GC_CUSTOM1)) if (PLAYERINPUTDOWN(ssplayer, GC_CUSTOM1))
cmd->buttons |= BT_CUSTOM1; cmd->buttons |= BT_CUSTOM1;
...@@ -2284,6 +2270,11 @@ boolean G_LuaResponder(event_t *ev) ...@@ -2284,6 +2270,11 @@ boolean G_LuaResponder(event_t *ev)
cancelled = LUA_HookKey(ev, HOOK(KeyUp)); cancelled = LUA_HookKey(ev, HOOK(KeyUp));
LUA_InvalidateUserdata(ev); LUA_InvalidateUserdata(ev);
} }
else if (ev->type == ev_text)
{
cancelled = LUA_HookText(ev, HOOK(TextInput));
LUA_InvalidateUserdata(ev);
}
return cancelled; return cancelled;
} }
...@@ -2777,7 +2768,6 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps) ...@@ -2777,7 +2768,6 @@ void G_PlayerReborn(INT32 player, boolean betweenmaps)
p->pflags |= PF_SPINDOWN; p->pflags |= PF_SPINDOWN;
p->pflags |= PF_ATTACKDOWN; p->pflags |= PF_ATTACKDOWN;
p->pflags |= PF_JUMPDOWN; p->pflags |= PF_JUMPDOWN;
p->pflags |= PF_SHIELDDOWN;
p->playerstate = PST_LIVE; p->playerstate = PST_LIVE;
p->panim = PA_IDLE; // standing animation p->panim = PA_IDLE; // standing animation
...@@ -4350,6 +4340,8 @@ static void G_DoContinued(void) ...@@ -4350,6 +4340,8 @@ static void G_DoContinued(void)
// when something new is added. // when something new is added.
void G_EndGame(void) void G_EndGame(void)
{ {
LUA_HookVoid(HOOK(GameEnd));
// Only do evaluation and credits in coop games. // Only do evaluation and credits in coop games.
if (gametyperules & GTR_CUTSCENES) if (gametyperules & GTR_CUTSCENES)
{ {
......
...@@ -71,8 +71,8 @@ typedef enum { ...@@ -71,8 +71,8 @@ typedef enum {
#define P_ControlStyle(player) ((((player)->pflags & PF_ANALOGMODE) ? CS_LMAOGALOG : 0) | (((player)->pflags & PF_DIRECTIONCHAR) ? CS_STANDARD : 0)) #define P_ControlStyle(player) ((((player)->pflags & PF_ANALOGMODE) ? CS_LMAOGALOG : 0) | (((player)->pflags & PF_DIRECTIONCHAR) ? CS_STANDARD : 0))
extern consvar_t cv_autobrake, cv_autobrake2; extern consvar_t cv_autobrake, cv_autobrake2;
extern consvar_t cv_sideaxis, cv_turnaxis, cv_moveaxis, cv_lookaxis, cv_jumpaxis, cv_spinaxis, cv_shieldaxis, cv_fireaxis, cv_firenaxis, cv_deadzone, cv_digitaldeadzone; extern consvar_t cv_sideaxis,cv_turnaxis,cv_moveaxis,cv_lookaxis,cv_jumpaxis,cv_spinaxis,cv_fireaxis,cv_firenaxis,cv_deadzone,cv_digitaldeadzone;
extern consvar_t cv_sideaxis2,cv_turnaxis2,cv_moveaxis2,cv_lookaxis2,cv_jumpaxis2,cv_spinaxis2,cv_shieldaxis2,cv_fireaxis2,cv_firenaxis2,cv_deadzone2,cv_digitaldeadzone2; extern consvar_t cv_sideaxis2,cv_turnaxis2,cv_moveaxis2,cv_lookaxis2,cv_jumpaxis2,cv_spinaxis2,cv_fireaxis2,cv_firenaxis2,cv_deadzone2,cv_digitaldeadzone2;
extern consvar_t cv_ghost_bestscore, cv_ghost_besttime, cv_ghost_bestrings, cv_ghost_last, cv_ghost_guest; extern consvar_t cv_ghost_bestscore, cv_ghost_besttime, cv_ghost_bestrings, cv_ghost_last, cv_ghost_guest;
// hi here's some new controls // hi here's some new controls
...@@ -100,7 +100,6 @@ typedef enum ...@@ -100,7 +100,6 @@ typedef enum
JA_JUMP = JA_DIGITAL, JA_JUMP = JA_DIGITAL,
JA_SPIN, JA_SPIN,
JA_SHIELD,
JA_FIRE, JA_FIRE,
JA_FIRENORMAL, JA_FIRENORMAL,
} joyaxis_e; } joyaxis_e;
......
...@@ -576,7 +576,9 @@ static const char *gamecontrolname[NUM_GAMECONTROLS] = ...@@ -576,7 +576,9 @@ static const char *gamecontrolname[NUM_GAMECONTROLS] =
"weapon5", "weapon5",
"weapon6", "weapon6",
"weapon7", "weapon7",
"shield", "weapon8",
"weapon9",
"weapon10",
"fire", "fire",
"firenormal", "firenormal",
"tossflag", "tossflag",
...@@ -691,7 +693,6 @@ void G_DefineDefaultControls(void) ...@@ -691,7 +693,6 @@ void G_DefineDefaultControls(void)
gamecontroldefault[gcs_fps][GC_CENTERVIEW ][0] = KEY_LCTRL; gamecontroldefault[gcs_fps][GC_CENTERVIEW ][0] = KEY_LCTRL;
gamecontroldefault[gcs_fps][GC_JUMP ][0] = KEY_SPACE; gamecontroldefault[gcs_fps][GC_JUMP ][0] = KEY_SPACE;
gamecontroldefault[gcs_fps][GC_SPIN ][0] = KEY_LSHIFT; gamecontroldefault[gcs_fps][GC_SPIN ][0] = KEY_LSHIFT;
gamecontroldefault[gcs_fps][GC_SHIELD ][0] = KEY_LALT;
gamecontroldefault[gcs_fps][GC_FIRE ][0] = KEY_RCTRL; gamecontroldefault[gcs_fps][GC_FIRE ][0] = KEY_RCTRL;
gamecontroldefault[gcs_fps][GC_FIRE ][1] = KEY_MOUSE1+0; gamecontroldefault[gcs_fps][GC_FIRE ][1] = KEY_MOUSE1+0;
gamecontroldefault[gcs_fps][GC_FIRENORMAL ][0] = KEY_RALT; gamecontroldefault[gcs_fps][GC_FIRENORMAL ][0] = KEY_RALT;
...@@ -712,7 +713,6 @@ void G_DefineDefaultControls(void) ...@@ -712,7 +713,6 @@ void G_DefineDefaultControls(void)
gamecontroldefault[gcs_platform][GC_CENTERVIEW ][0] = KEY_END; gamecontroldefault[gcs_platform][GC_CENTERVIEW ][0] = KEY_END;
gamecontroldefault[gcs_platform][GC_JUMP ][0] = KEY_SPACE; gamecontroldefault[gcs_platform][GC_JUMP ][0] = KEY_SPACE;
gamecontroldefault[gcs_platform][GC_SPIN ][0] = KEY_LSHIFT; gamecontroldefault[gcs_platform][GC_SPIN ][0] = KEY_LSHIFT;
gamecontroldefault[gcs_platform][GC_SHIELD ][0] = KEY_LALT;
gamecontroldefault[gcs_platform][GC_FIRE ][0] = 's'; gamecontroldefault[gcs_platform][GC_FIRE ][0] = 's';
gamecontroldefault[gcs_platform][GC_FIRE ][1] = KEY_MOUSE1+0; gamecontroldefault[gcs_platform][GC_FIRE ][1] = KEY_MOUSE1+0;
gamecontroldefault[gcs_platform][GC_FIRENORMAL ][0] = 'w'; gamecontroldefault[gcs_platform][GC_FIRENORMAL ][0] = 'w';
...@@ -728,6 +728,9 @@ void G_DefineDefaultControls(void) ...@@ -728,6 +728,9 @@ void G_DefineDefaultControls(void)
gamecontroldefault[i][GC_WEPSLOT5 ][0] = '5'; gamecontroldefault[i][GC_WEPSLOT5 ][0] = '5';
gamecontroldefault[i][GC_WEPSLOT6 ][0] = '6'; gamecontroldefault[i][GC_WEPSLOT6 ][0] = '6';
gamecontroldefault[i][GC_WEPSLOT7 ][0] = '7'; gamecontroldefault[i][GC_WEPSLOT7 ][0] = '7';
gamecontroldefault[i][GC_WEPSLOT8 ][0] = '8';
gamecontroldefault[i][GC_WEPSLOT9 ][0] = '9';
gamecontroldefault[i][GC_WEPSLOT10 ][0] = '0';
gamecontroldefault[i][GC_TOSSFLAG ][0] = '\''; gamecontroldefault[i][GC_TOSSFLAG ][0] = '\'';
gamecontroldefault[i][GC_CAMTOGGLE ][0] = 'v'; gamecontroldefault[i][GC_CAMTOGGLE ][0] = 'v';
gamecontroldefault[i][GC_CAMRESET ][0] = 'r'; gamecontroldefault[i][GC_CAMRESET ][0] = 'r';
...@@ -743,34 +746,34 @@ void G_DefineDefaultControls(void) ...@@ -743,34 +746,34 @@ void G_DefineDefaultControls(void)
// Gamepad controls -- same for both schemes // Gamepad controls -- same for both schemes
gamecontroldefault[i][GC_JUMP ][1] = KEY_JOY1+0; // A gamecontroldefault[i][GC_JUMP ][1] = KEY_JOY1+0; // A
gamecontroldefault[i][GC_SPIN ][1] = KEY_JOY1+2; // X gamecontroldefault[i][GC_SPIN ][1] = KEY_JOY1+2; // X
gamecontroldefault[i][GC_SHIELD ][1] = KEY_JOY1+1; // B gamecontroldefault[i][GC_CUSTOM1 ][1] = KEY_JOY1+1; // B
gamecontroldefault[i][GC_CUSTOM1 ][1] = KEY_JOY1+3; // Y gamecontroldefault[i][GC_CUSTOM2 ][1] = KEY_JOY1+3; // Y
gamecontroldefault[i][GC_CUSTOM2 ][1] = KEY_JOY1+4; // LB
gamecontroldefault[i][GC_CENTERVIEW ][1] = KEY_JOY1+5; // RB
gamecontroldefault[i][GC_CUSTOM3 ][1] = KEY_JOY1+8; // Left Stick gamecontroldefault[i][GC_CUSTOM3 ][1] = KEY_JOY1+8; // Left Stick
gamecontroldefault[i][GC_CAMTOGGLE ][1] = KEY_JOY1+9; // Right Stick gamecontroldefault[i][GC_CAMTOGGLE ][1] = KEY_JOY1+4; // LB
gamecontroldefault[i][GC_SCORES ][1] = KEY_JOY1+6; // Back gamecontroldefault[i][GC_CENTERVIEW ][1] = KEY_JOY1+5; // RB
gamecontroldefault[i][GC_SCREENSHOT ][1] = KEY_JOY1+6; // Back
gamecontroldefault[i][GC_SYSTEMMENU ][0] = KEY_JOY1+7; // Start gamecontroldefault[i][GC_SYSTEMMENU ][0] = KEY_JOY1+7; // Start
gamecontroldefault[i][GC_VIEWPOINTNEXT][1] = KEY_HAT1+0; // D-Pad Up
gamecontroldefault[i][GC_TOSSFLAG ][1] = KEY_HAT1+1; // D-Pad Down
gamecontroldefault[i][GC_WEAPONPREV ][1] = KEY_HAT1+2; // D-Pad Left gamecontroldefault[i][GC_WEAPONPREV ][1] = KEY_HAT1+2; // D-Pad Left
gamecontroldefault[i][GC_WEAPONNEXT ][1] = KEY_HAT1+3; // D-Pad Right gamecontroldefault[i][GC_WEAPONNEXT ][1] = KEY_HAT1+3; // D-Pad Right
gamecontroldefault[i][GC_VIEWPOINTNEXT][1] = KEY_JOY1+9; // Right Stick
gamecontroldefault[i][GC_TOSSFLAG ][1] = KEY_HAT1+0; // D-Pad Up
gamecontroldefault[i][GC_SCORES ][1] = KEY_HAT1+1; // D-Pad Down
// Second player controls only have joypad defaults // Second player controls only have joypad defaults
gamecontrolbisdefault[i][GC_JUMP ][1] = KEY_2JOY1+0; // A gamecontrolbisdefault[i][GC_JUMP ][1] = KEY_2JOY1+0; // A
gamecontrolbisdefault[i][GC_SPIN ][1] = KEY_2JOY1+2; // X gamecontrolbisdefault[i][GC_SPIN ][1] = KEY_2JOY1+2; // X
gamecontrolbisdefault[i][GC_SHIELD ][1] = KEY_2JOY1+1; // B gamecontrolbisdefault[i][GC_CUSTOM1 ][1] = KEY_2JOY1+1; // B
gamecontrolbisdefault[i][GC_CUSTOM1 ][1] = KEY_2JOY1+3; // Y gamecontrolbisdefault[i][GC_CUSTOM2 ][1] = KEY_2JOY1+3; // Y
gamecontrolbisdefault[i][GC_CUSTOM2 ][1] = KEY_2JOY1+4; // LB
gamecontrolbisdefault[i][GC_CENTERVIEW ][1] = KEY_2JOY1+5; // RB
gamecontrolbisdefault[i][GC_CUSTOM3 ][1] = KEY_2JOY1+8; // Left Stick gamecontrolbisdefault[i][GC_CUSTOM3 ][1] = KEY_2JOY1+8; // Left Stick
gamecontrolbisdefault[i][GC_CAMTOGGLE ][1] = KEY_2JOY1+9; // Right Stick gamecontrolbisdefault[i][GC_CAMTOGGLE ][1] = KEY_2JOY1+4; // LB
//gamecontrolbisdefault[i][GC_SCORES ][1] = KEY_2JOY1+6; // Back gamecontrolbisdefault[i][GC_CENTERVIEW ][1] = KEY_2JOY1+5; // RB
gamecontrolbisdefault[i][GC_SCREENSHOT ][1] = KEY_2JOY1+6; // Back
//gamecontrolbisdefault[i][GC_SYSTEMMENU ][0] = KEY_2JOY1+7; // Start //gamecontrolbisdefault[i][GC_SYSTEMMENU ][0] = KEY_2JOY1+7; // Start
gamecontrolbisdefault[i][GC_VIEWPOINTNEXT][1] = KEY_2HAT1+0; // D-Pad Up
gamecontrolbisdefault[i][GC_TOSSFLAG ][1] = KEY_2HAT1+1; // D-Pad Down
gamecontrolbisdefault[i][GC_WEAPONPREV ][1] = KEY_2HAT1+2; // D-Pad Left gamecontrolbisdefault[i][GC_WEAPONPREV ][1] = KEY_2HAT1+2; // D-Pad Left
gamecontrolbisdefault[i][GC_WEAPONNEXT ][1] = KEY_2HAT1+3; // D-Pad Right gamecontrolbisdefault[i][GC_WEAPONNEXT ][1] = KEY_2HAT1+3; // D-Pad Right
gamecontrolbisdefault[i][GC_VIEWPOINTNEXT][1] = KEY_2JOY1+9; // Right Stick
gamecontrolbisdefault[i][GC_TOSSFLAG ][1] = KEY_2HAT1+0; // D-Pad Up
//gamecontrolbisdefault[i][GC_SCORES ][1] = KEY_2HAT1+1; // D-Pad Down
} }
} }
......
...@@ -74,7 +74,9 @@ typedef enum ...@@ -74,7 +74,9 @@ typedef enum
GC_WEPSLOT5, GC_WEPSLOT5,
GC_WEPSLOT6, GC_WEPSLOT6,
GC_WEPSLOT7, GC_WEPSLOT7,
GC_SHIELD, GC_WEPSLOT8,
GC_WEPSLOT9,
GC_WEPSLOT10,
GC_FIRE, GC_FIRE,
GC_FIRENORMAL, GC_FIRENORMAL,
GC_TOSSFLAG, GC_TOSSFLAG,
......
...@@ -483,11 +483,14 @@ static void HWR_GenerateTexture(INT32 texnum, GLMapTexture_t *grtex, GLMipmap_t ...@@ -483,11 +483,14 @@ static void HWR_GenerateTexture(INT32 texnum, GLMapTexture_t *grtex, GLMipmap_t
realpatch = W_CachePatchNumPwad(wadnum, lumpnum, PU_PATCH); realpatch = W_CachePatchNumPwad(wadnum, lumpnum, PU_PATCH);
} }
if (realpatch != NULL)
{
HWR_DrawTexturePatchInCache(mipmap, blockwidth, blockheight, texture, patch, realpatch); HWR_DrawTexturePatchInCache(mipmap, blockwidth, blockheight, texture, patch, realpatch);
if (free_patch) if (free_patch)
Patch_Free(realpatch); Patch_Free(realpatch);
} }
}
//Hurdler: not efficient at all but I don't remember exactly how HWR_DrawPatchInCache works :( //Hurdler: not efficient at all but I don't remember exactly how HWR_DrawPatchInCache works :(
if (format2bpp(mipmap->format)==4) if (format2bpp(mipmap->format)==4)
{ {
......
...@@ -256,8 +256,8 @@ void HWR_DrawStretchyFixedPatch(patch_t *gpatch, fixed_t x, fixed_t y, fixed_t p ...@@ -256,8 +256,8 @@ void HWR_DrawStretchyFixedPatch(patch_t *gpatch, fixed_t x, fixed_t y, fixed_t p
} }
// positions of the cx, cy, are between 0 and vid.width/vid.height now, we need them to be between -1 and 1 // positions of the cx, cy, are between 0 and vid.width/vid.height now, we need them to be between -1 and 1
cx = -1 + (cx / (vid.width/2)); cx = -1.0f + (cx / (vid.width / 2.0f));
cy = 1 - (cy / (vid.height/2)); cy = 1.0f - (cy / (vid.height / 2.0f));
// fwidth and fheight are similar // fwidth and fheight are similar
fwidth /= vid.width / 2; fwidth /= vid.width / 2;
...@@ -598,43 +598,76 @@ void HWR_DrawCroppedPatch(patch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscale, ...@@ -598,43 +598,76 @@ void HWR_DrawCroppedPatch(patch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscale,
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Fills a box of pixels using a flat texture as a pattern // Fills a box of pixels using a flat texture as a pattern
// Fixed to properly align like the other draw functions -luigi budd
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
void HWR_DrawFlatFill(INT32 x, INT32 y, INT32 w, INT32 h, lumpnum_t flatlumpnum) void HWR_DrawFlatFill(INT32 x, INT32 y, INT32 w, INT32 h, lumpnum_t flatlumpnum)
{ {
FOutVector v[4]; FOutVector v[4];
const size_t len = W_LumpLength(flatlumpnum); const size_t len = W_LumpLength(flatlumpnum);
UINT16 flatflag = R_GetFlatSize(len) - 1; UINT16 flatflag = R_GetFlatSize(len);
double dflatsize = (double)(flatflag + 1); double dflatsize = (double)(flatflag);
// compilers are COOL!
float dup = (float)vid.dup;
float fx = (float)x * dup;
float fy = (float)y * dup;
float fw = (float)w * dup;
float fh = (float)h * dup;
/*
fx *= dup;
fy *= dup;
fw *= dup;
fh *= dup;
*/
if (fw <= 0 || fh <= 0)
return;
if (fabsf((float)vid.width - (float)BASEVIDWIDTH * vid.dup) > 1.0E-36f)
{
fx += ((float)vid.width - ((float)BASEVIDWIDTH * vid.dup)) / 2;
}
if (fabsf((float)vid.height - (float)BASEVIDHEIGHT * vid.dup) > 1.0E-36f)
{
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * vid.dup)) / 2;
}
if (fx >= vid.width || fy >= vid.height)
return;
fx = -1.0f + (fx / (vid.width / 2.0f));
fy = 1.0f - (fy / (vid.height / 2.0f));
fw /= vid.width / 2;
fh /= vid.height / 2;
// 3--2 // 3--2
// | /| // | /|
// |/ | // |/ |
// 0--1 // 0--1
v[0].x = v[3].x = (x - 160.0f)/160.0f; // position vertices
v[2].x = v[1].x = ((x+w) - 160.0f)/160.0f; v[0].x = v[3].x = fx;
v[0].y = v[1].y = -(y - 100.0f)/100.0f; v[2].x = v[1].x = fx + fw;
v[2].y = v[3].y = -((y+h) - 100.0f)/100.0f;
v[0].y = v[1].y = fy;
v[2].y = v[3].y = fy - fh;
v[0].z = v[1].z = v[2].z = v[3].z = 1.0f; v[0].z = v[1].z = v[2].z = v[3].z = 1.0f;
v[0].s = v[3].s = (float)((x & flatflag)/dflatsize); // sides
v[2].s = v[1].s = (float)(v[0].s + w/dflatsize); v[0].s = v[3].s = (float)(flatflag/dflatsize) * 2;
v[0].t = v[1].t = (float)((y & flatflag)/dflatsize); v[2].s = v[1].s = (float)(v[0].s + w/dflatsize) * 2;
v[2].t = v[3].t = (float)(v[0].t + h/dflatsize);
HWR_GetRawFlat(flatlumpnum); // top/bottom
v[0].t = v[1].t = (float)(flatflag/dflatsize) * 2;
v[2].t = v[3].t = (float)(v[0].t + h/dflatsize) * 2;
//Hurdler: Boris, the same comment as above... but maybe for pics // needed to texture the poly
// it not a problem since they don't have any transparent pixel HWR_GetRawFlat(flatlumpnum);
// if I'm right !?
// BTW, I see we put 0 for PFs, and If I'm right, that
// means we take the previous PFs as default
// how can we be sure they are ok?
HWD.pfnDrawPolygon(NULL, v, 4, PF_NoDepthTest); //PF_Translucent); HWD.pfnDrawPolygon(NULL, v, 4, PF_NoDepthTest); //PF_Translucent);
} }
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Fade down the screen so that the menu drawn on top of it looks brighter // Fade down the screen so that the menu drawn on top of it looks brighter
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -1140,10 +1173,12 @@ void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT32 ...@@ -1140,10 +1173,12 @@ void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT32
void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color) void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color)
{ {
FOutVector v[4]; FOutVector v[4];
FBITFIELD flags;
FSurfaceInfo Surf; FSurfaceInfo Surf;
float fx, fy, fw, fh; float fx, fy, fw, fh;
RGBA_t *palette = HWR_GetTexturePalette(); RGBA_t *palette = HWR_GetTexturePalette();
UINT8 alphalevel = ((color & V_ALPHAMASK) >> V_ALPHASHIFT); UINT8 alphalevel = ((color & V_ALPHAMASK) >> V_ALPHASHIFT);
UINT8 blendmode = ((color & V_BLENDMASK) >> V_BLENDSHIFT);
UINT8 perplayershuffle = 0; UINT8 perplayershuffle = 0;
...@@ -1308,6 +1343,199 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color) ...@@ -1308,6 +1343,199 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color)
Surf.PolyColor = palette[color&0xFF]; Surf.PolyColor = palette[color&0xFF];
flags = HWR_GetBlendModeFlag(blendmode+1)|PF_NoDepthTest|PF_NoTexture|PF_Modulated;
if (alphalevel)
{
if (alphalevel == 10) Surf.PolyColor.s.alpha = softwaretranstogl_lo[st_translucency]; // V_HUDTRANSHALF
else if (alphalevel == 11) Surf.PolyColor.s.alpha = softwaretranstogl[st_translucency]; // V_HUDTRANS
else if (alphalevel == 12) Surf.PolyColor.s.alpha = softwaretranstogl_hi[st_translucency]; // V_HUDTRANSDOUBLE
else Surf.PolyColor.s.alpha = softwaretranstogl[10-alphalevel];
}
HWD.pfnDrawPolygon(&Surf, v, 4,
flags);
}
// -----------------+
// HWR_DrawFixedFill: draw flat coloured rectangle, with no texture (with fixed point values !!)
// -----------------+
void HWR_DrawFixedFill(fixed_t x, fixed_t y, fixed_t w, fixed_t h, INT32 color)
{
FOutVector v[4];
FSurfaceInfo Surf;
FBITFIELD flags;
float fx = FIXED_TO_FLOAT(x);
float fy = FIXED_TO_FLOAT(y);
float fw = FIXED_TO_FLOAT(w);
float fh = FIXED_TO_FLOAT(h);
RGBA_t *palette = HWR_GetTexturePalette();
UINT8 alphalevel = ((color & V_ALPHAMASK) >> V_ALPHASHIFT);
UINT8 blendmode = ((color & V_BLENDMASK) >> V_BLENDSHIFT);
UINT8 perplayershuffle = 0;
// 3--2
// | /|
// |/ |
// 0--1
if (splitscreen && (color & V_PERPLAYER))
{
float adjusty = ((color & V_NOSCALESTART) ? vid.height : BASEVIDHEIGHT)/2.0f;
fh /= 1;
fy /= 2;
#ifdef QUADS
if (splitscreen > 1) // 3 or 4 players
{
float adjustx = ((color & V_NOSCALESTART) ? vid.height : BASEVIDHEIGHT)/2.0f;
fw /= 2;
fx /= 2;
if (stplyr == &players[displayplayer])
{
if (!(color & (V_SNAPTOTOP|V_SNAPTOBOTTOM)))
perplayershuffle |= 1;
if (!(color & (V_SNAPTOLEFT|V_SNAPTORIGHT)))
perplayershuffle |= 4;
color &= ~V_SNAPTOBOTTOM|V_SNAPTORIGHT;
}
else if (stplyr == &players[secondarydisplayplayer])
{
if (!(color & (V_SNAPTOTOP|V_SNAPTOBOTTOM)))
perplayershuffle |= 1;
if (!(color & (V_SNAPTOLEFT|V_SNAPTORIGHT)))
perplayershuffle |= 8;
fx += adjustx;
color &= ~V_SNAPTOBOTTOM|V_SNAPTOLEFT;
}
else if (stplyr == &players[thirddisplayplayer])
{
if (!(color & (V_SNAPTOTOP|V_SNAPTOBOTTOM)))
perplayershuffle |= 2;
if (!(color & (V_SNAPTOLEFT|V_SNAPTORIGHT)))
perplayershuffle |= 4;
fy += adjusty;
color &= ~V_SNAPTOTOP|V_SNAPTORIGHT;
}
else //if (stplyr == &players[fourthdisplayplayer])
{
if (!(color & (V_SNAPTOTOP|V_SNAPTOBOTTOM)))
perplayershuffle |= 2;
if (!(color & (V_SNAPTOLEFT|V_SNAPTORIGHT)))
perplayershuffle |= 8;
fx += adjustx;
fy += adjusty;
color &= ~V_SNAPTOTOP|V_SNAPTOLEFT;
}
}
else
#endif
// 2 players
{
if (stplyr == &players[displayplayer])
{
if (!(color & (V_SNAPTOTOP|V_SNAPTOBOTTOM)))
perplayershuffle |= 1;
color &= ~V_SNAPTOBOTTOM;
}
else //if (stplyr == &players[secondarydisplayplayer])
{
if (!(color & (V_SNAPTOTOP|V_SNAPTOBOTTOM)))
perplayershuffle |= 2;
fy += adjusty;
color &= ~V_SNAPTOTOP;
}
}
}
if (!(color & V_NOSCALESTART))
{
/*
if (x == 0 && y == 0 && w == BASEVIDWIDTH && h == BASEVIDHEIGHT)
{
RGBA_t rgbaColour = palette[color&0xFF];
FRGBAFloat clearColour;
clearColour.red = (float)rgbaColour.s.red / 255;
clearColour.green = (float)rgbaColour.s.green / 255;
clearColour.blue = (float)rgbaColour.s.blue / 255;
clearColour.alpha = 1;
HWD.pfnClearBuffer(true, false, &clearColour);
return;
}
*/
fx *= vid.dup;
fy *= vid.dup;
fw *= vid.dup;
fh *= vid.dup;
if (fabsf((float)vid.width - (float)BASEVIDWIDTH * vid.dup) > 1.0E-36f)
{
if (color & V_SNAPTORIGHT)
fx += ((float)vid.width - ((float)BASEVIDWIDTH * vid.dup));
else if (!(color & V_SNAPTOLEFT))
fx += ((float)vid.width - ((float)BASEVIDWIDTH * vid.dup)) / 2;
if (perplayershuffle & 4)
fx -= ((float)vid.width - ((float)BASEVIDWIDTH * vid.dup)) / 4;
else if (perplayershuffle & 8)
fx += ((float)vid.width - ((float)BASEVIDWIDTH * vid.dup)) / 4;
}
if (fabsf((float)vid.height - (float)BASEVIDHEIGHT * vid.dup) > 1.0E-36f)
{
// same thing here
if (color & V_SNAPTOBOTTOM)
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * vid.dup));
else if (!(color & V_SNAPTOTOP))
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * vid.dup)) / 2;
if (perplayershuffle & 1)
fy -= ((float)vid.height - ((float)BASEVIDHEIGHT * vid.dup)) / 4;
else if (perplayershuffle & 2)
fy += ((float)vid.height - ((float)BASEVIDHEIGHT * vid.dup)) / 4;
}
}
if (fx >= vid.width || fy >= vid.height)
return;
if (fx < 0)
{
fw += fx;
fx = 0;
}
if (fy < 0)
{
fh += fy;
fy = 0;
}
if (fw <= 0 || fh <= 0)
return;
if (fx + fw > vid.width)
fw = (float)vid.width - fx;
if (fy + fh > vid.height)
fh = (float)vid.height - fy;
fx = -1.0f + (fx / (vid.width / 2.0f));
fy = 1.0f - (fy / (vid.height / 2.0f));
fw = fw / (vid.width / 2);
fh = fh / (vid.height / 2);
v[0].x = v[3].x = fx;
v[2].x = v[1].x = fx + fw;
v[0].y = v[1].y = fy;
v[2].y = v[3].y = fy - fh;
v[0].z = v[1].z = v[2].z = v[3].z = 1.0f;
v[0].s = v[3].s = 0.0f;
v[2].s = v[1].s = 1.0f;
v[0].t = v[1].t = 0.0f;
v[2].t = v[3].t = 1.0f;
Surf.PolyColor = palette[color&0xFF];
flags = HWR_GetBlendModeFlag(blendmode+1)|PF_NoDepthTest|PF_NoTexture|PF_Modulated;
if (alphalevel) if (alphalevel)
{ {
if (alphalevel == 10) Surf.PolyColor.s.alpha = softwaretranstogl_lo[st_translucency]; // V_HUDTRANSHALF if (alphalevel == 10) Surf.PolyColor.s.alpha = softwaretranstogl_lo[st_translucency]; // V_HUDTRANSHALF
...@@ -1317,7 +1545,7 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color) ...@@ -1317,7 +1545,7 @@ void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color)
} }
HWD.pfnDrawPolygon(&Surf, v, 4, HWD.pfnDrawPolygon(&Surf, v, 4,
PF_Modulated|PF_NoTexture|PF_NoDepthTest|PF_Translucent); flags);
} }
#ifdef HAVE_PNG #ifdef HAVE_PNG
......
...@@ -485,15 +485,6 @@ light_t *t_lspr[NUMSPRITES] = ...@@ -485,15 +485,6 @@ light_t *t_lspr[NUMSPRITES] =
&lspr[NOLIGHT], // SPR_SSWY &lspr[NOLIGHT], // SPR_SSWY
&lspr[NOLIGHT], // SPR_SSWR &lspr[NOLIGHT], // SPR_SSWR
&lspr[NOLIGHT], // SPR_SSWB &lspr[NOLIGHT], // SPR_SSWB
&lspr[NOLIGHT], // SPR_MPRY
&lspr[NOLIGHT], // SPR_MPRR
&lspr[NOLIGHT], // SPR_MPRB
&lspr[NOLIGHT], // SPR_MSWY
&lspr[NOLIGHT], // SPR_MSWR
&lspr[NOLIGHT], // SPR_MSWB
&lspr[NOLIGHT], // SPR_MDIY
&lspr[NOLIGHT], // SPR_MDIR
&lspr[NOLIGHT], // SPR_MDIB
&lspr[NOLIGHT], // SPR_BSTY &lspr[NOLIGHT], // SPR_BSTY
&lspr[NOLIGHT], // SPR_BSTR &lspr[NOLIGHT], // SPR_BSTR
...@@ -552,7 +543,6 @@ light_t *t_lspr[NUMSPRITES] = ...@@ -552,7 +543,6 @@ light_t *t_lspr[NUMSPRITES] =
&lspr[NOLIGHT], // SPR_BGOM &lspr[NOLIGHT], // SPR_BGOM
&lspr[REDBALL_L], // SPR_FFWR &lspr[REDBALL_L], // SPR_FFWR
&lspr[SMALLREDBALL_L], // SPR_FBLL &lspr[SMALLREDBALL_L], // SPR_FBLL
&lspr[NOLIGHT], // SPR_MKOP
&lspr[NOLIGHT], // SPR_SHLL &lspr[NOLIGHT], // SPR_SHLL
&lspr[REDBALL_L], // SPR_PUMA &lspr[REDBALL_L], // SPR_PUMA
&lspr[NOLIGHT], // SPR_HAMM &lspr[NOLIGHT], // SPR_HAMM
...@@ -623,22 +613,6 @@ light_t *t_lspr[NUMSPRITES] = ...@@ -623,22 +613,6 @@ light_t *t_lspr[NUMSPRITES] =
&lspr[NOLIGHT], // SPR_BRIR &lspr[NOLIGHT], // SPR_BRIR
&lspr[NOLIGHT], // SPR_BRIB &lspr[NOLIGHT], // SPR_BRIB
&lspr[NOLIGHT], // SPR_BRIY &lspr[NOLIGHT], // SPR_BRIY
&lspr[NOLIGHT], // SPR_MBRI
&lspr[NOLIGHT], // SPR_MBRS
&lspr[NOLIGHT], // SPR_MBRB
&lspr[NOLIGHT], // SPR_MBRC
&lspr[NOLIGHT], // SPR_MTRI
&lspr[NOLIGHT], // SPR_MARS
&lspr[NOLIGHT], // SPR_MRFL
&lspr[NOLIGHT], // SPR_MAUH
&lspr[NOLIGHT], // SPR_MBSA
&lspr[NOLIGHT], // SPR_MBSB
&lspr[NOLIGHT], // SPR_MBSC
&lspr[NOLIGHT], // SPR_MFRE
&lspr[NOLIGHT], // SPR_MFYE
&lspr[NOLIGHT], // SPR_MFBE
&lspr[NOLIGHT], // SPR_MFWD
&lspr[NOLIGHT], // SPR_MUS3
// Gravity Well Objects // Gravity Well Objects
&lspr[NOLIGHT], // SPR_GWLG &lspr[NOLIGHT], // SPR_GWLG
......
...@@ -2671,45 +2671,31 @@ fixed_t *hwbbox; ...@@ -2671,45 +2671,31 @@ fixed_t *hwbbox;
static void HWR_RenderBSPNode(INT32 bspnum) static void HWR_RenderBSPNode(INT32 bspnum)
{ {
node_t *bsp = &nodes[bspnum]; node_t *bsp;
// Decide which side the view point is on
INT32 side; INT32 side;
ps_numbspcalls.value.i++; ps_numbspcalls.value.i++;
// Found a subsector? while (!(bspnum & NF_SUBSECTOR)) // Found a subsector?
if (bspnum & NF_SUBSECTOR)
{
if (bspnum == -1)
{
//*(gl_drawsubsector_p++) = 0;
HWR_Subsector(0);
}
else
{ {
//*(gl_drawsubsector_p++) = bspnum&(~NF_SUBSECTOR); bsp = &nodes[bspnum];
HWR_Subsector(bspnum&(~NF_SUBSECTOR));
}
return;
}
// Decide which side the view point is on. // Decide which side the view point is on.
side = R_PointOnSide(viewx, viewy, bsp); side = R_PointOnSide(viewx, viewy, bsp);
// BP: big hack for a test in lighning ref : 1249753487AB // BP: big hack for a test in lighning ref : 1249753487AB
hwbbox = bsp->bbox[side]; hwbbox = bsp->bbox[side];
// Recursively divide front space. // Recursively divide front space.
HWR_RenderBSPNode(bsp->children[side]); HWR_RenderBSPNode(bsp->children[side]);
// Possibly divide back space. // Possibly divide back space.
if (HWR_CheckBBox(bsp->bbox[side^1]))
{ if (!HWR_CheckBBox(bsp->bbox[side^1]))
// BP: big hack for a test in lighning ref : 1249753487AB return;
hwbbox = bsp->bbox[side^1];
HWR_RenderBSPNode(bsp->children[side^1]); bspnum = bsp->children[side^1];
} }
HWR_Subsector(bspnum == -1 ? 0 : bspnum & ~NF_SUBSECTOR);
} }
// ========================================================================== // ==========================================================================
...@@ -5675,7 +5661,6 @@ void HWR_LoadLevel(void) ...@@ -5675,7 +5661,6 @@ void HWR_LoadLevel(void)
// ========================================================================== // ==========================================================================
static CV_PossibleValue_t glshaders_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Ignore custom shaders"}, {0, NULL}}; static CV_PossibleValue_t glshaders_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Ignore custom shaders"}, {0, NULL}};
static CV_PossibleValue_t glmodelinterpolation_cons_t[] = {{0, "Off"}, {1, "Sometimes"}, {2, "Always"}, {0, NULL}};
static CV_PossibleValue_t glfakecontrast_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Smooth"}, {0, NULL}}; static CV_PossibleValue_t glfakecontrast_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Smooth"}, {0, NULL}};
static CV_PossibleValue_t glshearing_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Third-person"}, {0, NULL}}; static CV_PossibleValue_t glshearing_cons_t[] = {{0, "Off"}, {1, "On"}, {2, "Third-person"}, {0, NULL}};
...@@ -5704,7 +5689,7 @@ consvar_t cv_glcoronasize = CVAR_INIT ("gr_coronasize", "1", CV_SAVE|CV_FLOAT, 0 ...@@ -5704,7 +5689,7 @@ consvar_t cv_glcoronasize = CVAR_INIT ("gr_coronasize", "1", CV_SAVE|CV_FLOAT, 0
#endif #endif
consvar_t cv_glmodels = CVAR_INIT ("gr_models", "Off", CV_SAVE, CV_OnOff, NULL); consvar_t cv_glmodels = CVAR_INIT ("gr_models", "Off", CV_SAVE, CV_OnOff, NULL);
consvar_t cv_glmodelinterpolation = CVAR_INIT ("gr_modelinterpolation", "Sometimes", CV_SAVE, glmodelinterpolation_cons_t, NULL); consvar_t cv_glmodelinterpolation = CVAR_INIT ("gr_modelinterpolation", "On", CV_SAVE, CV_OnOff, NULL);
consvar_t cv_glmodellighting = CVAR_INIT ("gr_modellighting", "Off", CV_SAVE|CV_CALL, CV_OnOff, CV_glmodellighting_OnChange); consvar_t cv_glmodellighting = CVAR_INIT ("gr_modellighting", "Off", CV_SAVE|CV_CALL, CV_OnOff, CV_glmodellighting_OnChange);
consvar_t cv_glshearing = CVAR_INIT ("gr_shearing", "Off", CV_SAVE, glshearing_cons_t, NULL); consvar_t cv_glshearing = CVAR_INIT ("gr_shearing", "Off", CV_SAVE, glshearing_cons_t, NULL);
......
...@@ -43,6 +43,7 @@ void HWR_MakePatch(const patch_t *patch, GLPatch_t *grPatch, GLMipmap_t *grMipma ...@@ -43,6 +43,7 @@ void HWR_MakePatch(const patch_t *patch, GLPatch_t *grPatch, GLMipmap_t *grMipma
void HWR_CreatePlanePolygons(INT32 bspnum); void HWR_CreatePlanePolygons(INT32 bspnum);
void HWR_CreateStaticLightmaps(INT32 bspnum); void HWR_CreateStaticLightmaps(INT32 bspnum);
void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color); void HWR_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color);
void HWR_DrawFixedFill(fixed_t x, fixed_t y, fixed_t w, fixed_t h, INT32 color);
void HWR_DrawFadeFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT16 actualcolor, UINT8 strength); void HWR_DrawFadeFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT16 actualcolor, UINT8 strength);
void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT32 actualcolor); // Lat: separate flags from color since color needs to be an uint to work right. void HWR_DrawConsoleFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 color, UINT32 actualcolor); // Lat: separate flags from color since color needs to be an uint to work right.
......
...@@ -1062,15 +1062,11 @@ static boolean HWR_AllowModel(mobj_t *mobj) ...@@ -1062,15 +1062,11 @@ static boolean HWR_AllowModel(mobj_t *mobj)
static boolean HWR_CanInterpolateModel(mobj_t *mobj, model_t *model) static boolean HWR_CanInterpolateModel(mobj_t *mobj, model_t *model)
{ {
if (cv_glmodelinterpolation.value == 2) // Always interpolate
return true;
return model->interpolate[(mobj->frame & FF_FRAMEMASK)]; return model->interpolate[(mobj->frame & FF_FRAMEMASK)];
} }
static boolean HWR_CanInterpolateSprite2(modelspr2frames_t *spr2frame) static boolean HWR_CanInterpolateSprite2(modelspr2frames_t *spr2frame)
{ {
if (cv_glmodelinterpolation.value == 2) // Always interpolate
return true;
return spr2frame->interpolate; return spr2frame->interpolate;
} }
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
#include "lua_hud.h" #include "lua_hud.h"
#include "lua_hudlib_drawlist.h" #include "lua_hudlib_drawlist.h"
#include "lua_hook.h" #include "lua_hook.h"
#include "lua_libs.h"
// coords are scaled // coords are scaled
#define HU_INPUTX 0 #define HU_INPUTX 0
...@@ -396,7 +397,10 @@ void HU_AddChatText(const char *text, boolean playsound) ...@@ -396,7 +397,10 @@ void HU_AddChatText(const char *text, boolean playsound)
if (OLDCHAT) // if we're using oldchat, print directly in console if (OLDCHAT) // if we're using oldchat, print directly in console
CONS_Printf("%s\n", text); CONS_Printf("%s\n", text);
else // if we aren't, still save the message to log.txt else // if we aren't, still save the message to log.txt
CON_LogMessage(va("%s\n", text)); {
CON_LogMessage(text);
CON_LogMessage("\n"); // Add newline. Don't use va for that, since `text` might be refering to va's buffer itself
}
} }
/** Runs a say command, sending an ::XD_SAY message. /** Runs a say command, sending an ::XD_SAY message.
...@@ -1013,7 +1017,7 @@ static void HU_sendChatMessage(void) ...@@ -1013,7 +1017,7 @@ static void HU_sendChatMessage(void)
void HU_clearChatChars(void) void HU_clearChatChars(void)
{ {
memset(w_chat, '\0', sizeof(w_chat)); memset(w_chat, '\0', sizeof(w_chat));
I_SetTextInputMode(false); I_SetTextInputMode(textinputmodeenabledbylua);
chat_on = false; chat_on = false;
c_input = 0; c_input = 0;
...@@ -1150,7 +1154,7 @@ boolean HU_Responder(event_t *ev) ...@@ -1150,7 +1154,7 @@ boolean HU_Responder(event_t *ev)
if (!CHAT_MUTE) if (!CHAT_MUTE)
HU_sendChatMessage(); HU_sendChatMessage();
I_SetTextInputMode(false); I_SetTextInputMode(textinputmodeenabledbylua);
chat_on = false; chat_on = false;
c_input = 0; // reset input cursor c_input = 0; // reset input cursor
chat_scrollmedown = true; // you hit enter, so you might wanna autoscroll to see what you just sent. :) chat_scrollmedown = true; // you hit enter, so you might wanna autoscroll to see what you just sent. :)
...@@ -1161,7 +1165,7 @@ boolean HU_Responder(event_t *ev) ...@@ -1161,7 +1165,7 @@ boolean HU_Responder(event_t *ev)
|| c == gamecontrol[GC_TEAMKEY][0] || c == gamecontrol[GC_TEAMKEY][1]) || c == gamecontrol[GC_TEAMKEY][0] || c == gamecontrol[GC_TEAMKEY][1])
&& c >= KEY_MOUSE1)) // If it's not a keyboard key, then the chat button is used as a toggle. && c >= KEY_MOUSE1)) // If it's not a keyboard key, then the chat button is used as a toggle.
{ {
I_SetTextInputMode(false); I_SetTextInputMode(textinputmodeenabledbylua);
chat_on = false; chat_on = false;
c_input = 0; // reset input cursor c_input = 0; // reset input cursor
I_UpdateMouseGrab(); I_UpdateMouseGrab();
...@@ -1747,6 +1751,9 @@ static void HU_DrawDemoInfo(void) ...@@ -1747,6 +1751,9 @@ static void HU_DrawDemoInfo(void)
// Heads up displays drawer, call each frame // Heads up displays drawer, call each frame
// //
void HU_Drawer(void) void HU_Drawer(void)
{
if (LUA_HudEnabled(hud_chat))
{ {
// draw chat string plus cursor // draw chat string plus cursor
if (chat_on) if (chat_on)
...@@ -1764,8 +1771,9 @@ void HU_Drawer(void) ...@@ -1764,8 +1771,9 @@ void HU_Drawer(void)
if (!OLDCHAT && cv_consolechat.value < 2 && netgame) // Don't display minimized chat if you set the mode to Window (Hidden) if (!OLDCHAT && cv_consolechat.value < 2 && netgame) // Don't display minimized chat if you set the mode to Window (Hidden)
HU_drawMiniChat(); // draw messages in a cool fashion. HU_drawMiniChat(); // draw messages in a cool fashion.
} }
}
if (cechotimer) if (cechotimer && LUA_HudEnabled(hud_cecho))
HU_DrawCEcho(); HU_DrawCEcho();
if (demoplayback && hu_showscores) if (demoplayback && hu_showscores)
......
This diff is collapsed.
...@@ -947,15 +947,6 @@ typedef enum sprite ...@@ -947,15 +947,6 @@ typedef enum sprite
SPR_SSWY, // Yellow Side Spring SPR_SSWY, // Yellow Side Spring
SPR_SSWR, // Red Side Spring SPR_SSWR, // Red Side Spring
SPR_SSWB, // Blue Side Spring SPR_SSWB, // Blue Side Spring
SPR_MPRY, // Yellow trampoline
SPR_MPRR, // Red trampoline
SPR_MPRB, // Blue trampoline
SPR_MSWY, // Yellow horizontal trampoline
SPR_MSWR, // Red horizontal trampoline
SPR_MSWB, // Blue horizontal trampoline
SPR_MDIY, // Yellow diagonal trampoline
SPR_MDIR, // Red diagonal trampoline
SPR_MDIB, // Blue diagonal trampoline
SPR_BSTY, // Yellow Booster SPR_BSTY, // Yellow Booster
SPR_BSTR, // Red Booster SPR_BSTR, // Red Booster
...@@ -1014,7 +1005,6 @@ typedef enum sprite ...@@ -1014,7 +1005,6 @@ typedef enum sprite
SPR_BGOM, SPR_BGOM,
SPR_FFWR, SPR_FFWR,
SPR_FBLL, SPR_FBLL,
SPR_MKOP,
SPR_SHLL, SPR_SHLL,
SPR_PUMA, SPR_PUMA,
SPR_HAMM, SPR_HAMM,
...@@ -1024,29 +1014,6 @@ typedef enum sprite ...@@ -1024,29 +1014,6 @@ typedef enum sprite
SPR_MUS1, SPR_MUS1,
SPR_MUS2, SPR_MUS2,
SPR_TOAD, SPR_TOAD,
SPR_MARS,
SPR_MRFL,
SPR_MAUH,
SPR_MBSA,
SPR_MBSB,
SPR_MBSC,
SPR_MFRE,
SPR_MFYE,
SPR_MFBE,
SPR_MFWD,
SPR_MUS3,
// Mario powerups
SPR_MSIV, // invincibility
SPR_MS1P, // 1-up
SPR_MSAT, // attract
SPR_MSFO, // force
SPR_MSAR, // nuke
SPR_MSWW, // whirlwind
SPR_MSEL, // elemental
SPR_MSSP, // speed shoes
SPR_MEGH, // poison
SPR_UPPB, // particle pickup
// NiGHTS Stuff // NiGHTS Stuff
SPR_NDRN, // NiGHTS drone SPR_NDRN, // NiGHTS drone
...@@ -1108,11 +1075,6 @@ typedef enum sprite ...@@ -1108,11 +1075,6 @@ typedef enum sprite
SPR_BRIR, // CEZ3 colored bricks SPR_BRIR, // CEZ3 colored bricks
SPR_BRIB, SPR_BRIB,
SPR_BRIY, SPR_BRIY,
SPR_MBRI,
SPR_MBRS,
SPR_MBRB,
SPR_MBRC,
SPR_MTRI,
// Gravity Well Objects // Gravity Well Objects
SPR_GWLG, SPR_GWLG,
...@@ -1194,6 +1156,18 @@ typedef enum playersprite ...@@ -1194,6 +1156,18 @@ typedef enum playersprite
SPR2_TALB, SPR2_TALB,
SPR2_TALC, SPR2_TALC,
// Misc slots
SPR2_MSC0,
SPR2_MSC1,
SPR2_MSC2,
SPR2_MSC3,
SPR2_MSC4,
SPR2_MSC5,
SPR2_MSC6,
SPR2_MSC7,
SPR2_MSC8,
SPR2_MSC9,
SPR2_CNT1, // continue disappointment SPR2_CNT1, // continue disappointment
SPR2_CNT2, // continue lift SPR2_CNT2, // continue lift
SPR2_CNT3, // continue spin SPR2_CNT3, // continue spin
...@@ -1941,11 +1915,11 @@ typedef enum state ...@@ -1941,11 +1915,11 @@ typedef enum state
S_FANG_FIRE1, S_FANG_FIRE1,
S_FANG_FIRE2, S_FANG_FIRE2,
S_FANG_FIRE3, S_FANG_FIRE3,
S_FANG_FIRE4,
S_FANG_FIREREPEAT, S_FANG_FIREREPEAT,
S_FANG_LOBSHOT0, S_FANG_LOBSHOT0,
S_FANG_LOBSHOT1, S_FANG_LOBSHOT1,
S_FANG_LOBSHOT2, S_FANG_LOBSHOT2,
S_FANG_LOBSHOT3,
S_FANG_WAIT1, S_FANG_WAIT1,
S_FANG_WAIT2, S_FANG_WAIT2,
S_FANG_WALLHIT, S_FANG_WALLHIT,
...@@ -1967,6 +1941,7 @@ typedef enum state ...@@ -1967,6 +1941,7 @@ typedef enum state
S_FANG_PINCHLOBSHOT2, S_FANG_PINCHLOBSHOT2,
S_FANG_PINCHLOBSHOT3, S_FANG_PINCHLOBSHOT3,
S_FANG_PINCHLOBSHOT4, S_FANG_PINCHLOBSHOT4,
S_FANG_PINCHLOBSHOT5,
S_FANG_DIE1, S_FANG_DIE1,
S_FANG_DIE2, S_FANG_DIE2,
S_FANG_DIE3, S_FANG_DIE3,
...@@ -3116,11 +3091,9 @@ typedef enum state ...@@ -3116,11 +3091,9 @@ typedef enum state
// FHZ // FHZ
S_FHZICE1, S_FHZICE1,
S_FHZICE2, S_FHZICE2,
S_ROSY_IDLE1, S_ROSY_IDLE,
S_ROSY_IDLE2,
S_ROSY_IDLE3,
S_ROSY_IDLE4,
S_ROSY_JUMP, S_ROSY_JUMP,
S_ROSY_FALL,
S_ROSY_WALK, S_ROSY_WALK,
S_ROSY_HUG, S_ROSY_HUG,
S_ROSY_PAIN, S_ROSY_PAIN,
...@@ -3780,69 +3753,6 @@ typedef enum state ...@@ -3780,69 +3753,6 @@ typedef enum state
S_BHORIZ7, S_BHORIZ7,
S_BHORIZ8, S_BHORIZ8,
// Yellow Trampoline
S_YELLOWTRAMPOLINE,
S_YELLOWTRAMPOLINE2,
S_YELLOWTRAMPOLINE3,
S_YELLOWTRAMPOLINE4,
S_YELLOWTRAMPOLINE5,
// Red Trampoline
S_REDTRAMPOLINE,
S_REDTRAMPOLINE2,
S_REDTRAMPOLINE3,
S_REDTRAMPOLINE4,
S_REDTRAMPOLINE5,
// Blue Trampoline
S_BLUETRAMPOLINE,
S_BLUETRAMPOLINE2,
S_BLUETRAMPOLINE3,
S_BLUETRAMPOLINE4,
S_BLUETRAMPOLINE5,
// Horizontal Yellow Trampoline
S_HORIZYELLOWTRAMPOLINE,
S_HORIZYELLOWTRAMPOLINE2,
S_HORIZYELLOWTRAMPOLINE3,
S_HORIZYELLOWTRAMPOLINE4,
S_HORIZYELLOWTRAMPOLINE5,
// Horizontal Red Trampoline
S_HORIZREDTRAMPOLINE,
S_HORIZREDTRAMPOLINE2,
S_HORIZREDTRAMPOLINE3,
S_HORIZREDTRAMPOLINE4,
S_HORIZREDTRAMPOLINE5,
// Horizontal Blue Trampoline
S_HORIZBLUETRAMPOLINE,
S_HORIZBLUETRAMPOLINE2,
S_HORIZBLUETRAMPOLINE3,
S_HORIZBLUETRAMPOLINE4,
S_HORIZBLUETRAMPOLINE5,
// Diagonal Yellow Trampoline
S_DIAGYELLOWTRAMPOLINE,
S_DIAGYELLOWTRAMPOLINE2,
S_DIAGYELLOWTRAMPOLINE3,
S_DIAGYELLOWTRAMPOLINE4,
S_DIAGYELLOWTRAMPOLINE5,
// Diagonal Red Trampoline
S_DIAGREDTRAMPOLINE,
S_DIAGREDTRAMPOLINE2,
S_DIAGREDTRAMPOLINE3,
S_DIAGREDTRAMPOLINE4,
S_DIAGREDTRAMPOLINE5,
// Diagonal Blue Trampoline
S_DIAGBLUETRAMPOLINE,
S_DIAGBLUETRAMPOLINE2,
S_DIAGBLUETRAMPOLINE3,
S_DIAGBLUETRAMPOLINE4,
S_DIAGBLUETRAMPOLINE5,
// Booster // Booster
S_BOOSTERSOUND, S_BOOSTERSOUND,
S_YELLOWBOOSTERROLLER, S_YELLOWBOOSTERROLLER,
...@@ -4115,28 +4025,37 @@ typedef enum state ...@@ -4115,28 +4025,37 @@ typedef enum state
S_RINGEXPLODE, S_RINGEXPLODE,
// Mario-specific stuff S_COIN1,
S_COIN, S_COIN2,
S_COIN3,
S_COINSPARKLE1, S_COINSPARKLE1,
S_COINSPARKLE2, S_COINSPARKLE2,
S_COINSPARKLE3,
S_COINSPARKLE4,
S_GOOMBA1, S_GOOMBA1,
S_GOOMBA1B, S_GOOMBA1B,
S_GOOMBA2, S_GOOMBA2,
S_GOOMBA3, S_GOOMBA3,
S_GOOMBA4, S_GOOMBA4,
S_GOOMBA5, S_GOOMBA5,
S_GOOMBA6,
S_GOOMBA7,
S_GOOMBA8,
S_GOOMBA9,
S_GOOMBA_DEAD, S_GOOMBA_DEAD,
S_GOOMBA_DEAD2,
S_GOOMBA_DEAD3,
S_BLUEGOOMBA1, S_BLUEGOOMBA1,
S_BLUEGOOMBA1B, S_BLUEGOOMBA1B,
S_BLUEGOOMBA2, S_BLUEGOOMBA2,
S_BLUEGOOMBA3, S_BLUEGOOMBA3,
S_BLUEGOOMBA4, S_BLUEGOOMBA4,
S_BLUEGOOMBA5, S_BLUEGOOMBA5,
S_BLUEGOOMBA6,
S_BLUEGOOMBA7,
S_BLUEGOOMBA8,
S_BLUEGOOMBA9,
S_BLUEGOOMBA_DEAD, S_BLUEGOOMBA_DEAD,
S_BLUEGOOMBA_DEAD2,
S_BLUEGOOMBA_DEAD3, // Mario-specific stuff
S_FIREFLOWER1, S_FIREFLOWER1,
S_FIREFLOWER2, S_FIREFLOWER2,
S_FIREFLOWER3, S_FIREFLOWER3,
...@@ -4144,13 +4063,6 @@ typedef enum state ...@@ -4144,13 +4063,6 @@ typedef enum state
S_FIREBALL, S_FIREBALL,
S_FIREBALLTRAIL1, S_FIREBALLTRAIL1,
S_FIREBALLTRAIL2, S_FIREBALLTRAIL2,
S_GREENKOOPASPAWN,
S_GREENKOOPA1,
S_GREENKOOPA2,
S_GREENKOOPA3,
S_GREENKOOPA4,
S_GREENKOOPADEATH1,
S_GREENKOOPADEATH2,
S_SHELL, S_SHELL,
S_PUMA_START1, S_PUMA_START1,
S_PUMA_START2, S_PUMA_START2,
...@@ -4176,68 +4088,7 @@ typedef enum state ...@@ -4176,68 +4088,7 @@ typedef enum state
S_MARIOBUSH1, S_MARIOBUSH1,
S_MARIOBUSH2, S_MARIOBUSH2,
S_TOAD, S_TOAD,
S_PTZSHROOM,
S_PTZFLAG1,
S_PTZFLAG2,
S_PTZFLAG3,
S_PTZFLAG4,
S_PTZFLAG5,
S_MARIOBUSH,
S_BSBSHROOM,
S_BLBSHROOM,
S_BNWSHROOM,
S_REDMFLOWER,
S_BLUEMFLOWER,
S_YELLOWMFLOWER,
S_WHITEDANDELION,
S_MAR64TREE,
// Power up mushrooms
S_LIFESHROOM,
S_LIFESHROOM2,
S_LIFESHROOMD,
S_LIFESHROOM_INVISIBLE,
S_LIFESHROOM_INVISIBLE_TOUCH,
S_POISONSHROOM,
S_POISONSHROOM2,
S_POISONSHROOMD,
S_NUKESHROOM,
S_NUKESHROOM2,
S_NUKESHROOMD,
S_FORCESHROOM,
S_FORCESHROOM2,
S_FORCESHROOMD,
S_ATTRACTSHROOM,
S_ATTRACTSHROOM2,
S_ATTRACTSHROOMD,
S_ELEMENTALSHROOM,
S_ELEMENTALSHROOM2,
S_ELEMENTALSHROOMD,
S_CLOUDSHROOM,
S_CLOUDSHROOM2,
S_CLOUDSHROOMD,
S_STARMAN,
S_STARMAN1,
S_STARMAN2,
S_STARMAN3,
S_STARMAND,
S_SPEEDWINGS,
S_SPEEDWINGSD,
S_PARTICLEPICKUP1,
S_PARTICLEPICKUP2,
S_1000SCOREAWARD,
S_POWERUPAWARD,
S_POWERUPAWARD1,
S_POWERUPAWARD2,
// Nights-specific stuff // Nights-specific stuff
S_NIGHTSDRONE_MAN1, S_NIGHTSDRONE_MAN1,
...@@ -4540,11 +4391,6 @@ typedef enum state ...@@ -4540,11 +4391,6 @@ typedef enum state
S_REDBRICKDEBRIS, // for CEZ3 S_REDBRICKDEBRIS, // for CEZ3
S_BLUEBRICKDEBRIS, // for CEZ3 S_BLUEBRICKDEBRIS, // for CEZ3
S_YELLOWBRICKDEBRIS, // for CEZ3 S_YELLOWBRICKDEBRIS, // for CEZ3
S_MARIOBRICKDEBRIS,
S_MARIOBRICKDEBRISS,
S_MARIOBRICKDEBRISB,
S_MARIOBRICKDEBRISC,
S_MARIOBRICKDEBRISM,
S_NAMECHECK, S_NAMECHECK,
...@@ -4748,16 +4594,6 @@ typedef enum mobj_type ...@@ -4748,16 +4594,6 @@ typedef enum mobj_type
MT_REDHORIZ, MT_REDHORIZ,
MT_BLUEHORIZ, MT_BLUEHORIZ,
MT_YELLOWTRAMPOLINE,
MT_REDTRAMPOLINE,
MT_BLUETRAMPOLINE,
MT_HORIZYELLOWTRAMPOLINE,
MT_HORIZREDTRAMPOLINE,
MT_HORIZBLUETRAMPOLINE,
MT_DIAGYELLOWTRAMPOLINE,
MT_DIAGREDTRAMPOLINE,
MT_DIAGBLUETRAMPOLINE,
MT_BOOSTERSEG, MT_BOOSTERSEG,
MT_BOOSTERROLLER, MT_BOOSTERROLLER,
MT_YELLOWBOOSTER, MT_YELLOWBOOSTER,
...@@ -5258,7 +5094,6 @@ typedef enum mobj_type ...@@ -5258,7 +5094,6 @@ typedef enum mobj_type
MT_FIREFLOWER, MT_FIREFLOWER,
MT_FIREBALL, MT_FIREBALL,
MT_FIREBALLTRAIL, MT_FIREBALLTRAIL,
MT_GREENKOOPA,
MT_SHELL, MT_SHELL,
MT_PUMA, MT_PUMA,
MT_PUMATRAIL, MT_PUMATRAIL,
...@@ -5269,30 +5104,6 @@ typedef enum mobj_type ...@@ -5269,30 +5104,6 @@ typedef enum mobj_type
MT_MARIOBUSH1, MT_MARIOBUSH1,
MT_MARIOBUSH2, MT_MARIOBUSH2,
MT_TOAD, MT_TOAD,
MT_PTZSHROOM,
MT_PTZFLAG,
MT_BSBSHROOM,
MT_BLBSHROOM,
MT_BNWSHROOM,
MT_MARIOBUSH,
MT_REDMFLOWER,
MT_BLUEMFLOWER,
MT_YELLOWMFLOWER,
MT_WHITEDANDELION,
MT_MAR64TREE,
// Power up mushrooms
MT_LIFESHROOM,
MT_LIFESHROOM_INVISIBLE,
MT_POISONSHROOM,
MT_NUKESHROOM,
MT_FORCESHROOM,
MT_ATTRACTSHROOM,
MT_ELEMENTALSHROOM,
MT_CLOUDSHROOM,
MT_STARMAN,
MT_SPEEDWINGS,
MT_POWERUPAWARD,
// NiGHTS Stuff // NiGHTS Stuff
MT_AXIS, MT_AXIS,
...@@ -5390,11 +5201,6 @@ typedef enum mobj_type ...@@ -5390,11 +5201,6 @@ typedef enum mobj_type
MT_REDBRICKDEBRIS, // for CEZ3 MT_REDBRICKDEBRIS, // for CEZ3
MT_BLUEBRICKDEBRIS, // for CEZ3 MT_BLUEBRICKDEBRIS, // for CEZ3
MT_YELLOWBRICKDEBRIS, // for CEZ3 MT_YELLOWBRICKDEBRIS, // for CEZ3
MT_MARIOBRICKDEBRIS,
MT_MARIOBRICKDEBRISS,
MT_MARIOBRICKDEBRISB,
MT_MARIOBRICKDEBRISC,
MT_MARIOBRICKDEBRISM,
MT_NAMECHECK, MT_NAMECHECK,
MT_RAY, // General purpose mobj MT_RAY, // General purpose mobj
......
...@@ -189,6 +189,8 @@ static const struct { ...@@ -189,6 +189,8 @@ static const struct {
{META_SKINSPRITESLIST, "skin_t.skinsprites[]"}, {META_SKINSPRITESLIST, "skin_t.skinsprites[]"},
{META_SKINSPRITESCOMPAT, "skin_t.sprites"}, // TODO: 2.3: Delete {META_SKINSPRITESCOMPAT, "skin_t.sprites"}, // TODO: 2.3: Delete
{META_MUSICDEF, "musicdef_t"},
{META_VERTEX, "vertex_t"}, {META_VERTEX, "vertex_t"},
{META_LINE, "line_t"}, {META_LINE, "line_t"},
{META_SIDE, "side_t"}, {META_SIDE, "side_t"},
...@@ -238,7 +240,10 @@ static const struct { ...@@ -238,7 +240,10 @@ static const struct {
{META_LUABANKS, "luabanks[]"}, {META_LUABANKS, "luabanks[]"},
{META_KEYEVENT, "keyevent_t"}, {META_KEYEVENT, "keyevent_t"},
{META_TEXTEVENT, "textevent_t"},
{META_MOUSE, "mouse_t"}, {META_MOUSE, "mouse_t"},
{META_INTERCEPT, "intercept_t"},
{NULL, NULL} {NULL, NULL}
}; };
...@@ -3166,7 +3171,10 @@ static int lib_rCheckTextureNumForName(lua_State *L) ...@@ -3166,7 +3171,10 @@ static int lib_rCheckTextureNumForName(lua_State *L)
{ {
const char *name = luaL_checkstring(L, 1); const char *name = luaL_checkstring(L, 1);
//HUDSAFE //HUDSAFE
lua_pushinteger(L, R_CheckTextureNumForName(name)); INT32 num = R_CheckTextureNumForName(name, TEXTURETYPE_TEXTURE);
if (num == -1)
num = R_CheckTextureNumForName(name, TEXTURETYPE_FLAT);
lua_pushinteger(L, num);
return 1; return 1;
} }
...@@ -3735,6 +3743,73 @@ static int lib_sResumeMusic(lua_State *L) ...@@ -3735,6 +3743,73 @@ static int lib_sResumeMusic(lua_State *L)
return 1; return 1;
} }
enum musicdef_e
{
musicdef_name,
musicdef_title,
musicdef_alttitle,
musicdef_authors
};
static const char *const musicdef_opt[] = {
"name",
"title",
"alttitle",
"authors",
NULL,
};
static int musicdef_fields_ref = LUA_NOREF;
static int musicdef_get(lua_State *L)
{
musicdef_t *musicdef = *((musicdef_t **)luaL_checkudata(L, 1, META_MUSICDEF));
enum musicdef_e field = Lua_optoption(L, 2, -1, musicdef_fields_ref);
lua_settop(L, 2);
if (!musicdef)
return LUA_ErrInvalid(L, "musicdef_t");
switch (field)
{
case musicdef_name:
lua_pushstring(L, musicdef->name);
break;
case musicdef_title:
lua_pushstring(L, musicdef->title);
break;
case musicdef_alttitle:
lua_pushstring(L, musicdef->alttitle);
break;
case musicdef_authors:
lua_pushstring(L, musicdef->authors);
break;
default:
lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS);
I_Assert(lua_istable(L, -1));
lua_pushlightuserdata(L, musicdef);
lua_rawget(L, -2);
if (!lua_istable(L, -1)) { // no extra values table
CONS_Debug(DBG_LUA, M_GetText("'%s' has no extvars table or field named '%s'; returning nil.\n"), "musicdef_t", lua_tostring(L, 2));
return 0;
}
lua_pushvalue(L, 2); // field name
lua_gettable(L, -2);
if (lua_isnil(L, -1)) // no value for this field
CONS_Debug(DBG_LUA, M_GetText("'%s' has no field named '%s'; returning nil.\n"), "musicdef_t", lua_tostring(L, 2));
break;
}
return 1;
}
static int lib_sMusicInfo(lua_State *L)
{
const char *music_name = lua_tolstring(L, 1, NULL);
LUA_PushUserdata(L, S_MusicInfo(music_name), META_MUSICDEF);
return 1;
}
// G_GAME // G_GAME
//////////// ////////////
...@@ -4620,6 +4695,7 @@ static luaL_Reg lib[] = { ...@@ -4620,6 +4695,7 @@ static luaL_Reg lib[] = {
{"S_GetMusicLoopPoint",lib_sGetMusicLoopPoint}, {"S_GetMusicLoopPoint",lib_sGetMusicLoopPoint},
{"S_PauseMusic",lib_sPauseMusic}, {"S_PauseMusic",lib_sPauseMusic},
{"S_ResumeMusic", lib_sResumeMusic}, {"S_ResumeMusic", lib_sResumeMusic},
{"S_MusicInfo", lib_sMusicInfo},
// g_game // g_game
{"G_AddGametype", lib_gAddGametype}, {"G_AddGametype", lib_gAddGametype},
...@@ -4658,6 +4734,11 @@ static luaL_Reg lib[] = { ...@@ -4658,6 +4734,11 @@ static luaL_Reg lib[] = {
int LUA_BaseLib(lua_State *L) int LUA_BaseLib(lua_State *L)
{ {
// musicdef_t
// Sound should have its whole own file for Lua, but this will do for now.
LUA_RegisterUserdataMetatable(L, META_MUSICDEF, musicdef_get, NULL, NULL);
musicdef_fields_ref = Lua_CreateFieldTable(L, musicdef_opt);
// Set metatable for string // Set metatable for string
lua_pushliteral(L, ""); // dummy string lua_pushliteral(L, ""); // dummy string
lua_getmetatable(L, -1); // get string metatable lua_getmetatable(L, -1); // get string metatable
......
...@@ -67,7 +67,9 @@ automatically. ...@@ -67,7 +67,9 @@ automatically.
X (ViewpointSwitch),/* spy mode (no trickstabs) */\ X (ViewpointSwitch),/* spy mode (no trickstabs) */\
X (SeenPlayer),/* MT_NAMECHECK */\ X (SeenPlayer),/* MT_NAMECHECK */\
X (PlayerThink),/* P_PlayerThink */\ X (PlayerThink),/* P_PlayerThink */\
X (GameStart),\
X (GameQuit),\ X (GameQuit),\
X (GameEnd),\
X (PlayerCmd),/* building the player's ticcmd struct (Ported from SRB2Kart) */\ X (PlayerCmd),/* building the player's ticcmd struct (Ported from SRB2Kart) */\
X (MusicChange),\ X (MusicChange),\
X (PlayerHeight),/* override player height */\ X (PlayerHeight),/* override player height */\
...@@ -75,6 +77,7 @@ automatically. ...@@ -75,6 +77,7 @@ automatically.
X (AddonLoaded),\ X (AddonLoaded),\
X (KeyDown),\ X (KeyDown),\
X (KeyUp),\ X (KeyUp),\
X (TextInput),\
#define STRING_HOOK_LIST(X) \ #define STRING_HOOK_LIST(X) \
X (BotAI),/* B_BuildTailsTiccmd by skin name */\ X (BotAI),/* B_BuildTailsTiccmd by skin name */\
...@@ -135,6 +138,7 @@ void LUA_HookBool(boolean value, int hook); ...@@ -135,6 +138,7 @@ void LUA_HookBool(boolean value, int hook);
int LUA_HookPlayer(player_t *, int hook); int LUA_HookPlayer(player_t *, int hook);
int LUA_HookTiccmd(player_t *, ticcmd_t *, int hook); int LUA_HookTiccmd(player_t *, ticcmd_t *, int hook);
int LUA_HookKey(event_t *event, int hook); // Hooks for key events int LUA_HookKey(event_t *event, int hook); // Hooks for key events
int LUA_HookText(event_t *event, int hook); // Hooks for text events
void LUA_HookPreThinkFrame(void); void LUA_HookPreThinkFrame(void);
void LUA_HookThinkFrame(void); void LUA_HookThinkFrame(void);
......
...@@ -690,6 +690,17 @@ int LUA_HookKey(event_t *event, int hook_type) ...@@ -690,6 +690,17 @@ int LUA_HookKey(event_t *event, int hook_type)
return hook.status; return hook.status;
} }
int LUA_HookText(event_t *event, int hook_type)
{
Hook_State hook;
if (prepare_hook(&hook, false, hook_type))
{
LUA_PushUserdata(gL, event, META_TEXTEVENT);
call_hooks(&hook, 1, res_true);
}
return hook.status;
}
void LUA_HookHUD(int hook_type, huddrawlist_h list) void LUA_HookHUD(int hook_type, huddrawlist_h list)
{ {
Hook_State hook; Hook_State hook;
......