From b71bf9899758e0439001afafe1ffa4e53e9698d6 Mon Sep 17 00:00:00 2001 From: relaxtakenotes Date: Thu, 22 Jun 2023 02:28:55 +0500 Subject: [PATCH 1/3] fix weird issue --- beatrun/gamemodes/beatrun/gamemode/cl_init.lua | 6 ++++-- beatrun/gamemodes/beatrun/gamemode/init.lua | 6 +++--- beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- vmaniprework/lua/autorun/client/cl_vmanip.lua | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua index 5537894..414ebca 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua @@ -1,6 +1,8 @@ include("shared.lua") -for k, v in ipairs(file.Find("beatrun/gamemode/cl/*.lua", "LUA")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME")) do print(v) include("cl/" .. v) -end \ No newline at end of file +end + + diff --git a/beatrun/gamemodes/beatrun/gamemode/init.lua b/beatrun/gamemodes/beatrun/gamemode/init.lua index ec30d69..6619852 100644 --- a/beatrun/gamemodes/beatrun/gamemode/init.lua +++ b/beatrun/gamemodes/beatrun/gamemode/init.lua @@ -2,16 +2,16 @@ AddCSLuaFile("cl_init.lua") AddCSLuaFile("shared.lua") include("shared.lua") -for k, v in ipairs(file.Find("beatrun/gamemode/cl/*.lua", "LUA")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME")) do AddCSLuaFile("cl/" .. v) end -for k, v in ipairs(file.Find("beatrun/gamemode/sh/*.lua", "LUA")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME")) do print(v) include("sh/" .. v) AddCSLuaFile("sh/" .. v) end -for k, v in ipairs(file.Find("beatrun/gamemode/sv/*.lua", "LUA")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sv/*.lua", "GAME")) do include("sv/" .. v) end \ No newline at end of file diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index d5e29ef..d773882 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -8,7 +8,7 @@ GM.Email = "datae@dontemailme.com" GM.Website = "www.mirrorsedge.com" include("player_class/player_beatrun.lua") -for k, v in ipairs(file.Find("beatrun/gamemode/sh/*.lua", "LUA")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME")) do AddCSLuaFile("sh/" .. v) include("sh/" .. v) end \ No newline at end of file diff --git a/vmaniprework/lua/autorun/client/cl_vmanip.lua b/vmaniprework/lua/autorun/client/cl_vmanip.lua index d0138cd..7d33f0b 100644 --- a/vmaniprework/lua/autorun/client/cl_vmanip.lua +++ b/vmaniprework/lua/autorun/client/cl_vmanip.lua @@ -632,7 +632,7 @@ hook.Add("CalcView", "VManip_Cam", function(ply, origin, angles, fov) -- some important calculations can happen in calcview hooks however, so running them is important if ISCALC then return end ISCALC = true - hook.Run("CalcView", ply, pos, ang, fov) + hook.Run("CalcView", ply, origin, angles, fov) ISCALC = false if not VManip:IsActive() or not VManip.Attachment then return end From 66d7303a83ae5435f424e19b28f172d2e903a6f5 Mon Sep 17 00:00:00 2001 From: relaxtakenotes Date: Thu, 22 Jun 2023 03:02:12 +0500 Subject: [PATCH 2/3] fix my autism --- .../gamemodes/beatrun/gamemode/cl/0_UI.lua | 528 ++++++++++++++++++ .../gamemodes/beatrun/gamemode/cl_init.lua | 3 +- beatrun/gamemodes/beatrun/gamemode/init.lua | 8 +- .../beatrun/gamemode/sh/0_Helpers.lua | 85 +++ ...s_!Precache.lua => 0_Sounds_!Precache.lua} | 0 .../{Sounds_zzzEnd.lua => zzz_Sounds_End.lua} | 0 beatrun/gamemodes/beatrun/gamemode/shared.lua | 2 +- vmaniprework/lua/autorun/client/cl_vmanip.lua | 17 +- 8 files changed, 632 insertions(+), 11 deletions(-) create mode 100644 beatrun/gamemodes/beatrun/gamemode/cl/0_UI.lua create mode 100644 beatrun/gamemodes/beatrun/gamemode/sh/0_Helpers.lua rename beatrun/gamemodes/beatrun/gamemode/sh/{Sounds_!Precache.lua => 0_Sounds_!Precache.lua} (100%) rename beatrun/gamemodes/beatrun/gamemode/sh/{Sounds_zzzEnd.lua => zzz_Sounds_End.lua} (100%) diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/0_UI.lua b/beatrun/gamemodes/beatrun/gamemode/cl/0_UI.lua new file mode 100644 index 0000000..7621286 --- /dev/null +++ b/beatrun/gamemodes/beatrun/gamemode/cl/0_UI.lua @@ -0,0 +1,528 @@ +AEUI = {} +local AEUI = AEUI +local SScaleX_cached = {} +local SScaleY_cached = {} + +function SScaleX(sizex) + -- local iswide = AEUI.ScrW / AEUI.ScrH > 1.6 + if SScaleX_cached[sizex] then return SScaleX_cached[sizex] end + + SScaleX_cached[sizex] = math.ceil(sizex / (1920 / AEUI.ScrW)) + + return SScaleX_cached[sizex] +end + +function SScaleY(sizey) + -- local iswide = AEUI.ScrW / AEUI.ScrH > 1.6 + if SScaleY_cached[sizey] then return SScaleY_cached[sizey] end + + SScaleY_cached[sizey] = math.ceil(sizey / (1080 / AEUI.ScrH)) + + return SScaleY_cached[sizey] +end + +local SScaleX = SScaleX +local SScaleY = SScaleY + +function AEUIFonts() + surface.CreateFont("AEUIDefault", { + shadow = false, + blursize = 0, + underline = false, + rotary = false, + strikeout = false, + additive = false, + antialias = true, + extended = false, + scanlines = 0, + font = "D-DIN", + italic = false, + outline = false, + symbol = false, + weight = 500, + size = ScreenScale(7) + }) + + surface.CreateFont("AEUILarge", { + shadow = false, + blursize = 0, + underline = false, + rotary = false, + strikeout = false, + additive = false, + antialias = true, + extended = false, + scanlines = 0, + font = "D-DIN", + italic = false, + outline = false, + symbol = false, + weight = 500, + size = ScreenScale(12) + }) + + surface.CreateFont("AEUIVeryLarge", { + shadow = false, + blursize = 0, + underline = false, + rotary = false, + strikeout = false, + additive = false, + antialias = true, + extended = false, + scanlines = 0, + font = "D-DIN", + italic = false, + outline = false, + symbol = false, + weight = 500, + size = ScreenScale(18) + }) +end + +AEUIFonts() + +AEUI.Panels = {} +AEUI.Elements = {} +AEUI.MY = 0 +AEUI.MX = 0 +AEUI.LastClick = 0 +AEUI.ScrH = ScrH() +AEUI.ScrW = ScrW() +AEUI.HoveredPanel = nil + +function AEUI:DrawPanel(panel) + local x = SScaleX(panel.x) + local y = SScaleY(panel.y) + local w = SScaleX(panel.w) + local h = SScaleY(panel.h) + + surface.SetDrawColor(panel.bgcolor) + surface.DrawRect(x, y, w, h) + surface.SetDrawColor(panel.outlinecolor) + surface.DrawOutlinedRect(x, y, w, h) + render.SetScissorRect(x, y, x + w, y + h, true) +end + +function AEUI:AddPanel(panel) + if table.HasValue(AEUI.Panels, panel) then return end + + table.insert(AEUI.Panels, panel) + gui.EnableScreenClicker(true) +end + +function AEUI:RemovePanel(panel) + table.RemoveByValue(AEUI.Panels, panel) + + if #AEUI.Panels <= 0 then + gui.EnableScreenClicker(false) + end +end + +function AEUI:AddText(panel, str, font, x, y, centered, color) + font = font or "AEUIDefault" + x = x or 0 + y = y or 0 + centered = centered or false + color = color or color_white + + local text = { + x = x, + y = y, + centered = centered, + color = color, + font = font, + string = str, + type = "Text" + } + + table.insert(panel.elements, text) + + return text +end + +function AEUI:AddButton(panel, str, func, font, x, y, centered, color) + font = font or "AEUIDefault" + x = x or 0 + y = y or 0 + centered = centered or false + color = color or color_white + func = func or function() end + + local button = { + x = x, + y = y, + centered = centered, + color = color, + font = font, + string = str, + type = "Button", + onclick = func + } + + table.insert(panel.elements, button) + + return button +end + +function AEUI:AddImage(panel, mat, func, x, y, w, h, color) + font = font or "AEUIDefault" + x = x or 0 + y = y or 0 + centered = centered or false + color = color or color_white + func = func or function() end + + local image = { + x = x, + y = y, + w = w, + h = h, + centered = centered, + color = color, + font = font, + mat = mat, + type = "Image", + onclick = func + } + + table.insert(panel.elements, image) + + return image +end + +function AEUI:Clear() + table.Empty(AEUI.Panels) + gui.EnableScreenClicker(false) +end + +function AEUI:DrawElement(panel, data) + AEUI.Elements[data.type](panel, data) +end + +local function AEUIDraw() + if AEUI.NoDraw then return end + + for k, v in ipairs(AEUI.Panels) do + surface.SetAlphaMultiplier(v.alpha or 1) + AEUI:DrawPanel(v) + surface.SetAlphaMultiplier(1) + + if v.elements then + for l, b in ipairs(v.elements) do + AEUI:DrawElement(v, b) + end + end + + render.SetScissorRect(0, 0, 0, 0, false) + local maxscroll = math.abs(v.maxscroll or 0) + + if (v.maxscroll or 0) > 0 then + local ratio = math.abs((v.scroll or 0) / maxscroll) + local visratio = v.h / maxscroll + local height = maxscroll * visratio * 0.5 + + surface.SetDrawColor(255, 255, 255) + surface.DrawRect(SScaleX(v.x + v.w), SScaleY(v.y + height * ratio), SScaleX(8), SScaleY(height)) + end + end + + if AEUI.HoveredElement then + local e = AEUI.HoveredElement + + if e.hover then + local mx = AEUI.MX + SScaleX(20) + local my = AEUI.MY + SScaleY(20) + + surface.SetTextColor(255, 255, 255) + surface.SetFont("AEUIDefault") + + local tw, th = surface.GetTextSize(e.hover) + + if ScrW() < mx + tw then + mx = mx - tw + end + + surface.SetTextPos(mx + 2, my + 2) + surface.SetDrawColor(AEUI.HoveredPanel.bgcolor) + surface.DrawRect(mx, my, tw + 4, th + 4) + surface.SetDrawColor(AEUI.HoveredPanel.outlinecolor) + surface.DrawOutlinedRect(mx, my, tw + 4, th + 4) + surface.DrawText(e.hover) + end + end +end + +hook.Add("HUDPaint", "AEUIDraw", AEUIDraw) + +hook.Add("StartCommand", "AEUI_StartCommand", function(ply, cmd) + local mx = gui.MouseX() + local my = gui.MouseY() + AEUI.MY = my + AEUI.MX = mx + + for i = 1, #AEUI.Panels do + local panel = AEUI.Panels[#AEUI.Panels + 1 - i] + local x = SScaleX(panel.x) + local y = SScaleY(panel.y) + local w = SScaleX(panel.w) + local h = SScaleY(panel.h) + + if x < mx and mx < x + w and y < my and my < y + h then + AEUI.HoveredPanel = panel + break + else + AEUI.HoveredPanel = nil + end + end + + local wheelup = input.WasMousePressed(MOUSE_WHEEL_UP) and 63 or 0 + local wheeldown = input.WasMousePressed(MOUSE_WHEEL_DOWN) and -63 or 0 + local scrolldelta = wheelup + wheeldown + local hoveredpanel = AEUI.HoveredPanel + + if scrolldelta ~= 0 and hoveredpanel and (hoveredpanel.maxscroll or 0) > 0 then + hoveredpanel.scroll = math.Clamp((hoveredpanel.scroll or 0) + scrolldelta, -hoveredpanel.maxscroll, 0) + end + + local click = input.WasMousePressed(MOUSE_LEFT) + + if hoveredpanel then + for k, v in ipairs(hoveredpanel.elements) do + if (v.onclick or v.hover) and (not v.greyed or not v.greyed()) and v.w and v.h then + local x = SScaleX(hoveredpanel.x) + SScaleX(v.x) + local y = SScaleY(hoveredpanel.y) + SScaleY(v.y) + (hoveredpanel.scroll or 0) + local w = v.w + local h = v.h + + if v.centered then + x = x - w * 0.5 + y = y - h * 0.5 + end + + if x < mx and mx < x + w and y < my and my < y + h then + AEUI.HoveredElement = v + + if v.onclick and click and AEUI.LastClick < CurTime() then + v:onclick() + AEUI.LastClick = CurTime() + 0.1 + end + + break + else + AEUI.HoveredElement = nil + end + end + end + else + AEUI.HoveredElement = nil + end +end) + +hook.Add("OnScreenSizeChanged", "AEUI_ScreenSize", function() + AEUI.ScrH = ScrH() + AEUI.ScrW = ScrW() + table.Empty(SScaleX_cached) + table.Empty(SScaleY_cached) + AEUIFonts() +end) + +function AEUI.Elements.Text(panel, data) + local ox = SScaleX(panel.x) + local oy = SScaleY(panel.y) + (panel.scroll or 0) + local isgreyed = false + + if data.greyed then + isgreyed = data.greyed() + end + + surface.SetFont(data.font) + + if isgreyed then + local colr, colg, colb = data.color:Unpack() + surface.SetDrawColor(colr, colg, colb, 50) + surface.SetTextColor(colr, colg, colb, 50) + else + surface.SetDrawColor(data.color) + surface.SetTextColor(data.color) + end + + if not isgreyed and AEUI.HoveredElement == data then + surface.SetTextColor(0, 230, 0) + end + + local posy = 0 + local dataw = 0 + local datah = 0 + local str = data.string + + if isfunction(str) then + str = str() or "" + end + + for k, v in ipairs(string.Split(str, "\n")) do + if v ~= "" then + if data.centered then + local tw, th = surface.GetTextSize(v) + local x = ox + SScaleX(data.x) - tw * 0.5 + local y = oy + SScaleY(data.y) - th * 0.5 + th * (k - 1) + datah = datah + th + + if dataw < tw then + dataw = tw + end + + if posy < y then + posy = y + th * (k - 1) + end + + surface.SetTextPos(x, y) + else + local tw, th = surface.GetTextSize(v) + local x = ox + SScaleX(data.x) + local y = oy + SScaleY(data.y) + th * (k - 1) + datah = datah + th + + if dataw < tw then + dataw = tw + end + + if posy < y then + posy = y + th * (k - 1) + end + + surface.SetTextPos(x, y) + end + + surface.DrawText(v) + end + end + + data.h = datah + data.w = dataw + posy = posy - oy - SScaleY(panel.h) + + if not panel.maxscroll or panel.maxscroll < posy then + panel.maxscroll = posy + end +end + +function AEUI.Elements.Button(panel, data) + local ox = SScaleX(panel.x) + local oy = SScaleY(panel.y) + (panel.scroll or 0) + + surface.SetFont(data.font) + + local isgreyed = false + + if data.greyed then + isgreyed = data.greyed() + end + + if isgreyed then + local colr, colg, colb = data.color:Unpack() + + surface.SetDrawColor(colr, colg, colb, 50) + surface.SetTextColor(colr, colg, colb, 50) + else + surface.SetDrawColor(data.color) + surface.SetTextColor(data.color) + end + + if not isgreyed and AEUI.HoveredElement == data then + surface.SetDrawColor(0, 230, 0) + surface.SetTextColor(0, 230, 0) + end + + local posy = 0 + local v = data.string + local tw, th = surface.GetTextSize(v) + local dataw = 0 + local datah = 0 + + if data.centered then + datah = th + 4 + dataw = tw + 4 + surface.DrawOutlinedRect(ox + SScaleX(data.x) - tw * 0.5 - 2, oy + SScaleY(data.y) - th * 0.5 - 2, dataw, datah) + local x = ox + SScaleX(data.x) - tw * 0.5 + local y = oy + SScaleY(data.y) - th * 0.5 + + if posy < y then + posy = y + th + end + + surface.SetTextPos(x, y) + else + datah = th + dataw = tw + surface.DrawOutlinedRect(ox + SScaleX(data.x), oy + SScaleY(data.y), tw, th) + local x = ox + SScaleX(data.x) + local y = oy + SScaleY(data.y) + + if posy < y then + posy = y + th + end + + surface.SetTextPos(x, y) + end + + data.h = datah + data.w = dataw + surface.DrawText(v) + posy = posy - oy - SScaleY(panel.h) + + if not panel.maxscroll or panel.maxscroll < posy then + panel.maxscroll = posy + end +end + +function AEUI.Elements.Image(panel, data) + if not data.wo then + data.ho = data.h + data.wo = data.w + end + + local isgreyed = false + + if data.greyed then + isgreyed = data.greyed() + end + + local ox = SScaleX(panel.x) + local oy = SScaleY(panel.y) + (panel.scroll or 0) + local dataw = SScaleX(data.wo) + local datah = SScaleY(data.ho) + + if not isgreyed and AEUI.HoveredElement == data then + surface.SetDrawColor(0, 230, 0) + surface.DrawOutlinedRect(ox + SScaleX(data.x), oy + SScaleY(data.y), dataw, datah) + end + + local posy = 0 + -- local x = ox + SScaleX(data.x) + local y = oy + SScaleY(data.y) + + if isgreyed then + local colr, colg, colb = data.color:Unpack() + + surface.SetDrawColor(colr, colg, colb, 50) + else + surface.SetDrawColor(data.color) + end + + if posy < y then + posy = y + datah + end + + data.h = datah + data.w = dataw + + surface.SetMaterial(data.mat) + surface.DrawTexturedRect(ox + SScaleX(data.x), oy + SScaleY(data.y), dataw, datah) + + posy = posy - oy - SScaleY(panel.h) + + if not panel.maxscroll or panel.maxscroll < posy then + panel.maxscroll = posy + end +end \ No newline at end of file diff --git a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua index 414ebca..9c3fb36 100644 --- a/beatrun/gamemodes/beatrun/gamemode/cl_init.lua +++ b/beatrun/gamemodes/beatrun/gamemode/cl_init.lua @@ -1,7 +1,6 @@ include("shared.lua") -for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME")) do - print(v) +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME", "nameasc")) do include("cl/" .. v) end diff --git a/beatrun/gamemodes/beatrun/gamemode/init.lua b/beatrun/gamemodes/beatrun/gamemode/init.lua index 6619852..4ad9a5c 100644 --- a/beatrun/gamemodes/beatrun/gamemode/init.lua +++ b/beatrun/gamemodes/beatrun/gamemode/init.lua @@ -2,16 +2,18 @@ AddCSLuaFile("cl_init.lua") AddCSLuaFile("shared.lua") include("shared.lua") -for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/cl/*.lua", "GAME", "nameasc")) do + print(v) AddCSLuaFile("cl/" .. v) end -for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME", "nameasc")) do print(v) include("sh/" .. v) AddCSLuaFile("sh/" .. v) end -for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sv/*.lua", "GAME")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sv/*.lua", "GAME", "nameasc")) do + print(v) include("sv/" .. v) end \ No newline at end of file diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/0_Helpers.lua b/beatrun/gamemodes/beatrun/gamemode/sh/0_Helpers.lua new file mode 100644 index 0000000..3d8b40e --- /dev/null +++ b/beatrun/gamemodes/beatrun/gamemode/sh/0_Helpers.lua @@ -0,0 +1,85 @@ +local vmatrixmeta = FindMetaTable("VMatrix") +local playermeta = FindMetaTable("Player") + +CLoadout = {} + +function CLIENT_IFTP() + return CLIENT and IsFirstTimePredicted() +end + +--[[ +local matrixdatatmp = { + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 1} +} +]] + +local mtmp = { + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 0}, + {0, 0, 0, 1} +} + +function vmatrixmeta:FastToTable(tbl) + tbl = tbl or table.Copy(mtmp) + local tbl1 = tbl[1] + local tbl2 = tbl[2] + local tbl3 = tbl[3] + tbl1[1], tbl1[2], tbl1[3], tbl1[4], tbl2[1], tbl2[2], tbl2[3], tbl2[4], tbl3[1], tbl3[2], tbl3[3], tbl3[4] = self:Unpack() + + return tbl +end + +function LerpL(t, a, b) + return a + (b - a) * t +end + +function LerpC(t, a, b, powa) + return a + (b - a) * math.pow(t, powa) +end + +function TraceSetData(tbl, start, endpos, mins, maxs, filter) + tbl.start = start + tbl.endpos = endpos + + if tbl.mins then + tbl.mins = mins + tbl.maxs = maxs + end + + if filter then + tbl.filter = filter + elseif not maxs then + tbl.filter = mins + end +end + +function TraceParkourMask(tbl) + tbl.mask = MASK_PLAYERSOLID + tbl.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT +end + +function playermeta:SetMantleData(startpos, endpos, lerp, mantletype) + self:SetMantleStartPos(startpos) + self:SetMantleEndPos(endpos) + self:SetMantleLerp(lerp) + self:SetMantle(mantletype) +end + +function playermeta:SetWallrunData(wr, wrtime, dir) + local count = self:GetWallrunCount() + + self:SetWallrun(wr) + self:SetWallrunCount(count + 1) + self:SetWallrunTime(wrtime) + self:SetWallrunSoundTime(CurTime() + 0.1) + self:SetWallrunDir(dir) +end + +function playermeta:UsingRH(wep) + local activewep = wep or self:GetActiveWeapon() + if IsValid(activewep) then return activewep:GetClass() == "runnerhands" end +end \ No newline at end of file diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Sounds_!Precache.lua b/beatrun/gamemodes/beatrun/gamemode/sh/0_Sounds_!Precache.lua similarity index 100% rename from beatrun/gamemodes/beatrun/gamemode/sh/Sounds_!Precache.lua rename to beatrun/gamemodes/beatrun/gamemode/sh/0_Sounds_!Precache.lua diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/Sounds_zzzEnd.lua b/beatrun/gamemodes/beatrun/gamemode/sh/zzz_Sounds_End.lua similarity index 100% rename from beatrun/gamemodes/beatrun/gamemode/sh/Sounds_zzzEnd.lua rename to beatrun/gamemodes/beatrun/gamemode/sh/zzz_Sounds_End.lua diff --git a/beatrun/gamemodes/beatrun/gamemode/shared.lua b/beatrun/gamemodes/beatrun/gamemode/shared.lua index d773882..4a0469c 100644 --- a/beatrun/gamemodes/beatrun/gamemode/shared.lua +++ b/beatrun/gamemodes/beatrun/gamemode/shared.lua @@ -8,7 +8,7 @@ GM.Email = "datae@dontemailme.com" GM.Website = "www.mirrorsedge.com" include("player_class/player_beatrun.lua") -for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME")) do +for k, v in ipairs(file.Find("gamemodes/beatrun/gamemode/sh/*.lua", "GAME", "nameasc")) do AddCSLuaFile("sh/" .. v) include("sh/" .. v) end \ No newline at end of file diff --git a/vmaniprework/lua/autorun/client/cl_vmanip.lua b/vmaniprework/lua/autorun/client/cl_vmanip.lua index 7d33f0b..b8f5a4c 100644 --- a/vmaniprework/lua/autorun/client/cl_vmanip.lua +++ b/vmaniprework/lua/autorun/client/cl_vmanip.lua @@ -626,17 +626,24 @@ hook.Add("NeedsDepthPass", "VManip_RubatPLZ", function() VManip.Attachment = att end) -local ISCALC = false + +local calcview_hooks = {} +timer.Simple(5, function() + calcview_hooks = hook.GetTable()["CalcView"] +end) + hook.Add("CalcView", "VManip_Cam", function(ply, origin, angles, fov) -- we dont really care about camera manipulations from other hooks during this, thus we can ignore them. -- some important calculations can happen in calcview hooks however, so running them is important - if ISCALC then return end - ISCALC = true - hook.Run("CalcView", ply, origin, angles, fov) - ISCALC = false if not VManip:IsActive() or not VManip.Attachment then return end if ply:GetViewEntity() ~= ply or ply:ShouldDrawLocalPlayer() then return end + + for name, func in pairs(calcview_hooks) do + if name == "VManip_Cam" then continue end + func(ply, origin, angles, fov) + end + local view = {} local camang = VManip.Attachment.Ang - VManip.Cam_Ang view.angles = angles + Angle(camang.x * VManip.Cam_AngInt[1], camang.y * VManip.Cam_AngInt[2], camang.z * VManip.Cam_AngInt[3]) From 1aea61896f1f491f28f9e36dca8e365617112ed6 Mon Sep 17 00:00:00 2001 From: relaxtakenotes Date: Thu, 22 Jun 2023 03:02:44 +0500 Subject: [PATCH 3/3] im not done --- beatrun/gamemodes/beatrun/gamemode/cl/_UI.lua | 528 ------------------ .../beatrun/gamemode/sh/_Helpers.lua | 85 --- 2 files changed, 613 deletions(-) delete mode 100644 beatrun/gamemodes/beatrun/gamemode/cl/_UI.lua delete mode 100644 beatrun/gamemodes/beatrun/gamemode/sh/_Helpers.lua diff --git a/beatrun/gamemodes/beatrun/gamemode/cl/_UI.lua b/beatrun/gamemodes/beatrun/gamemode/cl/_UI.lua deleted file mode 100644 index 7621286..0000000 --- a/beatrun/gamemodes/beatrun/gamemode/cl/_UI.lua +++ /dev/null @@ -1,528 +0,0 @@ -AEUI = {} -local AEUI = AEUI -local SScaleX_cached = {} -local SScaleY_cached = {} - -function SScaleX(sizex) - -- local iswide = AEUI.ScrW / AEUI.ScrH > 1.6 - if SScaleX_cached[sizex] then return SScaleX_cached[sizex] end - - SScaleX_cached[sizex] = math.ceil(sizex / (1920 / AEUI.ScrW)) - - return SScaleX_cached[sizex] -end - -function SScaleY(sizey) - -- local iswide = AEUI.ScrW / AEUI.ScrH > 1.6 - if SScaleY_cached[sizey] then return SScaleY_cached[sizey] end - - SScaleY_cached[sizey] = math.ceil(sizey / (1080 / AEUI.ScrH)) - - return SScaleY_cached[sizey] -end - -local SScaleX = SScaleX -local SScaleY = SScaleY - -function AEUIFonts() - surface.CreateFont("AEUIDefault", { - shadow = false, - blursize = 0, - underline = false, - rotary = false, - strikeout = false, - additive = false, - antialias = true, - extended = false, - scanlines = 0, - font = "D-DIN", - italic = false, - outline = false, - symbol = false, - weight = 500, - size = ScreenScale(7) - }) - - surface.CreateFont("AEUILarge", { - shadow = false, - blursize = 0, - underline = false, - rotary = false, - strikeout = false, - additive = false, - antialias = true, - extended = false, - scanlines = 0, - font = "D-DIN", - italic = false, - outline = false, - symbol = false, - weight = 500, - size = ScreenScale(12) - }) - - surface.CreateFont("AEUIVeryLarge", { - shadow = false, - blursize = 0, - underline = false, - rotary = false, - strikeout = false, - additive = false, - antialias = true, - extended = false, - scanlines = 0, - font = "D-DIN", - italic = false, - outline = false, - symbol = false, - weight = 500, - size = ScreenScale(18) - }) -end - -AEUIFonts() - -AEUI.Panels = {} -AEUI.Elements = {} -AEUI.MY = 0 -AEUI.MX = 0 -AEUI.LastClick = 0 -AEUI.ScrH = ScrH() -AEUI.ScrW = ScrW() -AEUI.HoveredPanel = nil - -function AEUI:DrawPanel(panel) - local x = SScaleX(panel.x) - local y = SScaleY(panel.y) - local w = SScaleX(panel.w) - local h = SScaleY(panel.h) - - surface.SetDrawColor(panel.bgcolor) - surface.DrawRect(x, y, w, h) - surface.SetDrawColor(panel.outlinecolor) - surface.DrawOutlinedRect(x, y, w, h) - render.SetScissorRect(x, y, x + w, y + h, true) -end - -function AEUI:AddPanel(panel) - if table.HasValue(AEUI.Panels, panel) then return end - - table.insert(AEUI.Panels, panel) - gui.EnableScreenClicker(true) -end - -function AEUI:RemovePanel(panel) - table.RemoveByValue(AEUI.Panels, panel) - - if #AEUI.Panels <= 0 then - gui.EnableScreenClicker(false) - end -end - -function AEUI:AddText(panel, str, font, x, y, centered, color) - font = font or "AEUIDefault" - x = x or 0 - y = y or 0 - centered = centered or false - color = color or color_white - - local text = { - x = x, - y = y, - centered = centered, - color = color, - font = font, - string = str, - type = "Text" - } - - table.insert(panel.elements, text) - - return text -end - -function AEUI:AddButton(panel, str, func, font, x, y, centered, color) - font = font or "AEUIDefault" - x = x or 0 - y = y or 0 - centered = centered or false - color = color or color_white - func = func or function() end - - local button = { - x = x, - y = y, - centered = centered, - color = color, - font = font, - string = str, - type = "Button", - onclick = func - } - - table.insert(panel.elements, button) - - return button -end - -function AEUI:AddImage(panel, mat, func, x, y, w, h, color) - font = font or "AEUIDefault" - x = x or 0 - y = y or 0 - centered = centered or false - color = color or color_white - func = func or function() end - - local image = { - x = x, - y = y, - w = w, - h = h, - centered = centered, - color = color, - font = font, - mat = mat, - type = "Image", - onclick = func - } - - table.insert(panel.elements, image) - - return image -end - -function AEUI:Clear() - table.Empty(AEUI.Panels) - gui.EnableScreenClicker(false) -end - -function AEUI:DrawElement(panel, data) - AEUI.Elements[data.type](panel, data) -end - -local function AEUIDraw() - if AEUI.NoDraw then return end - - for k, v in ipairs(AEUI.Panels) do - surface.SetAlphaMultiplier(v.alpha or 1) - AEUI:DrawPanel(v) - surface.SetAlphaMultiplier(1) - - if v.elements then - for l, b in ipairs(v.elements) do - AEUI:DrawElement(v, b) - end - end - - render.SetScissorRect(0, 0, 0, 0, false) - local maxscroll = math.abs(v.maxscroll or 0) - - if (v.maxscroll or 0) > 0 then - local ratio = math.abs((v.scroll or 0) / maxscroll) - local visratio = v.h / maxscroll - local height = maxscroll * visratio * 0.5 - - surface.SetDrawColor(255, 255, 255) - surface.DrawRect(SScaleX(v.x + v.w), SScaleY(v.y + height * ratio), SScaleX(8), SScaleY(height)) - end - end - - if AEUI.HoveredElement then - local e = AEUI.HoveredElement - - if e.hover then - local mx = AEUI.MX + SScaleX(20) - local my = AEUI.MY + SScaleY(20) - - surface.SetTextColor(255, 255, 255) - surface.SetFont("AEUIDefault") - - local tw, th = surface.GetTextSize(e.hover) - - if ScrW() < mx + tw then - mx = mx - tw - end - - surface.SetTextPos(mx + 2, my + 2) - surface.SetDrawColor(AEUI.HoveredPanel.bgcolor) - surface.DrawRect(mx, my, tw + 4, th + 4) - surface.SetDrawColor(AEUI.HoveredPanel.outlinecolor) - surface.DrawOutlinedRect(mx, my, tw + 4, th + 4) - surface.DrawText(e.hover) - end - end -end - -hook.Add("HUDPaint", "AEUIDraw", AEUIDraw) - -hook.Add("StartCommand", "AEUI_StartCommand", function(ply, cmd) - local mx = gui.MouseX() - local my = gui.MouseY() - AEUI.MY = my - AEUI.MX = mx - - for i = 1, #AEUI.Panels do - local panel = AEUI.Panels[#AEUI.Panels + 1 - i] - local x = SScaleX(panel.x) - local y = SScaleY(panel.y) - local w = SScaleX(panel.w) - local h = SScaleY(panel.h) - - if x < mx and mx < x + w and y < my and my < y + h then - AEUI.HoveredPanel = panel - break - else - AEUI.HoveredPanel = nil - end - end - - local wheelup = input.WasMousePressed(MOUSE_WHEEL_UP) and 63 or 0 - local wheeldown = input.WasMousePressed(MOUSE_WHEEL_DOWN) and -63 or 0 - local scrolldelta = wheelup + wheeldown - local hoveredpanel = AEUI.HoveredPanel - - if scrolldelta ~= 0 and hoveredpanel and (hoveredpanel.maxscroll or 0) > 0 then - hoveredpanel.scroll = math.Clamp((hoveredpanel.scroll or 0) + scrolldelta, -hoveredpanel.maxscroll, 0) - end - - local click = input.WasMousePressed(MOUSE_LEFT) - - if hoveredpanel then - for k, v in ipairs(hoveredpanel.elements) do - if (v.onclick or v.hover) and (not v.greyed or not v.greyed()) and v.w and v.h then - local x = SScaleX(hoveredpanel.x) + SScaleX(v.x) - local y = SScaleY(hoveredpanel.y) + SScaleY(v.y) + (hoveredpanel.scroll or 0) - local w = v.w - local h = v.h - - if v.centered then - x = x - w * 0.5 - y = y - h * 0.5 - end - - if x < mx and mx < x + w and y < my and my < y + h then - AEUI.HoveredElement = v - - if v.onclick and click and AEUI.LastClick < CurTime() then - v:onclick() - AEUI.LastClick = CurTime() + 0.1 - end - - break - else - AEUI.HoveredElement = nil - end - end - end - else - AEUI.HoveredElement = nil - end -end) - -hook.Add("OnScreenSizeChanged", "AEUI_ScreenSize", function() - AEUI.ScrH = ScrH() - AEUI.ScrW = ScrW() - table.Empty(SScaleX_cached) - table.Empty(SScaleY_cached) - AEUIFonts() -end) - -function AEUI.Elements.Text(panel, data) - local ox = SScaleX(panel.x) - local oy = SScaleY(panel.y) + (panel.scroll or 0) - local isgreyed = false - - if data.greyed then - isgreyed = data.greyed() - end - - surface.SetFont(data.font) - - if isgreyed then - local colr, colg, colb = data.color:Unpack() - surface.SetDrawColor(colr, colg, colb, 50) - surface.SetTextColor(colr, colg, colb, 50) - else - surface.SetDrawColor(data.color) - surface.SetTextColor(data.color) - end - - if not isgreyed and AEUI.HoveredElement == data then - surface.SetTextColor(0, 230, 0) - end - - local posy = 0 - local dataw = 0 - local datah = 0 - local str = data.string - - if isfunction(str) then - str = str() or "" - end - - for k, v in ipairs(string.Split(str, "\n")) do - if v ~= "" then - if data.centered then - local tw, th = surface.GetTextSize(v) - local x = ox + SScaleX(data.x) - tw * 0.5 - local y = oy + SScaleY(data.y) - th * 0.5 + th * (k - 1) - datah = datah + th - - if dataw < tw then - dataw = tw - end - - if posy < y then - posy = y + th * (k - 1) - end - - surface.SetTextPos(x, y) - else - local tw, th = surface.GetTextSize(v) - local x = ox + SScaleX(data.x) - local y = oy + SScaleY(data.y) + th * (k - 1) - datah = datah + th - - if dataw < tw then - dataw = tw - end - - if posy < y then - posy = y + th * (k - 1) - end - - surface.SetTextPos(x, y) - end - - surface.DrawText(v) - end - end - - data.h = datah - data.w = dataw - posy = posy - oy - SScaleY(panel.h) - - if not panel.maxscroll or panel.maxscroll < posy then - panel.maxscroll = posy - end -end - -function AEUI.Elements.Button(panel, data) - local ox = SScaleX(panel.x) - local oy = SScaleY(panel.y) + (panel.scroll or 0) - - surface.SetFont(data.font) - - local isgreyed = false - - if data.greyed then - isgreyed = data.greyed() - end - - if isgreyed then - local colr, colg, colb = data.color:Unpack() - - surface.SetDrawColor(colr, colg, colb, 50) - surface.SetTextColor(colr, colg, colb, 50) - else - surface.SetDrawColor(data.color) - surface.SetTextColor(data.color) - end - - if not isgreyed and AEUI.HoveredElement == data then - surface.SetDrawColor(0, 230, 0) - surface.SetTextColor(0, 230, 0) - end - - local posy = 0 - local v = data.string - local tw, th = surface.GetTextSize(v) - local dataw = 0 - local datah = 0 - - if data.centered then - datah = th + 4 - dataw = tw + 4 - surface.DrawOutlinedRect(ox + SScaleX(data.x) - tw * 0.5 - 2, oy + SScaleY(data.y) - th * 0.5 - 2, dataw, datah) - local x = ox + SScaleX(data.x) - tw * 0.5 - local y = oy + SScaleY(data.y) - th * 0.5 - - if posy < y then - posy = y + th - end - - surface.SetTextPos(x, y) - else - datah = th - dataw = tw - surface.DrawOutlinedRect(ox + SScaleX(data.x), oy + SScaleY(data.y), tw, th) - local x = ox + SScaleX(data.x) - local y = oy + SScaleY(data.y) - - if posy < y then - posy = y + th - end - - surface.SetTextPos(x, y) - end - - data.h = datah - data.w = dataw - surface.DrawText(v) - posy = posy - oy - SScaleY(panel.h) - - if not panel.maxscroll or panel.maxscroll < posy then - panel.maxscroll = posy - end -end - -function AEUI.Elements.Image(panel, data) - if not data.wo then - data.ho = data.h - data.wo = data.w - end - - local isgreyed = false - - if data.greyed then - isgreyed = data.greyed() - end - - local ox = SScaleX(panel.x) - local oy = SScaleY(panel.y) + (panel.scroll or 0) - local dataw = SScaleX(data.wo) - local datah = SScaleY(data.ho) - - if not isgreyed and AEUI.HoveredElement == data then - surface.SetDrawColor(0, 230, 0) - surface.DrawOutlinedRect(ox + SScaleX(data.x), oy + SScaleY(data.y), dataw, datah) - end - - local posy = 0 - -- local x = ox + SScaleX(data.x) - local y = oy + SScaleY(data.y) - - if isgreyed then - local colr, colg, colb = data.color:Unpack() - - surface.SetDrawColor(colr, colg, colb, 50) - else - surface.SetDrawColor(data.color) - end - - if posy < y then - posy = y + datah - end - - data.h = datah - data.w = dataw - - surface.SetMaterial(data.mat) - surface.DrawTexturedRect(ox + SScaleX(data.x), oy + SScaleY(data.y), dataw, datah) - - posy = posy - oy - SScaleY(panel.h) - - if not panel.maxscroll or panel.maxscroll < posy then - panel.maxscroll = posy - end -end \ No newline at end of file diff --git a/beatrun/gamemodes/beatrun/gamemode/sh/_Helpers.lua b/beatrun/gamemodes/beatrun/gamemode/sh/_Helpers.lua deleted file mode 100644 index 3d8b40e..0000000 --- a/beatrun/gamemodes/beatrun/gamemode/sh/_Helpers.lua +++ /dev/null @@ -1,85 +0,0 @@ -local vmatrixmeta = FindMetaTable("VMatrix") -local playermeta = FindMetaTable("Player") - -CLoadout = {} - -function CLIENT_IFTP() - return CLIENT and IsFirstTimePredicted() -end - ---[[ -local matrixdatatmp = { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 1} -} -]] - -local mtmp = { - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 0}, - {0, 0, 0, 1} -} - -function vmatrixmeta:FastToTable(tbl) - tbl = tbl or table.Copy(mtmp) - local tbl1 = tbl[1] - local tbl2 = tbl[2] - local tbl3 = tbl[3] - tbl1[1], tbl1[2], tbl1[3], tbl1[4], tbl2[1], tbl2[2], tbl2[3], tbl2[4], tbl3[1], tbl3[2], tbl3[3], tbl3[4] = self:Unpack() - - return tbl -end - -function LerpL(t, a, b) - return a + (b - a) * t -end - -function LerpC(t, a, b, powa) - return a + (b - a) * math.pow(t, powa) -end - -function TraceSetData(tbl, start, endpos, mins, maxs, filter) - tbl.start = start - tbl.endpos = endpos - - if tbl.mins then - tbl.mins = mins - tbl.maxs = maxs - end - - if filter then - tbl.filter = filter - elseif not maxs then - tbl.filter = mins - end -end - -function TraceParkourMask(tbl) - tbl.mask = MASK_PLAYERSOLID - tbl.collisiongroup = COLLISION_GROUP_PLAYER_MOVEMENT -end - -function playermeta:SetMantleData(startpos, endpos, lerp, mantletype) - self:SetMantleStartPos(startpos) - self:SetMantleEndPos(endpos) - self:SetMantleLerp(lerp) - self:SetMantle(mantletype) -end - -function playermeta:SetWallrunData(wr, wrtime, dir) - local count = self:GetWallrunCount() - - self:SetWallrun(wr) - self:SetWallrunCount(count + 1) - self:SetWallrunTime(wrtime) - self:SetWallrunSoundTime(CurTime() + 0.1) - self:SetWallrunDir(dir) -end - -function playermeta:UsingRH(wep) - local activewep = wep or self:GetActiveWeapon() - if IsValid(activewep) then return activewep:GetClass() == "runnerhands" end -end \ No newline at end of file