1using System.Collections.Generic;
8 public static readonly Vector2Int
standardSize =
new Vector2Int(240, 320);
14 pivot =
new Vector2(0.5f, 0f)
19 pivot =
new Vector2(0.5f, 0f)
32 public static Dictionary<string, List<ModItem<Sprite>>>
dictList =
new Dictionary<string, List<ModItem<Sprite>>>();
34 public static HashSet<string>
allIds =
new HashSet<string>();
111 List<ModItem<Sprite>> list =
dictList.TryGetValue(idDict);
112 if (list ==
null || list.Count == 0)
114 list =
new List<ModItem<Sprite>>();
117 if (
item.id.Contains(idDict))
133 string key = cat + gender;
134 List<ModItem<Sprite>> list =
dictList.TryGetValue(key);
135 if (list ==
null || list.Count == 0)
137 list =
new List<ModItem<Sprite>>();
140 string[] array =
item.id.Split(
'-')[0].Split(
'_');
141 if (!(array[0] != cat))
143 int num = ((array.Length > 1) ? ((array[1] ==
"m") ? 2 : ((array[1] ==
"f") ? 1 : 0)) : 0);
144 if (num == 0 || gender == 0 || gender == num)
175 RectTransform rectTransform =
portrait.rectTransform;
189 RectTransform rectTransform =
portrait.rectTransform;
201 base.gameObject.SetActive(value:
true);
212 else if (p.
source !=
null)
218 base.gameObject.SetActive(value:
false);
224 portrait.enabled =
true;
225 overlay.enabled =
true;
234 imageChara.rectTransform.localScale =
new Vector3(1.3f, 1.4f, 1f) *
charaScale;
235 imageChara.rectTransform.anchoredPosition =
new Vector2(-25f, 10f);
236 imageChara.rectTransform.pivot =
new Vector2(0.5f, 0.3f);
240 imageChara.rectTransform.localScale = Vector3.one *
charaScale;
241 imageChara.rectTransform.anchoredPosition =
new Vector2(-25f, 28f);
242 imageChara.rectTransform.pivot = c.
source.renderData.imagePivot;
244 float num = imageChara.sprite.rect.height / 128f;
245 imageChara.rectTransform.localPosition +=
new Vector3(pref.
pivotX, (
float)pref.
pivotY * num, 0f);
257 portrait.enabled =
false;
258 overlay.enabled =
false;
268 portrait.transform.localScale =
new Vector3(1f, 1f, 1f);
269 portrait.preserveAspect =
true;
271 portrait.Rect().SetAnchor(0.5f, 0f, 0.5f, 0f);
273 portrait.Rect().anchoredPosition =
new Vector2(0f, 0f);
277 if (pccData ==
null && c.
isChara)
281 Color colorOverlay = pccData?.GetHairColor(applyMod:
true) ??
Color.white;
282 overlay.enabled =
true;
294 overlay.enabled =
false;
304 Color randomColor = PCCManager.current.GetBodySet(
"female").map[
"hair"].GetRandomColor();
316 colorOverlay = PCCManager.current.ApplyColorMod(colorOverlay);
318 SetPortrait(isPortrait:
true, spritePortrait, spriteOverlay, colorOverlay, spriteFull);
321 public void SetPortrait(
bool isPortrait, Sprite spritePortrait, Sprite spriteOverlay =
null,
Color colorOverlay =
default(
Color), Sprite spriteFull =
null)
330 portrait.rectTransform.anchorMin =
overlay.rectTransform.anchorMin;
331 portrait.rectTransform.anchorMax =
overlay.rectTransform.anchorMax;
332 portrait.rectTransform.sizeDelta =
overlay.rectTransform.sizeDelta;
333 if ((
bool)spritePortrait)
335 portrait.sprite = spritePortrait;
336 FixTexture(spritePortrait);
340 FixTexture(spriteOverlay);
341 overlay.sprite = spriteOverlay;
342 overlay.color =
new Color(colorOverlay.r * 1.1f, colorOverlay.g * 1.1f, colorOverlay.b * 1.1f, colorOverlay.a);
343 overlay.SetActive(spriteOverlay);
347 FixTexture(spriteFull);
348 imageFull.sprite = spriteFull;
349 base.gameObject.SetActive(!spriteFull);
355 overlay.SetActive(enable:
false);
357 void FixTexture(Sprite s)
359 if ((
bool)s && isPortrait)
361 Texture2D texture = s.texture;
362 texture.wrapMode = TextureWrapMode.Clamp;
363 FilterMode filterMode = ((filter && texture.mipmapCount > 1) ? FilterMode.Trilinear : (aa ? FilterMode.Bilinear : FilterMode.Point));
364 if (texture.filterMode != filterMode)
366 texture.filterMode = filterMode;
void SetImage(Image image, int dir, int idSkin=0)
int GetInt(string id, int? defaultInt=null)
override Sprite GetSprite(int dir=0)
Material matUIPortraitChara
static Color32 FromInt(int i)
List< ModItem< T > > list
T GetObject(string id, object option=null)
Dictionary< string, ModItem< T > > dict
ModItem< T > GetItem(string id, bool returnNull=false)
static readonly SpriteLoadOption loadOption
static ModItemList< Sprite > modPortraitBGFs
static readonly Vector2Int standardFullSize
static List< ModItem< Sprite > > ListPortraits(string idDict)
static readonly Vector2Int standardSize
static string GetRandomPortrait(int gender, string cat)
static ModItemList< Sprite > modPortraitBGs
Vector2 defaultAnchoredPosition
void SetPortrait(bool isPortrait, Sprite spritePortrait, Sprite spriteOverlay=null, Color colorOverlay=default(Color), Sprite spriteFull=null)
static string GetRandomPortrait(string idDict)
void SetPortrait(string id, Color colorOverlay=default(Color), bool applyColorMod=true)
Color GetRandomHairColor(Chara c)
static bool Exists(string id)
static List< ModItem< Sprite > > ListPlayerPortraits(int gender, bool nullPortrait=false)
static Dictionary< string, List< ModItem< Sprite > > > dictList
static bool UsePortraitFilter
static ModItemList< Sprite > modOverlays
static ModItemList< Sprite > modPortraits
static HashSet< string > allIds
void SetChara(Chara c, PCCData pccData=null)
static List< ModItem< Sprite > > ListPortraits(int gender, string cat)
static readonly SpriteLoadOption loadOptionFull
static ModItemList< Sprite > modFull
bool defaultPreserveAspect
static bool UsePortraitAA
static void SetSeed(int a=-1)
virtual Sprite GetSprite()