Files
wnsrc/gamemodes/helix/plugins/willardinterface/derma/cl_quiz.lua
lifestorm 6a58f406b1 Upload
2024-08-04 23:54:45 +03:00

149 lines
4.2 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[
| 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 PANEL = {}
local PLUGIN = PLUGIN
function PANEL:Init()
ix.gui.quizAnswering = self
self.comboboxes = {}
self:SetSize(SScaleMin(700 / 3), SScaleMin(700 / 3))
self:Center()
self:SetTitle("Test - Bir karakter yaratmak için bazı soruları cevaplamanız gerekecek.")
DFrameFixer(self, false, true, true)
self.quizContent = self:Add("DScrollPanel")
self.quizContent:Dock(FILL)
self.loadingLabel = self:Add("DLabel")
self.loadingLabel:SetText("Sorular Yükleniyor...")
self.loadingLabel:SetFont("TitlesFontNoClamp")
self.loadingLabel:SizeToContents()
self.loadingLabel:Center()
end
function PANEL:Think()
self:MoveToFront()
end
function PANEL:Paint(w, h)
if (self.m_bBackgroundBlur) then
Derma_DrawBackgroundBlur(self, self.m_fCreateTime)
end
surface.SetDrawColor(Color(40, 40, 40, 240))
surface.DrawRect(0, 0, w, h)
surface.SetDrawColor(Color(111, 111, 136, 255 / 100 * 30))
surface.DrawOutlinedRect(0, 0, w, h)
surface.DrawRect(0, 0, w, self.lblTitle:GetTall() + SScaleMin(5 / 3))
end
function PANEL:CreateQuizContent()
if self.loadingLabel then
self.loadingLabel:Remove()
end
for k, table in pairs(PLUGIN.quizlist) do
local question = table[1] or "NO QUESTION"
local answers = table[2] or {}
local questionTitle = self.quizContent:Add("DLabel")
questionTitle:SetFont("TitlesFontNoClamp")
questionTitle:Dock(TOP)
questionTitle:SetText(question or "")
questionTitle:SetContentAlignment(5)
questionTitle:DockMargin(SScaleMin(20 / 3), k == 1 and SScaleMin(20 / 3) or 0, SScaleMin(20 / 3), SScaleMin(10 / 3))
questionTitle:SetWrap(true)
questionTitle:SetAutoStretchVertical(true)
local answerPanel = self.quizContent:Add("DComboBox")
answerPanel:Dock(TOP)
answerPanel:SetTall(SScaleMin(30 / 3))
answerPanel:SetValue("Cevap Seç")
answerPanel:SetFont("SmallerTitleFontNoBoldNoClamp")
answerPanel.question = k
answerPanel:SetContentAlignment(5)
answerPanel.Paint = function(self, w, h)
surface.SetDrawColor(Color(111, 111, 136, (255 / 100 * 30)))
surface.DrawOutlinedRect(0, 0, w, h)
end
answerPanel.Think = function(self)
if IsValid(self.Menu) then
self.Menu:MoveToFront()
end
end
answerPanel:DockMargin(SScaleMin(20 / 3), 0, SScaleMin(20 / 3), SScaleMin(20 / 3))
for _, answer in pairs(table[2]) do
answerPanel:AddChoice(answer or "")
end
self.comboboxes[#self.comboboxes + 1] = answerPanel
end
local textPanel = self.quizContent:Add("Panel")
textPanel:Dock(TOP)
textPanel:SetTall(SScaleMin(20 / 3))
local warningIcon = textPanel:Add("DImage")
warningIcon:SetSize(SScaleMin(12 / 3), SScaleMin(20 / 3))
warningIcon:Dock(LEFT)
warningIcon:DockMargin(0, 0, SScaleMin(8 / 3), 0)
warningIcon:SetImage("willardnetworks/mainmenu/charcreation/warning.png")
local panelText = textPanel:Add("DLabel")
panelText:SetText("Unsure about the answers? Check our forums for more information. ")
panelText:SetFont("WNBackFontNoClamp")
panelText:SetTextColor(Color(255, 204, 0, 255))
panelText:Dock(LEFT)
panelText:SetContentAlignment(4)
panelText:SizeToContents()
local lrMargins = (self:GetWide() * 0.5) - ((warningIcon:GetWide() + SScaleMin(8 / 3)) * 0.5) - (panelText:GetWide() * 0.5)
textPanel:DockMargin(lrMargins, 0, lrMargins, 0)
local finish = self:Add("DButton")
finish:Dock(BOTTOM)
finish:SetFont("TitlesFontNoClamp")
finish:SetText("FINISH")
finish:DockMargin(0, SScaleMin(20 / 3), 0, 0)
finish:SetTall(SScaleMin(50 / 3))
finish.DoClick = function()
surface.PlaySound("helix/ui/press.wav")
self:GetAnswers()
end
end
function PANEL:GetAnswers()
local answers = {}
for _, v in pairs(self.comboboxes) do
if v:GetSelected() and v:GetSelected() != "" and v:GetSelected() != "Cevap Seç" then
answers[v.question] = v:GetSelected()
end
end
netstream.Start("CompleteQuiz", answers)
end
vgui.Register("ixQuizMenu", PANEL, "DFrame")
netstream.Hook("RemoveQuizUI", function()
if ix.gui.quizAnswering and IsValid(ix.gui.quizAnswering) then
ix.gui.quizAnswering:Remove()
end
end)