FrameworkZ 4.4.2
Provides a framework for Project Zomboid with various systems.
Loading...
Searching...
No Matches
CreateCharacterFaction.lua
Go to the documentation of this file.
3require "ISUI/ISPanel"
5PFW_CreateCharacterFaction = ISPanel:derive("PFW_CreateCharacterFaction")
7function PFW_CreateCharacterFaction:initialise()
8 ISPanel.initialise(self)
9
11 local title = "Faction"
12 local subtitle = "Select a faction for your character."
13 local factionWidth = 500
14 local factionHeight = 300
15 local dropdownWidth = self.width * 0.5
16 local middleX = self.width / 2
17 local yOffset = 0
18 local factionsList = FrameworkZ.Factions.List
19 self.initialFaction = nil
20
21 -- Get first available faction:
22 for k, v in pairs(factionsList) do
23 if not v.requiresWhitelist then
24 self.initialFaction = {k = k, v = v}
25 break
26 end
27 end
28
29 self.faction = self.initialFaction and self.initialFaction.k or ""
30
31 yOffset = self.uiHelper.GetHeight(UIFont.Title, title)
32
33 self.title = ISLabel:new(self.uiHelper.GetMiddle(self.width, UIFont.Title, title), yOffset, 25, title, 1, 1, 1, 1, UIFont.Title, true)
34 self.title:initialise()
35 self:addChild(self.title)
36
37 yOffset = yOffset + self.uiHelper.GetHeight(UIFont.Large, subtitle)
38
39 self.subtitle = ISLabel:new(self.uiHelper.GetMiddle(self.width, UIFont.Large, subtitle), yOffset, 25, subtitle, 1, 1, 1, 1, UIFont.Large, true)
40 self.subtitle:initialise()
41 self:addChild(self.subtitle)
42
43 yOffset = yOffset + 45
44
45 self.factionImage = ISImage:new(self.width / 2 - factionWidth / 2, yOffset, factionWidth, factionHeight, getTexture(self.initialFaction and self.initialFaction.v and self.initialFaction.v.logo or "media/textures/factions/missing-logo.png"))
48 self.factionImage:initialise()
49 self:addChild(self.factionImage)
50
51 yOffset = yOffset + 300
52
53 self.factionDropdown = ISComboBox:new(middleX - factionWidth / 2, yOffset, factionWidth, 25, self, self.onFactionSelected)
54 self.factionDropdown:addOptionWithData(self.initialFaction and self.initialFaction.v and self.initialFaction.v.name, self.initialFaction and self.initialFaction.k)
55
56 for k, v in pairs(factionsList) do
57 -- if get player get whitelisted factions == true then add option
58
59 if self.initialFaction and v ~= self.initialFaction.v and not v.requiresWhitelist then
60 self.factionDropdown:addOptionWithData(v.name, k)
61 elseif not self.initialFaction then
62 self.factionDropdown:addOptionWithData(v.name, k)
63 end
64 end
65
66 self.factionDropdown:initialise()
67 self:addChild(self.factionDropdown)
68
69 yOffset = yOffset + 30
70
71 local factionDescription = self.initialFaction and self.initialFaction.v and ('"' .. self.initialFaction.v.description .. '"') or ""
72
73 self.factionDescription = ISLabel:new(self.uiHelper.GetMiddle(self.width, UIFont.Medium, factionDescription), yOffset, 25, factionDescription, 1, 1, 1, 1, UIFont.Medium, true)
74 self.factionDescription:initialise()
76end
77
78function PFW_CreateCharacterFaction:onFactionSelected(dropdown)
79 local factionID = dropdown:getOptionData(dropdown.selected)
80 local faction = FrameworkZ.Factions:GetFactionByID(factionID)
81
82 if faction then
84 local factionDescription = ('"' .. faction.description .. '"') or ""
85
86 self.factionImage.texture = getTexture(faction.logo)
88 self.factionDescription:setX(self.uiHelper.GetMiddle(self.width, UIFont.Medium, factionDescription))
89 end
90end
91
92function PFW_CreateCharacterFaction:render()
93 ISPanel.render(self)
94end
95
96function PFW_CreateCharacterFaction:update()
97 ISPanel.update(self)
98end
99
100function PFW_CreateCharacterFaction:new(parameters)
101 local o = {}
102
103 o = ISPanel:new(parameters.x, parameters.y, parameters.width, parameters.height)
104 setmetatable(o, self)
105 self.__index = self
106 o.backgroundColor = {r=0, g=0, b=0, a=0}
107 o.borderColor = {r=0, g=0, b=0, a=0}
108 o.moveWithMouse = false
109 o.playerObject = parameters.playerObject
110 o.faction = ""
111 PFW_CreateCharacterFaction.instance = o
112
113 return o
114end
115
void Factions()
void self uiHelper()
void id()
void player
void name()
void FrameworkZ Classes List()
void self subtitle()
void self factionImage()
void if self initialFaction and v()
void self factionDropdown()
void self faction()
void local factionDescription()
void self factionImage scaledWidth()
void self factionImage scaledHeight()
void self title()
void yOffset()
void FrameworkZ()
void PFW_CreateCharacterFaction()
Definition MainMenu.lua:85
void local width
void local option()
void if not description or description()
void self self
Definition MainMenu.lua:85
void self self nil
Definition MainMenu.lua:91
void local middleX()
void processingNotification backgroundColor a()
void local character()
FrameworkZ global table.
void onFactionSelected(dropdown)