1 using Microsoft.Xna.Framework;
5 using System.Collections.Generic;
9 partial class JobPrefab : PrefabWithUintIdentifier
13 int width = 500, height = 400;
27 { RelativeOffset = new Vector2(0.0f, 0.2f + descriptionBlock.RectTransform.RelativeSize.Y) });
29 TextManager.Get(
"Skills"), font: GUIStyle.LargeFont);
33 " - " + TextManager.AddPunctuation(
':', TextManager.Get(
"SkillName." + skill.
Identifier), (
int)skill.
LevelRange.Start +
" - " + (
int)skill.
LevelRange.End),
34 font: GUIStyle.SmallFont);
37 buttonContainer = paddedFrame;
67 Sprites =
new List<(Sprite sprite, Vector2 drawOffset)>();
73 Sprites.Add((sprite, drawOffset));
77 public List<OutfitPreview>
GetJobOutfitSprites(CharacterInfoPrefab charInfoPrefab,
bool useInventoryIcon, out Vector2 maxDimensions)
79 List<OutfitPreview> outfitPreviews =
new List<OutfitPreview>();
80 maxDimensions = Vector2.One;
82 var equipIdentifiers =
Element.
GetChildElements(
"ItemSet").Elements().Where(e => e.GetAttributeBool(
"outfit",
false)).Select(e => e.GetAttributeIdentifier(
"identifier",
""));
84 List<ItemPrefab> outfitPrefabs =
new List<ItemPrefab>();
85 foreach (var equipIdentifier
in equipIdentifiers)
88 if (itemPrefab !=
null) { outfitPrefabs.Add(itemPrefab); }
91 if (!outfitPrefabs.Any()) {
return null; }
93 for (
int i = 0; i < outfitPrefabs.Count; i++)
97 if (!
ItemSets.TryGetValue(i, out var itemSetElement)) {
continue; }
98 var previewElement = itemSetElement.GetChildElement(
"PreviewSprites");
99 if (previewElement ==
null || useInventoryIcon)
103 outfitPreview.AddSprite(prefab.InventoryIcon, Vector2.Zero);
104 outfitPreview.Dimensions = prefab.InventoryIcon.SourceRect.Size.ToVector2();
105 maxDimensions.X = MathHelper.Max(maxDimensions.X, outfitPreview.Dimensions.X);
106 maxDimensions.Y = MathHelper.Max(maxDimensions.Y, outfitPreview.Dimensions.Y);
108 outfitPreviews.Add(outfitPreview);
112 var children = previewElement.Elements().ToList();
113 for (
int n = 0; n < children.Count; n++)
115 var spriteElement = children[n];
116 string spriteTexture = charInfoPrefab.ReplaceVars(spriteElement.GetAttributeString(
"texture",
""), charInfoPrefab.Heads.First());
117 var sprite =
new Sprite(spriteElement, file: spriteTexture);
118 sprite.size =
new Vector2(sprite.SourceRect.Width, sprite.SourceRect.Height);
119 outfitPreview.AddSprite(sprite, children[n].GetAttributeVector2(
"offset", Vector2.Zero));
122 outfitPreview.Dimensions = previewElement.GetAttributeVector2(
"dims", Vector2.One);
123 maxDimensions.X = MathHelper.Max(maxDimensions.X, outfitPreview.Dimensions.X);
124 maxDimensions.Y = MathHelper.Max(maxDimensions.Y, outfitPreview.Dimensions.Y);
126 outfitPreviews.Add(outfitPreview);
129 return outfitPreviews;
IEnumerable< ContentXElement > GetChildElements(string name)
RectTransform RectTransform
static readonly PrefabCollection< ItemPrefab > Prefabs
readonly List<(Sprite sprite, Vector2 drawOffset)> Sprites
void AddSprite(Sprite sprite, Vector2 drawOffset)
readonly LocalizedString Name
readonly Dictionary< int, ContentXElement > ItemSets
List< OutfitPreview > GetJobOutfitSprites(CharacterInfoPrefab charInfoPrefab, bool useInventoryIcon, out Vector2 maxDimensions)
GUIButton CreateInfoFrame(out GUIComponent buttonContainer)
readonly LocalizedString Description
readonly List< SkillPrefab > Skills
readonly Identifier Identifier
Range< float > LevelRange