This commit is contained in:
lifestorm
2024-08-04 22:55:00 +03:00
parent 0e770b2b49
commit 94063e4369
7342 changed files with 1718932 additions and 14 deletions

View File

@@ -0,0 +1,330 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local animationTime = 1
DEFINE_BASECLASS("ixSubpanelParent")
local PANEL = {}
function PANEL:Init()
if IsValid(ix.gui.F1Menu) then
ix.gui.F1Menu:Remove()
end
ix.gui.F1Menu = self
-- properties
self.noAnchor = CurTime() + 0.4
self.anchorMode = true
self.currentAlpha = 0
self.currentBlur = 0
gui.EnableScreenClicker( true )
self:SetSize(ScrW(), ScrH())
local function FramePaint( self, w, h)
surface.SetDrawColor(Color(0, 0, 0, 50))
surface.DrawRect(0, 0, w, h)
surface.SetDrawColor(Color(100, 100, 100, 150))
surface.DrawOutlinedRect(0, 0, w, h)
end
local mainFrame = self:Add("DPanel")
mainFrame:SetSize( SScaleMin(1020 / 3), SScaleMin(372 / 3) )
mainFrame:SetPos(ScrW() * 0.5 - mainFrame:GetWide() * 0.5, ScrH() * 0.5 - mainFrame:GetTall() * 0.5)
mainFrame.Paint = function( self, w, h ) end
-- Main frame (invisible)
local rightFrame = vgui.Create( "DPanel", mainFrame )
rightFrame:SetSize( SScaleMin(800 / 3), 0 )
rightFrame:Dock(RIGHT)
rightFrame.Paint = function( self, w, h ) end
local leftFrame = vgui.Create( "DPanel", mainFrame)
leftFrame:SetSize( SScaleMin(200 / 3), 0 )
leftFrame:Dock(LEFT)
leftFrame:DockMargin(0, SScaleMin(11 / 3), 0, 0)
leftFrame.Paint = function( self, w, h )
FramePaint(self, w, h)
surface.SetDrawColor(Color(150, 150, 150, 20))
surface.SetMaterial(Material("willardnetworks/tabmenu/crafting/box_pattern.png", "noclamp"))
surface.DrawTexturedRectUV( 0, 0, w, h, 0, 0, w / SScaleMin(414 / 3), h / SScaleMin(677 / 3) )
end
-- Character model
self.icon = vgui.Create( "ixModelPanel", leftFrame )
self.icon:Dock(TOP)
self.icon:SetTall(SScaleMin(372 / 3))
self.icon:DockMargin(0, 0 - SScaleMin(20 / 3), 0, 0)
self.icon:SetFOV(38)
self.icon:SetModel( LocalPlayer():GetModel(), LocalPlayer():GetSkin(), true )
local title = rightFrame:Add("DLabel")
title:SetFont("WNSmallerMenuTitleNoClamp")
title:SetTextColor(Color(255, 255, 255, 255))
title:SetExpensiveShadow(1, Color(0, 0, 0, 150))
title:SetText(string.utf8upper("Informations Personnages & RP"))
title:SizeToContents()
title:Dock(TOP)
local charInfoFrame = rightFrame:Add("DPanel")
charInfoFrame:SetSize(rightFrame:GetWide(), SScaleMin(170 / 3))
charInfoFrame:Dock(TOP)
charInfoFrame:DockMargin(0, 0, 0, SScaleMin(20 / 3))
local boxPattern = Material("willardnetworks/tabmenu/crafting/box_pattern.png", "noclamp")
charInfoFrame.Paint = function( self, w, h )
FramePaint(self, w, h)
surface.SetDrawColor(Color(150, 150, 150, 20))
surface.SetMaterial(boxPattern)
surface.DrawTexturedRectUV( 0, 0, w, h, 0, 0, w / SScaleMin(414 / 3), h / SScaleMin(677 / 3) )
end
local function GetPartColor(name)
if LocalPlayer():GetNetVar(name) and LocalPlayer():GetNetVar("fullHealth") == false then
return Color(255, 129, 122, 255)
else
return Color(255, 255, 255, 255)
end
end
local bodyParts = {
{Image = "willardnetworks/f1menu/chest.png", Name = "ChestDamaged"},
{Image = "willardnetworks/f1menu/head.png", Name = "HeadDamaged"},
{Image = "willardnetworks/f1menu/larm.png", Name = "LArmDamaged"},
{Image = "willardnetworks/f1menu/lleg.png", Name = "LLegDamaged"},
{Image = "willardnetworks/f1menu/rarm.png", Name = "RArmDamaged"},
{Image = "willardnetworks/f1menu/rleg.png", Name = "RLegDamaged"},
{Image = "willardnetworks/f1menu/stomach.png", Name = "StomachDamaged"}
}
-- Body
local bodyFrame = charInfoFrame:Add("DPanel")
bodyFrame:SetWide( SScaleMin(100 / 3) )
bodyFrame:Dock(LEFT)
bodyFrame.Paint = function(self, w, h) end
local body = bodyFrame:Add("DImage")
local w, h = SScaleMin(64 / 3), SScaleMin(128 / 3)
local x, y = bodyFrame:GetWide() * 0.5 - w * 0.5, charInfoFrame:GetTall() * 0.5 - h * 0.5
body:SetSize( w, h )
body:SetPos(x, y)
body:SetImage( "willardnetworks/f1menu/body.png" )
for k, v in pairs(bodyParts) do
local bodypart = bodyFrame:Add("DImage")
bodypart:SetSize( w, h )
bodypart:SetPos(x, y)
bodypart:SetImage( v.Image )
bodypart:SetImageColor( GetPartColor(v.Name) )
end
local textFrame = charInfoFrame:Add("DPanel")
textFrame:SetWide( SScaleMin( 500 / 3) )
textFrame:Dock(LEFT)
textFrame.Paint = function(self, w, h) end
local name = textFrame:Add("DLabel")
name:SetFont("TitlesFontNoClamp")
name:SetTextColor(Color(254, 200, 0, 255))
name:SetExpensiveShadow(1, Color(0, 0, 0, 50))
name:SetText(LocalPlayer():Name())
name:SizeToContents()
name:Dock(TOP)
name:DockMargin(0, SScaleMin(23 / 3), 0, 0)
local faction = textFrame:Add("DLabel")
local factionTable = ix.faction.Get(LocalPlayer():Team())
faction:SetFont("TitlesFontNoClamp")
faction:SetTextColor(Color(254, 200, 0, 255))
faction:SetExpensiveShadow(1, Color(0, 0, 0, 50))
faction:SetText(factionTable.name)
faction:SizeToContents()
faction:Dock(TOP)
faction:DockMargin(0, SScaleMin(9 / 3), 0, 0)
local citizenid = textFrame:Add("DLabel")
local cidtext = LocalPlayer():GetCharacter():GetCid() or "N/A"
citizenid:SetFont("TitlesFontNoClamp")
citizenid:SetTextColor(Color(255, 255, 255, 255))
citizenid:SetExpensiveShadow(1, Color(0, 0, 0, 50))
citizenid:SetText("CID : #"..cidtext or "AUCUN")
citizenid:SizeToContents()
citizenid:Dock(TOP)
citizenid:DockMargin(0, SScaleMin(9 / 3), 0, 0)
local tokens = textFrame:Add("DLabel")
tokens:SetFont("TitlesFontNoClamp")
tokens:SetTextColor(Color(255, 255, 255, 255))
tokens:SetExpensiveShadow(1, Color(0, 0, 0, 50))
tokens:SetText("Crédits : "..LocalPlayer():GetCharacter():GetMoney())
tokens:SizeToContents()
tokens:Dock(TOP)
tokens:DockMargin(0, SScaleMin(9 / 3), 0, 0)
local description = vgui.Create("DButton", rightFrame)
description:SetFont("MenuFontNoClamp")
description:SetText( "Description" )
description:Dock(TOP)
description:DockMargin(0, 0, 0, 0 - SScaleMin(1 / 3))
description:SetSize( rightFrame:GetWide(), SScaleMin(30 / 3) )
description.Paint = function( self, w, h ) FramePaint(self, w, h) end
description.DoClick = function ( btn )
Derma_StringRequest(LocalPlayer():Name(), "Entrez votre description", LocalPlayer():GetCharacter():GetDescription(), function(desc)
ix.command.Send("CharDesc", desc)
end)
end
local detDesc = vgui.Create("DButton", rightFrame)
detDesc:SetFont("MenuFontNoClamp")
detDesc:SetText( "Animations" )
detDesc:Dock(TOP)
detDesc:DockMargin(0, 0, 0, 0 - SScaleMin(1 / 3))
detDesc:SetSize( rightFrame:GetWide(), SScaleMin(30 / 3) )
detDesc.Paint = function( self, w, h ) FramePaint(self, w, h) end
detDesc.DoClick = function ( btn )
local MenuButtonOptions = DermaMenu() -- Creates the menu
MenuButtonOptions:AddOption("Act Arrest", function() ix.command.Send("actarrest") end ) -- Add options to the menu
MenuButtonOptions:AddOption("Act Injured", function() ix.command.Send("actinjured") end )
MenuButtonOptions:AddOption("Act Cheer", function() ix.command.Send("actcheer") end )
MenuButtonOptions:AddOption("Act Lean", function() ix.command.Send("actlean") end )
MenuButtonOptions:AddOption("Act Pant", function() ix.command.Send("actpant") end )
MenuButtonOptions:AddOption("Act Sit", function() ix.command.Send("actsit") end )
MenuButtonOptions:AddOption("Act Sit Wall", function() ix.command.Send("actsitwall") end )
MenuButtonOptions:AddOption("Act Stand", function() ix.command.Send("actstand") end )
MenuButtonOptions:AddOption("Act Wave", function() ix.command.Send("actwave") end )
MenuButtonOptions:AddOption("Act Window", function() ix.command.Send("actwindow") end )
MenuButtonOptions:AddOption("Act Type", function() ix.command.Send("acttype") end )
MenuButtonOptions:AddOption("Act Sit Chair", function() ix.command.Send("actsitchair") end)
MenuButtonOptions:AddOption("Act Sit Lean", function() ix.command.Send("actsitlean") end)
MenuButtonOptions:Open() -- Open the menu AFTER adding your options
for _, v in pairs(MenuButtonOptions:GetChildren()[1]:GetChildren()) do
if v:GetClassName() == "Label" then
v:SetFont("MenuFontNoClamp")
end
end
end
local fallover = vgui.Create("DButton", rightFrame)
fallover:SetFont("MenuFontNoClamp")
fallover:SetText( "S'évanouir" )
fallover:Dock(TOP)
fallover:DockMargin(0, 0, 0, 0 - SScaleMin(1 / 3))
fallover:SetSize( rightFrame:GetWide(), SScaleMin(30 / 3) )
fallover.Paint = function( self, w, h ) FramePaint(self, w, h) end
fallover.DoClick = function ( btn )
ix.command.Send("CharFallover")
end
hook.Run("F1MenuCreated", self, mainFrame, leftFrame, rightFrame)
self:MakePopup()
self:OnOpened()
end
function PANEL:OnOpened()
self:SetAlpha(0)
self:CreateAnimation(animationTime, {
target = {currentAlpha = 255},
easing = "outQuint",
Think = function(animation, panel)
panel:SetAlpha(panel.currentAlpha)
end
})
end
function PANEL:OnKeyCodePressed(key)
self.noAnchor = CurTime() + 0.5
if (key == KEY_F1) then
self:Remove()
end
end
function PANEL:Think()
if (self.bClosing) then
return
end
local bF1Down = input.IsKeyDown(KEY_F1)
if (bF1Down and (self.noAnchor or CurTime() + 0.4) < CurTime() and self.anchorMode) then
self.anchorMode = false
end
if ((!self.anchorMode and !bF1Down) or gui.IsGameUIVisible()) then
self:Remove()
end
end
function PANEL:Paint(width, height)
surface.SetDrawColor(Color(63, 58, 115, 220))
surface.DrawRect(0, 0, width, height)
Derma_DrawBackgroundBlur( self, 0 )
BaseClass.Paint(self, width, height)
end
function PANEL:Remove()
self.bClosing = true
self:SetMouseInputEnabled(false)
self:SetKeyboardInputEnabled(false)
if IsValid(self.icon) then
self.icon:Remove()
end
CloseDermaMenus()
gui.EnableScreenClicker(false)
self:CreateAnimation(animationTime * 0.5, {
index = 2,
target = {currentBlur = 0},
easing = "outQuint"
})
self:CreateAnimation(animationTime * 0.5, {
target = {currentAlpha = 0},
easing = "outQuint",
-- we don't animate the blur because blurring doesn't draw things
-- with amount < 1 very well, resulting in jarring transition
Think = function(animation, panel)
panel:SetAlpha(panel.currentAlpha)
end,
OnComplete = function(animation, panel)
BaseClass.Remove(panel)
end
})
end
vgui.Register("ixF1Menu", PANEL, "ixSubpanelParent")
if (IsValid(ix.gui.F1Menu)) then
ix.gui.F1Menu:Remove()
end