Skip to content

Commit

Permalink
Splitscreen mostly works now
Browse files Browse the repository at this point in the history
  • Loading branch information
luigi-budd committed Feb 2, 2025
1 parent c46c3e2 commit 0e7f23b
Show file tree
Hide file tree
Showing 12 changed files with 110 additions and 48 deletions.
2 changes: 1 addition & 1 deletion src/Lua/Hooks/Game/Scripts/Game End.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
return function()
if CV_MM.debug.value then return end
if CV_MM.debug.value or splitscreen then return end

local canEnd, endType = MM:canGameEnd()

Expand Down
1 change: 1 addition & 0 deletions src/Lua/Hooks/Game/Scripts/Waiting.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ local MUSIC = false

return function()
if CV_MM.debug.value
or splitscreen
MM_N.waiting_for_players = false
return
end
Expand Down
43 changes: 28 additions & 15 deletions src/Lua/Hooks/HUD/Drawers/availableitems.lua
Original file line number Diff line number Diff line change
@@ -1,8 +1,18 @@
--it would make more sense to rename this file to "inventory.lua"
local itemname = {
oldid = '',
id = '',
tics = 0,
--first disp. player
[1] = {
oldid = '',
id = '',
tics = 0,
},

--second disp. player
[2] = {
oldid = '',
id = '',
tics = 0,
}
}

local function V_DrawBox(props)
Expand Down Expand Up @@ -78,24 +88,26 @@ return function(v, p)
local items = inv.items
local count = inv.count
local curitem = items[inv.cur_sel]
local myitemname = p == displayplayer and itemname[1] or itemname[2]

local x = 160*FU
local y = 172*FU + MMHUD.xoffset
local scale = FU*3/4 --*2/count
x = $ - (count*17*scale)

if curitem ~= itemname.oldid
itemname.tics = 3*TICRATE

if curitem ~= myitemname.oldid
myitemname.tics = 3*TICRATE
end

if itemname.tics
itemname.tics = $-1
if myitemname.tics
myitemname.tics = $-1

if curitem and curitem.display_name
local trans = itemname.tics < 10 and (9 - itemname.tics)<<V_ALPHASHIFT or 0
local trans = myitemname.tics < 10 and (9 - myitemname.tics)<<V_ALPHASHIFT or 0
v.drawString(x, y - 12*FU,
curitem.display_name,
V_SNAPTOBOTTOM|trans|V_ALLOWLOWERCASE,
V_PERPLAYER|V_SNAPTOBOTTOM|trans|V_ALLOWLOWERCASE,
"thin-fixed"
)
end
Expand All @@ -115,36 +127,37 @@ return function(v, p)
item = items[i],
p = p,
}

x = $+(36*scale)
end
itemname.oldid = curitem
myitemname.oldid = curitem

--controls
x = 5*FU - MMHUD.xoffset
y = 170*FU
local flags = V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE|V_PERPLAYER

if (p.pflags & (PF_ANALOGMODE|PF_DIRECTIONCHAR) == (PF_ANALOGMODE|PF_DIRECTIONCHAR))
v.drawString(
x,y - 16*FU,
"Automatic mode\nis not recommended.",
V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE|V_REDMAP|V_RETURN8,
flags|V_REDMAP|V_RETURN8,
"thin-fixed"
)
end

v.drawString(
x,y,
"[C1] - "..(inv.hidden and "Equip" or "Unequip").." Items",
V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,
flags,
"thin-fixed"
)
y = $+8*FU

if curitem and curitem.droppable then
v.drawString(x,y,
"[C2] - Drop weapon",
V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,
flags,
"thin-fixed"
)
y = $+8*FU
Expand All @@ -153,7 +166,7 @@ return function(v, p)
if (curitem)
v.drawString(x,y,
"[FIRE] - Use weapon",
V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,
flags,
"thin-fixed"
)
y = $+8*FU
Expand Down
11 changes: 7 additions & 4 deletions src/Lua/Hooks/HUD/Drawers/gamerole.lua
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,31 @@ local function HUD_RoleDrawer(v,p)
return
end

local y = (p == secondarydisplayplayer) and (v.height()/v.dupy() << (FRACBITS-1)) or 0

----Draw "Killed by"
if p.spectator
or not (p.mo and p.mo.valid)
or p.mo.health == 0 then
v.drawString(320*FU + off,
0,
y,
"Dead",
V_GRAYMAP|V_SNAPTORIGHT|V_SNAPTOTOP|V_ALLOWLOWERCASE|V_PERPLAYER,
V_GRAYMAP|V_SNAPTORIGHT|V_SNAPTOTOP|V_ALLOWLOWERCASE,
"fixed-right"
)
return
end
----

