From 1c06462838ab99eeefecf8e3ffc11e882e9dc4b1 Mon Sep 17 00:00:00 2001 From: AlmTech Software Date: Mon, 3 Feb 2020 21:02:08 +0100 Subject: [PATCH] Added new button & panel themes (fade) --- .../entities/q_crafting_station/cl_init.lua | 49 +++++++++++--- gamemode/engine/core/client/cl_hud.lua | 2 +- gamemode/engine/derma/lib/cl_menu_theme.lua | 65 +++++++++++++++++++ gamemode/engine/derma/menus/menu_main.lua | 36 +++++----- gamemode/engine/lib/sh_station.lua | 2 +- gamemode/settings/sh_crafting_stations.lua | 9 ++- .../sv_crafting_stations_locations.lua | 2 +- 7 files changed, 134 insertions(+), 31 deletions(-) diff --git a/entities/entities/q_crafting_station/cl_init.lua b/entities/entities/q_crafting_station/cl_init.lua index 2c91012..09e7851 100644 --- a/entities/entities/q_crafting_station/cl_init.lua +++ b/entities/entities/q_crafting_station/cl_init.lua @@ -12,21 +12,50 @@ local ang local mdlHeight local p, q +local txtW, txtH +local stationTbl +local stationName + +local barW, barH +local scale = Quantum.Client.ResolutionScale +local padding = 10 * scale + function ENT:Draw() + if( !stationTbl ) then + stationTbl = Quantum.Station.Get( self:GetNWInt( "q_station_id" ) ) + stationName = stationTbl.name + end self:DrawModel() - pos, ang = self:GetPos(), self:GetAngles() + if( stationTbl.showname == true ) then + pos, ang = self:GetPos(), self:GetAngles() + + p, q = self:GetRenderBounds() + mdlHeight = q.z - p.z + + pos = pos + ang:Up() * (mdlHeight + 20) + + -- rotate around axis + ang:RotateAroundAxis( ang:Forward(), 90 ) + ang:RotateAroundAxis( ang:Right(), 90 ) + + ang.y = LocalPlayer():EyeAngles().y - 90 + + cam.Start3D2D( pos, ang, 0.15 ) + surface.SetTextColor( Color( 255, 255, 255 ) ) + surface.SetFont( "q_title" ) + txtW, txtH = surface.GetTextSize( stationName ) - p, q = self:GetRenderBounds() - mdlHeight = q.z - p.z + barW, barH = txtW + padding, txtH + padding - pos = pos + ang:Up() * (mdlHeight + 10) + surface.SetDrawColor( 0, 0, 0, 150 ) + surface.DrawRect( -barW/2, -padding/2, barW, barH ) - -- rotate around axis + surface.SetDrawColor( 255, 255, 255, 255 ) + surface.DrawOutlinedRect( -barW/2, -padding/2, barW, barH ) - cam.Start3D2D( pos, ang, 0.15 ) - surface.SetTextColor( Color( 255, 255, 255 ) ) - surface.SetFont( "q_title" ) - surface.DrawText( "aihofhsdifhiosdfh" ) - cam.End3D2D() + surface.SetTextPos( -txtW/2, 0 ) + surface.DrawText( stationName ) + cam.End3D2D() + end end \ No newline at end of file diff --git a/gamemode/engine/core/client/cl_hud.lua b/gamemode/engine/core/client/cl_hud.lua index d1751f0..2e320ec 100644 --- a/gamemode/engine/core/client/cl_hud.lua +++ b/gamemode/engine/core/client/cl_hud.lua @@ -113,7 +113,7 @@ local function createCraftPanel() craft.Paint = function( self, w, h ) surface.SetDrawColor( Color( 0, 0, 0, 180 ) ) - surface.DrawOutlinedRect( 0, 0, w, h ) + surface.DrawRect( 0, 0, w, h ) surface.SetDrawColor( Color( 255, 255, 255, 50 ) ) surface.DrawOutlinedRect( 0, 0, w, h ) diff --git a/gamemode/engine/derma/lib/cl_menu_theme.lua b/gamemode/engine/derma/lib/cl_menu_theme.lua index aa7cbd3..1619065 100644 --- a/gamemode/engine/derma/lib/cl_menu_theme.lua +++ b/gamemode/engine/derma/lib/cl_menu_theme.lua @@ -187,6 +187,71 @@ function theme.titleframe( p ) surface.DrawOutlinedRect( -scale*2, 0, w + 4 * scale, h ) end +function theme.fadepanel( p, dir, color, startalpha, intervall ) + local w, h = p:GetSize() + color = color || Color( 0, 0, 0 ) + local alpha = startalpha || 200 + dir = dir || 1 + intervall = intervall || 2 + + surface.SetDrawColor( color ) + surface.SetAlphaMultiplier( 1 ) + + if( dir == 1 ) then + for iw=1, w, intervall do + surface.SetDrawColor( Color( color.r, color.g, color.b, alpha * math.Clamp( (w-(iw-1)) / w, 0, 1 ) ) ) + surface.DrawRect( iw - 1, 0, intervall, h ) + end + elseif( dir == 2 ) then + for iw=1, w, intervall do + surface.SetDrawColor( Color( color.r, color.g, color.b, alpha * math.Clamp( (w-(iw-1)) / w, 0, 1 ) ) ) + surface.DrawRect( w - (iw - 1), 0, intervall, h ) + end + end +end + +function theme.fadepanelborder( p, dir, color, color2, startalpha, intervall ) + local w, h = p:GetSize() + color = color || Color( 0, 0, 0 ) + color2 = color2 || Color( 0, 0, 0 ) + local alpha = startalpha || 200 + dir = dir || 1 + intervall = intervall || 1 + + local ih = 2*scale + + theme.fadepanel( p, dir, color, startalpha, intervall ) + + -- border + if( dir == 1 ) then + for iw=1, w, intervall do + surface.SetDrawColor( Color( color2.r, color2.g, color2.b, alpha * math.Clamp( (w-(iw-1)) / w, 0, 1 ) ) ) + + surface.DrawRect( iw - 1, 0, intervall, ih ) + surface.DrawRect( iw - 1, h - ih/2, intervall, ih ) + end + elseif( dir == 2 ) then + for iw=1, w, intervall do ------------------- NOT DONE + surface.SetDrawColor( Color( color2.r, color2.g, color2.b, alpha * math.Clamp( (w-(iw-1)) / w, 0, 1 ) ) ) + surface.DrawRect( w - (iw - 1), 0, intervall, 2 ) + end + end +end + +function theme.fadebutton( b, dir, inColor ) + local w, h = b:GetSize() + local brdColor = Color( 0, 0, 0 ) + inColor = inColor || Color( 0, 0, 0, 100 ) + + if( !b:IsHovered() ) then + brdColor = Color( 0, 0, 0 ) + else + brdColor = Color( 116, 185, 255 ) + end + theme.fadepanelborder( b, dir, Color( brdColor.r * 0.4, brdColor.g * 0.4, brdColor.b * 0.4 ) , brdColor ) + +end + ---- Color Manipulation ---- theme.color = {} diff --git a/gamemode/engine/derma/menus/menu_main.lua b/gamemode/engine/derma/menus/menu_main.lua index 3115d89..0286712 100644 --- a/gamemode/engine/derma/menus/menu_main.lua +++ b/gamemode/engine/derma/menus/menu_main.lua @@ -49,14 +49,6 @@ local scenes = { ["rp_dunwood_eu"] = { [1] = { - [1] = { - fov = 60, - velocity = 1, - pos1 = Vector( -8481.490234375, 10434.901367188, 161.60014343262 ), - ang1 = Angle( 13.865054130554, 112.71305084229, 0 ) - } - }, - [2] = { [1] = { fov = 80, velocity = 1, @@ -79,7 +71,7 @@ function main.open(dt) local padding = 10 * resScale local padding_s = 4 * resScale - local buttonWidth = 255 * resScale + local buttonWidth = 400 * resScale local buttonColor = Color( 20, 20, 20, 180 ) local buttonTextColor = Color( 255, 255, 255, 255 ) local buttonFont = "q_button2" @@ -145,9 +137,12 @@ function main.open(dt) ---- BUTTONS ---- - local xbasepos = padding*6 - local ybasepos = sh*0.85 - padding*20 + local xbasepos = 0 --padding*6 + local ybasepos = sh*0.775 - padding*20 local ypos = ybasepos + + local contBtnAlign = 5 + -- resume button if( dt.cont.resume ) then @@ -166,6 +161,8 @@ function main.open(dt) res.Paint = function( self ) --theme.sharpbutton( self, buttonColor ) + -- theme.fadebutton( self, 1, Color( 90, 90, 240 ) ) + theme.fadebutton( self, 1 ) end res.DoClick = function( self ) surface.PlaySound( "UI/buttonclick.wav" ) @@ -174,7 +171,7 @@ function main.open(dt) Quantum.Client.IsInMenu = false end res.OnCursorEntered = function() surface.PlaySound( "UI/buttonrollover.wav" ) end - res:SetContentAlignment( 4 ) + res:SetContentAlignment( contBtnAlign ) ypos = ypos + res.h + padding * 1.5 end @@ -204,6 +201,7 @@ function main.open(dt) play.Paint = function( self ) --theme.sharpbutton( self, buttonColor ) + theme.fadebutton( self, 1 ) end play.DoClick = function( self ) @@ -212,7 +210,7 @@ function main.open(dt) Quantum.Client.Menu.Menus["character"].open( dt ) end play.OnCursorEntered = function() surface.PlaySound( "UI/buttonrollover.wav" ) end - play:SetContentAlignment( 4 ) + play:SetContentAlignment( contBtnAlign ) ypos = ypos + play.h + padding * 1.5 @@ -232,12 +230,13 @@ function main.open(dt) settings.Paint = function( self ) --theme.sharpbutton( self, buttonColor ) + theme.fadebutton( self, 1 ) end settings.DoClick = function( self ) surface.PlaySound( "UI/buttonclick.wav" ) end settings.OnCursorEntered = function() surface.PlaySound( "UI/buttonrollover.wav" ) end - settings:SetContentAlignment( 4 ) + settings:SetContentAlignment( contBtnAlign ) ypos = ypos + settings.h + padding * 1.5 @@ -257,13 +256,14 @@ function main.open(dt) ws.Paint = function( self ) --theme.sharpbutton( self, buttonColor ) + theme.fadebutton( self, 1 ) end ws.DoClick = function( self ) surface.PlaySound( "UI/buttonclick.wav" ) gui.OpenURL( Quantum.WorkshopLink ) end ws.OnCursorEntered = function() surface.PlaySound( "UI/buttonrollover.wav" ) end - ws:SetContentAlignment( 4 ) + ws:SetContentAlignment( contBtnAlign ) ypos = ypos + ws.h + padding * 1.5 @@ -283,13 +283,14 @@ function main.open(dt) inv.Paint = function( self ) --theme.sharpbutton( self, buttonColor ) + theme.fadebutton( self, 1 ) end inv.DoClick = function( self ) surface.PlaySound( "UI/buttonclick.wav" ) gui.OpenURL( Quantum.DiscordInvite ) end inv.OnCursorEntered = function() surface.PlaySound( "UI/buttonrollover.wav" ) end - inv:SetContentAlignment( 4 ) + inv:SetContentAlignment( contBtnAlign ) ypos = ypos + inv.h + padding * 1.5 @@ -309,6 +310,7 @@ function main.open(dt) quit.Paint = function( self ) --theme.sharpbutton( self, buttonColor ) + theme.fadebutton( self, 1 ) end quit.DoClick = function( self ) surface.PlaySound( "UI/buttonclick.wav" ) @@ -317,7 +319,7 @@ function main.open(dt) end) end quit.OnCursorEntered = function() surface.PlaySound( "UI/buttonrollover.wav" ) end - quit:SetContentAlignment( 4 ) + quit:SetContentAlignment( contBtnAlign ) end end diff --git a/gamemode/engine/lib/sh_station.lua b/gamemode/engine/lib/sh_station.lua index 2cfdd2f..99b249a 100644 --- a/gamemode/engine/lib/sh_station.lua +++ b/gamemode/engine/lib/sh_station.lua @@ -15,6 +15,7 @@ function Quantum.Station.Add( id, tbl ) stationid = id, name = tbl.name || "Crafting Station", -- name of the station model = tbl.model || "models/props_phx/facepunch_barrel.mdl", + showname = tbl.showname, recipes = tbl.recipes } @@ -24,7 +25,6 @@ function Quantum.Station.Add( id, tbl ) end function Quantum.Station.Get( id ) - if( isnumber(id) ) then return nil end return Quantum.Stations[id] end diff --git a/gamemode/settings/sh_crafting_stations.lua b/gamemode/settings/sh_crafting_stations.lua index 601511d..f8e19ac 100644 --- a/gamemode/settings/sh_crafting_stations.lua +++ b/gamemode/settings/sh_crafting_stations.lua @@ -8,5 +8,12 @@ -- Add all of the station "categories" here -- Quantum.Station.Add( "barrel", { name = "Crafting Barrel", - model = "models/props_phx/facepunch_barrel.mdl" + model = "models/props_phx/facepunch_barrel.mdl", + showname = true +}) + +Quantum.Station.Add( "barrel2", { + name = "Test Barrel 2", + model = "models/props_phx/facepunch_barrel.mdl", + showname = false }) diff --git a/gamemode/settings/sv_crafting_stations_locations.lua b/gamemode/settings/sv_crafting_stations_locations.lua index 45a9d86..031a02c 100644 --- a/gamemode/settings/sv_crafting_stations_locations.lua +++ b/gamemode/settings/sv_crafting_stations_locations.lua @@ -6,4 +6,4 @@ -- \_\ /_/ \_\_|_| |_| |_|_|\___|\___|_| |_| /_/ Quantum.Server.Station.Register( "barrel", Vector( 747.13494873047, 10483.685546875, 7168.0317382813 ), Angle( 0, -118.23150634766, 0 ) ) -Quantum.Server.Station.Register( "barrel", Vector( 885.861328125, 10542.946289063, 7168.03125 ), Angle( 0, -118.23150634766, 0 ) ) \ No newline at end of file +Quantum.Server.Station.Register( "barrel2", Vector( 885.861328125, 10542.946289063, 7168.03125 ), Angle( 0, -118.23150634766, 0 ) ) \ No newline at end of file