12 public static List<ModItem<Sprite>> ListPlayerPortraits(
int gender,
bool nullPortrait =
false)
14 List<ModItem<Sprite>> list =
Portrait.ListPortraits(gender,
"c").Concat(
Portrait.ListPortraits(gender,
"guard")).Concat(
Portrait.ListPortraits(gender,
"special")).Concat(
Portrait.ListPortraits(gender,
"foxfolk")).ToList<ModItem<Sprite>>();
17 list.Insert(0,
new ModItem<Sprite>(
null,
null,
null,
null));
23 public static List<ModItem<Sprite>> ListPortraits(
string idDict)
25 List<ModItem<Sprite>> list =
Portrait.dictList.TryGetValue(idDict,
null);
26 if (list ==
null || list.Count == 0)
28 list =
new List<ModItem<Sprite>>();
29 foreach (ModItem<Sprite> modItem
in Portrait.modPortraits.list)
31 if (modItem.id.Contains(idDict))
42 public static List<ModItem<Sprite>> ListPortraits(
int gender,
string cat)
48 string key = cat + gender.ToString();
49 List<ModItem<Sprite>> list =
Portrait.dictList.TryGetValue(key,
null);
50 if (list ==
null || list.Count == 0)
52 list =
new List<ModItem<Sprite>>();
53 foreach (ModItem<Sprite> modItem
in Portrait.modPortraits.list)
55 string[] array = modItem.id.Split(
'-', StringSplitOptions.None)[0].Split(
'_', StringSplitOptions.None);
56 if (!(array[0] != cat))
58 int num = (array.Length > 1) ? ((array[1] ==
"m") ? 2 : ((array[1] ==
"f") ? 1 : 0)) : 0;
59 if (num == 0 || gender == 0 || gender == num)
71 public static string GetRandomPortrait(
string idDict)
73 return Portrait.ListPortraits(idDict).RandomItem<ModItem<Sprite>>().
id;
77 public static string GetRandomPortrait(
int gender,
string cat)
79 return Portrait.ListPortraits(gender, cat).RandomItem<ModItem<Sprite>>().
id;
83 public static bool Exists(
string id)
85 return Portrait.modPortraits.dict.ContainsKey(
id);
89 public void SetPerson(
Person p)
93 this.SetChara(p.chara,
null);
96 if (!p.idPortrait.IsEmpty())
98 Rand.SetSeed(p.uidChara);
99 this.SetPortrait(p.idPortrait, PCCManager.current.GetBodySet(
"female").map[
"hair"].GetRandomColor());
103 this.SetPortrait(p.source.portrait,
default(Color));
107 public void SetChara(
Chara c, PCCData pccData =
null)
109 this.portrait.enabled =
true;
110 this.overlay.enabled =
true;
113 this.imageChara.sprite = c.GetSprite(0);
114 this.imageChara.SetNativeSize();
115 if (this.fixSpritePos)
117 this.imageChara.transform.localScale = (c.IsPCC ?
new Vector3(1.3f, 1.4f, 1f) :
new Vector3(1f, 1f, 1f)) * this.charaScale;
118 this.imageChara.rectTransform.pivot = (c.IsPCC ?
new Vector2(0.5f, 0.4f) :
new Vector2(0.5f, 0.2f));
119 this.imageChara.rectTransform.anchoredPosition = (c.IsPCC ?
new Vector2(-25f, 20f) :
new Vector2(-25f, 20f));
124 this.imageFaith.sprite = c.faith.GetSprite();
126 if (!c.GetIdPortrait().IsEmpty() &&
Portrait.modPortraits.GetItem(c.GetIdPortrait(),
true) !=
null)
128 if (pccData ==
null && c.isChara)
130 pccData = c.Chara.pccData;
132 Color colorOverlay = (pccData !=
null) ? pccData.GetHairColor(
true) : Color.white;
133 this.overlay.enabled =
true;
136 if (c.GetInt(105,
null) != 0)
138 colorOverlay = IntColor.FromInt(c.GetInt(105,
null));
143 colorOverlay = PCCManager.current.GetBodySet(
"female").map[
"hair"].GetRandomColor();
147 this.overlay.enabled =
false;
151 this.SetPortrait(c.GetIdPortrait(), colorOverlay);
154 if (this.hideIfNoPortrait)
156 this.portrait.enabled =
false;
157 this.overlay.enabled =
false;
160 if (this.spriteNoPortrait)
162 this.SetPortrait(
false, this.spriteNoPortrait,
null,
default(Color),
null);
165 this.SetPortrait(
false, c.GetSprite(0),
null,
default(Color),
null);
166 c.SetImage(this.portrait);
167 this.portrait.transform.localScale =
new Vector3(1f, 1f, 1f);
168 this.portrait.preserveAspect =
true;
169 this.portrait.SetNativeSize();
170 this.portrait.Rect().SetAnchor(0.5f, 0f, 0.5f, 0f);
171 this.portrait.Rect().SetPivot(0.5f, 0f);
172 this.portrait.Rect().anchoredPosition =
new Vector2(0f, 0f);
173 this.portrait.material =
EClass.core.refs.matUIPortraitChara;
177 public void SetPortrait(
string id, Color colorOverlay =
default(Color))
179 Sprite @
object =
Portrait.modPortraits.GetItem(
id,
false).GetObject(
null);
180 Sprite object2 =
Portrait.modOverlays.GetObject(
id +
"-overlay",
null);
181 Sprite spriteFull = (this.enableFull && this.imageFull) ?
Portrait.modFull.GetObject(
id +
"-full",
null) :
null;
182 this.SetPortrait(
true, @
object, object2, colorOverlay, spriteFull);
186 public void SetPortrait(
bool isPortrait, Sprite spritePortrait, Sprite spriteOverlay =
null, Color colorOverlay =
default(Color), Sprite spriteFull =
null)
188 Portrait.<>c__DisplayClass29_0 CS$<>8__locals1;
189 CS$<>8__locals1.isPortrait = isPortrait;
190 CS$<>8__locals1.<>4__this =
this;
191 this.filter = ((CS$<>8__locals1.isPortrait && Core.Instance.config.test.aaPortrait) ? FilterMode.Bilinear : FilterMode.Point);
192 this.portrait.rectTransform.anchorMin = this.overlay.rectTransform.anchorMin;
193 this.portrait.rectTransform.anchorMax = this.overlay.rectTransform.anchorMax;
194 this.portrait.rectTransform.sizeDelta = this.overlay.rectTransform.sizeDelta;
197 this.portrait.sprite = spritePortrait;
198 this.<SetPortrait>g__FixTexture|29_0(spritePortrait, ref CS$<>8__locals1);
202 this.<SetPortrait>g__FixTexture|29_0(spriteOverlay, ref CS$<>8__locals1);
203 this.overlay.sprite = spriteOverlay;
204 this.overlay.color = colorOverlay.SetAlpha(Core.Instance.gameSetting.render.alphaHair);
205 this.overlay.SetActive(spriteOverlay);
207 if (this.enableFull && this.imageFull)
209 this.<SetPortrait>g__FixTexture|29_0(spriteFull, ref CS$<>8__locals1);
210 this.imageFull.sprite = spriteFull;
211 base.gameObject.SetActive(!spriteFull);
212 this.imageFull.SetActive(spriteFull);
214 if (!this.showPortrait)
216 this.portrait.SetActive(
false);
217 this.overlay.SetActive(
false);
223 private void <SetPortrait>g__FixTexture|29_0(Sprite s, ref
Portrait.<>c__DisplayClass29_0 A_2)
225 if (!s || !A_2.isPortrait)
229 s.texture.wrapMode = TextureWrapMode.Clamp;
230 if (s.texture.filterMode !=
this.filter)
232 s.texture.filterMode = this.filter;
237 public static ModItemList<Sprite> modPortraitBGFs =
new ModItemList<Sprite>(3);
240 public static ModItemList<Sprite> modPortraitBGs =
new ModItemList<Sprite>(3);
243 public static ModItemList<Sprite> modPortraits =
new ModItemList<Sprite>(3);
246 public static ModItemList<Sprite> modOverlays =
new ModItemList<Sprite>(3);
249 public static ModItemList<Sprite> modFull =
new ModItemList<Sprite>(3);
252 public static Dictionary<string, List<ModItem<Sprite>>> dictList =
new Dictionary<string, List<ModItem<Sprite>>>();
255 public static HashSet<string> allIds =
new HashSet<string>();
258 public Image portrait;
261 public Image overlay;
264 public Image imageChara;
267 public Image imageFaith;
270 public Image imageFull;
273 public Image imageFrame;
276 public Sprite spriteNoPortrait;
279 public bool enableFull =
true;
282 public bool hideIfNoPortrait;
285 public bool fixSpritePos =
true;
288 public bool showPortrait =
true;
291 public float charaScale = 1f;
294 private FilterMode filter;