diff --git a/Content.Client/UserInterface/HumanoidProfileEditor.cs b/Content.Client/UserInterface/HumanoidProfileEditor.cs index 630573317b..442c5d8aa1 100644 --- a/Content.Client/UserInterface/HumanoidProfileEditor.cs +++ b/Content.Client/UserInterface/HumanoidProfileEditor.cs @@ -3,17 +3,21 @@ using System.Collections.Generic; using System.Linq; using Content.Client.GameObjects.Components; using Content.Client.Interfaces; +using Content.Client.Utility; using Content.Shared; using Content.Shared.Jobs; using Content.Shared.Preferences; using Robust.Client.Graphics.Drawing; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; +using Robust.Client.Utility; using Robust.Shared.Interfaces.Random; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; +using static Content.Client.StaticIoC; namespace Content.Client.UserInterface { @@ -148,19 +152,13 @@ namespace Content.Client.UserInterface Text = localization.GetString("Male"), Group = sexButtonGroup }; - _sexMaleButton.OnPressed += args => - { - SetSex(Sex.Male); - }; + _sexMaleButton.OnPressed += args => { SetSex(Sex.Male); }; _sexFemaleButton = new Button { Text = localization.GetString("Female"), Group = sexButtonGroup }; - _sexFemaleButton.OnPressed += args => - { - SetSex(Sex.Female); - }; + _sexFemaleButton.OnPressed += args => { SetSex(Sex.Female); }; hBox.AddChild(sexLabel); hBox.AddChild(_sexMaleButton); hBox.AddChild(_sexFemaleButton); @@ -502,10 +500,23 @@ namespace Content.Client.UserInterface PriorityChanged?.Invoke(Priority); }; + var icon = new TextureRect + { + TextureScale = (2, 2), + Stretch = TextureRect.StretchMode.KeepCentered + }; + + if (job.Icon != null) + { + var specifier = new SpriteSpecifier.Rsi(new ResourcePath("/Textures/job_icons.rsi"), job.Icon); + icon.Texture = specifier.Frame0(); + } + AddChild(new HBoxContainer { Children = { + icon, new Label {Text = job.Name, CustomMinimumSize = (175, 0)}, _optionButton } diff --git a/Content.Client/UserInterface/LobbyCharacterPreviewPanel.cs b/Content.Client/UserInterface/LobbyCharacterPreviewPanel.cs index 5f807cb3c1..095f3dd797 100644 --- a/Content.Client/UserInterface/LobbyCharacterPreviewPanel.cs +++ b/Content.Client/UserInterface/LobbyCharacterPreviewPanel.cs @@ -3,7 +3,6 @@ using Content.Client.GameObjects; using Content.Client.GameObjects.Components.Mobs; using Content.Client.Interfaces; using Content.Shared; -using Content.Shared.GameObjects.Components.Inventory; using Content.Shared.Jobs; using Content.Shared.Preferences; using Robust.Client.Interfaces.GameObjects.Components; diff --git a/Content.Shared/Jobs/JobPrototype.cs b/Content.Shared/Jobs/JobPrototype.cs index 2092b45b94..cebac42c9f 100644 --- a/Content.Shared/Jobs/JobPrototype.cs +++ b/Content.Shared/Jobs/JobPrototype.cs @@ -39,6 +39,8 @@ namespace Content.Shared.Jobs public string StartingGear { get; private set; } + public string Icon { get; private set; } + public IReadOnlyCollection Department { get; private set; } public IReadOnlyCollection Access { get; private set; } @@ -72,6 +74,11 @@ namespace Content.Shared.Jobs { Access = Array.Empty(); } + + if (mapping.TryGetNode("icon", out var iconNode)) + { + Icon = iconNode.AsString(); + } } } } diff --git a/Resources/Prototypes/Jobs/Cargo/CargoTechnician.yml b/Resources/Prototypes/Jobs/Cargo/CargoTechnician.yml index c2f6f89eb2..a9eedf9e31 100644 --- a/Resources/Prototypes/Jobs/Cargo/CargoTechnician.yml +++ b/Resources/Prototypes/Jobs/Cargo/CargoTechnician.yml @@ -6,3 +6,6 @@ startingGear: AssistantGear department: - Cargo + + icon: "CargoTechnician" + diff --git a/Resources/Prototypes/Jobs/Civilian/Assistant.yml b/Resources/Prototypes/Jobs/Civilian/Assistant.yml index 6bee749932..35ad2d489f 100644 --- a/Resources/Prototypes/Jobs/Civilian/Assistant.yml +++ b/Resources/Prototypes/Jobs/Civilian/Assistant.yml @@ -6,6 +6,8 @@ department: - Civilian + icon: "Assistant" + access: - maintenance diff --git a/Resources/Prototypes/Jobs/Civilian/Clown.yml b/Resources/Prototypes/Jobs/Civilian/Clown.yml index e88cb158cc..64846913d4 100644 --- a/Resources/Prototypes/Jobs/Civilian/Clown.yml +++ b/Resources/Prototypes/Jobs/Civilian/Clown.yml @@ -6,6 +6,8 @@ department: - Civilian + icon: "Clown" + - type: startingGear id: ClownGear equipment: diff --git a/Resources/Prototypes/Jobs/Civilian/Janitor.yml b/Resources/Prototypes/Jobs/Civilian/Janitor.yml index fa250129b4..61fb5907e2 100644 --- a/Resources/Prototypes/Jobs/Civilian/Janitor.yml +++ b/Resources/Prototypes/Jobs/Civilian/Janitor.yml @@ -6,6 +6,8 @@ department: - Civilian + icon: "Janitor" + access: - service - maintenance diff --git a/Resources/Prototypes/Jobs/Command/Captain.yml b/Resources/Prototypes/Jobs/Command/Captain.yml index d8db994782..6cd2fbcbc6 100644 --- a/Resources/Prototypes/Jobs/Command/Captain.yml +++ b/Resources/Prototypes/Jobs/Command/Captain.yml @@ -7,6 +7,8 @@ department: - Command + icon: "Captain" + access: # All of em. # Could probably do with some kind of wildcard or whatever to automate this. diff --git a/Resources/Prototypes/Jobs/Command/HeadOfPersonnel.yml b/Resources/Prototypes/Jobs/Command/HeadOfPersonnel.yml index 2ab5a18629..64bbe2ab38 100644 --- a/Resources/Prototypes/Jobs/Command/HeadOfPersonnel.yml +++ b/Resources/Prototypes/Jobs/Command/HeadOfPersonnel.yml @@ -8,6 +8,8 @@ - Command - Civilian + icon: "HeadOfPersonnel" + access: - command - idCard diff --git a/Resources/Prototypes/Jobs/Engineering/ChiefEngineer.yml b/Resources/Prototypes/Jobs/Engineering/ChiefEngineer.yml index 640b78e980..de15305e53 100644 --- a/Resources/Prototypes/Jobs/Engineering/ChiefEngineer.yml +++ b/Resources/Prototypes/Jobs/Engineering/ChiefEngineer.yml @@ -8,6 +8,8 @@ - Command - Engineering + icon: "ChiefEngineer" + access: - maintenance - engineering diff --git a/Resources/Prototypes/Jobs/Engineering/Engineer.yml b/Resources/Prototypes/Jobs/Engineering/StationEngineer.yml similarity index 93% rename from Resources/Prototypes/Jobs/Engineering/Engineer.yml rename to Resources/Prototypes/Jobs/Engineering/StationEngineer.yml index 48c0c5ee09..409d972851 100644 --- a/Resources/Prototypes/Jobs/Engineering/Engineer.yml +++ b/Resources/Prototypes/Jobs/Engineering/StationEngineer.yml @@ -7,6 +7,8 @@ department: - Engineering + icon: "StationEngineer" + access: - maintenance - engineering diff --git a/Resources/Prototypes/Jobs/Medical/ChiefMedicalOfficer.yml b/Resources/Prototypes/Jobs/Medical/ChiefMedicalOfficer.yml index 5a484cce51..839a27d3bf 100644 --- a/Resources/Prototypes/Jobs/Medical/ChiefMedicalOfficer.yml +++ b/Resources/Prototypes/Jobs/Medical/ChiefMedicalOfficer.yml @@ -10,6 +10,8 @@ - Command - Medical + icon: "ChiefMedicalOfficer" + access: - medical - command diff --git a/Resources/Prototypes/Jobs/Medical/MedicalDoctor.yml b/Resources/Prototypes/Jobs/Medical/MedicalDoctor.yml index db4490a973..201330bccd 100644 --- a/Resources/Prototypes/Jobs/Medical/MedicalDoctor.yml +++ b/Resources/Prototypes/Jobs/Medical/MedicalDoctor.yml @@ -7,5 +7,7 @@ department: - Medical + icon: "MedicalDoctor" + access: - medical diff --git a/Resources/Prototypes/Jobs/Science/ResearchDirector.yml b/Resources/Prototypes/Jobs/Science/ResearchDirector.yml index e399a9023e..4e5ab0f04e 100644 --- a/Resources/Prototypes/Jobs/Science/ResearchDirector.yml +++ b/Resources/Prototypes/Jobs/Science/ResearchDirector.yml @@ -8,6 +8,8 @@ - Command - Science + icon: "ResearchDirector" + access: - research - command diff --git a/Resources/Prototypes/Jobs/Science/Scientist.yml b/Resources/Prototypes/Jobs/Science/Scientist.yml index 88ce927148..480083fe53 100644 --- a/Resources/Prototypes/Jobs/Science/Scientist.yml +++ b/Resources/Prototypes/Jobs/Science/Scientist.yml @@ -7,5 +7,7 @@ department: - Science + icon: "Scientist" + access: - research diff --git a/Resources/Prototypes/Jobs/Security/HeadOfSecurity.yml b/Resources/Prototypes/Jobs/Security/HeadOfSecurity.yml index c051afdd39..4f71f0d2db 100644 --- a/Resources/Prototypes/Jobs/Security/HeadOfSecurity.yml +++ b/Resources/Prototypes/Jobs/Security/HeadOfSecurity.yml @@ -8,6 +8,8 @@ - Command - Security + icon: "HeadOfSecurity" + access: - command - security diff --git a/Resources/Prototypes/Jobs/Security/SecurityOfficer.yml b/Resources/Prototypes/Jobs/Security/SecurityOfficer.yml index 5e8043dcfd..ef8971fd6d 100644 --- a/Resources/Prototypes/Jobs/Security/SecurityOfficer.yml +++ b/Resources/Prototypes/Jobs/Security/SecurityOfficer.yml @@ -7,6 +7,8 @@ department: - Security + icon: "SecurityOfficer" + access: - security - maintenance diff --git a/Resources/Textures/job_icons.rsi/Assistant.png b/Resources/Textures/job_icons.rsi/Assistant.png new file mode 100644 index 0000000000..6d67220af5 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Assistant.png differ diff --git a/Resources/Textures/job_icons.rsi/AtmosphericTechnician.png b/Resources/Textures/job_icons.rsi/AtmosphericTechnician.png new file mode 100644 index 0000000000..c78a735801 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/AtmosphericTechnician.png differ diff --git a/Resources/Textures/job_icons.rsi/Bartender.png b/Resources/Textures/job_icons.rsi/Bartender.png new file mode 100644 index 0000000000..35cfeb5b97 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Bartender.png differ diff --git a/Resources/Textures/job_icons.rsi/Botanist.png b/Resources/Textures/job_icons.rsi/Botanist.png new file mode 100644 index 0000000000..b5545f11d5 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Botanist.png differ diff --git a/Resources/Textures/job_icons.rsi/Captain.png b/Resources/Textures/job_icons.rsi/Captain.png new file mode 100644 index 0000000000..52ad5ea934 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Captain.png differ diff --git a/Resources/Textures/job_icons.rsi/CargoTechnician.png b/Resources/Textures/job_icons.rsi/CargoTechnician.png new file mode 100644 index 0000000000..10cf65efe7 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/CargoTechnician.png differ diff --git a/Resources/Textures/job_icons.rsi/Chaplain.png b/Resources/Textures/job_icons.rsi/Chaplain.png new file mode 100644 index 0000000000..3aaa65194d Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Chaplain.png differ diff --git a/Resources/Textures/job_icons.rsi/Chef.png b/Resources/Textures/job_icons.rsi/Chef.png new file mode 100644 index 0000000000..2520e7c458 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Chef.png differ diff --git a/Resources/Textures/job_icons.rsi/Chemist.png b/Resources/Textures/job_icons.rsi/Chemist.png new file mode 100644 index 0000000000..3c6c2a8c9c Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Chemist.png differ diff --git a/Resources/Textures/job_icons.rsi/ChiefEngineer.png b/Resources/Textures/job_icons.rsi/ChiefEngineer.png new file mode 100644 index 0000000000..8b8a99018e Binary files /dev/null and b/Resources/Textures/job_icons.rsi/ChiefEngineer.png differ diff --git a/Resources/Textures/job_icons.rsi/ChiefMedicalOfficer.png b/Resources/Textures/job_icons.rsi/ChiefMedicalOfficer.png new file mode 100644 index 0000000000..6847208931 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/ChiefMedicalOfficer.png differ diff --git a/Resources/Textures/job_icons.rsi/Clown.png b/Resources/Textures/job_icons.rsi/Clown.png new file mode 100644 index 0000000000..609f7d54a7 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Clown.png differ diff --git a/Resources/Textures/job_icons.rsi/Detective.png b/Resources/Textures/job_icons.rsi/Detective.png new file mode 100644 index 0000000000..fca34fb229 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Detective.png differ diff --git a/Resources/Textures/job_icons.rsi/Geneticist.png b/Resources/Textures/job_icons.rsi/Geneticist.png new file mode 100644 index 0000000000..20a498252f Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Geneticist.png differ diff --git a/Resources/Textures/job_icons.rsi/HeadOfPersonnel.png b/Resources/Textures/job_icons.rsi/HeadOfPersonnel.png new file mode 100644 index 0000000000..d153808d27 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/HeadOfPersonnel.png differ diff --git a/Resources/Textures/job_icons.rsi/HeadOfSecurity.png b/Resources/Textures/job_icons.rsi/HeadOfSecurity.png new file mode 100644 index 0000000000..e85f11e655 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/HeadOfSecurity.png differ diff --git a/Resources/Textures/job_icons.rsi/Janitor.png b/Resources/Textures/job_icons.rsi/Janitor.png new file mode 100644 index 0000000000..6f1e55b7de Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Janitor.png differ diff --git a/Resources/Textures/job_icons.rsi/Lawyer.png b/Resources/Textures/job_icons.rsi/Lawyer.png new file mode 100644 index 0000000000..f153a95e5d Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Lawyer.png differ diff --git a/Resources/Textures/job_icons.rsi/Librarian.png b/Resources/Textures/job_icons.rsi/Librarian.png new file mode 100644 index 0000000000..b10b1ed71e Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Librarian.png differ diff --git a/Resources/Textures/job_icons.rsi/MedicalDoctor.png b/Resources/Textures/job_icons.rsi/MedicalDoctor.png new file mode 100644 index 0000000000..f57f5a1972 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/MedicalDoctor.png differ diff --git a/Resources/Textures/job_icons.rsi/Mime.png b/Resources/Textures/job_icons.rsi/Mime.png new file mode 100644 index 0000000000..8f3cf00b81 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Mime.png differ diff --git a/Resources/Textures/job_icons.rsi/Nanotrasen.png b/Resources/Textures/job_icons.rsi/Nanotrasen.png new file mode 100644 index 0000000000..ff24b4c04c Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Nanotrasen.png differ diff --git a/Resources/Textures/job_icons.rsi/NoId.png b/Resources/Textures/job_icons.rsi/NoId.png new file mode 100644 index 0000000000..e7897caf1a Binary files /dev/null and b/Resources/Textures/job_icons.rsi/NoId.png differ diff --git a/Resources/Textures/job_icons.rsi/Prisoner.png b/Resources/Textures/job_icons.rsi/Prisoner.png new file mode 100644 index 0000000000..5dca943aca Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Prisoner.png differ diff --git a/Resources/Textures/job_icons.rsi/QuarterMaster.png b/Resources/Textures/job_icons.rsi/QuarterMaster.png new file mode 100644 index 0000000000..7645fe9aad Binary files /dev/null and b/Resources/Textures/job_icons.rsi/QuarterMaster.png differ diff --git a/Resources/Textures/job_icons.rsi/ResearchDirector.png b/Resources/Textures/job_icons.rsi/ResearchDirector.png new file mode 100644 index 0000000000..d7a8bd0dc4 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/ResearchDirector.png differ diff --git a/Resources/Textures/job_icons.rsi/Roboticist.png b/Resources/Textures/job_icons.rsi/Roboticist.png new file mode 100644 index 0000000000..7bef145b22 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Roboticist.png differ diff --git a/Resources/Textures/job_icons.rsi/Scientist.png b/Resources/Textures/job_icons.rsi/Scientist.png new file mode 100644 index 0000000000..d58ea4cbc4 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Scientist.png differ diff --git a/Resources/Textures/job_icons.rsi/SecurityOfficer.png b/Resources/Textures/job_icons.rsi/SecurityOfficer.png new file mode 100644 index 0000000000..684f4f9314 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/SecurityOfficer.png differ diff --git a/Resources/Textures/job_icons.rsi/ShaftMiner.png b/Resources/Textures/job_icons.rsi/ShaftMiner.png new file mode 100644 index 0000000000..184d59e194 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/ShaftMiner.png differ diff --git a/Resources/Textures/job_icons.rsi/StationEngineer.png b/Resources/Textures/job_icons.rsi/StationEngineer.png new file mode 100644 index 0000000000..8dbadc298e Binary files /dev/null and b/Resources/Textures/job_icons.rsi/StationEngineer.png differ diff --git a/Resources/Textures/job_icons.rsi/Unknown.png b/Resources/Textures/job_icons.rsi/Unknown.png new file mode 100644 index 0000000000..b869423b73 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Unknown.png differ diff --git a/Resources/Textures/job_icons.rsi/Virologist.png b/Resources/Textures/job_icons.rsi/Virologist.png new file mode 100644 index 0000000000..959c8d056b Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Virologist.png differ diff --git a/Resources/Textures/job_icons.rsi/Warden.png b/Resources/Textures/job_icons.rsi/Warden.png new file mode 100644 index 0000000000..c1478bcbe4 Binary files /dev/null and b/Resources/Textures/job_icons.rsi/Warden.png differ diff --git a/Resources/Textures/job_icons.rsi/meta.json b/Resources/Textures/job_icons.rsi/meta.json new file mode 100644 index 0000000000..c3304b8d9f --- /dev/null +++ b/Resources/Textures/job_icons.rsi/meta.json @@ -0,0 +1,315 @@ +{ + "version": 1, + "size": { + "x": 8, + "y": 8 + }, + "states": [ + { + "name": "Detective", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "QuarterMaster", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Botanist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "AtmosphericTechnician", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Nanotrasen", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Prisoner", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Janitor", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Chemist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "StationEngineer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "SecurityOfficer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "NoId", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ChiefMedicalOfficer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Roboticist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Chaplain", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Lawyer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Unknown", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Librarian", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "CargoTechnician", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Scientist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Geneticist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Clown", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Captain", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "HeadOfPersonnel", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Virologist", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ShaftMiner", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Assistant", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ChiefEngineer", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Bartender", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "HeadOfSecurity", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "MedicalDoctor", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Chef", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Warden", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "ResearchDirector", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + }, + { + "name": "Mime", + "directions": 1, + "delays": [ + [ + 1.0 + ] + ] + } + ] +}