Elin Modding Docs Doc
Loading...
Searching...
No Matches
Portrait.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Runtime.CompilerServices;
5using UnityEngine;
6using UnityEngine.UI;
7
8// Token: 0x02000512 RID: 1298
9public class Portrait : UIButton
10{
11 // Token: 0x060022C8 RID: 8904 RVA: 0x000C1DFC File Offset: 0x000BFFFC
12 public static List<ModItem<Sprite>> ListPlayerPortraits(int gender, bool nullPortrait = false)
13 {
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>>();
15 if (nullPortrait)
16 {
17 list.Insert(0, new ModItem<Sprite>(null, null, null, null));
18 }
19 return list;
20 }
21
22 // Token: 0x060022C9 RID: 8905 RVA: 0x000C1E60 File Offset: 0x000C0060
23 public static List<ModItem<Sprite>> ListPortraits(string idDict)
24 {
25 List<ModItem<Sprite>> list = Portrait.dictList.TryGetValue(idDict, null);
26 if (list == null || list.Count == 0)
27 {
28 list = new List<ModItem<Sprite>>();
29 foreach (ModItem<Sprite> modItem in Portrait.modPortraits.list)
30 {
31 if (modItem.id.Contains(idDict))
32 {
33 list.Add(modItem);
34 }
35 }
36 Portrait.dictList.Add(idDict, list);
37 }
38 return list;
39 }
40
41 // Token: 0x060022CA RID: 8906 RVA: 0x000C1EF0 File Offset: 0x000C00F0
42 public static List<ModItem<Sprite>> ListPortraits(int gender, string cat)
43 {
44 if (cat.IsEmpty())
45 {
46 cat = "c";
47 }
48 string key = cat + gender.ToString();
49 List<ModItem<Sprite>> list = Portrait.dictList.TryGetValue(key, null);
50 if (list == null || list.Count == 0)
51 {
52 list = new List<ModItem<Sprite>>();
53 foreach (ModItem<Sprite> modItem in Portrait.modPortraits.list)
54 {
55 string[] array = modItem.id.Split('-', StringSplitOptions.None)[0].Split('_', StringSplitOptions.None);
56 if (!(array[0] != cat))
57 {
58 int num = (array.Length > 1) ? ((array[1] == "m") ? 2 : ((array[1] == "f") ? 1 : 0)) : 0;
59 if (num == 0 || gender == 0 || gender == num)
60 {
61 list.Add(modItem);
62 }
63 }
64 }
65 Portrait.dictList.Add(key, list);
66 }
67 return list;
68 }
69
70 // Token: 0x060022CB RID: 8907 RVA: 0x000C1FF8 File Offset: 0x000C01F8
71 public static string GetRandomPortrait(string idDict)
72 {
73 return Portrait.ListPortraits(idDict).RandomItem<ModItem<Sprite>>().id;
74 }
75
76 // Token: 0x060022CC RID: 8908 RVA: 0x000C200A File Offset: 0x000C020A
77 public static string GetRandomPortrait(int gender, string cat)
78 {
79 return Portrait.ListPortraits(gender, cat).RandomItem<ModItem<Sprite>>().id;
80 }
81
82 // Token: 0x060022CD RID: 8909 RVA: 0x000C201D File Offset: 0x000C021D
83 public static bool Exists(string id)
84 {
85 return Portrait.modPortraits.dict.ContainsKey(id);
86 }
87
88 // Token: 0x060022CE RID: 8910 RVA: 0x000C2030 File Offset: 0x000C0230
89 public void SetPerson(Person p)
90 {
91 if (p.hasChara)
92 {
93 this.SetChara(p.chara, null);
94 return;
95 }
96 if (!p.idPortrait.IsEmpty())
97 {
98 Rand.SetSeed(p.uidChara);
99 this.SetPortrait(p.idPortrait, PCCManager.current.GetBodySet("female").map["hair"].GetRandomColor());
100 Rand.SetSeed(-1);
101 return;
102 }
103 this.SetPortrait(p.source.portrait, default(Color));
104 }
105
106 // Token: 0x060022CF RID: 8911 RVA: 0x000C20BC File Offset: 0x000C02BC
107 public void SetChara(Chara c, PCCData pccData = null)
108 {
109 this.portrait.enabled = true;
110 this.overlay.enabled = true;
111 if (this.imageChara)
112 {
113 this.imageChara.sprite = c.GetSprite(0);
114 this.imageChara.SetNativeSize();
115 if (this.fixSpritePos)
116 {
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));
120 }
121 }
122 if (this.imageFaith)
123 {
124 this.imageFaith.sprite = c.faith.GetSprite();
125 }
126 if (!c.GetIdPortrait().IsEmpty() && Portrait.modPortraits.GetItem(c.GetIdPortrait(), true) != null)
127 {
128 if (pccData == null && c.isChara)
129 {
130 pccData = c.Chara.pccData;
131 }
132 Color colorOverlay = (pccData != null) ? pccData.GetHairColor(true) : Color.white;
133 this.overlay.enabled = true;
134 if (pccData == null)
135 {
136 if (c.GetInt(105, null) != 0)
137 {
138 colorOverlay = IntColor.FromInt(c.GetInt(105, null));
139 }
140 else
141 {
142 Rand.SetSeed(c.uid);
143 colorOverlay = PCCManager.current.GetBodySet("female").map["hair"].GetRandomColor();
144 Rand.SetSeed(-1);
145 if (c.id == "shojo")
146 {
147 this.overlay.enabled = false;
148 }
149 }
150 }
151 this.SetPortrait(c.GetIdPortrait(), colorOverlay);
152 return;
153 }
154 if (this.hideIfNoPortrait)
155 {
156 this.portrait.enabled = false;
157 this.overlay.enabled = false;
158 return;
159 }
160 if (this.spriteNoPortrait)
161 {
162 this.SetPortrait(false, this.spriteNoPortrait, null, default(Color), null);
163 return;
164 }
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;
174 }
175
176 // Token: 0x060022D0 RID: 8912 RVA: 0x000C2408 File Offset: 0x000C0608
177 public void SetPortrait(string id, Color colorOverlay = default(Color))
178 {
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);
183 }
184
185 // Token: 0x060022D1 RID: 8913 RVA: 0x000C247C File Offset: 0x000C067C
186 public void SetPortrait(bool isPortrait, Sprite spritePortrait, Sprite spriteOverlay = null, Color colorOverlay = default(Color), Sprite spriteFull = null)
187 {
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;
195 if (spritePortrait)
196 {
197 this.portrait.sprite = spritePortrait;
198 this.<SetPortrait>g__FixTexture|29_0(spritePortrait, ref CS$<>8__locals1);
199 }
200 if (this.overlay)
201 {
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);
206 }
207 if (this.enableFull && this.imageFull)
208 {
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);
213 }
214 if (!this.showPortrait)
215 {
216 this.portrait.SetActive(false);
217 this.overlay.SetActive(false);
218 }
219 }
220
221 // Token: 0x060022D4 RID: 8916 RVA: 0x000C268C File Offset: 0x000C088C
222 [CompilerGenerated]
223 private void <SetPortrait>g__FixTexture|29_0(Sprite s, ref Portrait.<>c__DisplayClass29_0 A_2)
224 {
225 if (!s || !A_2.isPortrait)
226 {
227 return;
228 }
229 s.texture.wrapMode = TextureWrapMode.Clamp;
230 if (s.texture.filterMode != this.filter)
231 {
232 s.texture.filterMode = this.filter;
233 }
234 }
235
236 // Token: 0x04001218 RID: 4632
237 public static ModItemList<Sprite> modPortraitBGFs = new ModItemList<Sprite>(3);
238
239 // Token: 0x04001219 RID: 4633
240 public static ModItemList<Sprite> modPortraitBGs = new ModItemList<Sprite>(3);
241
242 // Token: 0x0400121A RID: 4634
243 public static ModItemList<Sprite> modPortraits = new ModItemList<Sprite>(3);
244
245 // Token: 0x0400121B RID: 4635
246 public static ModItemList<Sprite> modOverlays = new ModItemList<Sprite>(3);
247
248 // Token: 0x0400121C RID: 4636
249 public static ModItemList<Sprite> modFull = new ModItemList<Sprite>(3);
250
251 // Token: 0x0400121D RID: 4637
252 public static Dictionary<string, List<ModItem<Sprite>>> dictList = new Dictionary<string, List<ModItem<Sprite>>>();
253
254 // Token: 0x0400121E RID: 4638
255 public static HashSet<string> allIds = new HashSet<string>();
256
257 // Token: 0x0400121F RID: 4639
258 public Image portrait;
259
260 // Token: 0x04001220 RID: 4640
261 public Image overlay;
262
263 // Token: 0x04001221 RID: 4641
264 public Image imageChara;
265
266 // Token: 0x04001222 RID: 4642
267 public Image imageFaith;
268
269 // Token: 0x04001223 RID: 4643
270 public Image imageFull;
271
272 // Token: 0x04001224 RID: 4644
273 public Image imageFrame;
274
275 // Token: 0x04001225 RID: 4645
276 public Sprite spriteNoPortrait;
277
278 // Token: 0x04001226 RID: 4646
279 public bool enableFull = true;
280
281 // Token: 0x04001227 RID: 4647
282 public bool hideIfNoPortrait;
283
284 // Token: 0x04001228 RID: 4648
285 public bool fixSpritePos = true;
286
287 // Token: 0x04001229 RID: 4649
288 public bool showPortrait = true;
289
290 // Token: 0x0400122A RID: 4650
291 public float charaScale = 1f;
292
293 // Token: 0x0400122B RID: 4651
294 private FilterMode filter;
295}
Definition Chara.cs:12