v.drawString(320*FU + off,
0,
y,
roles[p.mm.role].name,
roles[p.mm.role].color|V_SNAPTORIGHT|V_SNAPTOTOP|V_ALLOWLOWERCASE|V_PERPLAYER,
roles[p.mm.role].color|V_SNAPTORIGHT|V_SNAPTOTOP|V_ALLOWLOWERCASE,
"fixed-right"
)

if leveltime <= MM_N.pregame_time*2
and not splitscreen
v.drawString(320*FU + off,
8*FU,
"Press TAB to view more",
Expand Down
5 changes: 3 additions & 2 deletions src/Lua/Hooks/HUD/Drawers/goals.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
local function HUD_GoalDrawer(v,p)
local x = 5*FU - MMHUD.xoffset
local y = 34*FU
local flags = V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE|V_PERPLAYER

if MM_N.dueling then return end

Expand All @@ -12,7 +13,7 @@ local function HUD_GoalDrawer(v,p)
v.drawString(x,
y,
(#p.mm.clues.list).."/"..p.mm.clues.startamount.." Clues left",
V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE|complete,
flags|complete,
"thin-fixed"
)
y = $+8*FU
Expand All @@ -26,7 +27,7 @@ local function HUD_GoalDrawer(v,p)
v.drawString(x,
y,
MM_N.peoplekilled.."/"..needed.." People killed",
V_SNAPTOTOP|V_SNAPTOLEFT|V_ALLOWLOWERCASE|complete,
flags|complete,
"thin-fixed"
)
y = $+8*FU
Expand Down
37 changes: 23 additions & 14 deletions src/Lua/Hooks/HUD/Drawers/info.lua
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
local TR = TICRATE

local function HUD_InfoDrawer(v)
local function HUD_InfoDrawer(v, stplyr)
local p = displayplayer
local slidein = MMHUD.xoffset

--Timer
--TODO: align this to middle of screen when I get home
do
local x = 5*FU - slidein
local y = 10*FU
local flags = V_SNAPTOLEFT|V_SNAPTOTOP

local flash = false
local timetic = MM_N.time
timetic = not (MM_N.overtime and not MM_N.showdown) and min(max($,0), MM_N.maxtime)+TICRATE or 0
Expand All @@ -26,18 +29,24 @@ local function HUD_InfoDrawer(v)
finalstring = "SHOWDOWN !!" -- ("..$..")"
end

v.drawScaled(5*FU - slidein,
10*FU,
FU,
v.cachePatch("NGRTIMER"),
V_SNAPTOLEFT|V_SNAPTOTOP
)
v.drawString(20*FU - slidein,
10*FU,
finalstring, --.."."..tictrn,
V_SNAPTOLEFT|V_SNAPTOTOP|(flash and V_REDMAP or 0),
"fixed"
)
if splitscreen and (stplyr and stplyr.valid)
x = 160*FU - ((v.stringWidth(finalstring,0,"normal") + 15)/2)*FU
y = 100*FU
flags = MMHUD.hudtrans
end

if flags ~= V_100TRANS
v.drawScaled(x, y,
FU,
v.cachePatch("NGRTIMER"),
flags
)
v.drawString(x + 15*FU, y,
finalstring, --.."."..tictrn,
flags|(flash and V_REDMAP or 0),
"fixed"
)
end
end

--rings
Expand Down
6 changes: 3 additions & 3 deletions src/Lua/Hooks/HUD/Drawers/outofbounds.lua
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ local function HUD_OOBDrawer(v,p,c)
if p.mm.outofbounds
v.drawString(160,y,
"! OUT OF BOUNDS !",
flash|V_SNAPTOBOTTOM,
flash|V_SNAPTOBOTTOM|V_PERPLAYER,
"center"
)
v.drawString(160,y+8,
"Return to play area",
flash|V_SNAPTOBOTTOM,
flash|V_SNAPTOBOTTOM|V_PERPLAYER,
"thin-center"
)
end
Expand All @@ -32,7 +32,7 @@ local function HUD_OOBDrawer(v,p,c)
(y + 18)*FU,
FU,
v.cachePatch("STTNUM"..(MM_PLAYER_STORMMAX - p.mm.oob_ticker)/TR + 1),
V_SNAPTOBOTTOM,
V_SNAPTOBOTTOM|V_PERPLAYER,
flash and v.getStringColormap(V_REDMAP) or nil
)
end
Expand Down
8 changes: 5 additions & 3 deletions src/Lua/Hooks/HUD/Drawers/weapontime.lua
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ local function HUD_TimeForWeapon(v,p)

v.drawString(160*FU,
40*FU - MMHUD.weaponslidein,
roles[p.mm.role].weapon and "You'll get your weapon in" or
"Round starts in",
(not splitscreen) and (roles[p.mm.role].weapon and "You'll get your weapon in" or
"Round starts in") or "Duel starts in",
V_SNAPTOTOP|V_ALLOWLOWERCASE,
roles[p.mm.role].weapon and "thin-fixed-center" or "fixed-center"
)
Expand Down Expand Up @@ -172,11 +172,13 @@ local function HUD_TimeForWeapon(v,p)
)
work = $ + v.cachePatch("STTNUM0").width*FU
end

