mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
149 lines
4.2 KiB
Lua
149 lines
4.2 KiB
Lua
--[[
|
||
| 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)
|