dobrograd-13-06-2022/garrysmod/addons/feature-jobs/lua/dbg-jobs/vgui_job_overlay.lua

79 lines
2.6 KiB
Lua
Raw Normal View History

2023-11-16 15:01:19 +05:00
local PANEL = {}
function PANEL:Init()
self:SetSize(350, 300)
self:DockPadding(5, 5, 5, 5)
self.title = self:Add 'DLabel'
self.title:Dock(TOP)
self.title:SetTall(40)
self.title:SetContentAlignment(5)
self.title:SetFont('dbg-jobs.title')
self.title:SetText('...')
self.desc = self:Add 'DMarkup'
self.desc:Dock(TOP)
self.desc:DockMargin(5, 0, 5, 0)
self.desc:SetText('...')
self.accept = octolib.button(self, 'Принять заказ', function()
self:AcceptJob()
end)
self.accept:Dock(BOTTOM)
self.accept:SetTall(30)
end
function PANEL:SetJob(mainPanel, publishData, startData)
self.mainPanel = mainPanel
self.publishData = publishData
self.startData = startData
self.title:SetText(publishData.name)
local desc = publishData.desc .. '\n'
if publishData.timeout then desc = desc .. '\nОграничение по времени: ' .. math.floor(publishData.timeout / 60) .. ' мин' end
if publishData.deposit then
desc = desc .. '\nЗалог за взятие заказа: ' .. DarkRP.formatMoney(publishData.deposit)
end
if startData and startData.ply == LocalPlayer() then
self.accept:SetText('Отказаться')
elseif publishData.deposit then
self.accept:SetText(('Принять заказ (%s)'):format(DarkRP.formatMoney(publishData.deposit)))
else
self.accept:SetText('Принять заказ')
end
desc = desc .. '\nПлата за выполнение: ' .. publishData.reward
self.desc:SetText(desc)
end
function PANEL:AcceptJob()
if not self.publishData then return end
if self.startData and self.startData.ply == LocalPlayer() then
Derma_Query('Ты хочешь отказаться от выполнения?\nЗалог не будет возвращен', 'Отмена заказа', 'Да', function()
netstream.Start('dbg-jobs.cancel', self.publishData.id)
self.mainPanel.overlay:Remove()
end, 'Отмена')
else
Derma_Query('Ты хочешь принять этот заказ?\nПри его невыполнении залог не будет возвращен', 'Принятие заказа', 'Да', function()
self.accept:SetEnabled(false)
self.accept:SetText('Загрузка...')
netstream.Request('dbg-jobs.take', self.publishData.id):Then(function(err)
if not err then
self.mainPanel:SwitchToName('Принятые')
self.mainPanel.overlay:Remove()
else
Derma_Message(err, 'Ошибка', 'Понятно')
self.accept:SetEnabled(true)
self:SetJob(self.mainPanel, self.publishData, self.startData)
end
end)
end, 'Отмена')
end
end
vgui.Register('dbg_jobs_overlay', PANEL, 'DPanel')