end

end

if splitscreen then return end

v.drawString(160*FU,
150*FU + MMHUD.weaponslidein,
"\x85"..MM_N.special_count.." Murderer"..(MM_N.special_count ~= 1 and "s" or '').."\x80 this round.",
Expand Down
40 changes: 36 additions & 4 deletions src/Lua/Hooks/HUD/main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,33 @@ end
local TR = TICRATE
local HUD_BEGINNINGXOFF = 350*FU

--dont draw if MMHUD.hudtrans == V_100TRANS
rawset(_G, "V_100TRANS", 10 << V_ALPHASHIFT)
local htranstable = {
[0] = 10,
[1] = 9,
[2] = 9,
[3] = 8,
[4] = 8,
[5] = 7,
[6] = 7,
[7] = 6,
[8] = 6,
[9] = 5,
[10] = 5,
}

--DO NOT SYNCH!!!!!!!!
local MMHUD = {
ticker = 0,
xoffset = HUD_BEGINNINGXOFF,
weaponslidein = HUD_BEGINNINGXOFF,
dontslidein = false,

hudtrans = 0,
hudtranshalf = 5 << V_ALPHASHIFT,
hudtrans = V_100TRANS,
hudtranshalf = V_100TRANS,
}
rawset(_G, "MMHUD", MMHUD)
--dont draw if MMHUD.hudtrans == V_100TRANS
rawset(_G, "V_100TRANS", 10 << V_ALPHASHIFT)

local hudwasmm = false
local modname = "SAXAMM"
Expand All @@ -82,6 +96,8 @@ addHook("MapLoad",do
MMHUD.ticker = 0
MMHUD.xoffset = HUD_BEGINNINGXOFF
MMHUD.weaponslidein = HUD_BEGINNINGXOFF

MMHUD.hudtrans = V_100TRANS
end)

addHook("HUD", function(v,p,c)
Expand Down Expand Up @@ -127,15 +143,31 @@ addHook("HUD", function(v,p,c)

MMHUD.weaponslidein = ease.inexpo(FU*7/10,$,HUD_BEGINNINGXOFF)
end

--fade in stuff if we've tweened for at least 2 tics
if MMHUD.xoffset <= FixedMul(HUD_BEGINNINGXOFF, FixedSqrt(FU*7/10))
if MMHUD.hudtrans >> V_ALPHASHIFT ~= 0
MMHUD.hudtrans = (($ >> V_ALPHASHIFT) - 1) << V_ALPHASHIFT
end
end

--everything slides out
else
MMHUD.xoffset = ease.inexpo(FU*7/10,$,HUD_BEGINNINGXOFF)
MMHUD.weaponslidein = ease.inexpo(FU*7/10,$,HUD_BEGINNINGXOFF)

if MMHUD.hudtrans >> V_ALPHASHIFT ~= 10
MMHUD.hudtrans = (($ >> V_ALPHASHIFT) + 1) << V_ALPHASHIFT
end
end
else
if MMHUD.hudtrans >> V_ALPHASHIFT ~= 10
MMHUD.hudtrans = (($ >> V_ALPHASHIFT) + 1) << V_ALPHASHIFT
end

MMHUD.dontslidein = false
end
MMHUD.hudtranshalf = htranstable[10 - (MMHUD.hudtrans >> V_ALPHASHIFT)] << V_ALPHASHIFT

hudwasmm = true
return
Expand Down
1 change: 1 addition & 0 deletions src/Lua/Hooks/Player/Scripts/AFKHandle.lua
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ return function(p)
if (MM_N.waiting_for_players)
or (MM_N.gameover)
or (p.mm.spectator)
or (splitscreen)
return
end

Expand Down
2 changes: 1 addition & 1 deletion src/Lua/Libs/CustomHud.lua
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ end

hud.add(function(v, player, camera)
RunCustomHooks("game", v, player, camera);
RunCustomHooks("gameandscores", v);
RunCustomHooks("gameandscores", v, player);
end, "game");

hud.add(function(v)
Expand Down
2 changes: 1 addition & 1 deletion src/Lua/Objects/NeoRings/define.lua
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ addHook("MobjSpawn", function(mo)
if not mo.override
mobjinfo[MT_RING].spawnstate = S_MM_RING
mobjinfo[MT_RING].deathstate = S_MM_RING_SPARKLE
mobjinfo[MT_RING].deathsound = sfx_S3K33
mobjinfo[MT_RING].deathsound = sfx_s3k33
--mo.scale = $+(FU/3)
mo.override = true
end
Expand Down

0 comments on commit 0e7f23b

Please sign in to comment.