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