add sborka
This commit is contained in:
135
garrysmod/gamemodes/militaryrp/plugins/capture/cl_plugin.lua
Normal file
135
garrysmod/gamemodes/militaryrp/plugins/capture/cl_plugin.lua
Normal file
@@ -0,0 +1,135 @@
|
||||
PLUGIN.captureData = PLUGIN.captureData or {}
|
||||
|
||||
net.Receive("ixCaptureSync", function()
|
||||
local plugin = ix.plugin.Get("capture")
|
||||
if (!plugin) then return end
|
||||
|
||||
local point = net.ReadEntity()
|
||||
local progress = net.ReadFloat()
|
||||
local owner = net.ReadUInt(8)
|
||||
local capturing = net.ReadUInt(8)
|
||||
local players = net.ReadUInt(8)
|
||||
local blocked = net.ReadBool()
|
||||
|
||||
if (IsValid(point)) then
|
||||
plugin.captureData[point] = {
|
||||
progress = progress,
|
||||
owner = owner,
|
||||
capturing = capturing,
|
||||
players = players,
|
||||
blocked = blocked
|
||||
}
|
||||
end
|
||||
end)
|
||||
|
||||
local PANEL = {}
|
||||
|
||||
function PANEL:Init()
|
||||
self.progress = 0
|
||||
self.targetProgress = 0
|
||||
self.alpha = 0
|
||||
self.targetAlpha = 0
|
||||
self.blinkAlpha = 0
|
||||
end
|
||||
|
||||
function PANEL:SetCaptureData(data)
|
||||
self.targetProgress = data.progress or 0
|
||||
self.owner = data.owner or 0
|
||||
self.capturing = data.capturing or 0
|
||||
self.players = data.players or 0
|
||||
self.blocked = data.blocked or false
|
||||
|
||||
if (data.capturing and data.capturing > 0) then
|
||||
self.targetAlpha = 255
|
||||
else
|
||||
self.targetAlpha = 0
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:Think()
|
||||
self.progress = Lerp(FrameTime() * 5, self.progress, self.targetProgress)
|
||||
self.alpha = Lerp(FrameTime() * 8, self.alpha, self.targetAlpha)
|
||||
|
||||
if (self.blocked) then
|
||||
self.blinkAlpha = math.abs(math.sin(CurTime() * 5)) * 255
|
||||
else
|
||||
self.blinkAlpha = 0
|
||||
end
|
||||
|
||||
local plugin = ix.plugin.Get("capture")
|
||||
if (plugin) then
|
||||
self:SetSize(plugin.hudWidth, plugin.hudHeight)
|
||||
self:SetPos(ScrW() - plugin.hudWidth - plugin.hudPosX, plugin.hudPosY)
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:Paint(w, h)
|
||||
if (self.alpha < 1) then return end
|
||||
|
||||
surface.SetAlphaMultiplier(self.alpha / 255)
|
||||
|
||||
local barW = 40
|
||||
local barH = h
|
||||
local padding = 10
|
||||
local barX = (w - barW) / 2
|
||||
|
||||
draw.RoundedBox(8, barX, 0, barW, barH, ColorAlpha(Color(20, 20, 20), self.alpha * 0.9))
|
||||
|
||||
if (self.progress > 0) then
|
||||
local fillH = (barH - 4) * (self.progress / 100)
|
||||
local color = Color(100, 150, 255)
|
||||
|
||||
if (self.capturing and self.capturing > 0) then
|
||||
if (self.capturing == FACTION_RUSSIAN) then
|
||||
color = Color(200, 50, 50)
|
||||
elseif (self.capturing == FACTION_UKRAINE) then
|
||||
color = Color(50, 100, 200)
|
||||
end
|
||||
end
|
||||
|
||||
if (self.blocked) then
|
||||
color = ColorAlpha(color, self.blinkAlpha)
|
||||
end
|
||||
|
||||
draw.RoundedBox(6, barX + 2, 2, barW - 4, fillH, ColorAlpha(color, self.alpha))
|
||||
end
|
||||
|
||||
local text = string.format("%.0f%%", self.progress)
|
||||
if (self.players and self.players > 0) then
|
||||
text = text .. "\n(" .. self.players .. ")"
|
||||
end
|
||||
|
||||
draw.SimpleText(text, "DermaDefault", w / 2, barH + 15, ColorAlpha(color_white, self.alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP)
|
||||
|
||||
surface.SetAlphaMultiplier(1)
|
||||
end
|
||||
|
||||
vgui.Register("ixCaptureUI", PANEL, "DPanel")
|
||||
|
||||
function PLUGIN:HUDPaint()
|
||||
local ply = LocalPlayer()
|
||||
if (!IsValid(ply)) then return end
|
||||
|
||||
for point, data in pairs(self.captureData) do
|
||||
if (IsValid(point) and ply:GetPos():Distance(point:GetPos()) <= self.captureRadius) then
|
||||
if (!IsValid(self.captureUI)) then
|
||||
self.captureUI = vgui.Create("ixCaptureUI")
|
||||
end
|
||||
|
||||
self.captureUI:SetCaptureData(data)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
if (IsValid(self.captureUI)) then
|
||||
self.captureUI:SetCaptureData({progress = 0, owner = 0, capturing = 0, players = 0, blocked = false})
|
||||
end
|
||||
end
|
||||
|
||||
function PLUGIN:OnReloaded()
|
||||
if (IsValid(self.captureUI)) then
|
||||
self.captureUI:Remove()
|
||||
self.captureUI = nil
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user