Files
wnsrc/gamemodes/darkrp/plugins/writing/derma/cl_newspaper.lua
lifestorm df294d03aa Upload
2024-08-04 23:54:45 +03:00

712 lines
28 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 padding = SScaleMin(20 / 3)
PANEL.templates = {}
function PANEL:RegisterTemplate(name, storedFunc)
self.templates[name] = {
create = storedFunc
}
end
function PANEL:Init()
local informedCitizen = function()
local newspaperPanel = self.surrounder:Add("Panel")
newspaperPanel:Dock(TOP)
newspaperPanel:SetTall(SScaleMin(1391 / 3))
newspaperPanel.Paint = function(this, w, h)
surface.SetDrawColor(color_white)
surface.SetMaterial(ix.util.GetMaterial("models/wn/newspapers/newspaper_bg_noheadline.png"))
surface.DrawTexturedRect(0, 0, w, h)
end
self.mainPanel = newspaperPanel
self.optionTop = self:CreateOptionPanel(self, TOP)
self.optionTop:DockMargin(ScrW() / 2 - self.surrounder:GetWide() / 2, padding / 2, ScrW() / 2 - self.surrounder:GetWide() / 2, 0)
self.headlineText = self:CreateTextEntry(self.mainPanel, SScaleMin(164 / 3), SScaleMin(64 / 3), TOP, 0, 0, 0, 0, nil, "UnifrakturTitle", 20, true, true, "", nil, "The Informed Citizen")
self.headlineText:SetZPos(-1)
self.headlineText:SetContentAlignment(4)
self.headlineText:DockMargin(self.surrounder:GetWide() * 0.21, SScaleMin(48 / 3), self.surrounder:GetWide() * 0.20, 0)
self.date = self.mainPanel:Add("DLabel")
self.date:Dock(TOP)
self.date:SetFont("GeorgiaBold")
self.date:SetText(string.upper(ix.date.GetFormatted("%A"..",".." %B %d".."th"..", ".."%Y")))
self.date:SetTextColor(color_black)
self.date:SizeToContents()
self.date:SetContentAlignment(5)
self.date:DockMargin(0, SScaleMin(12 / 3), 0, 0)
self.date:SetZPos(0)
self.bigHeadline = self:CreateTextEntry(self.mainPanel, nil, SScaleMin(117 / 3), TOP, SScaleMin(33 / 3), SScaleMin(3 / 3), SScaleMin(33 / 3), 0, nil, "FjallaOneRegularLarge", 20, false, true, "", nil, string.upper("TERROR IN THE STREET"))
self.bigHeadline:SetZPos(1)
self.subHeadline = self:CreateTextEntry(self.mainPanel, nil, SScaleMin(60 / 3), TOP, SScaleMin(33 / 3), 0, SScaleMin(33 / 3), 0, nil, "FjallaOneRegularSmall", 52, false, true, "", nil, string.upper("MONTH-WIDE LOCKDOWN DECLARED AFTER UNCIVIL RIOTS ERUPT"))
self.subHeadline:SetZPos(2)
local leftRight = self.mainPanel:Add("Panel")
leftRight:Dock(FILL)
leftRight:DockMargin(SScaleMin(32 / 3), 0, SScaleMin(30 / 3), 0)
local left = leftRight:Add("Panel")
left:Dock(LEFT)
left:SetWide(SScaleMin(534 / 3))
left:DockMargin(0, 0, SScaleMin(8 / 3), 0)
local right = leftRight:Add("Panel")
right:Dock(FILL)
self.imageButton = self:CreateSelectorButton(left, SScaleMin(534 / 3), SScaleMin(480 / 3), TOP, 0, 0, 0, 0, nil, "SELECT IMAGE", function()
-- if self.cracked then LocalPlayer():Notify("You cannot add images to cracked newspapers!") return end
Derma_StringRequest(
"URL (Müstehcen içeriğe sahip herhangi bir resim yasaklanmanıza neden olur)",
"Gösterilmesini istediğiniz resmin URL'sini girin.",
"",
function(url)
self.imageButton.OnRequest(url)
end,
nil
)
end)
self.imageButton:SetZPos(3)
self.imageButton.OnRequest = function(url)
self.imageButton:Remove()
local linkedImage = self:CreateLinkedImage(left, SScaleMin(534 / 3), SScaleMin(480 / 3), TOP, 0, 0, 0, 0, nil, url)
linkedImage:SetZPos(3)
self.image = url
end
self.articleTitle = self:CreateTextEntry(left, nil, SScaleMin(60 / 3), TOP, 0, 0, 0, 0, nil, "AdobeCaslonProBold", 30, false, true, "", nil, "C24 Admin. Stewart to Resign")
self.articleTitle:SetZPos(4)
self.articleTitle.bAlignLeft = true
self.articleAuthor = self:CreateTextEntry(left, nil, SScaleMin(28 / 3), TOP, 0, SScaleMin(20 / 3), 0, SScaleMin(5 / 3), nil, "MinionProBold", 45, false, true, "", nil, string.upper("James Hawke"))
self.articleAuthor:SetZPos(5)
self.articleAuthor.bAlignLeft = true
local articleContentPanel = left:Add("Panel")
articleContentPanel:Dock(FILL)
articleContentPanel:SetZPos(6)
self.articleText1 = self:CreateTextEntry(articleContentPanel, (SScaleMin(534 / 3) / 2) + SScaleMin(3 / 3), nil, LEFT, 0, 0, 0, 0, nil, "AbrilTitlingRegular", 655, true, true, "", nil, "Article text goes here")
self.articleText1:SetZPos(7)
self.articleText1.bAlignTopLeft = true
self.articleText1:DockMargin(-SScaleMin(3 / 3), 0, 0, 0)
self.articleText2 = self:CreateTextEntry(articleContentPanel, (SScaleMin(534 / 3) / 2) - padding / 2, nil, RIGHT, 0, 0, 0, 0, nil, "AbrilTitlingRegular", 655, true, true, "", nil, "Article text part 2 goes here")
self.articleText2:SetZPos(8)
self.articleText2.bAlignTopLeft = true
self.imageButton2 = self:CreateSelectorButton(right, SScaleMin(283 / 3) - SScaleMin(13 / 3), SScaleMin(202 / 3), TOP, 0, 0, 0, 0, nil, "SELECT IMAGE", function()
-- if self.cracked then LocalPlayer():Notify("You cannot add images to cracked newspapers!") return end
Derma_StringRequest(
"URL (Müstehcen içeriğe sahip herhangi bir resim yasaklanmanıza neden olur)",
"Gösterilmesini istediğiniz resmin URL'sini girin.",
"",
function(url)
self.imageButton2.OnRequest(url)
end,
nil
)
end)
self.imageButton2:SetZPos(9)
self.imageButton2.OnRequest = function(url)
self.imageButton2:Remove()
local linkedImage = self:CreateLinkedImage(right, SScaleMin(283 / 3) - SScaleMin(12 / 3), SScaleMin(202 / 3), TOP, 0, 0, 0, 0, nil, url)
linkedImage:SetZPos(9)
self.image2 = url
end
self.sideArticleCaption = self:CreateTextEntry(right, nil, SScaleMin(28 / 3), TOP, 0, 0, 0, 0, nil, "ArialBold", 35, false, true, "", nil, string.upper("TINY HUMAN STANDS BEFORE SUMMIT 24"))
self.sideArticleCaption:SetZPos(10)
self.sideArticleCaption.bAlignLeft = true
self.articleTitle2 = self:CreateTextEntry(right, nil, SScaleMin(58 / 3), TOP, 0, 0, 0, 0, nil, "AdobeCaslonProBoldSmaller", 26, false, true, "", nil, "Summit Meeting")
self.articleTitle2:SetZPos(11)
self.articleTitle2.bAlignLeft = true
self.articleAuthor2 = self:CreateTextEntry(right, nil, SScaleMin(28 / 3), TOP, 0, SScaleMin(20 / 3), 0, SScaleMin(10 / 3), nil, "MinionProBold", 31, false, true, "", nil, string.upper("John Smith"))
self.articleAuthor2:SetZPos(12)
self.articleAuthor2.bAlignLeft = true
self.article2Text = self:CreateTextEntry(right, 0, nil, FILL, 0, 0, 0, 0, nil, "AbrilTitlingRegular", 1700, true, true, "", nil, "Article 2 text goes here")
self.article2Text:SetZPos(13)
self.article2Text.bAlignTopLeft = true
self.adPanel = self.mainPanel:Add("Panel")
self.adPanel:Dock(BOTTOM)
self.adPanel:SetTall(SScaleMin(150 / 3))
self.adPanel:DockMargin(SScaleMin(32 / 3), SScaleMin(23 / 3), SScaleMin(32 / 3), SScaleMin(78 / 3))
self.adPanel:SetZPos(14)
self.adImageButton = self:CreateSelectorButton(self.adPanel, SScaleMin(105 / 3), SScaleMin(105 / 3), LEFT, SScaleMin(47 / 3), SScaleMin(24 / 3), SScaleMin(54 / 3), SScaleMin(21 / 3), nil, "SELECT IMAGE", function()
-- if self.cracked then LocalPlayer():Notify("You cannot add images to cracked newspapers!") return end
self:CreateAdSelector(self.adPanel)
end)
self.adImageButton:SetZPos(15)
local adTitleDescPanel = self.adPanel:Add("Panel")
adTitleDescPanel:Dock(LEFT)
adTitleDescPanel:SetSize(SScaleMin(400 / 3), self.adPanel:GetTall())
adTitleDescPanel:DockMargin(0, SScaleMin(36 / 3), 0, SScaleMin(23 / 3))
adTitleDescPanel:SetZPos(16)
self.adTitle = self:CreateTextEntry(adTitleDescPanel, nil, SScaleMin(40 / 3), TOP, 0, 0, 0, 0, nil, "MinionProBoldAd", 11, false, true, "", nil, "THE TRIUMPH")
self.adTitle:SetZPos(17)
self.adSubtitle = self:CreateTextEntry(adTitleDescPanel, nil, SScaleMin(50 / 3), TOP, 0, 0, 0, 0, nil, "MinionProItalic", 15, false, true, "", nil, "Casino & Lounge")
self.adSubtitle:SetZPos(18)
self.adDesc = self:CreateTextEntry(self.adPanel, SScaleMin(125 / 3), nil, RIGHT, 0, SScaleMin(42 / 3), SScaleMin(42 / 3), SScaleMin(32 / 3), nil, "MinionProRegular", 80, true, true, "", nil, "Ad Desc")
self.adDesc:SetZPos(19)
local optionBot = self:CreateOptionPanel(self, BOTTOM)
optionBot:DockMargin(ScrW() / 2 - self.surrounder:GetWide() / 2, 0, ScrW() / 2 - self.surrounder:GetWide() / 2, padding / 2)
self:CreateOption(optionBot, LEFT, "PREVIEW", function(button)
self.bigHeadline:SetText(string.upper(self.bigHeadline:GetText()))
self.subHeadline:SetText(string.upper(self.subHeadline:GetText()))
self.articleAuthor:SetText(string.upper(self.articleAuthor:GetText()))
self.articleAuthor2:SetText(string.upper(self.articleAuthor2:GetText()))
self.sideArticleCaption:SetText(string.upper(self.sideArticleCaption:GetText()))
self:TogglePreview(button)
button:SetVisible(true)
end, 0, 0, 0, 0)
self:CreateOption(optionBot, RIGHT, "PRINT", function(button)
netstream.Start("ixWritingAddWriting", self.identifier, {
headlineText = self.headlineText:GetText(),
date = self.date:GetText(),
bigHeadline = self.bigHeadline:GetValue(),
subHeadline = self.subHeadline:GetValue(),
image = self.image or "",
articleTitle = self.articleTitle:GetValue(),
articleAuthor = self.articleAuthor:GetValue(),
articleText1 = self.articleText1:GetValue(),
articleText2 = self.articleText2:GetValue(),
image2 = self.image2 or "",
sideArticleCaption = self.sideArticleCaption:GetValue(),
articleTitle2 = self.articleTitle2:GetValue(),
articleAuthor2 = self.articleAuthor2:GetValue(),
article2Text = self.article2Text:GetValue(),
adTitle = self.adTitle:GetValue(),
adSubtitle = self.adSubtitle:GetValue(),
adDesc = self.adDesc:GetValue(),
adMaterial = self.adMaterial or "",
template = "The Informed Citizen",
unionDatabase = self.unionDatabase and self.unionDatabase:GetChecked() or false
}, self.itemID)
self:Remove()
end, 0, 0, 0, 0)
end
self:RegisterTemplate("The Informed Citizen", informedCitizen)
local GenevanTribute = function()
local newspaperPanel = self.surrounder:Add("Panel")
newspaperPanel:Dock(TOP)
newspaperPanel:SetTall(SScaleMin(1391 / 3))
newspaperPanel.Paint = function(this, w, h)
surface.SetDrawColor(color_white)
surface.SetMaterial(ix.util.GetMaterial("models/wn/newspapers/newspaper_bg_two.png"))
surface.DrawTexturedRect(0, 0, w, h)
end
self.mainPanel = newspaperPanel
self.optionTop = self:CreateOptionPanel(self, TOP)
self.optionTop:DockMargin(ScrW() / 2 - self.surrounder:GetWide() / 2, padding / 2, ScrW() / 2 - self.surrounder:GetWide() / 2, 0)
self.headlineText = self:CreateTextEntry(self.mainPanel, SScaleMin(164 / 3), SScaleMin(64 / 3), TOP, 0, 0, 0, 0, nil, "UnifrakturTitle", 20, true, true, "", nil, "The Genevan Tribune")
self.headlineText:SetZPos(-1)
self.headlineText:SetContentAlignment(4)
self.headlineText:DockMargin(self.surrounder:GetWide() * 0.21, SScaleMin(48 / 3), self.surrounder:GetWide() * 0.20, 0)
self.date = self.mainPanel:Add("DLabel")
self.date:Dock(TOP)
self.date:SetFont("GeorgiaBold")
self.date:SetText(string.upper(ix.date.GetFormatted("%A"..",".." %B %d".."th"..", ".."%Y")))
self.date:SetTextColor(color_black)
self.date:SizeToContents()
self.date:SetContentAlignment(5)
self.date:DockMargin(0, SScaleMin(-3 / 3), 0, 0)
self.date:SetZPos(0)
self.bigHeadline = self:CreateTextEntry(self.mainPanel, nil, SScaleMin(117 / 3), TOP, SScaleMin(33 / 3), SScaleMin(9 / 3), SScaleMin(33 / 3), 0, nil, "FjallaOneRegularLarge", 20, false, true, "", nil, string.upper("TERROR IN THE STREET"))
self.bigHeadline:SetZPos(1)
self.subHeadline = self:CreateTextEntry(self.mainPanel, nil, SScaleMin(60 / 3), TOP, SScaleMin(55 / 3), 0, SScaleMin(33 / 3), 0, nil, "FjallaOneRegularSmall", 52, false, true, "", nil, string.upper("MONTH-WIDE LOCKDOWN DECLARED AFTER UNCIVIL RIOTS ERUPT"))
self.subHeadline:SetZPos(2)
local bottomContents = self.mainPanel:Add("Panel")
bottomContents:Dock(BOTTOM)
bottomContents:DockMargin(SScaleMin(32 / 3), 0, SScaleMin(30 / 3), SScaleMin(6 / 3))
bottomContents:SetTall(SScaleMin(370 / 3))
local leftRight = self.mainPanel:Add("Panel")
leftRight:Dock(FILL)
leftRight:DockMargin(SScaleMin(32 / 3), 0, SScaleMin(30 / 3), 0)
local left = leftRight:Add("Panel")
left:Dock(LEFT)
left:SetWide(SScaleMin(391 / 3))
left:DockMargin(0, 0, SScaleMin(8 / 3), 0)
local right = leftRight:Add("Panel")
right:Dock(FILL)
self.imageButton = self:CreateSelectorButton(right, SScaleMin(650 / 3), SScaleMin(555 / 3), TOP, 0, 0, 0, 0, nil, "SELECT IMAGE", function()
-- if self.cracked then LocalPlayer():Notify("You cannot add images to cracked newspapers!") return end
Derma_StringRequest(
"URL (Müstehcen içeriğe sahip herhangi bir resim yasaklanmanıza neden olur)",
"Gösterilmesini istediğiniz resmin URL'sini girin.",
"",
function(url)
self.imageButton.OnRequest(url)
end,
nil
)
end)
self.imageButton:SetZPos(3)
self.imageButton.OnRequest = function(url)
self.imageButton:Remove()
local linkedImage = self:CreateLinkedImage(right, SScaleMin(650 / 3), SScaleMin(555 / 3), TOP, 0, 0, 0, 0, nil, url)
linkedImage:SetZPos(3)
self.image = url
end
self.articleTitle = self:CreateTextEntry(left, nil, SScaleMin(60 / 3), TOP, 0, 0, 0, 0, nil, "AdobeCaslonProBold", 30, false, true, "", nil, "HEADLINE")
self.articleTitle:SetZPos(4)
self.articleTitle.bAlignLeft = true
local articleContentPanel = left:Add("Panel")
articleContentPanel:Dock(TOP)
articleContentPanel:SetTall(SScaleMin(100 / 3))
articleContentPanel:SetZPos(5)
self.articleText1 = self:CreateTextEntry(articleContentPanel, (SScaleMin(534 / 3) / 2) + SScaleMin(64 / 3), SScaleMin(60 / 3), LEFT, 0, 0, 0, 0, nil, "LusitanaSmall", 156, true, true, "", nil, "Article text goes here")
self.articleText1:SetZPos(6)
--self.articleText1.bAlignTopLeft = true
self.articleText1.fixedHeight = false
self.articleAuthor = self:CreateTextEntry(left, nil, SScaleMin(28 / 3), TOP, 0, SScaleMin(56 / 3), 0, SScaleMin(5 / 3), nil, "MinionProBold", 45, false, true, "", nil, string.upper("James Hawke"))
self.articleAuthor:SetZPos(7)
self.articleAuthor.bAlignLeft = true
local articleContentPanel2 = left:Add("Panel")
articleContentPanel2:Dock(TOP)
articleContentPanel2:SetTall(SScaleMin(385 / 3))
articleContentPanel2:SetZPos(8)
self.articleText2 = self:CreateTextEntry(articleContentPanel2, (SScaleMin(534 / 3) / 2) + SScaleMin(128 / 3), nil, LEFT, 0, 0, 0, 0, nil, "AbrilTitlingRegular", 1453, true, true, "", nil, "Article text goes here")
self.articleText2:SetZPos(9)
self.articleText2.bAlignTopLeft = true
self.articleText2:DockMargin(-SScaleMin(3 / 3), 0, 0, 0)
local articleContentPanel3 = right:Add("Panel")
articleContentPanel3:Dock(TOP)
articleContentPanel3:SetTall(SScaleMin(80 / 3))
articleContentPanel3:SetZPos(10)
self.articleText3 = self:CreateTextEntry(articleContentPanel3, (SScaleMin(534 / 3) / 2) + SScaleMin(128 / 3), nil, LEFT, 0, 0, 0, 0, nil, "AbrilTitlingRegular", 190, true, true, "", nil, "Article text goes here")
self.articleText3:SetZPos(11)
self.articleText3.bAlignTopLeft = true
self.articleText3:DockMargin(-SScaleMin(3 / 3), 0, 0, 0)
local adContents = bottomContents:Add("Panel")
adContents:Dock(LEFT)
adContents:SetWide(SScaleMin(255 / 3))
local rightContents = bottomContents:Add("Panel")
rightContents:Dock(FILL)
self.advert = self:CreateTextEntry(adContents, nil, SScaleMin(60 / 3), TOP, 0, 0, 0, 0, nil, "LusitanaTitle", 30, false, true, "", nil, "ADVERT")
self.advert:SetZPos(12)
self.advertName = self:CreateTextEntry(adContents, nil, SScaleMin(30 / 3), TOP, 0, 0, 0, 0, nil, "LusitanaItalic", 30, false, true, "", nil, "ADVERT NAME!")
self.advertName:SetZPos(13)
self.advertName:Dock(TOP)
self.adPanel = adContents:Add("Panel")
self.adPanel:Dock(BOTTOM)
self.adPanel:DockMargin(SScaleMin(24 / 3), 0, SScaleMin(24 / 3), 0)
self.adPanel:SetTall(SScaleMin(144 / 3))
self.adImageButton = self:CreateSelectorButton(self.adPanel, SScaleMin(105 / 3), SScaleMin(105 / 3), FILL, 0, 0, 0, 0, nil, "SELECT IMAGE", function()
-- if self.cracked then LocalPlayer():Notify("You cannot add images to cracked newspapers!") return end
self:CreateAdSelector(self.adPanel)
end)
local articleContentPanel4 = adContents:Add("Panel")
articleContentPanel4:Dock(FILL)
self.advertArticle = self:CreateTextEntry(articleContentPanel4, (SScaleMin(534 / 3) / 2) - SScaleMin(24 / 3), nil, LEFT, SScaleMin(9 / 3), 0, SScaleMin(3 / 3), 0, nil, "AbrilTitlingRegular", 279, true, true, "", nil, "Article text goes here")
self.advertArticle.bAlignTopLeft = true
self.rightHeadline = self:CreateTextEntry(rightContents, SScaleMin(96 / 3), SScaleMin(48 / 3), TOP, SScaleMin(48 / 3), 0, 0, 0, nil, "LusitanaTitle", 30, false, true, "", nil, "HEADLINE")
self.rightHeadline:SetZPos(14)
self.rightHeadline:SetTextColor(Color(244, 244, 244, 255))
self.rightHeadline.fixedHeight = false
local articleContentPanel5 = rightContents:Add("Panel")
articleContentPanel5:Dock(LEFT)
articleContentPanel5:SetZPos(15)
articleContentPanel5:DockMargin(SScaleMin(6 / 3), SScaleMin(2 / 3), 0, SScaleMin(6 / 3))
articleContentPanel5:SetWide(SScaleMin(272 / 3))
self.articleText4 = self:CreateTextEntry(articleContentPanel5, (SScaleMin(534 / 3) / 2) + SScaleMin(2 / 3), nil, LEFT, 0, 0, 0, 0, nil, "AbrilTitlingRegular", 791, true, true, "", nil, "Article text goes here")
self.articleText4:SetZPos(16)
self.articleText4.bAlignTopLeft = true
self.articleText4:DockMargin(-SScaleMin(3 / 3), 0, 0, 0)
local articleContentPanel6 = rightContents:Add("Panel")
articleContentPanel6:Dock(TOP)
articleContentPanel6:SetZPos(17)
articleContentPanel6:DockMargin(SScaleMin(6 / 3), SScaleMin(2 / 3), SScaleMin(6 / 3), SScaleMin(24 / 3))
articleContentPanel6:SetTall(SScaleMin(75 / 3))
self.articleText5 = self:CreateTextEntry(articleContentPanel6, (SScaleMin(534 / 3) / 2) + SScaleMin(2 / 3), nil, LEFT, 0, 0, 0, 0, nil, "AbrilTitlingRegular", 160, true, true, "", nil, "Article text goes here")
self.articleText5:SetZPos(17)
self.articleText5.bAlignTopLeft = true
self.articleText5:DockMargin(-SScaleMin(3 / 3), 0, 0, 0)
self.articleAuthor2 = self:CreateTextEntry(rightContents, nil, SScaleMin(18 / 3), TOP, SScaleMin(90 / 3), -SScaleMin(9 / 3), 0, SScaleMin(5 / 3), nil, "MinionProBold", 45, false, true, "", nil, string.upper("James Hawke"))
self.articleAuthor2:SetZPos(18)
self.articleAuthor2.bAlignLeft = true
self.imageButton2 = self:CreateSelectorButton(rightContents, SScaleMin(80 / 3), SScaleMin(190 / 3), TOP, SScaleMin(4 / 3), SScaleMin(8 / 3), SScaleMin(14 / 3), 0, nil, "SELECT IMAGE", function()
-- if self.cracked then LocalPlayer():Notify("You cannot add images to cracked newspapers!") return end
Derma_StringRequest(
"URL (Müstehcen içeriğe sahip herhangi bir resim yasaklanmanıza neden olur)",
"Gösterilmesini istediğiniz resmin URL'sini girin.",
"",
function(url)
self.imageButton2.OnRequest(url)
end,
nil
)
end)
self.imageButton2:SetZPos(19)
self.imageButton2.OnRequest = function(url)
self.imageButton2:Remove()
local linkedImage = self:CreateLinkedImage(rightContents, SScaleMin(80 / 3), SScaleMin(190 / 3), TOP, SScaleMin(4 / 3), SScaleMin(8 / 3), SScaleMin(14 / 3), 0, nil, url)
linkedImage:SetZPos(19)
self.image2 = url
end
local sloganLR = self.mainPanel:Add("Panel")
sloganLR:Dock(BOTTOM)
sloganLR:DockMargin(SScaleMin(204 / 3), 0, SScaleMin(204 / 3), SScaleMin(16 / 3))
sloganLR:SetZPos(-1)
self.sloganL = self:CreateTextEntry(sloganLR, SScaleMin(176 / 3), SScaleMin(16 / 3), LEFT, SScaleMin(44 / 3), 0, 0, 0, nil, "MinionProBold", 45, false, true, "", nil, string.upper("The Genevan Tribune"))
self.sloganL:SetZPos(20)
self.sloganL.bAlignRight = true
self.sloganL.fixedHeight = false
self.sloganR = self:CreateTextEntry(sloganLR, SScaleMin(204 / 3), SScaleMin(16 / 3), RIGHT, 0, 0, 0, 0, nil, "MinionProBold", 45, false, true, "", nil, string.upper("FORWARD FROM GENEVA"))
self.sloganR:SetZPos(20)
self.sloganR.bAlignLeft = true
self.sloganR.fixedHeight = false
local optionBot = self:CreateOptionPanel(self, BOTTOM)
optionBot:DockMargin(ScrW() / 2 - self.surrounder:GetWide() / 2, 0, ScrW() / 2 - self.surrounder:GetWide() / 2, padding / 2)
self:CreateOption(optionBot, LEFT, "PREVIEW", function(button)
self:TogglePreview(button)
button:SetVisible(true)
end, 0, 0, 0, 0)
self:CreateOption(optionBot, RIGHT, "PRINT", function(button)
netstream.Start("ixWritingAddWriting", self.identifier, {
headlineText = self.headlineText:GetText(),
date = self.date:GetText(),
bigHeadline = self.bigHeadline:GetValue(),
subHeadline = self.subHeadline:GetValue(),
image = self.image or "",
articleTitle = self.articleTitle:GetValue(),
articleAuthor = self.articleAuthor:GetValue(),
articleText1 = self.articleText1:GetValue(),
articleText2 = self.articleText2:GetValue(),
articleText3 = self.articleText3:GetValue(),
articleText4 = self.articleText4:GetValue(),
articleText5 = self.articleText5:GetValue(),
advert = self.advert:GetValue(),
advertName = self.advertName:GetValue(),
advertArticle = self.advertArticle:GetValue(),
sloganL = self.sloganL:GetValue(),
sloganR = self.sloganR:GetValue(),
image2 = self.image2 or "",
articleAuthor2 = self.articleAuthor2:GetValue(),
rightHeadline = self.rightHeadline:GetValue(),
template = "The Genevan Tribune",
adMaterial = self.adMaterial or "",
unionDatabase = self.unionDatabase and self.unionDatabase:GetChecked() or false
}, self.itemID)
self:Remove()
end, 0, 0, 0, 0)
end
self:RegisterTemplate("The Genevan Tribune", GenevanTribute)
self.surrounder = self:CreateMainPanel(SScaleMin(900 / 3), SScaleMin(980 / 3), true)
end
function PANEL:CreateDropdownMenu()
self.dropdown = self.optionTop:Add("DComboBox")
self.dropdown:SetValue("Background")
for newspaper, info in pairs(self.templates) do
self.dropdown:AddChoice(newspaper)
end
self.dropdown.OnSelect = function( s, index, value )
self.mainPanel:Remove()
for _, optPanel in pairs(self.optionPanels) do
optPanel:Remove()
end
self.optionPanels = {}
self:BuildContents(value)
if (self.data or (!self.data and self.tNewspaper)) then
self:Populate(self.itemID, self.identifier, self.nData, self.tNewspaper, true)
end
end
self.dropdown:Dock(LEFT)
self.dropdown:SizeToContents()
end
function PANEL:BuildContents(template)
if self.templates[template] then
self.templates[template].create()
if self.optionTop then
self.exit = self:CreateExitButton(self.optionTop, RIGHT, 0, 0, 0, 0)
self.exit.DoClick = function()
surface.PlaySound("helix/ui/press.wav")
netstream.Start("ixWritingCloseNewspaperCreator", self.itemID)
self:Remove()
end
self:CreateDropdownMenu()
end
self.newspaperTemplate = template
end
end
function PANEL:Populate(itemID, identifier, data, tNewspaper, dropdownPopulate)
local localChar = LocalPlayer():GetCharacter()
if !localChar then return end
local canRead = localChar:GetCanread()
if !self.mainPanel then return end
if (data) then
for dermaName, value in pairs(data) do
if string.find(dermaName, "image") then
if (string.find(dermaName, 2)) then
self.imageButton2.OnRequest(value)
else
self.imageButton.OnRequest(value)
end
continue
end
if dermaName == "adMaterial" then
if value and value != "" then
self.adImageButton:Remove()
self:CreateAdImage(self.adPanel, value)
end
continue
end
if !self[dermaName] then continue end
self[dermaName]:SetText(canRead and value or Schema:ShuffleText(value))
end
if self.headlineText and self.headlineText:GetValue() == "" and self.newspaperTemplate then
self.headlineText:SetText(self.newspaperTemplate)
end
end
if !self.cracked and tNewspaper.builder then
self:CreateDividerLine(self.optionPanels[2], LEFT)
self.unionDatabase = self.optionPanels[2]:Add( "DCheckBoxLabel" )
self.unionDatabase:Dock(LEFT)
self.unionDatabase:SetText("")
self.unionDatabase:SetValue( false )
self.unionDatabase:SizeToContents()
local unionDatabaseLabel = self.optionPanels[2]:Add( "DLabel" )
unionDatabaseLabel:Dock(LEFT)
unionDatabaseLabel:SetFont("MenuFontLargerBoldNoFix")
unionDatabaseLabel:SetText("Upload to Union database")
unionDatabaseLabel:SizeToContents()
end
if tNewspaper and tNewspaper.builder then return end
if !tNewspaper.builder and self.dropdown then self.dropdown:Remove() end
if dropdownPopulate then
self.previewEnabled = false
end
self:TogglePreview()
end
function PANEL:CreateAdImage(parent, material)
self.adImage = parent:Add("Panel")
self.adImage:Dock(LEFT)
self.adImage:SetSize(SScaleMin(105 / 3), SScaleMin(105 / 3))
self.adImage:DockMargin(SScaleMin(47 / 3), SScaleMin(24 / 3), SScaleMin(54 / 3), SScaleMin(21 / 3))
self.adImage.Paint = function(this, w, h)
surface.SetDrawColor(color_white)
surface.SetMaterial(ix.util.GetMaterial(material))
surface.DrawTexturedRect(0, 0, w, h)
end
self.adMaterial = material
end
function PANEL:CreateAdSelector(adPanel)
local selector = vgui.Create("DFrame")
selector:SetSize(SScaleMin((105 * 3) / 3) + SScaleMin(10 / 3), SScaleMin((105 * 4) / 3) + SScaleMin(34 / 3))
selector:Center()
selector:SetTitle("Ad Image Selector")
DFrameFixer(selector)
local grid = selector:Add("DGrid")
grid:Dock(FILL)
grid:SetCols( 3 )
grid:SetColWide( SScaleMin(105 / 3) )
grid:SetRowHeight( SScaleMin(105 / 3) )
for i = 1, 10 do
local image = vgui.Create( "DButton" )
image:SetText("")
image:SetSize( SScaleMin(105 / 3), SScaleMin(105 / 3) )
image.Paint = function(this, w, h)
surface.SetDrawColor(color_white)
surface.DrawRect(0, 0, w, h)
surface.SetMaterial(ix.util.GetMaterial("willardnetworks/writing/newspaper_icon_"..i..".png"))
surface.DrawTexturedRect(0, 0, w, h)
surface.SetDrawColor(color_black)
surface.DrawOutlinedRect(0, 0, w, h)
end
image.DoClick = function(button)
self:CreateAdImage(adPanel, "willardnetworks/writing/newspaper_icon_"..i..".png")
selector:Remove()
self.adImageButton:Remove()
end
grid:AddItem( image )
end
end
function PANEL:TogglePreview(button)
if self.previewEnabled then
if (button) then
button:SetText("PREVIEW")
button:SizeToContents()
end
for _, textPanel in pairs(self.textEntries) do
if !IsValid(textPanel) then continue end
textPanel:SetVisible(true)
textPanel:SetKeyboardInputEnabled(true)
textPanel:SetCursorColor(Color(0, 0, 0, 255))
textPanel.shouldVoidPlaceholder = false
end
for _, label in pairs(self.labels) do
if !IsValid(label) then continue end
label:SetVisible(false)
end
for _, selector in pairs(self.selectorButtons) do
if IsValid(selector) then
if IsValid(selector.temp) then
selector.temp:SetVisible(false)
end
selector:SetVisible(true)
end
end
for _, option in pairs(self.options) do
if !IsValid(option) then continue end
if option:GetText() == "EXIT" then continue end
option:SetVisible(true)
end
if self.dropdown then
self.dropdown:SetVisible(true)
end
self.previewEnabled = false
else
if (button) then
button:SetText("STOP PREVIEW")
button:SizeToContents()
end
for _, textPanel in pairs(self.textEntries) do
if !IsValid(textPanel) then continue end
if textPanel.fixedHeight then
self:ConvertTextEntryToLabel(textPanel:GetParent(), textPanel)
else
textPanel:SetKeyboardInputEnabled(false)
textPanel:SetCursorColor(Color(0, 0, 0, 0))
end
textPanel.shouldVoidPlaceholder = true
end
for _, selector in pairs(self.selectorButtons) do
if IsValid(selector) then
local temp = selector:GetParent():Add("Panel")
temp:Dock(selector:GetDock())
temp:SetSize(selector:GetSize())
temp:SetZPos(selector:GetZPos())
temp:DockMargin(selector:GetDockMargin())
selector:SetVisible(false)
selector.temp = temp
selector:SetVisible(false)
end
end
for _, option in pairs(self.options) do
if !IsValid(option) then continue end
if option:GetText() == "EXIT" then continue end
option:SetVisible(false)
end
if self.dropdown then
self.dropdown:SetVisible(false)
end
self.previewEnabled = true
end
end
vgui.Register("ixWritingNewspaper", PANEL, "ixWritingBase")